From f9bc6f4389f283e03d25c376f03912f7e1ae5b9a Mon Sep 17 00:00:00 2001 From: Abel Armoa <30988000+aarmoa@users.noreply.github.com> Date: Tue, 10 Dec 2024 12:02:19 -0300 Subject: [PATCH 1/4] (feat) Added support for the latest version of Permissions module. Updated all examples for that module too. Refactored the logic to update the compiled protos --- Makefile | 134 +- buf.gen.chain.yaml | 20 + buf.gen.indexer.yaml | 21 + chain/auction/types/auction.pb.go | 164 +- chain/auction/types/errors.go | 8 - chain/auction/types/events.go | 6 - chain/auction/types/expected_keepers.go | 16 - chain/auction/types/genesis.go | 21 - chain/auction/types/key.go | 16 - chain/auction/types/msgs.go | 95 - chain/auction/types/params.go | 103 - chain/auction/types/paramset.go | 26 - chain/codec/codec.go | 1 + chain/crypto/codec/amino.go | 1 - chain/crypto/keyring/options.go | 44 - chain/exchange/types/common_utils.go | 33 - chain/exchange/types/derivative_orders.go | 8 + chain/exchange/types/errors.go | 3 +- chain/exchange/types/exchange.pb.go | 694 ++- chain/exchange/types/msgs.go | 14 +- chain/exchange/types/params.go | 57 +- chain/exchange/types/proposal.go | 39 +- chain/exchange/types/proposal.pb.go | 427 +- chain/exchange/types/query.pb.go | 2064 +++++-- chain/exchange/types/reclamation.go | 41 - chain/exchange/types/spot_orders.go | 16 +- chain/exchange/types/tx.pb.go | 556 +- chain/exchange/types/wasm_maker_contract.go | 23 - chain/helpers/common.go | 27 + chain/insurance/types/errors.go | 20 - chain/insurance/types/events.go | 1 - chain/insurance/types/expected_keepers.go | 20 - chain/insurance/types/genesis.go | 33 - chain/insurance/types/insurance.go | 56 - chain/insurance/types/key.go | 38 - chain/insurance/types/msgs.go | 184 - chain/insurance/types/params.go | 78 - chain/insurance/types/paramset.go | 26 - chain/ocr/types/expected_keepers.go | 29 - chain/ocr/types/genesis.go | 18 - chain/ocr/types/hooks.go | 38 - chain/ocr/types/msgs.go | 470 -- chain/oracle/types/band_ibc.go | 129 - chain/oracle/types/coinbase_oracle.go | 101 - chain/oracle/types/events.go | 6 - chain/oracle/types/expected_keepers.go | 46 - chain/oracle/types/genesis.go | 23 - chain/oracle/types/paramset.go | 26 - chain/oracle/types/pyth.go | 75 - chain/oracle/types/stork.go | 29 - chain/peggy/types/batch.go | 67 - chain/peggy/types/events.go | 28 - chain/peggy/types/expected_keepers.go | 54 - chain/peggy/types/genesis.go | 19 - chain/peggy/types/params_legacy.go | 108 - chain/peggy/types/proposal.go | 76 - chain/peggy/types/proposal.pb.go | 667 --- chain/permissions/types/codec.go | 6 - chain/permissions/types/errors.go | 24 - chain/permissions/types/expected_keepers.go | 26 - chain/permissions/types/genesis.go | 38 - chain/permissions/types/genesis.pb.go | 104 +- chain/permissions/types/msgs.go | 227 - chain/permissions/types/params.go | 33 - chain/permissions/types/permissions.pb.go | 1785 ++++-- chain/permissions/types/query.pb.go | 4837 +++++++++++---- chain/permissions/types/tx.pb.go | 2303 ++----- chain/permissions/types/types.go | 156 - chain/stream/types/query.pb.go | 268 +- chain/stream/types/request.go | 54 - chain/stream/types/response.go | 84 - chain/tokenfactory/types/authorityMetadata.go | 15 - .../types/authorityMetadata.pb.go | 84 +- chain/tokenfactory/types/denoms.go | 117 - chain/tokenfactory/types/errors.go | 25 - chain/tokenfactory/types/events.pb.go | 441 +- chain/tokenfactory/types/expected_keepers.go | 35 - chain/tokenfactory/types/genesis.go | 51 - chain/tokenfactory/types/gov.go | 54 - chain/tokenfactory/types/gov.pb.go | 465 -- chain/tokenfactory/types/keys.go | 50 - chain/tokenfactory/types/msgs.go | 288 - chain/tokenfactory/types/params.go | 63 - chain/tokenfactory/types/tx.pb.go | 508 +- chain/types/account.go | 186 - chain/types/chain_id.go | 54 - chain/types/code.go | 12 - chain/types/coin.go | 33 - chain/types/errors.go | 15 - chain/types/gas.go | 97 - chain/types/int.go | 22 - chain/types/params.go | 8 - chain/wasmx/types/exec_callback_msgs.go | 25 - chain/wasmx/types/exec_msgs.go | 26 - chain/wasmx/types/expected_keepers.go | 28 - chain/wasmx/types/genesis.go | 18 - chain/wasmx/types/paramset.go | 26 - chain/wasmx/types/util.go | 17 - client/chain/chain.go | 115 +- client/chain/chain_test_support.go | 48 +- client/chain/markets_assistant.go | 56 +- .../1_MsgCreateNamespace/example.go | 135 + .../permissions/2_DeleteNamespace/example.go | 74 - .../2_MsgUpdateNamespace/example.go | 113 + .../example.go | 43 +- .../permissions/3_UpdateNamespace/example.go | 78 - .../example.go | 0 .../4_UpdateNamespaceRoles/example.go | 91 - .../5_RevokeNamespaceRoles/example.go | 81 - .../example.go | 6 +- .../permissions/query/11_Voucher/example.go | 70 + .../12_PermissionsModuleState/example.go | 69 + .../query/1_NamespaceDenoms/example.go | 69 + .../example.go | 2 +- .../example.go | 2 +- .../example.go | 4 +- .../example.go | 2 +- .../query/6_RoleManagers/example.go | 69 + .../query/7_RoleManager/example.go | 70 + .../query/8_PolicyStatuses/example.go | 69 + .../9_PolicyManagerCapabilities/example.go | 69 + ...design_goagen_injective_accounts_rpc.pb.go | 2 +- ...n_goagen_injective_accounts_rpc_grpc.pb.go | 2 +- ...design_goagen_injective_accounts_rpc.pb.go | 5333 ----------------- ...n_goagen_injective_accounts_rpc_grpc.pb.go | 508 -- .../pb/pb/injective_accounts_rpc.pb.gw.go | 882 --- .../pb/pb/injective_accounts_rpc.proto | 623 -- ...adesign_goagen_injective_auction_rpc.pb.go | 2 +- ...gn_goagen_injective_auction_rpc_grpc.pb.go | 2 +- ...design_goagen_injective_campaign_rpc.pb.go | 524 +- ...n_goagen_injective_campaign_rpc_grpc.pb.go | 2 +- .../pb/injective_campaign_rpc.proto | 13 +- ...en_injective_derivative_exchange_rpc.pb.go | 1067 ++-- ...jective_derivative_exchange_rpc_grpc.pb.go | 2 +- .../injective_derivative_exchange_rpc.proto | 14 +- .../pb/event_provider_api.pb.gw.go | 569 ++ .../pb/event_provider_api.proto | 180 + .../pb/event_provider_api_grpc.pb_mock.go | 563 ++ .../goadesign_goagen_event_provider_api.pb.go | 1881 ++++++ ...esign_goagen_event_provider_api_grpc.pb.go | 325 + ...design_goagen_injective_exchange_rpc.pb.go | 640 +- ...n_goagen_injective_exchange_rpc_grpc.pb.go | 40 +- .../pb/injective_exchange_rpc.pb.gw.go | 85 + .../pb/injective_exchange_rpc.proto | 30 +- ...design_goagen_injective_explorer_rpc.pb.go | 1970 +++--- ...n_goagen_injective_explorer_rpc_grpc.pb.go | 40 +- .../pb/injective_explorer_rpc.pb.gw.go | 85 + .../pb/injective_explorer_rpc.proto | 27 + .../pb/goadesign_goagen_health.pb.go | 30 +- .../pb/goadesign_goagen_health_grpc.pb.go | 2 +- exchange/health_rpc/pb/health.proto | 2 + ...esign_goagen_injective_insurance_rpc.pb.go | 6 +- ..._goagen_injective_insurance_rpc_grpc.pb.go | 2 +- .../pb/injective_insurance_rpc.proto | 4 +- .../goadesign_goagen_injective_meta_rpc.pb.go | 2 +- ...esign_goagen_injective_meta_rpc_grpc.pb.go | 2 +- ...oadesign_goagen_injective_oracle_rpc.pb.go | 2 +- ...ign_goagen_injective_oracle_rpc_grpc.pb.go | 2 +- ...esign_goagen_injective_portfolio_rpc.pb.go | 2 +- ..._goagen_injective_portfolio_rpc_grpc.pb.go | 2 +- ...n_goagen_injective_spot_exchange_rpc.pb.go | 963 +-- ...gen_injective_spot_exchange_rpc_grpc.pb.go | 2 +- .../pb/injective_spot_exchange_rpc.proto | 14 +- ...adesign_goagen_injective_trading_rpc.pb.go | 673 ++- ...gn_goagen_injective_trading_rpc_grpc.pb.go | 40 +- .../pb/injective_trading_rpc.pb.gw.go | 85 + .../pb/injective_trading_rpc.proto | 55 + .../pb/injective_trading_rpc_grpc.pb_mock.go | 50 +- go.mod | 71 +- go.sum | 128 +- 170 files changed, 18334 insertions(+), 20402 deletions(-) create mode 100644 buf.gen.chain.yaml create mode 100644 buf.gen.indexer.yaml delete mode 100644 chain/auction/types/errors.go delete mode 100644 chain/auction/types/events.go delete mode 100644 chain/auction/types/expected_keepers.go delete mode 100644 chain/auction/types/genesis.go delete mode 100644 chain/auction/types/key.go delete mode 100644 chain/auction/types/msgs.go delete mode 100644 chain/auction/types/params.go delete mode 100644 chain/auction/types/paramset.go delete mode 100644 chain/crypto/keyring/options.go delete mode 100644 chain/exchange/types/reclamation.go delete mode 100644 chain/exchange/types/wasm_maker_contract.go create mode 100644 chain/helpers/common.go delete mode 100644 chain/insurance/types/errors.go delete mode 100644 chain/insurance/types/events.go delete mode 100644 chain/insurance/types/expected_keepers.go delete mode 100644 chain/insurance/types/genesis.go delete mode 100644 chain/insurance/types/insurance.go delete mode 100644 chain/insurance/types/key.go delete mode 100644 chain/insurance/types/msgs.go delete mode 100644 chain/insurance/types/params.go delete mode 100644 chain/insurance/types/paramset.go delete mode 100644 chain/ocr/types/expected_keepers.go delete mode 100644 chain/ocr/types/genesis.go delete mode 100644 chain/ocr/types/hooks.go delete mode 100644 chain/ocr/types/msgs.go delete mode 100644 chain/oracle/types/band_ibc.go delete mode 100644 chain/oracle/types/coinbase_oracle.go delete mode 100644 chain/oracle/types/events.go delete mode 100644 chain/oracle/types/expected_keepers.go delete mode 100644 chain/oracle/types/genesis.go delete mode 100644 chain/oracle/types/paramset.go delete mode 100644 chain/oracle/types/pyth.go delete mode 100644 chain/oracle/types/stork.go delete mode 100644 chain/peggy/types/batch.go delete mode 100644 chain/peggy/types/events.go delete mode 100644 chain/peggy/types/expected_keepers.go delete mode 100644 chain/peggy/types/genesis.go delete mode 100644 chain/peggy/types/params_legacy.go delete mode 100644 chain/peggy/types/proposal.go delete mode 100644 chain/peggy/types/proposal.pb.go delete mode 100644 chain/permissions/types/errors.go delete mode 100644 chain/permissions/types/expected_keepers.go delete mode 100644 chain/permissions/types/genesis.go delete mode 100644 chain/permissions/types/msgs.go delete mode 100644 chain/permissions/types/params.go delete mode 100644 chain/permissions/types/types.go delete mode 100644 chain/stream/types/request.go delete mode 100644 chain/stream/types/response.go delete mode 100644 chain/tokenfactory/types/authorityMetadata.go delete mode 100644 chain/tokenfactory/types/denoms.go delete mode 100644 chain/tokenfactory/types/errors.go delete mode 100644 chain/tokenfactory/types/expected_keepers.go delete mode 100644 chain/tokenfactory/types/genesis.go delete mode 100644 chain/tokenfactory/types/gov.go delete mode 100644 chain/tokenfactory/types/gov.pb.go delete mode 100644 chain/tokenfactory/types/keys.go delete mode 100644 chain/tokenfactory/types/msgs.go delete mode 100644 chain/tokenfactory/types/params.go delete mode 100644 chain/types/account.go delete mode 100644 chain/types/chain_id.go delete mode 100644 chain/types/code.go delete mode 100644 chain/types/coin.go delete mode 100644 chain/types/errors.go delete mode 100644 chain/types/gas.go delete mode 100644 chain/types/int.go delete mode 100644 chain/types/params.go delete mode 100644 chain/wasmx/types/exec_callback_msgs.go delete mode 100644 chain/wasmx/types/exec_msgs.go delete mode 100644 chain/wasmx/types/expected_keepers.go delete mode 100644 chain/wasmx/types/genesis.go delete mode 100644 chain/wasmx/types/paramset.go delete mode 100644 chain/wasmx/types/util.go create mode 100644 examples/chain/permissions/1_MsgCreateNamespace/example.go delete mode 100644 examples/chain/permissions/2_DeleteNamespace/example.go create mode 100644 examples/chain/permissions/2_MsgUpdateNamespace/example.go rename examples/chain/permissions/{1_CreateNamespace => 3_MsgUpdateActorRoles}/example.go (64%) delete mode 100644 examples/chain/permissions/3_UpdateNamespace/example.go rename examples/chain/permissions/{6_ClaimVoucher => 4_MsgClaimVoucher}/example.go (100%) delete mode 100644 examples/chain/permissions/4_UpdateNamespaceRoles/example.go delete mode 100644 examples/chain/permissions/5_RevokeNamespaceRoles/example.go rename examples/chain/permissions/query/{5_VouchersForAddress => 10_Vouchers}/example.go (90%) create mode 100644 examples/chain/permissions/query/11_Voucher/example.go create mode 100644 examples/chain/permissions/query/12_PermissionsModuleState/example.go create mode 100644 examples/chain/permissions/query/1_NamespaceDenoms/example.go rename examples/chain/permissions/query/{1_AllNamespaces => 2_Namespaces}/example.go (95%) rename examples/chain/permissions/query/{2_NamespaceByDenom => 3_Namespace}/example.go (94%) rename examples/chain/permissions/query/{3_AddressRoles => 4_RolesByActor}/example.go (92%) rename examples/chain/permissions/query/{4_AddressesByRole => 5_ActorsByRole}/example.go (94%) create mode 100644 examples/chain/permissions/query/6_RoleManagers/example.go create mode 100644 examples/chain/permissions/query/7_RoleManager/example.go create mode 100644 examples/chain/permissions/query/8_PolicyStatuses/example.go create mode 100644 examples/chain/permissions/query/9_PolicyManagerCapabilities/example.go delete mode 100644 exchange/accounts_rpc/pb/pb/goadesign_goagen_injective_accounts_rpc.pb.go delete mode 100644 exchange/accounts_rpc/pb/pb/goadesign_goagen_injective_accounts_rpc_grpc.pb.go delete mode 100644 exchange/accounts_rpc/pb/pb/injective_accounts_rpc.pb.gw.go delete mode 100644 exchange/accounts_rpc/pb/pb/injective_accounts_rpc.proto create mode 100644 exchange/event_provider_api/pb/event_provider_api.pb.gw.go create mode 100644 exchange/event_provider_api/pb/event_provider_api.proto create mode 100644 exchange/event_provider_api/pb/event_provider_api_grpc.pb_mock.go create mode 100644 exchange/event_provider_api/pb/goadesign_goagen_event_provider_api.pb.go create mode 100644 exchange/event_provider_api/pb/goadesign_goagen_event_provider_api_grpc.pb.go diff --git a/Makefile b/Makefile index 4492bf96..f1fea3f6 100644 --- a/Makefile +++ b/Makefile @@ -2,6 +2,7 @@ all: copy-exchange-client: rm -rf exchange/* + mkdir -p exchange/event_provider_api mkdir -p exchange/health_rpc mkdir -p exchange/accounts_rpc mkdir -p exchange/auction_rpc @@ -16,9 +17,9 @@ copy-exchange-client: mkdir -p exchange/spot_exchange_rpc mkdir -p exchange/trading_rpc + cp -r ../injective-indexer/api/gen/grpc/event_provider_api/pb exchange/event_provider_api/pb cp -r ../injective-indexer/api/gen/grpc/health/pb exchange/health_rpc/pb cp -r ../injective-indexer/api/gen/grpc/injective_accounts_rpc/pb exchange/accounts_rpc/pb - cp -r ../injective-indexer/api/gen/grpc/injective_accounts_rpc/pb exchange/accounts_rpc/pb cp -r ../injective-indexer/api/gen/grpc/injective_auction_rpc/pb exchange/auction_rpc/pb cp -r ../injective-indexer/api/gen/grpc/injective_campaign_rpc/pb exchange/campaign_rpc/pb cp -r ../injective-indexer/api/gen/grpc/injective_derivative_exchange_rpc/pb exchange/derivative_exchange_rpc/pb @@ -31,44 +32,109 @@ copy-exchange-client: cp -r ../injective-indexer/api/gen/grpc/injective_spot_exchange_rpc/pb exchange/spot_exchange_rpc/pb cp -r ../injective-indexer/api/gen/grpc/injective_trading_rpc/pb exchange/trading_rpc/pb -.PHONY: copy-exchange-client tests coverage - copy-chain-types: - cp ../injective-core/injective-chain/crypto/ethsecp256k1/*.go chain/crypto/ethsecp256k1 + cp -r ../injective-core/injective-chain/codec chain + cp -r ../injective-core/injective-chain/helpers chain + mkdir -p chain/crypto/codec && cp ../injective-core/injective-chain/crypto/codec/*.go chain/crypto/codec + rm -rf chain/crypto/codec/*test.go rm -rf chain/crypto/codec/*gw.go + mkdir -p chain/crypto/ethsecp256k1 && cp ../injective-core/injective-chain/crypto/ethsecp256k1/*.go chain/crypto/ethsecp256k1 rm -rf chain/crypto/ethsecp256k1/*test.go rm -rf chain/crypto/ethsecp256k1/*gw.go - cp ../injective-core/injective-chain/codec/types/*.go chain/codec/types - rm -rf chain/codec/types/*test.go rm -rf chain/codec/types/*gw.go - cp ../injective-core/injective-chain/modules/auction/types/*.go chain/auction/types - rm -rf chain/auction/types/*test.go rm -rf chain/auction/types/*gw.go - cp ../injective-core/injective-chain/modules/exchange/types/*.go chain/exchange/types - rm -rf chain/exchange/types/*test.go rm -rf chain/exchange/types/*gw.go - cp ../injective-core/injective-chain/modules/insurance/types/*.go chain/insurance/types - rm -rf chain/insurance/types/*test.go rm -rf chain/insurance/types/*gw.go - cp ../injective-core/injective-chain/modules/ocr/types/*.go chain/ocr/types - rm -rf chain/ocr/types/*test.go rm -rf chain/ocr/types/*gw.go - cp ../injective-core/injective-chain/modules/oracle/types/*.go chain/oracle/types - cp -r ../injective-core/injective-chain/modules/oracle/bandchain chain/oracle - rm -rf chain/oracle/types/*test.go rm -rf chain/oracle/types/*gw.go - cp ../injective-core/injective-chain/modules/peggy/types/*.go chain/peggy/types - rm -rf chain/peggy/types/*test.go rm -rf chain/peggy/types/*gw.go - cp ../injective-core/injective-chain/modules/permissions/types/*.go chain/permissions/types - rm -rf chain/permissions/types/*test.go rm -rf chain/permissions/types/*gw.go - cp ../injective-core/injective-chain/modules/tokenfactory/types/*.go chain/tokenfactory/types - rm -rf chain/tokenfactory/types/*test.go rm -rf chain/tokenfactory/types/*gw.go - cp ../injective-core/injective-chain/modules/wasmx/types/*.go chain/wasmx/types - rm -rf chain/wasmx/types/*test.go rm -rf chain/wasmx/types/*gw.go - cp ../injective-core/injective-chain/stream/types/*.go chain/stream/types - rm -rf chain/stream/types/*test.go rm -rf chain/stream/types/*gw.go - cp ../injective-core/injective-chain/types/*.go chain/types - rm -rf chain/types/*test.go rm -rf chain/types/*gw.go + mkdir -p chain/crypto/hd && cp ../injective-core/injective-chain/crypto/hd/*.go chain/crypto/hd + rm -rf chain/crypto/hd/*test.go rm -rf chain/crypto/hd/*gw.go + mkdir -p chain/auction/types && \ + cp ../injective-core/injective-chain/modules/auction/types/*.pb.go chain/auction/types && \ + cp ../injective-core/injective-chain/modules/auction/types/codec.go chain/auction/types + mkdir -p chain/exchange/types && \ + cp ../injective-core/injective-chain/modules/exchange/types/*.go chain/exchange/types && \ + rm -rf chain/exchange/types/*test.go && rm -rf chain/exchange/types/*gw.go + mkdir -p chain/insurance/types && \ + cp ../injective-core/injective-chain/modules/insurance/types/*.pb.go chain/insurance/types && \ + cp ../injective-core/injective-chain/modules/insurance/types/codec.go chain/insurance/types + mkdir -p chain/ocr/types && \ + cp ../injective-core/injective-chain/modules/ocr/types/*.pb.go chain/ocr/types && \ + cp ../injective-core/injective-chain/modules/ocr/types/errors.go chain/ocr/types && \ + cp ../injective-core/injective-chain/modules/ocr/types/key.go chain/ocr/types && \ + cp ../injective-core/injective-chain/modules/ocr/types/params.go chain/ocr/types && \ + cp ../injective-core/injective-chain/modules/ocr/types/proposal.go chain/ocr/types && \ + cp ../injective-core/injective-chain/modules/ocr/types/types.go chain/ocr/types && \ + cp ../injective-core/injective-chain/modules/ocr/types/codec.go chain/ocr/types + mkdir -p chain/oracle/types && \ + cp ../injective-core/injective-chain/modules/oracle/types/*.pb.go chain/oracle/types && \ + cp ../injective-core/injective-chain/modules/oracle/types/codec.go chain/oracle/types && \ + cp ../injective-core/injective-chain/modules/oracle/types/errors.go chain/oracle/types && \ + cp ../injective-core/injective-chain/modules/oracle/types/msgs.go chain/oracle/types && \ + cp ../injective-core/injective-chain/modules/oracle/types/oracle.go chain/oracle/types && \ + cp ../injective-core/injective-chain/modules/oracle/types/params.go chain/oracle/types && \ + cp ../injective-core/injective-chain/modules/oracle/types/proposal.go chain/oracle/types && \ + cp ../injective-core/injective-chain/modules/oracle/types/stork_oracle.go chain/oracle/types && \ + cp -r ../injective-core/injective-chain/modules/oracle/bandchain chain/oracle + mkdir -p chain/peggy/types && \ + cp ../injective-core/injective-chain/modules/peggy/types/*.pb.go chain/peggy/types && \ + cp ../injective-core/injective-chain/modules/peggy/types/abi_json.go chain/peggy/types && \ + cp ../injective-core/injective-chain/modules/peggy/types/codec.go chain/peggy/types && \ + cp ../injective-core/injective-chain/modules/peggy/types/ethereum.go chain/peggy/types && \ + cp ../injective-core/injective-chain/modules/peggy/types/ethereum_signer.go chain/peggy/types && \ + cp ../injective-core/injective-chain/modules/peggy/types/errors.go chain/peggy/types && \ + cp ../injective-core/injective-chain/modules/peggy/types/key.go chain/peggy/types && \ + cp ../injective-core/injective-chain/modules/peggy/types/msgs.go chain/peggy/types && \ + cp ../injective-core/injective-chain/modules/peggy/types/params.go chain/peggy/types && \ + cp ../injective-core/injective-chain/modules/peggy/types/types.go chain/peggy/types + mkdir -p chain/permissions/types && \ + cp ../injective-core/injective-chain/modules/permissions/types/*.pb.go chain/permissions/types && \ + cp ../injective-core/injective-chain/modules/permissions/types/codec.go chain/permissions/types + mkdir -p chain/tokenfactory/types && \ + cp ../injective-core/injective-chain/modules/tokenfactory/types/*.pb.go chain/tokenfactory/types && \ + cp ../injective-core/injective-chain/modules/tokenfactory/types/codec.go chain/tokenfactory/types + mkdir -p chain/wasmx/types && \ + cp ../injective-core/injective-chain/modules/wasmx/types/*.pb.go chain/wasmx/types && \ + cp ../injective-core/injective-chain/modules/wasmx/types/codec.go chain/wasmx/types && \ + cp ../injective-core/injective-chain/modules/wasmx/types/custom_execution.go chain/wasmx/types && \ + cp ../injective-core/injective-chain/modules/wasmx/types/errors.go chain/wasmx/types && \ + cp ../injective-core/injective-chain/modules/wasmx/types/key.go chain/wasmx/types && \ + cp ../injective-core/injective-chain/modules/wasmx/types/msgs.go chain/wasmx/types && \ + cp ../injective-core/injective-chain/modules/wasmx/types/params.go chain/wasmx/types && \ + cp ../injective-core/injective-chain/modules/wasmx/types/proposal.go chain/wasmx/types + mkdir -p chain/stream/types && \ + cp ../injective-core/injective-chain/stream/types/*.pb.go chain/stream/types + mkdir -p chain/types && \ + cp ../injective-core/injective-chain/types/*.pb.go ../injective-core/injective-chain/types/config.go chain/types && \ + cp ../injective-core/injective-chain/types/codec.go chain/types - @echo "👉 Replace injective-core/injective-chain/modules with sdk-go/chain" - @echo "👉 Replace injective-core/injective-chain/codec with sdk-go/chain/codec" - @echo "👉 Replace injective-core/injective-chain/codec/types with sdk-go/chain/codec/types" - @echo "👉 Replace injective-core/injective-chain/types with sdk-go/chain/types" - @echo "👉 Replace injective-core/injective-chain/crypto with sdk-go/chain/crypto" + @find ./chain -type f -name "*.go" -exec sed -i "" -e "s|github.com/InjectiveLabs/injective-core/injective-chain/modules|github.com/InjectiveLabs/sdk-go/chain|g" {} \; + @find ./chain -type f -name "*.go" -exec sed -i "" -e "s|github.com/InjectiveLabs/injective-core/injective-chain|github.com/InjectiveLabs/sdk-go/chain|g" {} \; + +#gen: gen-proto +# +#gen-proto: clone-all copy-proto +# buf generate --template buf.gen.chain.yaml +# buf generate --template buf.gen.indexer.yaml +# rm -rf local_proto +# $(call clean_repos) +# +#define clean_repos +# rm -Rf injective-indexer +#endef +# +#clean-all: +# $(call clean_repos) +# +#clone-injective-indexer: +# git clone https://github.com/InjectiveLabs/injective-indexer.git -b v1.13.4 --depth 1 --single-branch +# +#clone-all: clone-injective-indexer +# +#copy-proto: +# rm -rf local_proto +# mkdir -p local_proto +# find ./injective-indexer/api/gen/grpc -type f -name "*.proto" | while read -r file; do \ +# dest="local_proto/$$(basename $$(dirname $$(dirname "$$file")))/$$(basename $$(dirname "$$file"))"; \ +# mkdir -p "$$dest"; \ +# cp "$$file" "$$dest"; \ +# done tests: go test -race ./client/... ./ethereum/... coverage: go test -race -coverprofile=coverage.out -covermode=atomic ./client/... ./ethereum/... + +.PHONY: copy-exchange-client tests coverage \ No newline at end of file diff --git a/buf.gen.chain.yaml b/buf.gen.chain.yaml new file mode 100644 index 00000000..6f848993 --- /dev/null +++ b/buf.gen.chain.yaml @@ -0,0 +1,20 @@ +version: v2 +managed: + enabled: true + disable: + - module: buf.build/googleapis/googleapis + file_option: go_package_prefix +plugins: + - local: protoc-gen-go-grpc + out: ./chain/ + opt: paths=source_relative + - local: protoc-gen-gogo + out: ./chain/ + opt: paths=source_relative +inputs: +# - git_repo: https://github.com/InjectiveLabs/injective-core +# tag: v1.13.0 +# subdir: proto + - git_repo: https://github.com/InjectiveLabs/injective-core + branch: f/permissions-rework + subdir: proto diff --git a/buf.gen.indexer.yaml b/buf.gen.indexer.yaml new file mode 100644 index 00000000..81c925e6 --- /dev/null +++ b/buf.gen.indexer.yaml @@ -0,0 +1,21 @@ +version: v2 +managed: + enabled: true + disable: + - module: buf.build/googleapis/googleapis + file_option: go_package_prefix +plugins: + - remote: buf.build/protocolbuffers/go:v1.34.0 + out: ./exchange/ + opt: paths=source_relative + - remote: buf.build/grpc/go:v1.3.0 + out: ./exchange/ + opt: paths=source_relative +# - local: protoc-gen-go +# out: ./exchange/ +# opt: paths=source_relative +# - local: protoc-gen-go-grpc +# out: ./exchange/ +# opt: paths=source_relative +inputs: + - directory: local_proto diff --git a/chain/auction/types/auction.pb.go b/chain/auction/types/auction.pb.go index 164a7820..25703a53 100644 --- a/chain/auction/types/auction.pb.go +++ b/chain/auction/types/auction.pb.go @@ -32,6 +32,9 @@ type Params struct { AuctionPeriod int64 `protobuf:"varint,1,opt,name=auction_period,json=auctionPeriod,proto3" json:"auction_period,omitempty"` // min_next_bid_increment_rate defines the minimum increment rate for new bids MinNextBidIncrementRate cosmossdk_io_math.LegacyDec `protobuf:"bytes,2,opt,name=min_next_bid_increment_rate,json=minNextBidIncrementRate,proto3,customtype=cosmossdk.io/math.LegacyDec" json:"min_next_bid_increment_rate"` + // inj_basket_max_cap defines the maximum cap for INJ contained in an auction + // basket + InjBasketMaxCap cosmossdk_io_math.Int `protobuf:"bytes,3,opt,name=inj_basket_max_cap,json=injBasketMaxCap,proto3,customtype=cosmossdk.io/math.Int" json:"inj_basket_max_cap"` } func (m *Params) Reset() { *m = Params{} } @@ -365,43 +368,45 @@ func init() { } var fileDescriptor_49edfee5f1ef4b5a = []byte{ - // 567 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x94, 0xbf, 0x6f, 0xd3, 0x40, - 0x14, 0xc7, 0x73, 0x18, 0x22, 0x7a, 0xa8, 0x40, 0xad, 0x8a, 0xa6, 0xad, 0x64, 0x47, 0x46, 0xa8, - 0x01, 0xa9, 0x3e, 0x4a, 0xb7, 0x6e, 0x18, 0x10, 0xaa, 0x14, 0x50, 0x65, 0x98, 0x58, 0xac, 0xb3, - 0xfd, 0xe4, 0x5c, 0x93, 0xbb, 0x8b, 0x7c, 0xe7, 0xa4, 0x19, 0x11, 0x5b, 0x59, 0xf8, 0x13, 0x98, - 0x61, 0xe1, 0x4f, 0x60, 0xec, 0xd8, 0x11, 0x31, 0x04, 0x94, 0x0c, 0x20, 0x46, 0xfe, 0x02, 0x14, - 0xff, 0x88, 0xbc, 0x20, 0x31, 0x74, 0x60, 0x49, 0xfc, 0xbe, 0xf7, 0xee, 0xfb, 0x3e, 0xef, 0x49, - 0xf7, 0xf0, 0x0e, 0x13, 0xc7, 0x10, 0x69, 0x36, 0x02, 0x42, 0xb3, 0x48, 0x33, 0x29, 0xc8, 0x68, - 0x2f, 0x04, 0x4d, 0xf7, 0xaa, 0xd8, 0x1d, 0xa6, 0x52, 0x4b, 0x73, 0x73, 0x99, 0xe8, 0x56, 0x07, - 0x65, 0xe2, 0xd6, 0x7a, 0x22, 0x13, 0x99, 0x67, 0x91, 0xc5, 0x57, 0x71, 0x61, 0xcb, 0x8a, 0xa4, - 0xe2, 0x52, 0x91, 0x90, 0x2a, 0x58, 0x7a, 0x46, 0x92, 0x95, 0x86, 0x5b, 0x6b, 0x94, 0x33, 0x21, - 0x49, 0xfe, 0x5b, 0x48, 0xce, 0x47, 0x84, 0x9b, 0x47, 0x34, 0xa5, 0x5c, 0x99, 0x77, 0xf0, 0xf5, - 0xb2, 0x4c, 0x30, 0x84, 0x94, 0xc9, 0xb8, 0x85, 0xda, 0xa8, 0x63, 0xf8, 0xab, 0xa5, 0x7a, 0x94, - 0x8b, 0x26, 0xc5, 0xdb, 0x9c, 0x89, 0x40, 0xc0, 0x89, 0x0e, 0x42, 0x16, 0x07, 0x4c, 0x44, 0x29, - 0x70, 0x10, 0x3a, 0x48, 0xa9, 0x86, 0xd6, 0xa5, 0x36, 0xea, 0xac, 0x78, 0xb7, 0xcf, 0xa6, 0x76, - 0xe3, 0xeb, 0xd4, 0xde, 0x2e, 0x88, 0x54, 0xdc, 0x77, 0x99, 0x24, 0x9c, 0xea, 0x9e, 0xdb, 0x85, - 0x84, 0x46, 0x93, 0xc7, 0x10, 0xf9, 0x1b, 0x9c, 0x89, 0xe7, 0x70, 0xa2, 0x3d, 0x16, 0x1f, 0x56, - 0x26, 0x3e, 0xd5, 0x70, 0xb0, 0xf1, 0xf3, 0xbd, 0x8d, 0x4e, 0x7f, 0x7c, 0xba, 0x57, 0x01, 0x91, - 0x02, 0xd1, 0x79, 0x83, 0xb0, 0xe1, 0xb1, 0xd8, 0xdc, 0xc7, 0xcd, 0x90, 0xc5, 0x31, 0xa4, 0x39, - 0xe2, 0x8a, 0xb7, 0xfd, 0x6b, 0x6a, 0x97, 0xca, 0xef, 0xa9, 0xbd, 0x3a, 0xa1, 0x7c, 0x70, 0xe0, - 0x14, 0xb1, 0xe3, 0x97, 0x07, 0xe6, 0x53, 0xdc, 0xa4, 0x5c, 0x66, 0x42, 0x97, 0x8c, 0xa4, 0x64, - 0xdc, 0x49, 0x98, 0xee, 0x65, 0xa1, 0x1b, 0x49, 0x4e, 0xca, 0x01, 0x16, 0x7f, 0xbb, 0x2a, 0xee, - 0x13, 0x3d, 0x19, 0x82, 0x72, 0x1f, 0x49, 0x26, 0xfc, 0xf2, 0xba, 0x73, 0x8a, 0xf0, 0x5a, 0x97, - 0x2a, 0xfd, 0xb0, 0x80, 0xf3, 0x41, 0x65, 0x03, 0x6d, 0xde, 0xc2, 0xcd, 0x31, 0x13, 0xa2, 0x62, - 0xf2, 0xcb, 0xe8, 0xc2, 0xca, 0x9a, 0xeb, 0xf8, 0x4a, 0x2a, 0x33, 0x11, 0xb7, 0x8c, 0x36, 0xea, - 0x5c, 0xf6, 0x8b, 0xc0, 0x79, 0x8d, 0xf0, 0xd5, 0x27, 0x23, 0x10, 0x8b, 0x29, 0x2e, 0x18, 0xea, - 0x73, 0xb9, 0xf0, 0xd6, 0xff, 0xc2, 0xf0, 0x16, 0x61, 0x33, 0x67, 0xf8, 0x2f, 0x26, 0xf2, 0x19, - 0xe1, 0xb5, 0x3a, 0xcd, 0x0b, 0x4d, 0xd3, 0x5a, 0x2e, 0xaa, 0xe5, 0x9a, 0x77, 0xf1, 0x4d, 0x10, - 0x31, 0x13, 0x49, 0xa0, 0x19, 0x07, 0xa5, 0x29, 0x1f, 0xe6, 0x50, 0x86, 0x7f, 0xa3, 0xd0, 0x5f, - 0x56, 0xb2, 0x79, 0x8c, 0xb1, 0x80, 0x71, 0x10, 0x52, 0xd5, 0x07, 0xdd, 0x32, 0xda, 0x46, 0xe7, - 0xda, 0x83, 0x4d, 0xb7, 0x00, 0x74, 0x17, 0x2f, 0xae, 0x7a, 0x9c, 0x39, 0xa3, 0x77, 0x7f, 0xd1, - 0xd4, 0x87, 0x6f, 0x76, 0xe7, 0x1f, 0x9b, 0x52, 0xfe, 0x8a, 0x80, 0xb1, 0x97, 0xbb, 0x7b, 0xc9, - 0xd9, 0xcc, 0x42, 0xe7, 0x33, 0x0b, 0x7d, 0x9f, 0x59, 0xe8, 0xdd, 0xdc, 0x6a, 0x9c, 0xcf, 0xad, - 0xc6, 0x97, 0xb9, 0xd5, 0x78, 0xf5, 0xac, 0x66, 0x77, 0x58, 0xad, 0x87, 0x2e, 0x0d, 0x15, 0x59, - 0x2e, 0x8b, 0xdd, 0x48, 0xa6, 0x50, 0x0f, 0x7b, 0x94, 0x09, 0xc2, 0x65, 0x9c, 0x0d, 0x40, 0x2d, - 0x57, 0x4e, 0x5e, 0x39, 0x6c, 0xe6, 0x5b, 0x60, 0xff, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x65, - 0x8c, 0x47, 0xe7, 0x94, 0x04, 0x00, 0x00, + // 607 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x54, 0xb1, 0x4f, 0x14, 0x4f, + 0x14, 0xbe, 0xf9, 0xdd, 0xcf, 0x8b, 0x8c, 0x41, 0x64, 0x82, 0x72, 0x40, 0xdc, 0x23, 0x67, 0x0c, + 0x68, 0xc2, 0x8e, 0x48, 0x47, 0xe7, 0xa2, 0x05, 0x06, 0x0c, 0x59, 0xad, 0x6c, 0x36, 0xb3, 0xbb, + 0x2f, 0xc7, 0x1c, 0xcc, 0xcc, 0x66, 0x67, 0x16, 0x8e, 0x7f, 0xc1, 0xca, 0x3f, 0xc0, 0x18, 0x1b, + 0x2d, 0xac, 0xfc, 0x13, 0x2c, 0x29, 0x29, 0x8d, 0xc5, 0x69, 0xa0, 0xd0, 0x58, 0xda, 0xd8, 0x9a, + 0x9b, 0x9d, 0xbd, 0x6c, 0x62, 0x34, 0x56, 0xc4, 0xe6, 0x6e, 0xdf, 0x37, 0xef, 0x7d, 0xf3, 0x7d, + 0xef, 0x65, 0x1e, 0x5e, 0xe2, 0xb2, 0x0f, 0x89, 0xe1, 0x07, 0x40, 0x59, 0x91, 0x18, 0xae, 0x24, + 0x3d, 0x58, 0x8d, 0xc1, 0xb0, 0xd5, 0x2a, 0xf6, 0xb3, 0x5c, 0x19, 0x45, 0xe6, 0xc6, 0x89, 0x7e, + 0x75, 0xe0, 0x12, 0xe7, 0x67, 0x7a, 0xaa, 0xa7, 0x6c, 0x16, 0x1d, 0x7d, 0x95, 0x05, 0xf3, 0x5e, + 0xa2, 0xb4, 0x50, 0x9a, 0xc6, 0x4c, 0xc3, 0x98, 0x33, 0x51, 0xdc, 0x11, 0xce, 0x4f, 0x33, 0xc1, + 0xa5, 0xa2, 0xf6, 0xb7, 0x84, 0xba, 0x3f, 0x10, 0x6e, 0xed, 0xb0, 0x9c, 0x09, 0x4d, 0x6e, 0xe2, + 0xcb, 0xee, 0x9a, 0x28, 0x83, 0x9c, 0xab, 0xb4, 0x8d, 0x16, 0xd1, 0x72, 0x33, 0x9c, 0x74, 0xe8, + 0x8e, 0x05, 0x09, 0xc3, 0x0b, 0x82, 0xcb, 0x48, 0xc2, 0xc0, 0x44, 0x31, 0x4f, 0x23, 0x2e, 0x93, + 0x1c, 0x04, 0x48, 0x13, 0xe5, 0xcc, 0x40, 0xfb, 0xbf, 0x45, 0xb4, 0x3c, 0x11, 0xdc, 0x38, 0x1e, + 0x76, 0x1a, 0x1f, 0x87, 0x9d, 0x85, 0x52, 0x91, 0x4e, 0xf7, 0x7c, 0xae, 0xa8, 0x60, 0x66, 0xd7, + 0xdf, 0x82, 0x1e, 0x4b, 0x8e, 0xee, 0x43, 0x12, 0xce, 0x0a, 0x2e, 0x1f, 0xc1, 0xc0, 0x04, 0x3c, + 0xdd, 0xac, 0x48, 0x42, 0x66, 0x80, 0x3c, 0xc4, 0x84, 0xcb, 0x7e, 0x14, 0x33, 0xbd, 0x07, 0x26, + 0x12, 0x6c, 0x10, 0x25, 0x2c, 0x6b, 0x37, 0x2d, 0xf3, 0x75, 0xc7, 0x7c, 0xf5, 0x57, 0xe6, 0x4d, + 0x69, 0xc2, 0x29, 0x2e, 0xfb, 0x81, 0xad, 0xdb, 0x66, 0x83, 0x0d, 0x96, 0xad, 0xcf, 0x7e, 0x7d, + 0xd5, 0x41, 0xcf, 0xbe, 0xbc, 0xbb, 0x5d, 0x99, 0xa3, 0xa5, 0xdd, 0xee, 0x4b, 0x84, 0x9b, 0x01, + 0x4f, 0xc9, 0x1a, 0x6e, 0xc5, 0x3c, 0x4d, 0x21, 0xb7, 0x76, 0x27, 0x82, 0x85, 0x6f, 0xc3, 0x8e, + 0x43, 0xbe, 0x0f, 0x3b, 0x93, 0x47, 0x4c, 0xec, 0xaf, 0x77, 0xcb, 0xb8, 0x1b, 0xba, 0x03, 0x12, + 0xe3, 0x16, 0x13, 0xaa, 0x90, 0xc6, 0xfa, 0xbd, 0x74, 0x77, 0xce, 0x2f, 0xe5, 0xf8, 0xa3, 0xd6, + 0x57, 0x53, 0xf2, 0x37, 0x14, 0x97, 0x01, 0x75, 0x82, 0x97, 0x7a, 0xdc, 0xec, 0x16, 0xb1, 0x9f, + 0x28, 0x41, 0xdd, 0x9c, 0xca, 0xbf, 0x15, 0x9d, 0xee, 0x51, 0x73, 0x94, 0x81, 0xb6, 0x05, 0xa1, + 0x63, 0xee, 0xbe, 0x46, 0x78, 0x7a, 0x8b, 0x69, 0x73, 0xaf, 0xd4, 0x1d, 0x82, 0x2e, 0xf6, 0x0d, + 0xb9, 0x86, 0x5b, 0x87, 0x5c, 0xca, 0x4a, 0x6e, 0xe8, 0xa2, 0xf3, 0x50, 0x44, 0x66, 0xf0, 0x85, + 0x5c, 0x15, 0x32, 0xb5, 0xa3, 0xf8, 0x3f, 0x2c, 0x83, 0xee, 0x0b, 0x84, 0x2f, 0x3e, 0x38, 0x00, + 0x39, 0x9a, 0xe3, 0x48, 0x5e, 0xbd, 0x9b, 0xe7, 0xd9, 0xb0, 0xdf, 0xc8, 0x7b, 0x83, 0x30, 0xb1, + 0xf2, 0xfe, 0xf5, 0x3e, 0xbe, 0x47, 0x78, 0xba, 0x2e, 0xf4, 0xb1, 0x61, 0x79, 0x2d, 0x17, 0xd5, + 0x72, 0xc9, 0x2d, 0x7c, 0x05, 0x64, 0xca, 0x65, 0x2f, 0x32, 0x5c, 0x80, 0x36, 0x4c, 0x64, 0x56, + 0x6f, 0x33, 0x9c, 0x2a, 0xf1, 0x27, 0x15, 0x4c, 0xfa, 0x18, 0x4b, 0x38, 0x74, 0x8f, 0xa9, 0xdd, + 0x5c, 0x6c, 0xfe, 0xd9, 0xd4, 0x9d, 0x91, 0xa9, 0xb7, 0x9f, 0x3a, 0xcb, 0x7f, 0x69, 0x4a, 0x87, + 0x13, 0x12, 0x0e, 0xcb, 0x27, 0x17, 0xf4, 0x8e, 0x4f, 0x3d, 0x74, 0x72, 0xea, 0xa1, 0xcf, 0xa7, + 0x1e, 0x7a, 0x7e, 0xe6, 0x35, 0x4e, 0xce, 0xbc, 0xc6, 0x87, 0x33, 0xaf, 0xf1, 0x74, 0xbb, 0x46, + 0xb7, 0x59, 0xad, 0xb5, 0x2d, 0x16, 0x6b, 0x3a, 0x5e, 0x72, 0x2b, 0x89, 0xca, 0xa1, 0x1e, 0xee, + 0x32, 0x2e, 0xa9, 0x50, 0x69, 0xb1, 0x0f, 0x7a, 0xbc, 0x2a, 0xed, 0xcd, 0x71, 0xcb, 0x6e, 0xaf, + 0xb5, 0x9f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x60, 0x2e, 0x41, 0x2d, 0x4c, 0x05, 0x00, 0x00, } func (this *Params) Equal(that interface{}) bool { @@ -429,6 +434,9 @@ func (this *Params) Equal(that interface{}) bool { if !this.MinNextBidIncrementRate.Equal(that1.MinNextBidIncrementRate) { return false } + if !this.InjBasketMaxCap.Equal(that1.InjBasketMaxCap) { + return false + } return true } func (m *Params) Marshal() (dAtA []byte, err error) { @@ -451,6 +459,16 @@ func (m *Params) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + { + size := m.InjBasketMaxCap.Size() + i -= size + if _, err := m.InjBasketMaxCap.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintAuction(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a { size := m.MinNextBidIncrementRate.Size() i -= size @@ -713,6 +731,8 @@ func (m *Params) Size() (n int) { } l = m.MinNextBidIncrementRate.Size() n += 1 + l + sovAuction(uint64(l)) + l = m.InjBasketMaxCap.Size() + n += 1 + l + sovAuction(uint64(l)) return n } @@ -894,6 +914,40 @@ func (m *Params) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field InjBasketMaxCap", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAuction + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthAuction + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthAuction + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.InjBasketMaxCap.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipAuction(dAtA[iNdEx:]) @@ -980,7 +1034,7 @@ func (m *Bid) Unmarshal(dAtA []byte) error { if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Amount", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowAuction @@ -990,16 +1044,15 @@ func (m *Bid) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthAuction } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthAuction } @@ -1096,7 +1149,7 @@ func (m *LastAuctionResult) Unmarshal(dAtA []byte) error { if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Amount", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowAuction @@ -1106,16 +1159,15 @@ func (m *LastAuctionResult) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthAuction } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthAuction } @@ -1231,7 +1283,7 @@ func (m *EventBid) Unmarshal(dAtA []byte) error { if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Amount", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowAuction @@ -1241,16 +1293,15 @@ func (m *EventBid) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthAuction } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthAuction } @@ -1366,7 +1417,7 @@ func (m *EventAuctionResult) Unmarshal(dAtA []byte) error { if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Amount", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowAuction @@ -1376,16 +1427,15 @@ func (m *EventAuctionResult) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthAuction } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthAuction } diff --git a/chain/auction/types/errors.go b/chain/auction/types/errors.go deleted file mode 100644 index c8e7ba2e..00000000 --- a/chain/auction/types/errors.go +++ /dev/null @@ -1,8 +0,0 @@ -package types - -import "cosmossdk.io/errors" - -var ( - ErrBidInvalid = errors.Register(ModuleName, 1, "invalid bid denom") - ErrBidRound = errors.Register(ModuleName, 2, "invalid bid round") -) diff --git a/chain/auction/types/events.go b/chain/auction/types/events.go deleted file mode 100644 index 2789dc3c..00000000 --- a/chain/auction/types/events.go +++ /dev/null @@ -1,6 +0,0 @@ -package types - -// Auction module event types -const ( - EventTypeNewBid = "new_bid" -) diff --git a/chain/auction/types/expected_keepers.go b/chain/auction/types/expected_keepers.go deleted file mode 100644 index e9b959b5..00000000 --- a/chain/auction/types/expected_keepers.go +++ /dev/null @@ -1,16 +0,0 @@ -package types - -import ( - "context" - - sdk "github.com/cosmos/cosmos-sdk/types" -) - -// BankKeeper defines the expected bank keeper methods -type BankKeeper interface { - GetAllBalances(ctx context.Context, addr sdk.AccAddress) sdk.Coins - SendCoinsFromModuleToModule(ctx context.Context, senderModule, recipientModule string, amt sdk.Coins) error - SendCoinsFromModuleToAccount(ctx context.Context, senderModule string, recipientAddr sdk.AccAddress, amt sdk.Coins) error - SendCoinsFromAccountToModule(ctx context.Context, senderAddr sdk.AccAddress, recipientModule string, amt sdk.Coins) error - BurnCoins(ctx context.Context, moduleName string, amt sdk.Coins) error -} diff --git a/chain/auction/types/genesis.go b/chain/auction/types/genesis.go deleted file mode 100644 index 4e5fbf60..00000000 --- a/chain/auction/types/genesis.go +++ /dev/null @@ -1,21 +0,0 @@ -package types - -func NewGenesisState() GenesisState { - return GenesisState{} -} - -func (gs GenesisState) Validate() error { - if err := gs.Params.Validate(); err != nil { - return err - } - return nil -} - -func DefaultGenesisState() *GenesisState { - return &GenesisState{ - Params: DefaultParams(), - AuctionRound: 0, - HighestBid: nil, - AuctionEndingTimestamp: 0, - } -} diff --git a/chain/auction/types/key.go b/chain/auction/types/key.go deleted file mode 100644 index 0b151360..00000000 --- a/chain/auction/types/key.go +++ /dev/null @@ -1,16 +0,0 @@ -package types - -const ( - ModuleName = "auction" - StoreKey = ModuleName - TStoreKey = "transient_auction" -) - -var ( - // Keys for store prefixes - BidsKey = []byte{0x01} - AuctionRoundKey = []byte{0x03} - KeyEndingTimeStamp = []byte{0x04} - KeyLastAuctionResult = []byte{0x05} - ParamsKey = []byte{0x10} -) diff --git a/chain/auction/types/msgs.go b/chain/auction/types/msgs.go deleted file mode 100644 index 987533e0..00000000 --- a/chain/auction/types/msgs.go +++ /dev/null @@ -1,95 +0,0 @@ -package types - -import ( - "cosmossdk.io/errors" - sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - - chaintypes "github.com/InjectiveLabs/sdk-go/chain/types" -) - -const ( - RouterKey = ModuleName - - TypeMsgBid = "bid" - TypeMsgUpdateParams = "updateParams" -) - -var ( - _ sdk.Msg = &MsgBid{} - _ sdk.Msg = &MsgUpdateParams{} -) - -// Route implements the sdk.Msg interface. It should return the name of the module -func (msg MsgUpdateParams) Route() string { return RouterKey } - -// Type implements the sdk.Msg interface. It should return the action. -func (msg MsgUpdateParams) Type() string { return TypeMsgUpdateParams } - -// ValidateBasic implements the sdk.Msg interface. It runs stateless checks on the message -func (msg MsgUpdateParams) ValidateBasic() error { - if _, err := sdk.AccAddressFromBech32(msg.Authority); err != nil { - return errors.Wrap(err, "invalid authority address") - } - - if err := msg.Params.Validate(); err != nil { - return err - } - - return nil -} - -// GetSignBytes implements the sdk.Msg interface. It encodes the message for signing -func (msg *MsgUpdateParams) GetSignBytes() []byte { - return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(msg)) -} - -// GetSigners implements the sdk.Msg interface. It defines whose signature is required -func (msg MsgUpdateParams) GetSigners() []sdk.AccAddress { - sender, err := sdk.AccAddressFromBech32(msg.Authority) - if err != nil { - panic(err) - } - return []sdk.AccAddress{sender} -} - -// Route implements the sdk.Msg interface. It should return the name of the module -func (msg MsgBid) Route() string { return RouterKey } - -// Type implements the sdk.Msg interface. It should return the action. -func (msg MsgBid) Type() string { return TypeMsgBid } - -// ValidateBasic implements the sdk.Msg interface. It runs stateless checks on the message -func (msg MsgBid) ValidateBasic() error { - if msg.Sender == "" { - return errors.Wrap(sdkerrors.ErrInvalidAddress, msg.Sender) - } - - if !msg.BidAmount.IsValid() { - return errors.Wrap(sdkerrors.ErrInvalidCoins, msg.BidAmount.String()) - } - - if !msg.BidAmount.IsPositive() { - return errors.Wrap(sdkerrors.ErrInvalidCoins, msg.BidAmount.String()) - } - - if msg.BidAmount.Denom != chaintypes.InjectiveCoin { - return errors.Wrap(ErrBidInvalid, msg.BidAmount.Denom) - } - - return nil -} - -// GetSignBytes implements the sdk.Msg interface. It encodes the message for signing -func (msg *MsgBid) GetSignBytes() []byte { - return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(msg)) -} - -// GetSigners implements the sdk.Msg interface. It defines whose signature is required -func (msg MsgBid) GetSigners() []sdk.AccAddress { - sender, err := sdk.AccAddressFromBech32(msg.Sender) - if err != nil { - panic(err) - } - return []sdk.AccAddress{sender} -} diff --git a/chain/auction/types/params.go b/chain/auction/types/params.go deleted file mode 100644 index fe3f865b..00000000 --- a/chain/auction/types/params.go +++ /dev/null @@ -1,103 +0,0 @@ -package types - -import ( - "fmt" - - "cosmossdk.io/math" - paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" -) - -var _ paramtypes.ParamSet = &Params{} - -// Auction params default values -var ( - // DefaultAuctionPeriod represents the number of seconds in 1 week - DefaultAuctionPeriod int64 = 60 * 60 * 24 * 7 - // DefaultMinNextBidIncrementRate represents default min increment rate 0.25% - DefaultMinNextBidIncrementRate = math.LegacyNewDecWithPrec(25, 4) -) - -// Parameter keys -var ( - KeyAuctionPeriod = []byte("AuctionPeriod") - KeyMinNextBidIncrementRate = []byte("MinNextBidIncrementRate") -) - -// ParamKeyTable returns the parameter key table. -func ParamKeyTable() paramtypes.KeyTable { - return paramtypes.NewKeyTable().RegisterParamSet(&Params{}) -} - -// NewParams creates a new Params instance -func NewParams( - auctionPeriod int64, - minNextBidIncrementRate math.LegacyDec, -) Params { - return Params{ - AuctionPeriod: auctionPeriod, - MinNextBidIncrementRate: minNextBidIncrementRate, - } -} - -// ParamSetPairs returns the parameter set pairs. -func (p *Params) ParamSetPairs() paramtypes.ParamSetPairs { - return paramtypes.ParamSetPairs{ - paramtypes.NewParamSetPair(KeyAuctionPeriod, &p.AuctionPeriod, validateAuctionPeriodDuration), - paramtypes.NewParamSetPair(KeyMinNextBidIncrementRate, &p.MinNextBidIncrementRate, validateMinNextBidIncrementRate), - } -} - -// DefaultParams returns a default set of parameters. -func DefaultParams() Params { - return Params{ - AuctionPeriod: DefaultAuctionPeriod, - MinNextBidIncrementRate: DefaultMinNextBidIncrementRate, - } -} - -// Validate performs basic validation on auction parameters. -func (p Params) Validate() error { - if err := validateAuctionPeriodDuration(p.AuctionPeriod); err != nil { - return err - } - - if err := validateMinNextBidIncrementRate(p.MinNextBidIncrementRate); err != nil { - return err - } - - return nil -} - -func validateAuctionPeriodDuration(i interface{}) error { - v, ok := i.(int64) - if !ok { - return fmt.Errorf("invalid parameter type: %T", i) - } - - if v == 0 { - return fmt.Errorf("AuctionPeriodDuration must be positive: %d", v) - } - - return nil -} - -func validateMinNextBidIncrementRate(i interface{}) error { - v, ok := i.(math.LegacyDec) - if !ok { - return fmt.Errorf("invalid parameter type: %T", i) - } - - if v.IsNil() { - return fmt.Errorf("MinNextBidIncrementRate cannot be nil") - } - - if v.Equal(math.LegacyZeroDec()) { - return fmt.Errorf("MinNextBidIncrementRate must be positive: %s", v.String()) - } - - if v.GT(math.LegacyNewDecWithPrec(2, 1)) { // > 20% - return fmt.Errorf("MinNextBidIncrementRate must be equal or less than 20 percent: %s", v.String()) - } - - return nil -} diff --git a/chain/auction/types/paramset.go b/chain/auction/types/paramset.go deleted file mode 100644 index 80d0852b..00000000 --- a/chain/auction/types/paramset.go +++ /dev/null @@ -1,26 +0,0 @@ -package types - -type ( - ValueValidatorFn func(value interface{}) error - - // ParamSetPair is used for associating paramsubspace key and field of param - // structs. - ParamSetPair struct { - Key []byte - Value interface{} - ValidatorFn ValueValidatorFn - } -) - -// NewParamSetPair creates a new ParamSetPair instance. -func NewParamSetPair(key []byte, value interface{}, vfn ValueValidatorFn) ParamSetPair { - return ParamSetPair{key, value, vfn} -} - -// ParamSetPairs Slice of KeyFieldPair -type ParamSetPairs []ParamSetPair - -// ParamSet defines an interface for structs containing parameters for a module -type ParamSet interface { - ParamSetPairs() ParamSetPairs -} diff --git a/chain/codec/codec.go b/chain/codec/codec.go index cd1e4e12..a557203b 100644 --- a/chain/codec/codec.go +++ b/chain/codec/codec.go @@ -14,6 +14,7 @@ import ( func RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) { sdk.RegisterLegacyAminoCodec(cdc) cryptocodec.RegisterCrypto(cdc) + codec.RegisterEvidences(cdc) } // RegisterInterfaces registers Interfaces from types, crypto, and SDK std. diff --git a/chain/crypto/codec/amino.go b/chain/crypto/codec/amino.go index f611be2c..7f5b9963 100644 --- a/chain/crypto/codec/amino.go +++ b/chain/crypto/codec/amino.go @@ -3,7 +3,6 @@ package codec import ( "github.com/cosmos/cosmos-sdk/codec" "github.com/cosmos/cosmos-sdk/codec/legacy" - cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec" "github.com/cosmos/cosmos-sdk/crypto/keyring" cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types" diff --git a/chain/crypto/keyring/options.go b/chain/crypto/keyring/options.go deleted file mode 100644 index 333bc4f9..00000000 --- a/chain/crypto/keyring/options.go +++ /dev/null @@ -1,44 +0,0 @@ -package keyring - -import ( - "github.com/cosmos/cosmos-sdk/crypto/keyring" - "github.com/cosmos/cosmos-sdk/crypto/types" - - cosmoshd "github.com/cosmos/cosmos-sdk/crypto/hd" - - "github.com/InjectiveLabs/sdk-go/chain/crypto/ethsecp256k1" - "github.com/InjectiveLabs/sdk-go/chain/crypto/hd" -) - -// AppName defines the Ledger app used for signing. Evmos uses the Ethereum app -const AppName = "Ethereum" - -var ( - // SupportedAlgorithms defines the list of signing algorithms used on Injective: - // - eth_secp256k1 (Ethereum) - // - secp256k1 (Tendermint) - SupportedAlgorithms = keyring.SigningAlgoList{hd.EthSecp256k1, cosmoshd.Secp256k1} - // SupportedAlgorithmsLedger defines the list of signing algorithms used on Evmos for the Ledger device: - // - secp256k1 (in order to comply with Cosmos SDK) - // The Ledger derivation function is responsible for all signing and address generation. - SupportedAlgorithmsLedger = keyring.SigningAlgoList{hd.EthSecp256k1} - // LedgerDerivation defines the Evmos Ledger Go derivation (Ethereum app with EIP-712 signing) - // LedgerDerivation = ledger.EvmosLedgerDerivation() - // CreatePubkey uses the ethsecp256k1 pubkey with Ethereum address generation and keccak hashing - CreatePubkey = func(key []byte) types.PubKey { return ðsecp256k1.PubKey{Key: key} } - // SkipDERConversion represents whether the signed Ledger output should skip conversion from DER to BER. - // This is set to true for signing performed by the Ledger Ethereum app. - SkipDERConversion = true -) - -// EthSecp256k1Option defines a function keys options for the ethereum Secp256k1 curve. -// It supports eth_secp256k1 keys for accounts. -func EthSecp256k1Option() keyring.Option { - return func(options *keyring.Options) { - options.SupportedAlgos = SupportedAlgorithms - options.SupportedAlgosLedger = SupportedAlgorithmsLedger - options.LedgerCreateKey = CreatePubkey - options.LedgerAppName = AppName - options.LedgerSigSkipDERConv = SkipDERConversion - } -} diff --git a/chain/exchange/types/common_utils.go b/chain/exchange/types/common_utils.go index c949b754..7b0c63c9 100644 --- a/chain/exchange/types/common_utils.go +++ b/chain/exchange/types/common_utils.go @@ -322,39 +322,6 @@ func IntBytesToInt(bz []byte) math.Int { return math.NewIntFromBigInt(new(big.Int).SetBytes(bz)) } -func HasDuplicates(slice []string) bool { - seen := make(map[string]struct{}) - for _, item := range slice { - if _, ok := seen[item]; ok { - return true - } - seen[item] = struct{}{} - } - return false -} - -func HasDuplicatesHexHash(slice []string) bool { - seen := make(map[common.Hash]struct{}) - for _, item := range slice { - if _, ok := seen[common.HexToHash(item)]; ok { - return true - } - seen[common.HexToHash(item)] = struct{}{} - } - return false -} - -func HasDuplicatesCoin(slice []sdk.Coin) bool { - seen := make(map[string]struct{}) - for _, item := range slice { - if _, ok := seen[item.Denom]; ok { - return true - } - seen[item.Denom] = struct{}{} - } - return false -} - func HasDuplicatesOrder(slice []*OrderData) bool { seenHashes := make(map[string]struct{}) seenCids := make(map[string]struct{}) diff --git a/chain/exchange/types/derivative_orders.go b/chain/exchange/types/derivative_orders.go index 630b470a..e5f9fa42 100644 --- a/chain/exchange/types/derivative_orders.go +++ b/chain/exchange/types/derivative_orders.go @@ -52,6 +52,14 @@ func (m *DerivativeLimitOrder) ToTrimmed() *TrimmedDerivativeLimitOrder { Cid: m.Cid(), } } +func (m *DerivativeLimitOrder) ToStandardized() *TrimmedLimitOrder { + return &TrimmedLimitOrder{ + Price: m.OrderInfo.Price, + Quantity: m.OrderInfo.Quantity, + OrderHash: common.BytesToHash(m.OrderHash).Hex(), + SubaccountId: m.OrderInfo.SubaccountId, + } +} func (o *DerivativeMarketOrderCancel) GetCancelDepositDelta() *DepositDelta { order := o.MarketOrder diff --git a/chain/exchange/types/errors.go b/chain/exchange/types/errors.go index b7b6035b..99bb5be8 100644 --- a/chain/exchange/types/errors.go +++ b/chain/exchange/types/errors.go @@ -81,7 +81,7 @@ var ( ErrSenderIsNotAnAdmin = errors.Register(ModuleName, 74, "sender should be a market admin") ErrMarketAlreadyScheduledToSettle = errors.Register(ModuleName, 75, "market is already scheduled to settle") ErrGenericMarketNotFound = errors.Register(ModuleName, 76, "market not found") - ErrInvalidDenomDecimal = errors.Register(ModuleName, 77, "denom decimal cannot be below 1 or above max scale factor") + ErrInvalidDenomDecimal = errors.Register(ModuleName, 77, "denom decimal cannot be higher than max scale factor") ErrInvalidState = errors.Register(ModuleName, 78, "state is invalid") ErrTransientOrdersUpToCancelNotSupported = errors.Register(ModuleName, 79, "transient orders up to cancellation not supported") ErrInvalidTrade = errors.Register(ModuleName, 80, "invalid trade") @@ -109,4 +109,5 @@ var ( ErrInvalidStakeGrant = errors.Register(ModuleName, 102, "invalid stake grant") ErrInsufficientStake = errors.Register(ModuleName, 103, "insufficient stake for grant") ErrInvalidPermissions = errors.Register(ModuleName, 104, "invalid permissions") + ErrDenomDecimalsDoNotMatch = errors.Register(ModuleName, 105, "the decimals specified for the denom is incorrect") ) diff --git a/chain/exchange/types/exchange.pb.go b/chain/exchange/types/exchange.pb.go index ff40e9d8..4417ebc5 100644 --- a/chain/exchange/types/exchange.pb.go +++ b/chain/exchange/types/exchange.pb.go @@ -512,6 +512,8 @@ type DerivativeMarket struct { Admin string `protobuf:"bytes,18,opt,name=admin,proto3" json:"admin,omitempty"` // level of admin permissions AdminPermissions uint32 `protobuf:"varint,19,opt,name=admin_permissions,json=adminPermissions,proto3" json:"admin_permissions,omitempty"` + // quote token decimals + QuoteDecimals uint32 `protobuf:"varint,20,opt,name=quote_decimals,json=quoteDecimals,proto3" json:"quote_decimals,omitempty"` } func (m *DerivativeMarket) Reset() { *m = DerivativeMarket{} } @@ -590,6 +592,8 @@ type BinaryOptionsMarket struct { MinNotional cosmossdk_io_math.LegacyDec `protobuf:"bytes,18,opt,name=min_notional,json=minNotional,proto3,customtype=cosmossdk.io/math.LegacyDec" json:"min_notional"` // level of admin permissions AdminPermissions uint32 `protobuf:"varint,19,opt,name=admin_permissions,json=adminPermissions,proto3" json:"admin_permissions,omitempty"` + // quote token decimals + QuoteDecimals uint32 `protobuf:"varint,20,opt,name=quote_decimals,json=quoteDecimals,proto3" json:"quote_decimals,omitempty"` } func (m *BinaryOptionsMarket) Reset() { *m = BinaryOptionsMarket{} } @@ -981,6 +985,10 @@ type SpotMarket struct { Admin string `protobuf:"bytes,12,opt,name=admin,proto3" json:"admin,omitempty"` // level of admin permissions AdminPermissions uint32 `protobuf:"varint,13,opt,name=admin_permissions,json=adminPermissions,proto3" json:"admin_permissions,omitempty"` + // base token decimals + BaseDecimals uint32 `protobuf:"varint,14,opt,name=base_decimals,json=baseDecimals,proto3" json:"base_decimals,omitempty"` + // quote token decimals + QuoteDecimals uint32 `protobuf:"varint,15,opt,name=quote_decimals,json=quoteDecimals,proto3" json:"quote_decimals,omitempty"` } func (m *SpotMarket) Reset() { *m = SpotMarket{} } @@ -1065,6 +1073,20 @@ func (m *SpotMarket) GetAdminPermissions() uint32 { return 0 } +func (m *SpotMarket) GetBaseDecimals() uint32 { + if m != nil { + return m.BaseDecimals + } + return 0 +} + +func (m *SpotMarket) GetQuoteDecimals() uint32 { + if m != nil { + return m.QuoteDecimals + } + return 0 +} + // A subaccount's deposit for a given base currency type Deposit struct { AvailableBalance cosmossdk_io_math.LegacyDec `protobuf:"bytes,1,opt,name=available_balance,json=availableBalance,proto3,customtype=cosmossdk.io/math.LegacyDec" json:"available_balance"` @@ -3344,285 +3366,287 @@ func init() { } var fileDescriptor_2116e2804e9c53f9 = []byte{ - // 4438 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x7c, 0xdb, 0x6f, 0x63, 0x59, - 0x56, 0x77, 0x1d, 0x3b, 0x17, 0x7b, 0xf9, 0x12, 0xe7, 0xe4, 0xe6, 0x24, 0x55, 0x89, 0xdb, 0xd5, - 0x35, 0x9d, 0xae, 0xee, 0x4e, 0xa6, 0xfa, 0xfb, 0x7a, 0xd4, 0xd3, 0xa3, 0xd1, 0xb4, 0x13, 0x27, - 0x55, 0xa6, 0x73, 0x9b, 0xe3, 0xa4, 0xa1, 0x66, 0x34, 0x73, 0xb4, 0x73, 0xce, 0x4e, 0xbc, 0x2b, - 0xe7, 0xe2, 0x3a, 0xfb, 0x38, 0x95, 0x34, 0x42, 0xe2, 0xa1, 0x85, 0x98, 0x00, 0x62, 0x78, 0x40, - 0x48, 0x48, 0x41, 0xc3, 0x03, 0x42, 0xf0, 0x02, 0xef, 0xf0, 0x80, 0x84, 0x80, 0x79, 0x18, 0xa4, - 0x79, 0x40, 0x02, 0x21, 0x31, 0xa0, 0x6e, 0x24, 0x10, 0x9a, 0x3f, 0x01, 0x21, 0xb4, 0x2f, 0xe7, - 0x62, 0x3b, 0x71, 0xec, 0x24, 0x03, 0x03, 0xbc, 0x54, 0x79, 0x5f, 0xd6, 0x6f, 0xed, 0xbd, 0xd6, - 0xda, 0x6b, 0xad, 0x7d, 0x39, 0x81, 0x37, 0x89, 0xf3, 0x02, 0x1b, 0x3e, 0x39, 0xc1, 0x2b, 0xf8, - 0xd4, 0x68, 0x20, 0xe7, 0x08, 0xaf, 0x9c, 0x3c, 0x39, 0xc0, 0x3e, 0x7a, 0x12, 0x56, 0x2c, 0x37, - 0x3d, 0xd7, 0x77, 0xd5, 0xb9, 0xb0, 0xeb, 0x72, 0xd8, 0x22, 0xbb, 0xce, 0x4d, 0x1e, 0xb9, 0x47, - 0x2e, 0xef, 0xb6, 0xc2, 0x7e, 0x09, 0x8a, 0xb9, 0x05, 0xc3, 0xa5, 0xb6, 0x4b, 0x57, 0x0e, 0x10, - 0x8d, 0x50, 0x0d, 0x97, 0x38, 0xb2, 0xfd, 0x51, 0xc4, 0xdc, 0xf5, 0x90, 0x61, 0x45, 0x9d, 0x44, - 0x51, 0x76, 0x1b, 0x47, 0x36, 0x71, 0xdc, 0x15, 0xfe, 0xaf, 0xa8, 0x2a, 0xff, 0xc3, 0x14, 0x8c, - 0xec, 0x22, 0x0f, 0xd9, 0x54, 0xc5, 0xb0, 0x48, 0x9b, 0xae, 0xaf, 0xdb, 0xc8, 0x3b, 0xc6, 0xbe, - 0x4e, 0x1c, 0xea, 0x23, 0xc7, 0xd7, 0x2d, 0x42, 0x7d, 0xe2, 0x1c, 0xe9, 0x87, 0x18, 0x17, 0x95, - 0x92, 0xb2, 0x94, 0x79, 0x77, 0x76, 0x59, 0x0c, 0x67, 0x99, 0x0d, 0x27, 0x18, 0xf9, 0xf2, 0x9a, - 0x4b, 0x9c, 0xd5, 0xa1, 0xef, 0xff, 0x68, 0xf1, 0x9e, 0x36, 0xcf, 0x70, 0xb6, 0x38, 0x4c, 0x4d, - 0xa0, 0x6c, 0x0a, 0x90, 0x0d, 0x8c, 0xd5, 0x97, 0xf0, 0xc8, 0xc4, 0x1e, 0x39, 0x41, 0x6c, 0xb8, - 0xbd, 0x98, 0x25, 0xfa, 0x63, 0xf6, 0x5a, 0x84, 0x76, 0x15, 0x4b, 0x04, 0xf3, 0x26, 0x3e, 0x44, - 0x2d, 0xcb, 0xd7, 0xe5, 0x0c, 0x8f, 0xb1, 0xc7, 0x78, 0xe8, 0x1e, 0xf2, 0x71, 0x31, 0x59, 0x52, - 0x96, 0xd2, 0xab, 0x0f, 0x19, 0xda, 0xdf, 0xff, 0x68, 0x71, 0x5e, 0xf0, 0xa3, 0xe6, 0xf1, 0x32, - 0x71, 0x57, 0x6c, 0xe4, 0x37, 0x96, 0x37, 0xf1, 0x11, 0x32, 0xce, 0xaa, 0xd8, 0xd0, 0x66, 0x24, - 0x4e, 0x9d, 0x4f, 0xf0, 0x18, 0x7b, 0x1b, 0x18, 0x6b, 0xc8, 0xef, 0x66, 0xe1, 0xb7, 0xb3, 0x18, - 0xba, 0x19, 0x8b, 0xbd, 0x38, 0x0b, 0x1b, 0x5e, 0x0b, 0x58, 0xb4, 0x09, 0xb0, 0x8d, 0xd1, 0x70, - 0xff, 0x8c, 0x1e, 0x48, 0xb4, 0x6a, 0x4c, 0x7e, 0xd7, 0xb2, 0xeb, 0x98, 0xd7, 0xc8, 0x6d, 0xd8, - 0xb5, 0xcd, 0xce, 0x84, 0xfb, 0x01, 0x3b, 0xe2, 0x10, 0x9f, 0x20, 0x8b, 0xd9, 0xc6, 0x11, 0x71, - 0x18, 0x23, 0xe2, 0x16, 0x47, 0xfb, 0xe7, 0x34, 0x2b, 0x81, 0x6a, 0x02, 0x67, 0x8b, 0xc3, 0x68, - 0x0c, 0x45, 0xb5, 0xa0, 0x14, 0x70, 0xb1, 0x11, 0x71, 0x7c, 0xec, 0x20, 0xc7, 0xc0, 0xed, 0x9c, - 0x52, 0x83, 0xcf, 0x69, 0x2b, 0xc2, 0x8a, 0x73, 0x7b, 0x1f, 0x8a, 0x01, 0xb7, 0xc3, 0x96, 0x63, - 0x32, 0xc3, 0x66, 0xfd, 0xbc, 0x13, 0x64, 0x15, 0xd3, 0x25, 0x65, 0x29, 0xa9, 0x4d, 0xcb, 0xf6, - 0x0d, 0xd1, 0x5c, 0x93, 0xad, 0xea, 0x9b, 0x50, 0x08, 0x28, 0xec, 0x96, 0xe5, 0x93, 0xa6, 0x85, - 0x8b, 0xc0, 0x29, 0xc6, 0x64, 0xfd, 0x96, 0xac, 0x56, 0x7f, 0x0e, 0xa6, 0x3d, 0x6c, 0xa1, 0x33, - 0xa9, 0x16, 0xda, 0x40, 0x9e, 0x54, 0x4e, 0xa6, 0xff, 0x89, 0x4c, 0x48, 0x88, 0x0d, 0x8c, 0xeb, - 0x0c, 0x80, 0xab, 0x84, 0xc0, 0x62, 0x30, 0xfc, 0x86, 0xdb, 0xf2, 0xac, 0xb3, 0x70, 0x16, 0x0c, - 0x5e, 0x37, 0x50, 0xb3, 0x98, 0xed, 0x9f, 0x45, 0xb0, 0x3e, 0x9e, 0x71, 0x28, 0x39, 0x61, 0xc6, - 0x67, 0x0d, 0x35, 0xe3, 0xda, 0x97, 0xac, 0xb8, 0xa0, 0x30, 0xf5, 0xc5, 0x54, 0x72, 0x83, 0x6b, - 0x5f, 0xf0, 0xa9, 0x49, 0x18, 0x3e, 0xa1, 0x2a, 0x2c, 0xda, 0xe8, 0x34, 0x6e, 0xce, 0xae, 0x67, - 0x62, 0x4f, 0xa7, 0xc4, 0xc4, 0xba, 0xe1, 0xb6, 0x1c, 0xbf, 0x98, 0x2f, 0x29, 0x4b, 0x39, 0x6d, - 0xde, 0x46, 0xa7, 0x91, 0x9d, 0xee, 0xb0, 0x4e, 0x75, 0x62, 0xe2, 0x35, 0xd6, 0x45, 0xa5, 0xf0, - 0x06, 0x71, 0x5e, 0xe8, 0x1e, 0x7e, 0x85, 0x3c, 0x53, 0xa7, 0x6c, 0x45, 0x98, 0xba, 0x87, 0x5f, - 0xb6, 0x88, 0x87, 0x6d, 0xec, 0xf8, 0xba, 0xdf, 0xf0, 0x30, 0x6d, 0xb8, 0x96, 0x59, 0x1c, 0xe3, - 0xc3, 0x7e, 0x20, 0x87, 0x3d, 0xd5, 0x3d, 0xec, 0x9a, 0xe3, 0x6b, 0x0f, 0x89, 0xf3, 0x42, 0xe3, - 0x60, 0x75, 0x8e, 0xa5, 0x45, 0x50, 0x7b, 0x01, 0x92, 0xfa, 0x14, 0x4a, 0xbe, 0x87, 0x84, 0xf0, - 0x79, 0x5f, 0xaa, 0x9f, 0x60, 0xe1, 0x2b, 0xcd, 0x16, 0xb7, 0x5b, 0xa7, 0x58, 0xe0, 0x06, 0xf2, - 0x40, 0xf6, 0x13, 0x90, 0xf4, 0x63, 0xd1, 0xab, 0x2a, 0x3b, 0x31, 0x49, 0x5b, 0xe4, 0x65, 0x8b, - 0x98, 0xc8, 0x77, 0xbd, 0x70, 0x12, 0x91, 0xd1, 0x8c, 0x0f, 0x20, 0xe9, 0x08, 0x48, 0x8e, 0x3f, - 0x34, 0x9d, 0x53, 0x78, 0xf3, 0x80, 0x38, 0xc8, 0x3b, 0xd3, 0xdd, 0x26, 0x63, 0x4b, 0x7b, 0x39, - 0x7a, 0xb5, 0x3f, 0x47, 0xff, 0xba, 0x40, 0xdc, 0x11, 0x80, 0x57, 0xf9, 0xfa, 0x5f, 0x54, 0xa0, - 0x84, 0x7c, 0xd7, 0x26, 0x46, 0xc0, 0x52, 0xe8, 0x18, 0x19, 0x06, 0xa6, 0x54, 0xb7, 0xf0, 0x09, - 0xb6, 0x8a, 0x13, 0x25, 0x65, 0x29, 0xff, 0xee, 0xfb, 0xcb, 0x57, 0x07, 0xe2, 0xe5, 0x0a, 0xc7, - 0x10, 0x5c, 0xb8, 0x01, 0x54, 0x38, 0xc0, 0x26, 0xa3, 0xd7, 0xee, 0xa3, 0x1e, 0xad, 0xea, 0x29, - 0xbc, 0xc1, 0x63, 0xc0, 0x65, 0xc3, 0x60, 0x4b, 0x54, 0xae, 0x68, 0x82, 0xbd, 0xe2, 0x64, 0xff, - 0xd2, 0x2e, 0x33, 0xcc, 0xae, 0x51, 0x6d, 0x60, 0xbc, 0x15, 0xc2, 0xa9, 0x9f, 0x2a, 0xf0, 0x4e, - 0xcc, 0xba, 0xfb, 0x18, 0xc0, 0x54, 0xff, 0x03, 0x58, 0x8a, 0x90, 0xaf, 0x19, 0xc6, 0xaf, 0x28, - 0xf0, 0xa4, 0x43, 0xfd, 0x7d, 0x0c, 0x65, 0xba, 0xff, 0xa1, 0xbc, 0xd5, 0x66, 0x0a, 0xd7, 0x8c, - 0xe6, 0xdb, 0x30, 0x6b, 0x13, 0x87, 0xd8, 0xc8, 0xd2, 0x79, 0xce, 0x63, 0xb8, 0x56, 0x14, 0xc0, - 0x66, 0xfa, 0x67, 0x3a, 0x2d, 0x51, 0x76, 0x25, 0x48, 0x10, 0xb9, 0xbe, 0x09, 0x6f, 0x11, 0x1a, - 0x1a, 0x76, 0x77, 0x6e, 0x63, 0xa1, 0x96, 0x63, 0x34, 0x74, 0xec, 0xa0, 0x03, 0x0b, 0x9b, 0xc5, - 0x62, 0x49, 0x59, 0x4a, 0x69, 0x5f, 0x20, 0x54, 0xda, 0x6e, 0xb5, 0x23, 0x7d, 0xd9, 0xe4, 0xdd, - 0xd7, 0x45, 0x6f, 0xe6, 0xb2, 0x9a, 0x2e, 0xf5, 0x75, 0xd7, 0xb1, 0xce, 0x74, 0xdb, 0x35, 0xb1, - 0xde, 0xc0, 0xe4, 0xa8, 0x11, 0x77, 0x32, 0xb3, 0x7c, 0xd9, 0xcf, 0xb3, 0x6e, 0x3b, 0x8e, 0x75, - 0xb6, 0xe5, 0x9a, 0xf8, 0x19, 0xef, 0x13, 0x79, 0x8f, 0x23, 0x78, 0x22, 0x43, 0x9c, 0x89, 0x0d, - 0x0f, 0x23, 0x8a, 0xf5, 0xa6, 0x47, 0x0c, 0xac, 0xfb, 0xc4, 0xc6, 0xd4, 0x47, 0x76, 0x33, 0xc2, - 0xd3, 0x29, 0x36, 0x5c, 0xc7, 0xa4, 0xc5, 0x39, 0x8e, 0xfb, 0xb6, 0x20, 0xac, 0x4a, 0xba, 0x5d, - 0x46, 0xb6, 0x17, 0x50, 0x85, 0x1c, 0xea, 0x82, 0x46, 0x7d, 0x03, 0xc6, 0x82, 0x95, 0xa4, 0x23, - 0xd3, 0x26, 0x0e, 0x2d, 0xce, 0x97, 0x92, 0x4b, 0x69, 0x2d, 0x1f, 0x54, 0x57, 0x78, 0xad, 0xba, - 0x09, 0x13, 0xcc, 0x89, 0xa2, 0x96, 0xc1, 0x54, 0xa8, 0x33, 0xb7, 0xcc, 0xe2, 0xc9, 0xfd, 0x7e, - 0x1c, 0x66, 0x81, 0x38, 0x2f, 0x2a, 0x82, 0x70, 0x0b, 0x9d, 0xae, 0xa1, 0xe6, 0x07, 0xc5, 0x7f, - 0xfd, 0xde, 0xa2, 0x72, 0xfe, 0x2f, 0x7f, 0xfc, 0x38, 0xe4, 0xbe, 0x22, 0x92, 0xda, 0xf2, 0xa7, - 0x0a, 0x4c, 0x08, 0xb9, 0xb6, 0x1b, 0xc5, 0x3c, 0xa4, 0x03, 0x8f, 0x64, 0xf2, 0xb4, 0x36, 0xad, - 0xa5, 0x44, 0x45, 0xcd, 0x54, 0x7f, 0x06, 0xf2, 0x1d, 0xb6, 0x99, 0xe8, 0xdf, 0x4c, 0x72, 0x87, - 0x71, 0x46, 0x1f, 0x0c, 0xfd, 0xf2, 0xf7, 0x16, 0xef, 0x95, 0x7f, 0x9c, 0x82, 0x42, 0xa7, 0xa2, - 0xd5, 0x69, 0x18, 0xf1, 0x89, 0x71, 0x8c, 0x3d, 0x39, 0x00, 0x59, 0x52, 0x17, 0x21, 0x23, 0xd2, - 0x76, 0x9d, 0xb9, 0x42, 0xc1, 0x5b, 0x03, 0x51, 0xb5, 0x8a, 0x28, 0x56, 0x5f, 0x83, 0xac, 0xec, - 0xf0, 0xb2, 0xe5, 0x06, 0x09, 0xac, 0x26, 0x89, 0xbe, 0xce, 0xaa, 0xd4, 0xf5, 0x10, 0xc3, 0x3f, - 0x6b, 0x8a, 0xfc, 0x33, 0xff, 0xee, 0xeb, 0x31, 0x87, 0x27, 0x37, 0x06, 0x81, 0xbb, 0xdb, 0xe1, - 0xc5, 0xbd, 0xb3, 0x26, 0x0e, 0x38, 0xb1, 0xdf, 0xea, 0x32, 0x4c, 0x48, 0x18, 0x6a, 0x20, 0x0b, - 0xeb, 0x87, 0xc8, 0xf0, 0x5d, 0x8f, 0x67, 0x99, 0x39, 0x6d, 0x5c, 0x34, 0xd5, 0x59, 0xcb, 0x06, - 0x6f, 0x60, 0x43, 0xe7, 0x43, 0xd2, 0x4d, 0xec, 0xb8, 0xb6, 0x48, 0x0f, 0x35, 0xe0, 0x55, 0x55, - 0x56, 0xd3, 0x2e, 0xf7, 0xd1, 0x0e, 0xb9, 0xef, 0xc3, 0xe4, 0xa5, 0xb9, 0xdf, 0x00, 0x19, 0x99, - 0x4a, 0xba, 0x93, 0xbe, 0x6f, 0x41, 0xf1, 0xca, 0x64, 0x2f, 0x3d, 0xc8, 0xfa, 0xbf, 0x3c, 0xcb, - 0xab, 0x41, 0xbe, 0x23, 0x09, 0x87, 0xfe, 0x41, 0xb3, 0x76, 0x3c, 0x09, 0xae, 0x41, 0xbe, 0x23, - 0xc1, 0x1e, 0x20, 0x87, 0xcb, 0xfa, 0x71, 0xa8, 0xab, 0xd3, 0xc2, 0xec, 0x2d, 0xd3, 0xc2, 0x12, - 0x64, 0x08, 0xdd, 0xc5, 0x5e, 0x13, 0xfb, 0x2d, 0x64, 0xf1, 0xd4, 0x2c, 0xa5, 0xc5, 0xab, 0xd4, - 0x0f, 0x61, 0x84, 0xfa, 0xc8, 0x6f, 0x51, 0x9e, 0x4e, 0xe5, 0xdf, 0x5d, 0xea, 0x15, 0x68, 0xc5, - 0x62, 0xa8, 0xf3, 0xfe, 0x9a, 0xa4, 0x53, 0x35, 0x98, 0xb0, 0x89, 0x13, 0x3a, 0x29, 0xe3, 0x58, - 0xa7, 0xe4, 0x13, 0x2c, 0xf3, 0xa9, 0xbe, 0x86, 0x5e, 0xb0, 0x89, 0x23, 0x9d, 0x95, 0x71, 0x5c, - 0x27, 0x9f, 0x70, 0x89, 0x30, 0xcc, 0x97, 0x2d, 0xe4, 0xf8, 0xc4, 0x3f, 0x8b, 0xc1, 0x16, 0x06, - 0x90, 0x88, 0x4d, 0x9c, 0xaf, 0x4b, 0x84, 0x10, 0x79, 0x03, 0xb2, 0x0c, 0xd9, 0x71, 0x99, 0x4b, - 0x42, 0xd6, 0x20, 0x39, 0x54, 0xc6, 0x26, 0xce, 0xb6, 0xa4, 0x53, 0x27, 0x61, 0x98, 0x3b, 0x4d, - 0x9e, 0x11, 0xa5, 0x35, 0x51, 0x50, 0xdf, 0x82, 0x71, 0xfe, 0x43, 0x6f, 0x62, 0xcf, 0x26, 0x94, - 0xb2, 0x90, 0xc7, 0x33, 0x98, 0x9c, 0x56, 0xe0, 0x0d, 0xbb, 0x51, 0xbd, 0x74, 0x37, 0x7f, 0x9b, - 0x82, 0x89, 0xd5, 0xee, 0x6c, 0xe9, 0x4a, 0x8f, 0xf3, 0x10, 0x72, 0xc1, 0x32, 0x3f, 0xb3, 0x0f, - 0x5c, 0x4b, 0xfa, 0x1c, 0xe9, 0x65, 0xea, 0xbc, 0x8e, 0xf9, 0x76, 0xd9, 0xa9, 0xe9, 0xb9, 0x27, - 0xc4, 0xc4, 0x9e, 0x74, 0x3c, 0x79, 0x51, 0xbd, 0x2b, 0x6b, 0xff, 0xbb, 0x7c, 0xcf, 0x13, 0x98, - 0xc4, 0xa7, 0x4d, 0x22, 0xf2, 0xdc, 0x28, 0xb2, 0x71, 0x27, 0x94, 0xd4, 0x26, 0xa2, 0xb6, 0x30, - 0x7c, 0x31, 0x12, 0x8a, 0x7d, 0xdf, 0x92, 0x79, 0x7b, 0x48, 0x32, 0x2a, 0x48, 0xa2, 0xb6, 0x88, - 0x24, 0xd4, 0x51, 0x2a, 0xae, 0xa3, 0x0e, 0xbf, 0x97, 0xee, 0xed, 0xf7, 0xa0, 0xc3, 0xef, 0x75, - 0x7b, 0x90, 0xcc, 0xdd, 0x79, 0x90, 0xec, 0xdd, 0x7b, 0x90, 0xdc, 0x2d, 0x3d, 0xc8, 0xff, 0x35, - 0xff, 0xb0, 0x0d, 0x85, 0x98, 0x99, 0xf1, 0x41, 0xc7, 0x7c, 0x84, 0x72, 0x1d, 0xe6, 0x58, 0x44, - 0xcc, 0x47, 0xdc, 0xe5, 0x6f, 0xd4, 0x1b, 0xfa, 0x9b, 0x1b, 0x78, 0x96, 0x7f, 0x4e, 0xc0, 0xcc, - 0x3a, 0x5b, 0x49, 0x67, 0x1b, 0x2d, 0xbf, 0xe5, 0xe1, 0x70, 0x1f, 0x76, 0xe8, 0xf6, 0xce, 0xa9, - 0xae, 0x5a, 0x9d, 0x89, 0xab, 0x57, 0xe7, 0x17, 0x61, 0xd2, 0x7f, 0x85, 0x9a, 0x6c, 0x8b, 0xed, - 0xc5, 0x57, 0x67, 0x92, 0x93, 0xa8, 0xac, 0xad, 0xce, 0x9a, 0x22, 0x8a, 0x57, 0xf0, 0x85, 0x38, - 0x93, 0x88, 0x58, 0x18, 0x8a, 0xd1, 0xb2, 0x5b, 0x16, 0xcf, 0xc0, 0x06, 0x39, 0x90, 0x2b, 0xc7, - 0xc6, 0x16, 0xb0, 0xe4, 0x7a, 0x58, 0x0b, 0xe1, 0x2e, 0xd5, 0xf0, 0x00, 0x47, 0x71, 0x9d, 0x1a, - 0x2e, 0xff, 0x65, 0x02, 0x26, 0xc2, 0x78, 0xda, 0xaf, 0x88, 0xbf, 0x01, 0x33, 0x57, 0x9d, 0xd3, - 0x0c, 0x90, 0xbf, 0x4e, 0x36, 0x2e, 0x3b, 0xa0, 0xd9, 0x87, 0xc9, 0x4b, 0x0f, 0x66, 0x06, 0x38, - 0x3b, 0x55, 0x1b, 0xdd, 0x27, 0x32, 0xff, 0x1f, 0xa6, 0x1d, 0x7c, 0x1a, 0x1d, 0x8f, 0x45, 0x4a, - 0x1e, 0xe2, 0x4a, 0x9e, 0x64, 0xad, 0x72, 0x28, 0x91, 0x9a, 0x63, 0xa7, 0x63, 0xe1, 0x79, 0xda, - 0x70, 0xdb, 0xe9, 0x58, 0x70, 0x90, 0x56, 0xfe, 0x5c, 0x81, 0xe9, 0x0e, 0x41, 0x4a, 0x38, 0x55, - 0x03, 0x35, 0x32, 0x88, 0x60, 0x04, 0x42, 0xa8, 0xfd, 0x4d, 0x68, 0x3c, 0x22, 0x0f, 0x30, 0xb7, - 0xa1, 0x10, 0xc3, 0x14, 0x76, 0x30, 0x80, 0xec, 0xc7, 0x22, 0x62, 0xb1, 0xd2, 0x1f, 0x41, 0xde, - 0x42, 0xb4, 0xdb, 0xf8, 0x73, 0xac, 0x36, 0x14, 0x48, 0xf9, 0xd7, 0x14, 0x58, 0xe8, 0xdc, 0x5e, - 0xd4, 0x43, 0x93, 0xba, 0xde, 0x72, 0x2e, 0x33, 0xdf, 0xc4, 0x2d, 0xcc, 0xf7, 0xab, 0x30, 0xb9, - 0x7d, 0x99, 0xe2, 0x1e, 0x41, 0x9e, 0xab, 0x3b, 0x9a, 0x8e, 0x22, 0xa6, 0xc3, 0x6a, 0xa3, 0xe9, - 0xfc, 0x9b, 0x02, 0xf9, 0x2d, 0x62, 0x72, 0xac, 0x8a, 0x63, 0xee, 0xed, 0xac, 0xaa, 0x1f, 0x42, - 0xda, 0x26, 0xa6, 0x1c, 0x9a, 0xd2, 0xbf, 0xef, 0x4c, 0xd9, 0x12, 0x87, 0x45, 0xc6, 0x03, 0x66, - 0xb6, 0x07, 0xad, 0xb3, 0xae, 0x19, 0x5e, 0x0b, 0x93, 0x65, 0xa4, 0xab, 0xad, 0x33, 0x01, 0xf5, - 0x11, 0x8c, 0x71, 0x28, 0x8a, 0x2d, 0x4b, 0x62, 0x25, 0xfb, 0xc7, 0xca, 0x31, 0xda, 0x3a, 0xb6, - 0x2c, 0x21, 0xab, 0x1f, 0x0f, 0x03, 0xd4, 0xc3, 0xfb, 0x92, 0x2b, 0x53, 0xb4, 0x07, 0x00, 0x6c, - 0x37, 0x28, 0x13, 0x0c, 0x91, 0x9f, 0xa5, 0x59, 0x8d, 0xc8, 0x2f, 0x3a, 0x12, 0x90, 0x64, 0x57, - 0x02, 0xd2, 0x9d, 0x63, 0x0c, 0xdd, 0x5d, 0x8e, 0x31, 0x7c, 0xf7, 0x39, 0xc6, 0xc8, 0x2d, 0x73, - 0x8c, 0x9e, 0x1b, 0xcd, 0x28, 0x01, 0x49, 0xdd, 0x6d, 0x02, 0x92, 0xfe, 0xc9, 0x24, 0x20, 0x70, - 0xc7, 0x1b, 0x94, 0xcc, 0x6d, 0x37, 0x28, 0xd9, 0x6b, 0x37, 0x28, 0xb9, 0xcb, 0xd3, 0x88, 0xf2, - 0xef, 0x29, 0x30, 0x5a, 0xc5, 0x4d, 0x97, 0x12, 0x5f, 0xdd, 0x85, 0x71, 0x74, 0x82, 0x88, 0x85, - 0x0e, 0xf8, 0x59, 0x87, 0xc5, 0x76, 0xd6, 0x83, 0x38, 0xe0, 0x42, 0x48, 0xbd, 0x2a, 0x88, 0xd5, - 0x67, 0x90, 0xf3, 0x5d, 0x1f, 0x59, 0x21, 0x5a, 0x62, 0x10, 0xcb, 0x64, 0x94, 0x12, 0xa9, 0xfc, - 0x36, 0x4c, 0xd6, 0x5b, 0x07, 0xc8, 0xe0, 0xd7, 0x02, 0x7b, 0x1e, 0x32, 0xf1, 0xb6, 0xcb, 0x38, - 0x4c, 0xc2, 0xb0, 0xe3, 0x06, 0xe3, 0xcc, 0x69, 0xa2, 0xc0, 0xc2, 0x4c, 0x9a, 0x1f, 0x3d, 0x72, - 0x5f, 0xfb, 0x10, 0x72, 0x34, 0xa4, 0x8d, 0xfc, 0x6d, 0x36, 0xaa, 0xac, 0x99, 0xac, 0x13, 0x5f, - 0x3f, 0xd8, 0x20, 0x4d, 0x82, 0x1d, 0x3f, 0xd8, 0x73, 0x1d, 0x62, 0xac, 0x05, 0x75, 0xea, 0x97, - 0x61, 0xb8, 0xd3, 0xbf, 0x5c, 0x3b, 0x0f, 0x41, 0xa1, 0x7e, 0x0d, 0x52, 0x81, 0x25, 0x0d, 0xb2, - 0xd4, 0x43, 0x22, 0xb5, 0x00, 0x49, 0x83, 0x98, 0x62, 0x6d, 0x6b, 0xec, 0x67, 0xf9, 0xd3, 0x04, - 0xa4, 0x99, 0xab, 0xe2, 0x33, 0xbd, 0xee, 0x08, 0x0d, 0xc4, 0x21, 0x2f, 0x71, 0x0e, 0x5d, 0x79, - 0x95, 0xfb, 0xa8, 0xd7, 0x2a, 0x0b, 0xa5, 0x27, 0x4f, 0xfb, 0xd3, 0x6e, 0x28, 0xce, 0x6a, 0x80, - 0xc5, 0xb7, 0x93, 0x49, 0xbe, 0x62, 0xaf, 0xc7, 0xe2, 0xfb, 0x49, 0x81, 0xc2, 0xb7, 0x93, 0xcc, - 0x34, 0x3c, 0x72, 0x74, 0x84, 0x3d, 0xe9, 0xb2, 0x87, 0x06, 0x70, 0xff, 0x92, 0x52, 0x78, 0xec, - 0x1f, 0x24, 0x20, 0xcf, 0xc4, 0xb0, 0x49, 0x6c, 0x22, 0x65, 0xd1, 0x3e, 0x5d, 0xe5, 0x0e, 0xa7, - 0x9b, 0xb8, 0xe1, 0x74, 0xbf, 0x06, 0xa9, 0x43, 0x62, 0xf1, 0xc5, 0x31, 0x88, 0xf1, 0x84, 0x44, - 0x77, 0x27, 0x2f, 0x16, 0xba, 0xc4, 0x84, 0x1a, 0x88, 0x36, 0xb8, 0x3d, 0x65, 0xe5, 0x48, 0x9f, - 0x21, 0xda, 0x28, 0xff, 0x4d, 0x02, 0xc6, 0xa2, 0x00, 0x78, 0xf7, 0xf2, 0xdc, 0x80, 0xac, 0xf4, - 0x06, 0x3a, 0x3f, 0x2f, 0x1f, 0xc0, 0x25, 0x64, 0x24, 0xe1, 0x33, 0xd7, 0x32, 0x3b, 0xa6, 0x91, - 0xec, 0x98, 0x46, 0x87, 0xda, 0x86, 0xee, 0xca, 0x4a, 0x87, 0x6f, 0x6a, 0xa5, 0x7f, 0x95, 0x80, - 0xb1, 0x8e, 0x3b, 0xcc, 0xff, 0x69, 0x4b, 0xf6, 0x2b, 0x30, 0x22, 0x0e, 0x6b, 0x07, 0x71, 0x60, - 0x92, 0xe4, 0x0e, 0x25, 0xf9, 0xef, 0x49, 0x98, 0x8f, 0x62, 0x01, 0x1f, 0xe9, 0x81, 0xeb, 0x1e, - 0x6f, 0x61, 0x1f, 0x99, 0xc8, 0x47, 0xea, 0x97, 0x61, 0xf6, 0x04, 0x39, 0x6c, 0xdd, 0xe8, 0x16, - 0x73, 0x09, 0xf2, 0x7a, 0x4b, 0x5c, 0x28, 0x8b, 0x30, 0x31, 0x2d, 0x3b, 0x44, 0x2e, 0x43, 0xdc, - 0x25, 0x7f, 0x08, 0x0f, 0x3c, 0x6c, 0xb6, 0x0c, 0x2c, 0x2e, 0x78, 0xba, 0xc9, 0x13, 0x9c, 0x7c, - 0x56, 0x74, 0xda, 0x71, 0xac, 0xb3, 0x4e, 0x84, 0x06, 0x2c, 0xa0, 0xa3, 0x23, 0x0f, 0x1f, 0xb1, - 0xad, 0x5e, 0x1c, 0x2b, 0x74, 0xfe, 0x03, 0xac, 0xfe, 0xf9, 0x10, 0x4a, 0x0b, 0x19, 0x06, 0xc9, - 0x84, 0x8a, 0x60, 0x2e, 0xe2, 0x14, 0x4c, 0xf8, 0x26, 0x21, 0xa6, 0x18, 0xc2, 0x7c, 0x2c, 0x50, - 0x42, 0x16, 0xeb, 0xb0, 0x18, 0x00, 0x1b, 0xae, 0x63, 0x12, 0x91, 0x76, 0xb4, 0x09, 0x44, 0x1c, - 0xff, 0xdd, 0x97, 0xdd, 0xd6, 0xa2, 0x5e, 0x31, 0x99, 0x6c, 0xc2, 0xc3, 0xb8, 0x24, 0xae, 0x82, - 0x1a, 0xe1, 0x50, 0x8b, 0x91, 0x6c, 0x2f, 0x45, 0x2b, 0xff, 0xb9, 0x02, 0x63, 0x1d, 0xea, 0x8f, - 0xe2, 0xb2, 0x72, 0xab, 0xb8, 0x9c, 0xb8, 0x49, 0x5c, 0x2e, 0x43, 0x96, 0xd0, 0x48, 0x3f, 0x5c, - 0xbf, 0x29, 0xad, 0xad, 0x2e, 0x88, 0xdd, 0x43, 0x51, 0xec, 0x7e, 0x05, 0x13, 0x1d, 0x93, 0xa8, - 0x32, 0xdb, 0xad, 0xc0, 0x30, 0x17, 0x89, 0xf4, 0xb1, 0x6f, 0xf5, 0x5a, 0xa3, 0x1d, 0xf4, 0x9a, - 0xa0, 0xec, 0xf0, 0x8b, 0x89, 0x4e, 0xf7, 0xfe, 0xeb, 0x49, 0x98, 0x8c, 0xfc, 0xd0, 0x4f, 0x75, - 0xcc, 0x8c, 0xfc, 0x4d, 0x72, 0x70, 0x7f, 0x13, 0x0f, 0xb8, 0x43, 0x77, 0x12, 0x70, 0x87, 0xef, - 0x26, 0xe0, 0x8e, 0x74, 0x6a, 0xe4, 0x37, 0x93, 0x30, 0xd5, 0x79, 0x5a, 0xf0, 0xbf, 0x52, 0x25, - 0x55, 0xc8, 0xc8, 0xcb, 0x3e, 0x1e, 0xf8, 0x07, 0xd0, 0x0a, 0x08, 0x3a, 0x1e, 0xf7, 0xff, 0xcb, - 0xf4, 0xf2, 0x17, 0x09, 0x48, 0xed, 0xb2, 0x8d, 0x11, 0x71, 0x1d, 0x75, 0x1a, 0x46, 0x08, 0xdd, - 0x74, 0xe5, 0x89, 0x54, 0x4a, 0x93, 0xa5, 0xdb, 0xbb, 0x8f, 0x2a, 0x64, 0xb0, 0xe3, 0x7b, 0x67, - 0xfa, 0xc0, 0x1b, 0x0b, 0xe0, 0x74, 0x62, 0x2a, 0xb7, 0x0a, 0xcd, 0xdf, 0x82, 0x62, 0xf7, 0xc9, - 0x9b, 0xce, 0xd1, 0x07, 0x39, 0x4a, 0x98, 0xee, 0x3a, 0x7f, 0x5b, 0x67, 0x10, 0xe5, 0x1a, 0x4c, - 0xc6, 0x8c, 0xba, 0xe6, 0x98, 0xc4, 0x40, 0xbe, 0x7b, 0x4d, 0xf6, 0x33, 0x09, 0xc3, 0x84, 0xae, - 0xb6, 0x84, 0x50, 0x53, 0x9a, 0x28, 0x94, 0xff, 0x3a, 0x01, 0x29, 0xbe, 0xf9, 0xdb, 0x74, 0xdb, - 0x45, 0xaf, 0xdc, 0x44, 0xf4, 0x61, 0xd4, 0x48, 0x0c, 0x1c, 0x35, 0xba, 0xb6, 0x94, 0x22, 0xff, - 0x6c, 0xdf, 0x52, 0xbe, 0x07, 0xc9, 0x43, 0x3c, 0x90, 0xf7, 0x61, 0xfd, 0xaf, 0xc9, 0xcf, 0xd5, - 0xf7, 0x61, 0xaa, 0x6d, 0xa3, 0xaa, 0x23, 0xd3, 0xf4, 0x30, 0xa5, 0xc2, 0x80, 0xf9, 0xc2, 0x57, - 0xb4, 0x89, 0xf8, 0xb6, 0xb5, 0x22, 0x3a, 0x04, 0x51, 0x68, 0x34, 0x8a, 0x42, 0xbf, 0x9d, 0x80, - 0x5c, 0x60, 0xe2, 0x55, 0x6c, 0xf9, 0x48, 0x9d, 0x81, 0x51, 0x42, 0x75, 0xab, 0xdb, 0xd0, 0x35, - 0x50, 0xf1, 0x29, 0x36, 0x5a, 0xfc, 0x28, 0xff, 0x26, 0x26, 0x3f, 0x1e, 0x92, 0x87, 0xf9, 0xc5, - 0x36, 0x14, 0x22, 0xcc, 0xc1, 0xfd, 0xca, 0x58, 0x48, 0x2c, 0xee, 0xff, 0xd5, 0x4d, 0x88, 0xaa, - 0xba, 0x76, 0x49, 0xd7, 0xc2, 0xe5, 0x43, 0x5a, 0x91, 0x67, 0xfe, 0x6e, 0x12, 0xd4, 0xd8, 0xeb, - 0xd8, 0xc0, 0xec, 0x2e, 0x3d, 0x4d, 0xe8, 0x54, 0xfd, 0x2e, 0xe4, 0x9b, 0x52, 0xae, 0xba, 0xc9, - 0x04, 0x2b, 0x13, 0xf8, 0x37, 0x7b, 0x79, 0xdc, 0x36, 0x4d, 0x68, 0xb9, 0x66, 0x9b, 0x62, 0xbe, - 0x02, 0x23, 0x4d, 0x74, 0xe6, 0xb6, 0xfc, 0x81, 0x3c, 0xaf, 0x20, 0xf9, 0xe9, 0xb7, 0x44, 0x36, - 0xc2, 0xa6, 0x63, 0x0d, 0xf2, 0xb4, 0x84, 0xf5, 0x2f, 0xff, 0x3c, 0xa8, 0x51, 0x1a, 0x14, 0x3a, - 0xeb, 0x0f, 0x21, 0x15, 0x08, 0x4f, 0x46, 0xcd, 0xd7, 0xfb, 0x91, 0xbb, 0x16, 0x52, 0x75, 0x2b, - 0x39, 0xd1, 0xad, 0xe4, 0xf2, 0x2b, 0x18, 0x8f, 0x98, 0x07, 0x87, 0x68, 0x7d, 0x99, 0xc7, 0x57, - 0x61, 0xd4, 0x14, 0xfd, 0xa5, 0x5d, 0x3c, 0xec, 0x35, 0x3e, 0x09, 0xad, 0x05, 0x34, 0xe5, 0x26, - 0xe4, 0x64, 0xdd, 0x7e, 0xd3, 0x44, 0x3e, 0x3f, 0x05, 0x13, 0x07, 0xcd, 0xc2, 0x8d, 0x8a, 0x82, - 0x5a, 0x83, 0x94, 0xa4, 0xa0, 0xc5, 0x44, 0x29, 0xb9, 0x94, 0x79, 0xf7, 0x9d, 0xfe, 0xf2, 0xc9, - 0x80, 0x61, 0x48, 0x5e, 0xfe, 0x81, 0x02, 0x85, 0x5d, 0x97, 0x38, 0x3e, 0x8d, 0x3d, 0xda, 0xfa, - 0x26, 0xcc, 0x88, 0x33, 0xec, 0x26, 0x6f, 0x89, 0x3f, 0xd0, 0x1a, 0xc0, 0x1f, 0x4f, 0x71, 0x8c, - 0xcb, 0xc0, 0xfd, 0x2b, 0xc0, 0x07, 0x70, 0x3a, 0x53, 0xfe, 0x65, 0xe0, 0xe5, 0xff, 0x48, 0xc0, - 0xc2, 0x5e, 0xfc, 0x5d, 0xee, 0x1a, 0xb2, 0x9b, 0x88, 0x1c, 0x39, 0xab, 0xae, 0x4b, 0xc5, 0x05, - 0xcd, 0x7b, 0x30, 0x73, 0xc0, 0x0a, 0xd8, 0xd4, 0xdb, 0x3e, 0xc3, 0x30, 0x69, 0x51, 0xe1, 0x4f, - 0xe8, 0x26, 0x65, 0x73, 0x74, 0x56, 0x52, 0x33, 0xa9, 0xfa, 0x02, 0x66, 0xe2, 0xdd, 0xa3, 0x51, - 0x07, 0x2a, 0x78, 0xbb, 0xb7, 0x25, 0xb6, 0x0f, 0x54, 0xa6, 0x71, 0x53, 0xd1, 0x07, 0x1c, 0x51, - 0x1b, 0x55, 0x2b, 0xf0, 0x20, 0x18, 0xe2, 0x25, 0x9f, 0x70, 0x98, 0xb4, 0x98, 0xe4, 0x03, 0x9d, - 0x93, 0x9d, 0x3a, 0x73, 0x4c, 0x36, 0xdc, 0x13, 0x78, 0xd0, 0x4d, 0x1a, 0x1f, 0xf4, 0xd0, 0x8d, - 0x07, 0x3d, 0xdf, 0xf9, 0x21, 0x48, 0x6c, 0xe8, 0xe5, 0x3f, 0x55, 0x40, 0x0d, 0x64, 0x2e, 0x34, - 0xb0, 0xeb, 0x8a, 0x37, 0x2d, 0x9d, 0xb7, 0xcb, 0xe2, 0x46, 0x2a, 0x4f, 0xdb, 0x6f, 0x96, 0x7f, - 0x01, 0x26, 0xc5, 0x1b, 0x45, 0x01, 0x11, 0x3c, 0xc2, 0x96, 0x32, 0xee, 0xf1, 0x76, 0xf9, 0x8b, - 0x6c, 0x6c, 0x7f, 0xf8, 0x8f, 0x8b, 0x4b, 0x47, 0xc4, 0x6f, 0xb4, 0x0e, 0x96, 0x0d, 0xd7, 0x5e, - 0x91, 0x5f, 0xf3, 0x88, 0xff, 0xde, 0xa1, 0xe6, 0xf1, 0x0a, 0xcb, 0x91, 0x29, 0x27, 0xa0, 0x9a, - 0x6a, 0xa3, 0xd3, 0xf6, 0xa1, 0xd2, 0xf2, 0x1f, 0x24, 0x60, 0xf6, 0x52, 0xfb, 0xe1, 0xa6, 0xf3, - 0x01, 0xcc, 0x86, 0x03, 0x0b, 0x5e, 0x83, 0x87, 0xcf, 0x38, 0xc5, 0x7c, 0x66, 0x82, 0x0e, 0xc1, - 0x43, 0xf0, 0xe0, 0xc5, 0xe6, 0x6b, 0x90, 0x8d, 0x5d, 0x1c, 0x89, 0x09, 0xa5, 0xb5, 0x4c, 0x74, - 0x73, 0x44, 0xd5, 0x16, 0xcc, 0xb6, 0xbf, 0x3d, 0xd7, 0xb9, 0x82, 0xc5, 0x26, 0x21, 0xc9, 0xdd, - 0xc9, 0x07, 0xbd, 0xf4, 0xd5, 0xdb, 0xf0, 0xb5, 0xe9, 0xb6, 0x07, 0xeb, 0xd1, 0x82, 0xf8, 0x12, - 0xcc, 0x98, 0x84, 0xbe, 0x6c, 0x21, 0x8b, 0x1c, 0x12, 0x6c, 0xc6, 0xed, 0x6c, 0x88, 0x0f, 0x72, - 0x2a, 0xde, 0x1c, 0x9a, 0x58, 0xf9, 0xcf, 0x12, 0x30, 0xb1, 0x81, 0x71, 0x95, 0x50, 0x71, 0x76, - 0x4f, 0xe4, 0x86, 0xa4, 0x0e, 0x13, 0xc2, 0x7b, 0x98, 0xb2, 0x45, 0x5c, 0x34, 0x0d, 0x72, 0xe1, - 0xcb, 0xe9, 0x03, 0x60, 0x7e, 0xcd, 0x54, 0x87, 0x09, 0xff, 0x12, 0xd0, 0x41, 0xd2, 0x14, 0xbf, - 0x0b, 0x74, 0x15, 0x72, 0xf2, 0xb3, 0x02, 0x64, 0xf3, 0x93, 0x8a, 0x64, 0x3f, 0xcf, 0x62, 0xb3, - 0x82, 0xa6, 0xc2, 0x49, 0x58, 0xf8, 0x3e, 0x71, 0xad, 0x96, 0x3d, 0x50, 0x10, 0x96, 0x24, 0xe5, - 0x5f, 0x6d, 0x17, 0x61, 0xdd, 0x68, 0x60, 0xb3, 0x65, 0xf1, 0x87, 0xa7, 0x07, 0x2d, 0x83, 0x69, - 0x21, 0x3a, 0xdc, 0x1a, 0xd2, 0x32, 0xa2, 0x4e, 0x9c, 0xbd, 0xbc, 0x01, 0x63, 0xb2, 0x4b, 0xf8, - 0x5d, 0x82, 0x78, 0xe2, 0x91, 0x17, 0xd5, 0xe1, 0x87, 0x08, 0x9d, 0x86, 0x97, 0xec, 0x36, 0xbc, - 0x6d, 0x00, 0x9f, 0xc8, 0xdd, 0x68, 0xe0, 0x19, 0x56, 0x7a, 0x59, 0xda, 0x25, 0x6a, 0xd7, 0xd2, - 0xbe, 0xfc, 0x45, 0x7b, 0x59, 0xd4, 0x70, 0x2f, 0x8b, 0xda, 0x02, 0xb5, 0x03, 0x79, 0x6f, 0x6f, - 0x53, 0x55, 0x61, 0xc8, 0x0f, 0x42, 0xcf, 0x90, 0xc6, 0x7f, 0xb3, 0x60, 0xec, 0xfb, 0x56, 0xd7, - 0xf3, 0x96, 0xac, 0xef, 0x5b, 0xd1, 0xf5, 0xf6, 0xef, 0x28, 0x90, 0xfd, 0x98, 0x0b, 0x5a, 0xc3, - 0x86, 0xeb, 0x99, 0xfc, 0x7a, 0x8e, 0x1b, 0x91, 0xd4, 0x98, 0x32, 0xc8, 0xf5, 0x1c, 0x23, 0x14, - 0x68, 0x0c, 0xc7, 0x8f, 0xe3, 0x0c, 0x72, 0xd2, 0xed, 0x47, 0x38, 0xe5, 0xdf, 0x50, 0x20, 0x5f, - 0x11, 0x91, 0x59, 0x3a, 0x20, 0xb5, 0x08, 0xa3, 0x32, 0x56, 0xcb, 0x90, 0x1f, 0x14, 0x55, 0x0c, - 0xa3, 0x3f, 0x41, 0x67, 0x18, 0x60, 0x97, 0x7f, 0x49, 0x81, 0x2c, 0x4f, 0x89, 0x85, 0xcc, 0x68, - 0xef, 0xdd, 0xdc, 0x73, 0x98, 0xb4, 0x90, 0x8f, 0xa9, 0xaf, 0x33, 0xe7, 0xc2, 0x53, 0x46, 0x37, - 0x1a, 0xe1, 0x1b, 0xd7, 0x79, 0x2b, 0xc9, 0x44, 0x53, 0x05, 0x48, 0x9c, 0x6f, 0xf9, 0x4b, 0x90, - 0x8b, 0x12, 0x97, 0x5a, 0x95, 0xaa, 0x8f, 0x20, 0xdf, 0x96, 0x80, 0x89, 0x78, 0x9d, 0xd5, 0x72, - 0xf1, 0x0c, 0x8c, 0x96, 0x7f, 0x5f, 0x81, 0x4c, 0x0c, 0x48, 0xbd, 0x0f, 0xe9, 0xce, 0xa0, 0x13, - 0x55, 0xdc, 0x66, 0xab, 0x18, 0xdf, 0xa6, 0x26, 0x6f, 0xb0, 0x4d, 0x2d, 0xdb, 0x30, 0x2c, 0x3e, - 0x64, 0x79, 0x02, 0x4a, 0x73, 0x10, 0x63, 0x54, 0x9a, 0x8c, 0xe4, 0xe5, 0x20, 0x63, 0x56, 0x5e, - 0x96, 0x7f, 0x4b, 0x81, 0xc5, 0x4a, 0x70, 0x22, 0x1c, 0x89, 0xb6, 0x6d, 0x85, 0xf4, 0x75, 0xa3, - 0xba, 0x03, 0x79, 0x69, 0x11, 0xc2, 0xfe, 0x03, 0x75, 0xf7, 0x71, 0xbb, 0x2f, 0x99, 0xe5, 0xec, - 0x58, 0x89, 0x96, 0xbf, 0xa3, 0xc0, 0xfd, 0x70, 0x64, 0x95, 0x4b, 0x86, 0x75, 0xf5, 0xaa, 0xb8, - 0xf3, 0xb1, 0x50, 0xc8, 0xc6, 0x9b, 0x7b, 0x9b, 0xff, 0x46, 0xe8, 0xfc, 0x45, 0xb6, 0xdf, 0x93, - 0x6b, 0x7c, 0x46, 0x32, 0x95, 0x0a, 0xe2, 0x40, 0x85, 0xe5, 0xfd, 0x8e, 0x6b, 0x57, 0xb1, 0x41, - 0x6c, 0x64, 0xd1, 0x2b, 0xf2, 0xfe, 0x39, 0x96, 0xf7, 0x8b, 0x1e, 0x9c, 0xe1, 0x90, 0x16, 0x96, - 0xcb, 0x18, 0xd4, 0xa7, 0x1e, 0x72, 0xfc, 0x4a, 0xcb, 0x6f, 0xb8, 0x1e, 0xf9, 0x44, 0x38, 0xff, - 0x22, 0x8c, 0x1e, 0xb1, 0x5a, 0xf9, 0x4d, 0x71, 0x5a, 0x0b, 0x8a, 0xea, 0x7b, 0x30, 0x22, 0x83, - 0x5e, 0xa2, 0x9f, 0xa0, 0x27, 0x3b, 0x97, 0xbf, 0x0d, 0x99, 0x0a, 0x9f, 0x1f, 0x67, 0x16, 0xe1, - 0x7b, 0xed, 0xf8, 0xde, 0x4d, 0xf1, 0xbf, 0xab, 0x40, 0x7e, 0xfd, 0xf0, 0x10, 0xf7, 0xc5, 0xa3, - 0x06, 0xe3, 0x0e, 0xf6, 0x75, 0x51, 0x94, 0x9f, 0x08, 0xf6, 0xc7, 0x6e, 0xcc, 0xc1, 0xfe, 0x53, - 0x41, 0xc6, 0x3f, 0x06, 0x54, 0x67, 0x21, 0x45, 0xa8, 0x7e, 0x82, 0x2c, 0x79, 0xe4, 0x93, 0xd2, - 0x46, 0x09, 0xfd, 0x98, 0x15, 0x1f, 0xfb, 0x70, 0xbf, 0xd7, 0x47, 0x6a, 0x2a, 0xc0, 0xc8, 0xb6, - 0x7b, 0xe0, 0x9a, 0x67, 0x85, 0x7b, 0x6a, 0x19, 0x16, 0x56, 0xf1, 0x11, 0x71, 0x56, 0x2d, 0xd7, - 0x38, 0xc6, 0x5e, 0xdd, 0x46, 0x9e, 0xbf, 0xe6, 0x3a, 0xbe, 0x87, 0x0c, 0x9f, 0xee, 0x38, 0xd6, - 0x59, 0x41, 0x51, 0xa7, 0x41, 0xbd, 0xa4, 0x3e, 0xa1, 0x66, 0x21, 0xb5, 0x7e, 0x82, 0xbd, 0x33, - 0xd7, 0xc1, 0x85, 0xe4, 0xe3, 0xbd, 0xc0, 0x0e, 0xc5, 0x83, 0x18, 0x75, 0x0c, 0x32, 0xfb, 0x0e, - 0x6d, 0x62, 0x83, 0xc7, 0xcc, 0xc2, 0x3d, 0xc6, 0x56, 0x68, 0xa2, 0xa0, 0xb0, 0xdf, 0xbb, 0xa8, - 0x45, 0xb1, 0x59, 0x48, 0xa8, 0x79, 0x80, 0x2a, 0xb6, 0x5d, 0x8b, 0xd0, 0x06, 0x36, 0x0b, 0x49, - 0x35, 0x03, 0xa3, 0xfc, 0x21, 0x29, 0x36, 0x0b, 0x43, 0x8f, 0xff, 0x24, 0x21, 0xdf, 0x4f, 0xf0, - 0x43, 0xdf, 0x12, 0x64, 0xf6, 0xb7, 0xeb, 0xbb, 0xeb, 0x6b, 0xb5, 0x8d, 0xda, 0x7a, 0xb5, 0x70, - 0x6f, 0x6e, 0xec, 0xfc, 0xa2, 0x14, 0xaf, 0x62, 0xfb, 0xf9, 0xd5, 0xfd, 0xe7, 0x05, 0x65, 0x6e, - 0xf4, 0xfc, 0xa2, 0xc4, 0x7e, 0xb2, 0x68, 0x5c, 0x5f, 0xdf, 0xdc, 0x2c, 0x24, 0xe6, 0x52, 0xe7, - 0x17, 0x25, 0xfe, 0x9b, 0xd9, 0x65, 0x7d, 0x6f, 0x67, 0x57, 0x67, 0x5d, 0x93, 0x73, 0xd9, 0xf3, - 0x8b, 0x52, 0x58, 0x66, 0xee, 0x97, 0xff, 0xe6, 0x44, 0x43, 0x73, 0xb9, 0xf3, 0x8b, 0x52, 0x54, - 0xc1, 0x28, 0xf7, 0x2a, 0x1f, 0xad, 0x73, 0xca, 0x61, 0x41, 0x19, 0x94, 0x19, 0x25, 0xff, 0xcd, - 0x29, 0x47, 0x04, 0x65, 0x58, 0xa1, 0x4e, 0xc3, 0xc8, 0xea, 0xfe, 0x73, 0x7d, 0x77, 0xa7, 0x30, - 0x3a, 0x07, 0xe7, 0x17, 0x25, 0x59, 0x62, 0xd6, 0xc2, 0xda, 0x59, 0x43, 0x6a, 0x2e, 0x73, 0x7e, - 0x51, 0x0a, 0x8a, 0xea, 0x02, 0x00, 0xeb, 0x53, 0xd9, 0xdb, 0xd9, 0xaa, 0xad, 0x15, 0xd2, 0x73, - 0xf9, 0xf3, 0x8b, 0x52, 0xac, 0x86, 0x49, 0x83, 0x77, 0x95, 0x1d, 0x40, 0x48, 0x23, 0x56, 0xf5, - 0xf8, 0x8f, 0x14, 0xc8, 0xad, 0x07, 0x67, 0x49, 0x5c, 0x82, 0xf7, 0xa1, 0x18, 0xd3, 0x4a, 0x5b, - 0x9b, 0x50, 0x91, 0xd0, 0x61, 0x41, 0x51, 0x73, 0x90, 0xe6, 0x77, 0x32, 0x1b, 0xc4, 0xb2, 0x0a, - 0x09, 0x75, 0x0e, 0xa6, 0x79, 0x71, 0x0b, 0xf9, 0x46, 0x43, 0x13, 0xdf, 0x8e, 0x72, 0xc5, 0x14, - 0x92, 0xcc, 0x40, 0xa2, 0xb6, 0x6d, 0xfc, 0x4a, 0xd4, 0x0f, 0xa9, 0x53, 0x30, 0x2e, 0x3f, 0x5d, - 0x93, 0xdf, 0x83, 0x12, 0xd7, 0x29, 0x0c, 0x33, 0x28, 0xf1, 0x52, 0xb8, 0xf3, 0x3d, 0x62, 0x61, - 0xe4, 0xf1, 0x77, 0x02, 0x7d, 0x6f, 0x21, 0x7a, 0xcc, 0x64, 0xb6, 0xbf, 0xbd, 0x5f, 0xe7, 0xaa, - 0xe6, 0x32, 0x13, 0x25, 0xa6, 0xe5, 0xca, 0x76, 0xa8, 0xe5, 0xca, 0xf6, 0x73, 0x26, 0x45, 0x6d, - 0xfd, 0xe9, 0xfe, 0x66, 0x45, 0x2b, 0x24, 0x84, 0x14, 0x65, 0x91, 0x49, 0x69, 0x6d, 0x67, 0xbb, - 0x5a, 0xdb, 0xab, 0xed, 0x6c, 0x57, 0x98, 0x46, 0xb9, 0x94, 0x62, 0x55, 0xea, 0x32, 0xcc, 0x54, - 0x6b, 0xda, 0xfa, 0x1a, 0x2b, 0x32, 0x45, 0xea, 0x3b, 0x9a, 0xfe, 0xac, 0xf6, 0xf4, 0xd9, 0xba, - 0x56, 0x48, 0xcd, 0x8d, 0x9f, 0x5f, 0x94, 0x72, 0x6d, 0x95, 0xed, 0xfd, 0xb9, 0xb8, 0x77, 0x34, - 0x7d, 0x73, 0xe7, 0x67, 0xd7, 0xb5, 0x42, 0x41, 0xf4, 0x6f, 0xab, 0x54, 0xe7, 0x21, 0xb3, 0xf7, - 0x7c, 0x77, 0x5d, 0xdf, 0xaa, 0x68, 0x1f, 0xad, 0xef, 0x15, 0x4a, 0x62, 0x2a, 0xa2, 0xa4, 0xce, - 0x02, 0xf0, 0xc6, 0xcd, 0xda, 0x56, 0x6d, 0xaf, 0xf0, 0xe1, 0x5c, 0xfa, 0xfc, 0xa2, 0x34, 0xcc, - 0x0b, 0xab, 0x8d, 0xef, 0x7f, 0xb6, 0xa0, 0xfc, 0xf0, 0xb3, 0x05, 0xe5, 0x9f, 0x3e, 0x5b, 0x50, - 0xbe, 0xfb, 0xf9, 0xc2, 0xbd, 0x1f, 0x7e, 0xbe, 0x70, 0xef, 0xef, 0x3e, 0x5f, 0xb8, 0xf7, 0x8d, - 0xed, 0x58, 0x9a, 0x54, 0x0b, 0x1c, 0xf8, 0x26, 0x3a, 0xa0, 0x2b, 0xa1, 0x3b, 0x7f, 0xc7, 0x70, - 0x3d, 0x1c, 0x2f, 0x36, 0x10, 0x71, 0x56, 0x6c, 0x97, 0xa5, 0xeb, 0x34, 0xfa, 0x4b, 0x14, 0x3c, - 0xa5, 0x3a, 0x18, 0xe1, 0xdf, 0x3f, 0xfe, 0xbf, 0xff, 0x0c, 0x00, 0x00, 0xff, 0xff, 0x35, 0xcc, - 0x95, 0x72, 0xac, 0x42, 0x00, 0x00, + // 4472 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x5c, 0xd9, 0x6f, 0x64, 0xd9, + 0x59, 0xef, 0x5b, 0xe5, 0xa5, 0xea, 0xab, 0xc5, 0xe5, 0xeb, 0xad, 0x6c, 0x77, 0xdb, 0x35, 0xd5, + 0xd3, 0x19, 0x4f, 0xcf, 0x8c, 0x9d, 0x1e, 0x98, 0x68, 0x32, 0x51, 0x94, 0x29, 0x6f, 0xd3, 0xc5, + 0x78, 0xcb, 0x2d, 0x7b, 0xa0, 0x13, 0x25, 0x57, 0xc7, 0xf7, 0x1e, 0xbb, 0x4e, 0xfb, 0x2e, 0xd5, + 0xf7, 0xdc, 0x72, 0xdb, 0x83, 0x90, 0x78, 0x18, 0x21, 0x62, 0x40, 0x04, 0x21, 0x84, 0x84, 0x64, + 0x14, 0x1e, 0x10, 0x82, 0x17, 0x78, 0x44, 0x82, 0x07, 0x24, 0x04, 0xe4, 0x21, 0x48, 0x79, 0xe0, + 0x01, 0x21, 0x11, 0xd0, 0x0c, 0x12, 0x88, 0xbf, 0x01, 0x45, 0xe8, 0x2c, 0x77, 0xa9, 0xc5, 0xe5, + 0x2a, 0xdb, 0x03, 0x81, 0xbc, 0x74, 0xd7, 0x59, 0xbe, 0xdf, 0x77, 0xce, 0xf7, 0x7d, 0xe7, 0xfb, + 0xbe, 0xb3, 0x5c, 0xc3, 0xeb, 0xc4, 0x79, 0x8e, 0x0d, 0x9f, 0x9c, 0xe2, 0x15, 0x7c, 0x66, 0xd4, + 0x91, 0x73, 0x8c, 0x57, 0x4e, 0x9f, 0x1c, 0x62, 0x1f, 0x3d, 0x09, 0x2b, 0x96, 0x1b, 0x9e, 0xeb, + 0xbb, 0xea, 0x5c, 0xd8, 0x75, 0x39, 0x6c, 0x91, 0x5d, 0xe7, 0x26, 0x8f, 0xdd, 0x63, 0x97, 0x77, + 0x5b, 0x61, 0xbf, 0x04, 0xc5, 0xdc, 0x82, 0xe1, 0x52, 0xdb, 0xa5, 0x2b, 0x87, 0x88, 0x46, 0xa8, + 0x86, 0x4b, 0x1c, 0xd9, 0xfe, 0x28, 0x62, 0xee, 0x7a, 0xc8, 0xb0, 0xa2, 0x4e, 0xa2, 0x28, 0xbb, + 0x8d, 0x23, 0x9b, 0x38, 0xee, 0x0a, 0xff, 0x57, 0x54, 0x95, 0xff, 0x79, 0x0a, 0x46, 0xf6, 0x90, + 0x87, 0x6c, 0xaa, 0x62, 0x58, 0xa4, 0x0d, 0xd7, 0xd7, 0x6d, 0xe4, 0x9d, 0x60, 0x5f, 0x27, 0x0e, + 0xf5, 0x91, 0xe3, 0xeb, 0x16, 0xa1, 0x3e, 0x71, 0x8e, 0xf5, 0x23, 0x8c, 0x8b, 0x4a, 0x49, 0x59, + 0xca, 0xbc, 0x3d, 0xbb, 0x2c, 0x86, 0xb3, 0xcc, 0x86, 0x13, 0x8c, 0x7c, 0x79, 0xcd, 0x25, 0xce, + 0xea, 0xd0, 0xf7, 0x7f, 0xb4, 0x78, 0x4f, 0x9b, 0x67, 0x38, 0xdb, 0x1c, 0xa6, 0x2a, 0x50, 0xb6, + 0x04, 0xc8, 0x26, 0xc6, 0xea, 0x0b, 0x78, 0x64, 0x62, 0x8f, 0x9c, 0x22, 0x36, 0xdc, 0x5e, 0xcc, + 0x12, 0xfd, 0x31, 0x7b, 0x25, 0x42, 0xbb, 0x8a, 0x25, 0x82, 0x79, 0x13, 0x1f, 0xa1, 0xa6, 0xe5, + 0xeb, 0x72, 0x86, 0x27, 0xd8, 0x63, 0x3c, 0x74, 0x0f, 0xf9, 0xb8, 0x98, 0x2c, 0x29, 0x4b, 0xe9, + 0xd5, 0x87, 0x0c, 0xed, 0x9f, 0x7e, 0xb4, 0x38, 0x2f, 0xf8, 0x51, 0xf3, 0x64, 0x99, 0xb8, 0x2b, + 0x36, 0xf2, 0xeb, 0xcb, 0x5b, 0xf8, 0x18, 0x19, 0xe7, 0xeb, 0xd8, 0xd0, 0x66, 0x24, 0x4e, 0x8d, + 0x4f, 0xf0, 0x04, 0x7b, 0x9b, 0x18, 0x6b, 0xc8, 0xef, 0x64, 0xe1, 0xb7, 0xb2, 0x18, 0xba, 0x19, + 0x8b, 0xfd, 0x38, 0x0b, 0x1b, 0x5e, 0x09, 0x58, 0xb4, 0x08, 0xb0, 0x85, 0xd1, 0x70, 0xff, 0x8c, + 0x1e, 0x48, 0xb4, 0xf5, 0x98, 0xfc, 0xae, 0x65, 0xd7, 0x36, 0xaf, 0x91, 0xdb, 0xb0, 0x6b, 0x99, + 0x9d, 0x09, 0xf7, 0x03, 0x76, 0xc4, 0x21, 0x3e, 0x41, 0x16, 0xb3, 0x8d, 0x63, 0xe2, 0x30, 0x46, + 0xc4, 0x2d, 0x8e, 0xf6, 0xcf, 0x69, 0x56, 0x02, 0x55, 0x05, 0xce, 0x36, 0x87, 0xd1, 0x18, 0x8a, + 0x6a, 0x41, 0x29, 0xe0, 0x62, 0x23, 0xe2, 0xf8, 0xd8, 0x41, 0x8e, 0x81, 0x5b, 0x39, 0xa5, 0x06, + 0x9f, 0xd3, 0x76, 0x84, 0x15, 0xe7, 0xf6, 0x2e, 0x14, 0x03, 0x6e, 0x47, 0x4d, 0xc7, 0x64, 0x86, + 0xcd, 0xfa, 0x79, 0xa7, 0xc8, 0x2a, 0xa6, 0x4b, 0xca, 0x52, 0x52, 0x9b, 0x96, 0xed, 0x9b, 0xa2, + 0xb9, 0x2a, 0x5b, 0xd5, 0xd7, 0xa1, 0x10, 0x50, 0xd8, 0x4d, 0xcb, 0x27, 0x0d, 0x0b, 0x17, 0x81, + 0x53, 0x8c, 0xc9, 0xfa, 0x6d, 0x59, 0xad, 0xfe, 0x02, 0x4c, 0x7b, 0xd8, 0x42, 0xe7, 0x52, 0x2d, + 0xb4, 0x8e, 0x3c, 0xa9, 0x9c, 0x4c, 0xff, 0x13, 0x99, 0x90, 0x10, 0x9b, 0x18, 0xd7, 0x18, 0x00, + 0x57, 0x09, 0x81, 0xc5, 0x60, 0xf8, 0x75, 0xb7, 0xe9, 0x59, 0xe7, 0xe1, 0x2c, 0x18, 0xbc, 0x6e, + 0xa0, 0x46, 0x31, 0xdb, 0x3f, 0x8b, 0x60, 0x7d, 0x3c, 0xe5, 0x50, 0x72, 0xc2, 0x8c, 0xcf, 0x1a, + 0x6a, 0xc4, 0xb5, 0x2f, 0x59, 0x71, 0x41, 0x61, 0xea, 0x8b, 0xa9, 0xe4, 0x06, 0xd7, 0xbe, 0xe0, + 0x53, 0x95, 0x30, 0x7c, 0x42, 0xeb, 0xb0, 0x68, 0xa3, 0xb3, 0xb8, 0x39, 0xbb, 0x9e, 0x89, 0x3d, + 0x9d, 0x12, 0x13, 0xeb, 0x86, 0xdb, 0x74, 0xfc, 0x62, 0xbe, 0xa4, 0x2c, 0xe5, 0xb4, 0x79, 0x1b, + 0x9d, 0x45, 0x76, 0xba, 0xcb, 0x3a, 0xd5, 0x88, 0x89, 0xd7, 0x58, 0x17, 0x95, 0xc2, 0x6b, 0xc4, + 0x79, 0xae, 0x7b, 0xf8, 0x25, 0xf2, 0x4c, 0x9d, 0xb2, 0x15, 0x61, 0xea, 0x1e, 0x7e, 0xd1, 0x24, + 0x1e, 0xb6, 0xb1, 0xe3, 0xeb, 0x7e, 0xdd, 0xc3, 0xb4, 0xee, 0x5a, 0x66, 0x71, 0x8c, 0x0f, 0xfb, + 0x81, 0x1c, 0xf6, 0x54, 0xe7, 0xb0, 0xab, 0x8e, 0xaf, 0x3d, 0x24, 0xce, 0x73, 0x8d, 0x83, 0xd5, + 0x38, 0x96, 0x16, 0x41, 0xed, 0x07, 0x48, 0xea, 0x07, 0x50, 0xf2, 0x3d, 0x24, 0x84, 0xcf, 0xfb, + 0x52, 0xfd, 0x14, 0x0b, 0x5f, 0x69, 0x36, 0xb9, 0xdd, 0x3a, 0xc5, 0x02, 0x37, 0x90, 0x07, 0xb2, + 0x9f, 0x80, 0xa4, 0x1f, 0x89, 0x5e, 0xeb, 0xb2, 0x13, 0x93, 0xb4, 0x45, 0x5e, 0x34, 0x89, 0x89, + 0x7c, 0xd7, 0x0b, 0x27, 0x11, 0x19, 0xcd, 0xf8, 0x00, 0x92, 0x8e, 0x80, 0xe4, 0xf8, 0x43, 0xd3, + 0x39, 0x83, 0xd7, 0x0f, 0x89, 0x83, 0xbc, 0x73, 0xdd, 0x6d, 0x30, 0xb6, 0xb4, 0x97, 0xa3, 0x57, + 0xfb, 0x73, 0xf4, 0xaf, 0x0a, 0xc4, 0x5d, 0x01, 0x78, 0x95, 0xaf, 0xff, 0x65, 0x05, 0x4a, 0xc8, + 0x77, 0x6d, 0x62, 0x04, 0x2c, 0x85, 0x8e, 0x91, 0x61, 0x60, 0x4a, 0x75, 0x0b, 0x9f, 0x62, 0xab, + 0x38, 0x51, 0x52, 0x96, 0xf2, 0x6f, 0xbf, 0xbb, 0x7c, 0x75, 0x20, 0x5e, 0xae, 0x70, 0x0c, 0xc1, + 0x85, 0x1b, 0x40, 0x85, 0x03, 0x6c, 0x31, 0x7a, 0xed, 0x3e, 0xea, 0xd1, 0xaa, 0x9e, 0xc1, 0x6b, + 0x3c, 0x06, 0x74, 0x1b, 0x06, 0x5b, 0xa2, 0x72, 0x45, 0x13, 0xec, 0x15, 0x27, 0xfb, 0x97, 0x76, + 0x99, 0x61, 0x76, 0x8c, 0x6a, 0x13, 0xe3, 0xed, 0x10, 0x4e, 0xfd, 0x44, 0x81, 0xb7, 0x62, 0xd6, + 0xdd, 0xc7, 0x00, 0xa6, 0xfa, 0x1f, 0xc0, 0x52, 0x84, 0x7c, 0xcd, 0x30, 0x7e, 0x4d, 0x81, 0x27, + 0x6d, 0xea, 0xef, 0x63, 0x28, 0xd3, 0xfd, 0x0f, 0xe5, 0x8d, 0x16, 0x53, 0xb8, 0x66, 0x34, 0xdf, + 0x86, 0x59, 0x9b, 0x38, 0xc4, 0x46, 0x96, 0xce, 0x73, 0x1e, 0xc3, 0xb5, 0xa2, 0x00, 0x36, 0xd3, + 0x3f, 0xd3, 0x69, 0x89, 0xb2, 0x27, 0x41, 0x82, 0xc8, 0xf5, 0x4d, 0x78, 0x83, 0xd0, 0xd0, 0xb0, + 0x3b, 0x73, 0x1b, 0x0b, 0x35, 0x1d, 0xa3, 0xae, 0x63, 0x07, 0x1d, 0x5a, 0xd8, 0x2c, 0x16, 0x4b, + 0xca, 0x52, 0x4a, 0xfb, 0x02, 0xa1, 0xd2, 0x76, 0xd7, 0xdb, 0xd2, 0x97, 0x2d, 0xde, 0x7d, 0x43, + 0xf4, 0x66, 0x2e, 0xab, 0xe1, 0x52, 0x5f, 0x77, 0x1d, 0xeb, 0x5c, 0xb7, 0x5d, 0x13, 0xeb, 0x75, + 0x4c, 0x8e, 0xeb, 0x71, 0x27, 0x33, 0xcb, 0x97, 0xfd, 0x3c, 0xeb, 0xb6, 0xeb, 0x58, 0xe7, 0xdb, + 0xae, 0x89, 0x9f, 0xf2, 0x3e, 0x91, 0xf7, 0x38, 0x86, 0x27, 0x32, 0xc4, 0x99, 0xd8, 0xf0, 0x30, + 0xa2, 0x58, 0x6f, 0x78, 0xc4, 0xc0, 0xba, 0x4f, 0x6c, 0x4c, 0x7d, 0x64, 0x37, 0x22, 0x3c, 0x9d, + 0x62, 0xc3, 0x75, 0x4c, 0x5a, 0x9c, 0xe3, 0xb8, 0x6f, 0x0a, 0xc2, 0x75, 0x49, 0xb7, 0xc7, 0xc8, + 0xf6, 0x03, 0xaa, 0x90, 0x43, 0x4d, 0xd0, 0xa8, 0xaf, 0xc1, 0x58, 0xb0, 0x92, 0x74, 0x64, 0xda, + 0xc4, 0xa1, 0xc5, 0xf9, 0x52, 0x72, 0x29, 0xad, 0xe5, 0x83, 0xea, 0x0a, 0xaf, 0x55, 0xb7, 0x60, + 0x82, 0x39, 0x51, 0xd4, 0x34, 0x98, 0x0a, 0x75, 0xe6, 0x96, 0x59, 0x3c, 0xb9, 0xdf, 0x8f, 0xc3, + 0x2c, 0x10, 0xe7, 0x79, 0x45, 0x10, 0x6e, 0xa3, 0xb3, 0x35, 0xd4, 0x78, 0xaf, 0xf8, 0x1f, 0xdf, + 0x5b, 0x54, 0x2e, 0xfe, 0xfd, 0xcf, 0x1e, 0x87, 0xdc, 0x57, 0x44, 0x52, 0x5b, 0xfe, 0x44, 0x81, + 0x09, 0x21, 0xd7, 0x56, 0xa3, 0x98, 0x87, 0x74, 0xe0, 0x91, 0x4c, 0x9e, 0xd6, 0xa6, 0xb5, 0x94, + 0xa8, 0xa8, 0x9a, 0xea, 0xcf, 0x41, 0xbe, 0xcd, 0x36, 0x13, 0xfd, 0x9b, 0x49, 0xee, 0x28, 0xce, + 0xe8, 0xbd, 0xa1, 0x5f, 0xfd, 0xde, 0xe2, 0xbd, 0xf2, 0x6f, 0xa7, 0xa1, 0xd0, 0xae, 0x68, 0x75, + 0x1a, 0x46, 0x7c, 0x62, 0x9c, 0x60, 0x4f, 0x0e, 0x40, 0x96, 0xd4, 0x45, 0xc8, 0x88, 0xb4, 0x5d, + 0x67, 0xae, 0x50, 0xf0, 0xd6, 0x40, 0x54, 0xad, 0x22, 0x8a, 0xd5, 0x57, 0x20, 0x2b, 0x3b, 0xbc, + 0x68, 0xba, 0x41, 0x02, 0xab, 0x49, 0xa2, 0xaf, 0xb3, 0x2a, 0x75, 0x23, 0xc4, 0xf0, 0xcf, 0x1b, + 0x22, 0xff, 0xcc, 0xbf, 0xfd, 0x6a, 0xcc, 0xe1, 0xc9, 0x8d, 0x41, 0xe0, 0xee, 0x76, 0x79, 0x71, + 0xff, 0xbc, 0x81, 0x03, 0x4e, 0xec, 0xb7, 0xba, 0x0c, 0x13, 0x12, 0x86, 0x1a, 0xc8, 0xc2, 0xfa, + 0x11, 0x32, 0x7c, 0xd7, 0xe3, 0x59, 0x66, 0x4e, 0x1b, 0x17, 0x4d, 0x35, 0xd6, 0xb2, 0xc9, 0x1b, + 0xd8, 0xd0, 0xf9, 0x90, 0x74, 0x13, 0x3b, 0xae, 0x2d, 0xd2, 0x43, 0x0d, 0x78, 0xd5, 0x3a, 0xab, + 0x69, 0x95, 0xfb, 0x68, 0x9b, 0xdc, 0x0f, 0x60, 0xb2, 0x6b, 0xee, 0x37, 0x40, 0x46, 0xa6, 0x92, + 0xce, 0xa4, 0xef, 0x5b, 0x50, 0xbc, 0x32, 0xd9, 0x4b, 0x0f, 0xb2, 0xfe, 0xbb, 0x67, 0x79, 0x55, + 0xc8, 0xb7, 0x25, 0xe1, 0xd0, 0x3f, 0x68, 0xd6, 0x8e, 0x27, 0xc1, 0x55, 0xc8, 0xb7, 0x25, 0xd8, + 0x03, 0xe4, 0x70, 0x59, 0x3f, 0x0e, 0x75, 0x75, 0x5a, 0x98, 0xbd, 0x65, 0x5a, 0x58, 0x82, 0x0c, + 0xa1, 0x7b, 0xd8, 0x6b, 0x60, 0xbf, 0x89, 0x2c, 0x9e, 0x9a, 0xa5, 0xb4, 0x78, 0x95, 0xfa, 0x3e, + 0x8c, 0x50, 0x1f, 0xf9, 0x4d, 0xca, 0xd3, 0xa9, 0xfc, 0xdb, 0x4b, 0xbd, 0x02, 0xad, 0x58, 0x0c, + 0x35, 0xde, 0x5f, 0x93, 0x74, 0xaa, 0x06, 0x13, 0x36, 0x71, 0x42, 0x27, 0x65, 0x9c, 0xe8, 0x94, + 0x7c, 0x8c, 0x65, 0x3e, 0xd5, 0xd7, 0xd0, 0x0b, 0x36, 0x71, 0xa4, 0xb3, 0x32, 0x4e, 0x6a, 0xe4, + 0x63, 0x2e, 0x11, 0x86, 0xf9, 0xa2, 0x89, 0x1c, 0x9f, 0xf8, 0xe7, 0x31, 0xd8, 0xc2, 0x00, 0x12, + 0xb1, 0x89, 0xf3, 0x75, 0x89, 0x10, 0x22, 0x6f, 0x42, 0x96, 0x21, 0x3b, 0x2e, 0x73, 0x49, 0xc8, + 0x1a, 0x24, 0x87, 0xca, 0xd8, 0xc4, 0xd9, 0x91, 0x74, 0xea, 0x24, 0x0c, 0x73, 0xa7, 0xc9, 0x33, + 0xa2, 0xb4, 0x26, 0x0a, 0xea, 0x1b, 0x30, 0xce, 0x7f, 0xe8, 0x0d, 0xec, 0xd9, 0x84, 0x52, 0x16, + 0xf2, 0x78, 0x06, 0x93, 0xd3, 0x0a, 0xbc, 0x61, 0x2f, 0xaa, 0x57, 0x1f, 0x41, 0x3e, 0x58, 0x80, + 0x06, 0x0b, 0x56, 0x94, 0xa7, 0x18, 0x39, 0x2d, 0x27, 0xd7, 0xa0, 0xa8, 0x94, 0x5e, 0xe9, 0xc7, + 0x29, 0x98, 0x58, 0xed, 0x4c, 0xaa, 0xae, 0x74, 0x4c, 0x0f, 0x21, 0x17, 0x78, 0x83, 0x73, 0xfb, + 0xd0, 0xb5, 0xa4, 0x6b, 0x92, 0xce, 0xa8, 0xc6, 0xeb, 0x58, 0x08, 0x90, 0x9d, 0x1a, 0x9e, 0x7b, + 0x4a, 0x4c, 0xec, 0x49, 0xff, 0x94, 0x17, 0xd5, 0x7b, 0xb2, 0xf6, 0x7f, 0xcb, 0x45, 0x3d, 0x81, + 0x49, 0x7c, 0xd6, 0x20, 0x22, 0x1d, 0x8e, 0x02, 0x20, 0xf7, 0x55, 0x49, 0x6d, 0x22, 0x6a, 0x0b, + 0xa3, 0x1c, 0x23, 0xa1, 0xd8, 0xf7, 0x2d, 0x99, 0xde, 0x87, 0x24, 0xa3, 0x82, 0x24, 0x6a, 0x8b, + 0x48, 0x42, 0x55, 0xa6, 0xe2, 0xaa, 0x6c, 0x73, 0x8f, 0xe9, 0xde, 0xee, 0x11, 0xda, 0xdc, 0x63, + 0xa7, 0xa3, 0xc9, 0xdc, 0x9d, 0xa3, 0xc9, 0xde, 0xbd, 0xa3, 0xc9, 0xdd, 0xd2, 0xd1, 0xfc, 0xb4, + 0xb9, 0x91, 0x1d, 0x28, 0xc4, 0xcc, 0x8c, 0x0f, 0x3a, 0xe6, 0x4a, 0x94, 0xeb, 0x30, 0xc7, 0x22, + 0x62, 0x3e, 0xe2, 0x0e, 0xb7, 0xa4, 0xde, 0xd0, 0x2d, 0x7d, 0x7e, 0x0e, 0xe8, 0xdf, 0x12, 0x30, + 0xb3, 0xc1, 0x16, 0xdc, 0xf9, 0x66, 0xd3, 0x6f, 0x7a, 0x38, 0xdc, 0xd5, 0x1d, 0xb9, 0xbd, 0x33, + 0xb4, 0xab, 0x16, 0x71, 0xe2, 0xea, 0x45, 0xfc, 0x45, 0x98, 0xf4, 0x5f, 0xa2, 0x06, 0xdb, 0xb0, + 0x7b, 0xf1, 0x45, 0x9c, 0xe4, 0x24, 0x2a, 0x6b, 0xab, 0xb1, 0xa6, 0x88, 0xe2, 0x25, 0x7c, 0x21, + 0xce, 0x24, 0x22, 0x16, 0xf6, 0x64, 0x34, 0xed, 0xa6, 0xc5, 0xf3, 0xb9, 0x41, 0x8e, 0xf7, 0xca, + 0xb1, 0xb1, 0x05, 0x2c, 0xb9, 0xba, 0xd6, 0x42, 0xb8, 0xae, 0x86, 0x30, 0xc0, 0xc1, 0x5e, 0xbb, + 0x21, 0x94, 0xff, 0x36, 0x01, 0x13, 0x61, 0x74, 0xee, 0x57, 0xc4, 0xdf, 0x80, 0x99, 0xab, 0x4e, + 0x7d, 0x06, 0xc8, 0x86, 0x27, 0xeb, 0xdd, 0x8e, 0x7b, 0x0e, 0x60, 0xb2, 0xeb, 0x31, 0xcf, 0x00, + 0x27, 0xb1, 0x6a, 0xbd, 0xf3, 0x7c, 0xe7, 0x67, 0x61, 0xda, 0xc1, 0x67, 0xd1, 0x61, 0x5b, 0xa4, + 0xe4, 0x21, 0xae, 0xe4, 0x49, 0xd6, 0x2a, 0x87, 0x12, 0xa9, 0x39, 0x76, 0xd6, 0x16, 0x9e, 0xce, + 0x0d, 0xb7, 0x9c, 0xb5, 0x05, 0xc7, 0x72, 0xe5, 0xcf, 0x14, 0x98, 0x6e, 0x13, 0xa4, 0x84, 0x53, + 0x35, 0x50, 0x23, 0x83, 0x08, 0x46, 0x20, 0x84, 0xda, 0xdf, 0x84, 0xc6, 0x23, 0xf2, 0x00, 0x73, + 0x07, 0x0a, 0x31, 0x4c, 0x61, 0x07, 0x03, 0xc8, 0x7e, 0x2c, 0x22, 0x16, 0x0e, 0xe1, 0x11, 0xe4, + 0x2d, 0x44, 0x3b, 0x8d, 0x3f, 0xc7, 0x6a, 0x43, 0x81, 0x94, 0x7f, 0x43, 0x81, 0x85, 0xf6, 0xcd, + 0x4a, 0x2d, 0x34, 0xa9, 0xeb, 0x2d, 0xa7, 0x9b, 0xf9, 0x26, 0x6e, 0x61, 0xbe, 0x5f, 0x85, 0xc9, + 0x9d, 0x6e, 0x8a, 0x7b, 0x04, 0x79, 0xae, 0xee, 0x68, 0x3a, 0x8a, 0x98, 0x0e, 0xab, 0x8d, 0xa6, + 0xf3, 0x9f, 0x0a, 0xe4, 0xb7, 0x89, 0xc9, 0xb1, 0x2a, 0x8e, 0xb9, 0xbf, 0xbb, 0xaa, 0xbe, 0x0f, + 0x69, 0x9b, 0x98, 0x72, 0x68, 0x4a, 0xff, 0x2e, 0x36, 0x65, 0x4b, 0x1c, 0x16, 0x40, 0x0f, 0x99, + 0xd9, 0x1e, 0x36, 0xcf, 0x3b, 0x66, 0x78, 0x2d, 0x4c, 0x96, 0x91, 0xae, 0x36, 0xcf, 0x05, 0xd4, + 0x87, 0x30, 0xc6, 0xa1, 0x28, 0xb6, 0x2c, 0x89, 0x95, 0xec, 0x1f, 0x2b, 0xc7, 0x68, 0x6b, 0xd8, + 0xb2, 0x84, 0xac, 0xfe, 0x7c, 0x04, 0xa0, 0x16, 0xde, 0xbe, 0x5c, 0x99, 0xc9, 0x3d, 0x00, 0x60, + 0x7b, 0x4b, 0x99, 0x87, 0x88, 0x34, 0x2e, 0xcd, 0x6a, 0x44, 0x1a, 0xd2, 0x96, 0xa7, 0x24, 0x3b, + 0xf2, 0x94, 0xce, 0x54, 0x64, 0xe8, 0xee, 0x52, 0x91, 0xe1, 0xbb, 0x4f, 0x45, 0x46, 0x6e, 0x99, + 0x8a, 0xf4, 0xdc, 0xb6, 0x46, 0x79, 0x4a, 0xea, 0x6e, 0xf3, 0x94, 0xf4, 0xe7, 0x93, 0xa7, 0xc0, + 0x1d, 0x6f, 0x77, 0x32, 0xb7, 0xdd, 0xee, 0x64, 0xaf, 0xdd, 0xee, 0xe4, 0xae, 0xc8, 0x36, 0x1e, + 0x42, 0x4e, 0xda, 0xb1, 0x4c, 0x36, 0xc4, 0xf9, 0x7d, 0x56, 0x98, 0xb2, 0xa8, 0xeb, 0x92, 0x92, + 0x8c, 0x75, 0x49, 0x49, 0xca, 0x7f, 0xa8, 0xc0, 0xe8, 0x3a, 0x6e, 0xb8, 0x94, 0xf8, 0xea, 0x1e, + 0x8c, 0xa3, 0x53, 0x44, 0x2c, 0x74, 0xc8, 0x4f, 0x61, 0x2c, 0xb6, 0xe7, 0x1f, 0xc4, 0x99, 0x17, + 0x42, 0xea, 0x55, 0x41, 0xac, 0x3e, 0x85, 0x9c, 0xef, 0xfa, 0xc8, 0x0a, 0xd1, 0x12, 0x83, 0x58, + 0x39, 0xa3, 0x94, 0x48, 0xe5, 0x37, 0x61, 0xb2, 0xd6, 0x3c, 0x44, 0x06, 0xbf, 0xb0, 0xd8, 0xf7, + 0x90, 0x89, 0x77, 0x5c, 0xc6, 0x61, 0x12, 0x86, 0x1d, 0x37, 0x18, 0x67, 0x4e, 0x13, 0x05, 0x16, + 0xb2, 0xd2, 0xfc, 0x50, 0x94, 0xfb, 0xed, 0x87, 0x90, 0xa3, 0x21, 0x6d, 0xe4, 0xbb, 0xb3, 0x51, + 0x65, 0xd5, 0x64, 0x9d, 0xf8, 0x5a, 0xc4, 0x06, 0x69, 0x10, 0xec, 0xf8, 0xc1, 0x36, 0xef, 0x08, + 0x63, 0x2d, 0xa8, 0x53, 0xbf, 0x0c, 0xc3, 0xed, 0xbe, 0xea, 0xda, 0x79, 0x08, 0x0a, 0xf5, 0x6b, + 0x90, 0x0a, 0xac, 0x72, 0x10, 0xb7, 0x11, 0x12, 0xa9, 0x05, 0x48, 0x1a, 0xc4, 0x14, 0x7e, 0x42, + 0x63, 0x3f, 0xcb, 0x9f, 0x24, 0x20, 0xcd, 0xdc, 0x1e, 0x9f, 0xe9, 0x75, 0x87, 0x7b, 0x20, 0x8e, + 0x9f, 0x89, 0x73, 0xe4, 0xca, 0x4b, 0xe6, 0x47, 0xbd, 0x56, 0x6c, 0x28, 0x3d, 0x79, 0x0f, 0x91, + 0x76, 0x43, 0x71, 0xae, 0x07, 0x58, 0x7c, 0x07, 0x9b, 0xe4, 0xab, 0xff, 0x7a, 0x2c, 0xbe, 0x85, + 0x15, 0x28, 0x7c, 0x07, 0xcb, 0x4c, 0xc3, 0x23, 0xc7, 0xc7, 0xd8, 0x93, 0xee, 0x7f, 0x68, 0x80, + 0x50, 0x22, 0x29, 0x85, 0xf7, 0xff, 0x41, 0x02, 0xf2, 0x4c, 0x0c, 0x5b, 0xc4, 0x26, 0x52, 0x16, + 0xad, 0xd3, 0x55, 0xee, 0x70, 0xba, 0x89, 0x1b, 0x4e, 0xf7, 0x6b, 0x90, 0x3a, 0x22, 0x16, 0x5f, + 0x1c, 0x83, 0x18, 0x4f, 0x48, 0x74, 0x77, 0xf2, 0x62, 0x61, 0x50, 0x4c, 0xa8, 0x8e, 0x68, 0x9d, + 0xdb, 0x53, 0x56, 0x8e, 0xf4, 0x29, 0xa2, 0xf5, 0xf2, 0x3f, 0x24, 0x60, 0x2c, 0x0a, 0xa6, 0x77, + 0x2f, 0xcf, 0x4d, 0xc8, 0x4a, 0x6f, 0xa0, 0xf3, 0x93, 0xfc, 0x01, 0x5c, 0x42, 0x46, 0x12, 0x3e, + 0x75, 0x2d, 0xb3, 0x6d, 0x1a, 0xc9, 0xb6, 0x69, 0xb4, 0xa9, 0x6d, 0xe8, 0xae, 0xac, 0x74, 0xf8, + 0xa6, 0x56, 0xfa, 0x77, 0x09, 0x18, 0x6b, 0xbb, 0x5d, 0xfd, 0xbf, 0xb6, 0x64, 0xbf, 0x02, 0x23, + 0xe2, 0x18, 0x79, 0x10, 0x07, 0x26, 0x49, 0xee, 0x50, 0x92, 0xff, 0x95, 0x84, 0xf9, 0x28, 0x16, + 0xf0, 0x91, 0x1e, 0xba, 0xee, 0xc9, 0x36, 0xf6, 0x91, 0x89, 0x7c, 0xa4, 0x7e, 0x19, 0x66, 0x4f, + 0x91, 0xc3, 0xd6, 0x8d, 0x6e, 0x31, 0x97, 0x20, 0x2f, 0xde, 0xc4, 0x55, 0xb7, 0x08, 0x13, 0xd3, + 0xb2, 0x43, 0xe4, 0x32, 0xc4, 0x2d, 0xf7, 0xfb, 0xf0, 0xc0, 0xc3, 0x66, 0xd3, 0xc0, 0xe2, 0xea, + 0xa9, 0x93, 0x3c, 0xc1, 0xc9, 0x67, 0x45, 0xa7, 0x5d, 0xc7, 0x3a, 0x6f, 0x47, 0xa8, 0xc3, 0x02, + 0x3a, 0x3e, 0xf6, 0xf0, 0x31, 0xdb, 0x36, 0xc6, 0xb1, 0x42, 0xe7, 0x3f, 0xc0, 0xea, 0x9f, 0x0f, + 0xa1, 0xb4, 0x90, 0x61, 0x90, 0x98, 0xa8, 0x08, 0xe6, 0x22, 0x4e, 0xc1, 0x84, 0x6f, 0x12, 0x62, + 0x8a, 0x21, 0xcc, 0x47, 0x02, 0x25, 0x64, 0xb1, 0x01, 0x8b, 0x01, 0xb0, 0xe1, 0x3a, 0x26, 0x11, + 0x29, 0x4c, 0x8b, 0x40, 0xc4, 0x89, 0xe3, 0x7d, 0xd9, 0x6d, 0x2d, 0xea, 0x15, 0x93, 0xc9, 0x16, + 0x3c, 0x8c, 0x4b, 0xe2, 0x2a, 0xa8, 0x11, 0x0e, 0xb5, 0x18, 0xc9, 0xb6, 0x2b, 0x5a, 0xf9, 0xaf, + 0x15, 0x18, 0x6b, 0x53, 0x7f, 0x14, 0x97, 0x95, 0x5b, 0xc5, 0xe5, 0xc4, 0x4d, 0xe2, 0x72, 0x19, + 0xb2, 0x84, 0x46, 0xfa, 0xe1, 0xfa, 0x4d, 0x69, 0x2d, 0x75, 0x41, 0xec, 0x1e, 0x8a, 0x62, 0xf7, + 0x4b, 0x98, 0x68, 0x9b, 0xc4, 0x3a, 0xb3, 0xdd, 0x0a, 0x0c, 0x73, 0x91, 0x48, 0x1f, 0xfb, 0x46, + 0xaf, 0x35, 0xda, 0x46, 0xaf, 0x09, 0xca, 0x36, 0xbf, 0x98, 0x68, 0x77, 0xef, 0xbf, 0x99, 0x84, + 0xc9, 0xc8, 0x0f, 0xfd, 0x44, 0xc7, 0xcc, 0xc8, 0xdf, 0x24, 0x07, 0xf7, 0x37, 0xf1, 0x80, 0x3b, + 0x74, 0x27, 0x01, 0x77, 0xf8, 0x6e, 0x02, 0xee, 0x48, 0xbb, 0x46, 0x7e, 0x27, 0x09, 0x53, 0xed, + 0x27, 0x0f, 0xff, 0x2f, 0x55, 0xb2, 0x0e, 0x19, 0x79, 0x0d, 0xc9, 0x03, 0xff, 0x00, 0x5a, 0x01, + 0x41, 0xc7, 0xe3, 0xfe, 0xff, 0x98, 0x5e, 0xfe, 0x26, 0x01, 0xa9, 0x3d, 0xb6, 0x31, 0x22, 0xae, + 0xa3, 0x4e, 0xc3, 0x08, 0xa1, 0x5b, 0xae, 0x3c, 0xdd, 0x4a, 0x69, 0xb2, 0x74, 0x7b, 0xf7, 0xb1, + 0x0e, 0x19, 0xec, 0xf8, 0xde, 0xb9, 0x3e, 0xf0, 0xc6, 0x02, 0x38, 0x9d, 0x98, 0xca, 0xad, 0x42, + 0xf3, 0xb7, 0xa0, 0xd8, 0x79, 0x8a, 0xa7, 0x73, 0xf4, 0x41, 0x8e, 0x25, 0xa6, 0x3b, 0xce, 0xf2, + 0x36, 0x18, 0x44, 0xb9, 0x0a, 0x93, 0x31, 0xa3, 0xae, 0x3a, 0x26, 0x31, 0x90, 0xef, 0x5e, 0x93, + 0xfd, 0x4c, 0xc2, 0x30, 0xa1, 0xab, 0x4d, 0x21, 0xd4, 0x94, 0x26, 0x0a, 0xe5, 0xbf, 0x4f, 0x40, + 0x8a, 0x6f, 0xfe, 0xb6, 0xdc, 0x56, 0xd1, 0x2b, 0x37, 0x11, 0x7d, 0x18, 0x35, 0x12, 0x03, 0x47, + 0x8d, 0x8e, 0x2d, 0xa5, 0xc8, 0x3f, 0x5b, 0xb7, 0x94, 0xef, 0x40, 0xf2, 0x08, 0x0f, 0xe4, 0x7d, + 0x58, 0xff, 0x6b, 0xf2, 0x73, 0xf5, 0x5d, 0x98, 0x6a, 0xd9, 0xa8, 0xea, 0xc8, 0x34, 0x3d, 0x4c, + 0xa9, 0x30, 0x60, 0xbe, 0xf0, 0x15, 0x6d, 0x22, 0xbe, 0x6d, 0xad, 0x88, 0x0e, 0x41, 0x14, 0x1a, + 0x8d, 0xa2, 0xd0, 0xef, 0x25, 0x20, 0x17, 0x98, 0xf8, 0x3a, 0xb6, 0x7c, 0xa4, 0xce, 0xc0, 0x28, + 0xa1, 0xba, 0xd5, 0x69, 0xe8, 0x1a, 0xa8, 0xf8, 0x0c, 0x1b, 0x4d, 0x7e, 0x2d, 0x70, 0x13, 0x93, + 0x1f, 0x0f, 0xc9, 0xc3, 0xfc, 0x62, 0x07, 0x0a, 0x11, 0xe6, 0xe0, 0x7e, 0x65, 0x2c, 0x24, 0x16, + 0x2f, 0x13, 0xd4, 0x2d, 0x88, 0xaa, 0x3a, 0x76, 0x49, 0xd7, 0xc2, 0xe5, 0x43, 0x5a, 0x91, 0x67, + 0xfe, 0x41, 0x12, 0xd4, 0xd8, 0xbb, 0xdd, 0xc0, 0xec, 0xba, 0x9e, 0x26, 0xb4, 0xab, 0x7e, 0x0f, + 0xf2, 0x0d, 0x29, 0x57, 0xdd, 0x64, 0x82, 0x95, 0x09, 0xfc, 0xeb, 0xbd, 0x3c, 0x6e, 0x8b, 0x26, + 0xb4, 0x5c, 0xa3, 0x45, 0x31, 0x5f, 0x81, 0x91, 0x06, 0x3a, 0x77, 0x9b, 0xfe, 0x40, 0x9e, 0x57, + 0x90, 0xfc, 0xe4, 0x5b, 0x22, 0x1b, 0x61, 0xc3, 0xb1, 0x06, 0x79, 0xf4, 0xc2, 0xfa, 0x97, 0x7f, + 0x11, 0xd4, 0x28, 0x0d, 0x0a, 0x9d, 0xf5, 0xfb, 0x90, 0x0a, 0x84, 0x27, 0xa3, 0xe6, 0xab, 0xfd, + 0xc8, 0x5d, 0x0b, 0xa9, 0x3a, 0x95, 0x9c, 0xe8, 0x54, 0x72, 0xf9, 0x25, 0x8c, 0x47, 0xcc, 0x83, + 0x43, 0xb4, 0xbe, 0xcc, 0xe3, 0xab, 0x30, 0x6a, 0x8a, 0xfe, 0xd2, 0x2e, 0x1e, 0xf6, 0x1a, 0x9f, + 0x84, 0xd6, 0x02, 0x9a, 0x72, 0x03, 0x72, 0xb2, 0xee, 0xa0, 0x61, 0x22, 0x9f, 0x9f, 0x82, 0x89, + 0x43, 0x6b, 0xe1, 0x46, 0x45, 0x41, 0xad, 0x42, 0x4a, 0x52, 0xd0, 0x62, 0xa2, 0x94, 0x5c, 0xca, + 0xbc, 0xfd, 0x56, 0x7f, 0xf9, 0x64, 0xc0, 0x30, 0x24, 0x2f, 0xff, 0x40, 0x81, 0xc2, 0x9e, 0x4b, + 0x1c, 0x9f, 0xc6, 0x9e, 0x93, 0x7d, 0x13, 0x66, 0xc4, 0x79, 0x78, 0x83, 0xb7, 0xc4, 0x9f, 0x8e, + 0x0d, 0xe0, 0x8f, 0xa7, 0x38, 0x46, 0x37, 0x70, 0xff, 0x0a, 0xf0, 0x01, 0x9c, 0xce, 0x94, 0xdf, + 0x0d, 0xbc, 0xfc, 0xe3, 0x04, 0x2c, 0xec, 0xc7, 0x5f, 0x0c, 0xaf, 0x21, 0xbb, 0x81, 0xc8, 0xb1, + 0xb3, 0xea, 0xba, 0x54, 0x5c, 0xf6, 0xbc, 0x03, 0x33, 0x87, 0xac, 0x80, 0x4d, 0xbd, 0xe5, 0x03, + 0x11, 0x93, 0x16, 0x15, 0xfe, 0xb8, 0x6f, 0x52, 0x36, 0x47, 0x67, 0x25, 0x55, 0x93, 0xaa, 0xcf, + 0x61, 0x26, 0xde, 0x3d, 0x1a, 0x75, 0xa0, 0x82, 0x37, 0x7b, 0x5b, 0x62, 0xeb, 0x40, 0x65, 0x1a, + 0x37, 0x15, 0x7d, 0x5a, 0x12, 0xb5, 0x51, 0xb5, 0x02, 0x0f, 0x82, 0x21, 0x76, 0xf9, 0xb8, 0xc4, + 0xa4, 0xc5, 0x24, 0x1f, 0xe8, 0x9c, 0xec, 0xd4, 0x9e, 0x63, 0xb2, 0xe1, 0x9e, 0xc2, 0x83, 0x4e, + 0xd2, 0xf8, 0xa0, 0x87, 0x6e, 0x3c, 0xe8, 0xf9, 0xf6, 0x4f, 0x54, 0x62, 0x43, 0x2f, 0xff, 0xa5, + 0x02, 0x6a, 0x20, 0x73, 0xa1, 0x81, 0x3d, 0x57, 0x3c, 0xa3, 0x69, 0xbf, 0xa9, 0x16, 0xb7, 0x5b, + 0x79, 0xda, 0x7a, 0x4b, 0xfd, 0x4b, 0x30, 0x29, 0x5e, 0x4f, 0x0a, 0x88, 0xe0, 0x79, 0xb8, 0x94, + 0x71, 0x8f, 0x57, 0xd5, 0x5f, 0x64, 0x63, 0xfb, 0x93, 0x7f, 0x59, 0x5c, 0x3a, 0x26, 0x7e, 0xbd, + 0x79, 0xb8, 0x6c, 0xb8, 0xf6, 0x8a, 0xfc, 0xce, 0x48, 0xfc, 0xf7, 0x16, 0x35, 0x4f, 0x56, 0x58, + 0x8e, 0x4c, 0x39, 0x01, 0xd5, 0x54, 0x1b, 0x9d, 0xb5, 0x0e, 0x95, 0x96, 0xff, 0x38, 0x01, 0xb3, + 0x5d, 0xed, 0x87, 0x9b, 0xce, 0x7b, 0x30, 0x1b, 0x0e, 0x2c, 0x78, 0xa7, 0x1e, 0x3e, 0x30, 0x15, + 0xf3, 0x99, 0x09, 0x3a, 0x04, 0x4f, 0xd4, 0x83, 0xb7, 0xa4, 0xaf, 0x40, 0x36, 0x76, 0x09, 0x25, + 0x26, 0x94, 0xd6, 0x32, 0xd1, 0x2d, 0x14, 0x55, 0x9b, 0x30, 0xdb, 0xfa, 0x2a, 0x5e, 0xe7, 0x0a, + 0x16, 0x9b, 0x84, 0x24, 0x77, 0x27, 0xef, 0xf5, 0xd2, 0x57, 0x6f, 0xc3, 0xd7, 0xa6, 0x5b, 0x9e, + 0xd2, 0x47, 0x0b, 0xe2, 0x4b, 0x30, 0x63, 0x12, 0xfa, 0xa2, 0x89, 0x2c, 0x72, 0x44, 0xb0, 0x19, + 0xb7, 0xb3, 0x21, 0x3e, 0xc8, 0xa9, 0x78, 0x73, 0x68, 0x62, 0xe5, 0xbf, 0x4a, 0xc0, 0xc4, 0x26, + 0xc6, 0xeb, 0x84, 0x8a, 0xb3, 0x7b, 0x22, 0x37, 0x24, 0x35, 0x98, 0x10, 0xde, 0xc3, 0x94, 0x2d, + 0xe2, 0xd2, 0x6a, 0x90, 0xcb, 0x63, 0x4e, 0x1f, 0x00, 0xf3, 0x2b, 0xab, 0x1a, 0x4c, 0xf8, 0x5d, + 0x40, 0x07, 0x49, 0x53, 0xfc, 0x0e, 0xd0, 0x55, 0xc8, 0xc9, 0x0f, 0x1e, 0x90, 0xcd, 0x4f, 0x2a, + 0x92, 0xfd, 0x3c, 0xd8, 0xcd, 0x0a, 0x9a, 0x0a, 0x27, 0x61, 0xe1, 0xfb, 0xd4, 0xb5, 0x9a, 0xf6, + 0x40, 0x41, 0x58, 0x92, 0x94, 0x7f, 0xbd, 0x55, 0x84, 0x35, 0xa3, 0x8e, 0xcd, 0xa6, 0xc5, 0x9f, + 0xc4, 0x1e, 0x36, 0x0d, 0xa6, 0x85, 0xe8, 0x70, 0x6b, 0x48, 0xcb, 0x88, 0x3a, 0x71, 0xf6, 0xf2, + 0x1a, 0x8c, 0xc9, 0x2e, 0xe1, 0x17, 0x13, 0xe2, 0xb9, 0x48, 0x5e, 0x54, 0x87, 0x9f, 0x48, 0xb4, + 0x1b, 0x5e, 0xb2, 0xd3, 0xf0, 0x76, 0x00, 0x7c, 0x22, 0x77, 0xa3, 0x81, 0x67, 0x58, 0xe9, 0x65, + 0x69, 0x5d, 0xd4, 0xae, 0xa5, 0x7d, 0xf9, 0x8b, 0xf6, 0xb2, 0xa8, 0xe1, 0x5e, 0x16, 0xb5, 0x0d, + 0x6a, 0x1b, 0xf2, 0xfe, 0xfe, 0x96, 0xaa, 0xc2, 0x90, 0x1f, 0x84, 0x9e, 0x21, 0x8d, 0xff, 0x66, + 0xc1, 0xd8, 0xf7, 0xad, 0x8e, 0xa7, 0x32, 0x59, 0xdf, 0xb7, 0xa2, 0xab, 0xf2, 0xdf, 0x57, 0x20, + 0xfb, 0x11, 0x17, 0xb4, 0x86, 0x0d, 0xd7, 0x33, 0xf9, 0x55, 0x1f, 0x37, 0x22, 0xa9, 0x31, 0x65, + 0x90, 0xab, 0x3e, 0x46, 0x28, 0xd0, 0x18, 0x8e, 0x1f, 0xc7, 0x19, 0xe4, 0xa4, 0xdb, 0x8f, 0x70, + 0xca, 0xbf, 0xa5, 0x40, 0xbe, 0x22, 0x22, 0xb3, 0x74, 0x40, 0x6a, 0x11, 0x46, 0x65, 0xac, 0x96, + 0x21, 0x3f, 0x28, 0xaa, 0x18, 0x46, 0x3f, 0x47, 0x67, 0x18, 0x60, 0x97, 0x7f, 0x45, 0x81, 0x2c, + 0x4f, 0x89, 0x85, 0xcc, 0x68, 0xef, 0xdd, 0xdc, 0x33, 0x98, 0xb4, 0x90, 0x8f, 0xa9, 0xaf, 0x33, + 0xe7, 0xc2, 0x53, 0x46, 0x37, 0x1a, 0xe1, 0x6b, 0xd7, 0x79, 0x2b, 0xc9, 0x44, 0x53, 0x05, 0x48, + 0x9c, 0x6f, 0xf9, 0x4b, 0x90, 0x8b, 0x12, 0x97, 0xea, 0x3a, 0xbf, 0xf8, 0x6c, 0x49, 0xc0, 0x44, + 0xbc, 0xce, 0x6a, 0xb9, 0x78, 0x06, 0x46, 0xcb, 0x7f, 0xa4, 0x40, 0x26, 0x06, 0xa4, 0xde, 0x87, + 0x74, 0x7b, 0xd0, 0x89, 0x2a, 0x6e, 0xb3, 0x55, 0x8c, 0x6f, 0x53, 0x93, 0x37, 0xd8, 0xa6, 0x96, + 0x6d, 0x18, 0x16, 0x9f, 0xd8, 0x3c, 0x01, 0xa5, 0x31, 0x88, 0x31, 0x2a, 0x0d, 0x46, 0xf2, 0x62, + 0x90, 0x31, 0x2b, 0x2f, 0xca, 0xbf, 0xab, 0xc0, 0x62, 0x25, 0x38, 0x11, 0x8e, 0x44, 0xdb, 0xb2, + 0x42, 0xfa, 0xba, 0x51, 0xdd, 0x85, 0xbc, 0xb4, 0x08, 0x61, 0xff, 0x81, 0xba, 0xfb, 0x78, 0x29, + 0x20, 0x99, 0xe5, 0xec, 0x58, 0x89, 0x96, 0xbf, 0xa3, 0xc0, 0xfd, 0x70, 0x64, 0x95, 0x2e, 0xc3, + 0xba, 0x7a, 0x55, 0xdc, 0xf9, 0x58, 0x28, 0x64, 0xe3, 0xcd, 0xbd, 0xcd, 0x7f, 0x33, 0x74, 0xfe, + 0x22, 0xdb, 0xef, 0xc9, 0x35, 0x3e, 0x23, 0x99, 0x4a, 0x05, 0x71, 0xa0, 0xc2, 0xf2, 0x7e, 0xc7, + 0xb5, 0xc3, 0x4b, 0xfe, 0xee, 0x79, 0xff, 0x1c, 0xcb, 0xfb, 0xe5, 0xa5, 0x7f, 0x82, 0x7b, 0xc3, + 0xb0, 0x5c, 0xc6, 0xa0, 0x7e, 0xe0, 0x21, 0xc7, 0xaf, 0x34, 0xfd, 0xba, 0xeb, 0x91, 0x8f, 0x85, + 0xf3, 0x2f, 0xc2, 0xe8, 0x31, 0xab, 0x95, 0x5f, 0x3b, 0xa7, 0xb5, 0xa0, 0xa8, 0xbe, 0x03, 0x23, + 0x32, 0xe8, 0x25, 0xfa, 0x09, 0x7a, 0xb2, 0x73, 0xf9, 0xdb, 0x90, 0xa9, 0xf0, 0xf9, 0x71, 0x66, + 0x11, 0xbe, 0xd7, 0x8a, 0xef, 0xdd, 0x14, 0xff, 0xbb, 0x0a, 0xe4, 0x37, 0x8e, 0x8e, 0x70, 0x5f, + 0x3c, 0xaa, 0x30, 0xee, 0x60, 0x5f, 0x17, 0x45, 0xf9, 0xf1, 0x62, 0x7f, 0xec, 0xc6, 0x1c, 0xec, + 0x7f, 0x20, 0xc8, 0xf8, 0x67, 0x8a, 0xea, 0x2c, 0xa4, 0x08, 0xd5, 0x4f, 0x91, 0x25, 0x8f, 0x7c, + 0x52, 0xda, 0x28, 0xa1, 0x1f, 0xb1, 0xe2, 0x63, 0x1f, 0xee, 0xf7, 0xfa, 0x7c, 0x4e, 0x05, 0x18, + 0xd9, 0x71, 0x0f, 0x5d, 0xf3, 0xbc, 0x70, 0x4f, 0x2d, 0xc3, 0xc2, 0x2a, 0x3e, 0x26, 0xce, 0xaa, + 0xe5, 0x1a, 0x27, 0xd8, 0xab, 0xd9, 0xc8, 0xf3, 0xd7, 0x5c, 0xc7, 0xf7, 0x90, 0xe1, 0xd3, 0x5d, + 0xc7, 0x3a, 0x2f, 0x28, 0xea, 0x34, 0xa8, 0x5d, 0xea, 0x13, 0x6a, 0x16, 0x52, 0x1b, 0xa7, 0xd8, + 0x3b, 0x77, 0x1d, 0x5c, 0x48, 0x3e, 0xde, 0x0f, 0xec, 0x50, 0x3c, 0xae, 0x51, 0xc7, 0x20, 0x73, + 0xe0, 0xd0, 0x06, 0x36, 0x78, 0xcc, 0x2c, 0xdc, 0x63, 0x6c, 0x85, 0x26, 0x0a, 0x0a, 0xfb, 0xbd, + 0x87, 0x9a, 0x14, 0x9b, 0x85, 0x84, 0x9a, 0x07, 0x58, 0xc7, 0xb6, 0x6b, 0x11, 0x5a, 0xc7, 0x66, + 0x21, 0xa9, 0x66, 0x60, 0x94, 0x3f, 0x4a, 0xc5, 0x66, 0x61, 0xe8, 0xf1, 0x5f, 0x24, 0xe4, 0xfb, + 0x09, 0x7e, 0xe8, 0x5b, 0x82, 0xcc, 0xc1, 0x4e, 0x6d, 0x6f, 0x63, 0xad, 0xba, 0x59, 0xdd, 0x58, + 0x2f, 0xdc, 0x9b, 0x1b, 0xbb, 0xb8, 0x2c, 0xc5, 0xab, 0xd8, 0x7e, 0x7e, 0xf5, 0xe0, 0x59, 0x41, + 0x99, 0x1b, 0xbd, 0xb8, 0x2c, 0xb1, 0x9f, 0x2c, 0x1a, 0xd7, 0x36, 0xb6, 0xb6, 0x0a, 0x89, 0xb9, + 0xd4, 0xc5, 0x65, 0x89, 0xff, 0x66, 0x76, 0x59, 0xdb, 0xdf, 0xdd, 0xd3, 0x59, 0xd7, 0xe4, 0x5c, + 0xf6, 0xe2, 0xb2, 0x14, 0x96, 0x99, 0xfb, 0xe5, 0xbf, 0x39, 0xd1, 0xd0, 0x5c, 0xee, 0xe2, 0xb2, + 0x14, 0x55, 0x30, 0xca, 0xfd, 0xca, 0x87, 0x1b, 0x9c, 0x72, 0x58, 0x50, 0x06, 0x65, 0x46, 0xc9, + 0x7f, 0x73, 0xca, 0x11, 0x41, 0x19, 0x56, 0xa8, 0xd3, 0x30, 0xb2, 0x7a, 0xf0, 0x4c, 0xdf, 0xdb, + 0x2d, 0x8c, 0xce, 0xc1, 0xc5, 0x65, 0x49, 0x96, 0x98, 0xb5, 0xb0, 0x76, 0xd6, 0x90, 0x9a, 0xcb, + 0x5c, 0x5c, 0x96, 0x82, 0xa2, 0xba, 0x00, 0xc0, 0xfa, 0x54, 0xf6, 0x77, 0xb7, 0xab, 0x6b, 0x85, + 0xf4, 0x5c, 0xfe, 0xe2, 0xb2, 0x14, 0xab, 0x61, 0xd2, 0xe0, 0x5d, 0x65, 0x07, 0x10, 0xd2, 0x88, + 0x55, 0x3d, 0xfe, 0x53, 0x05, 0x72, 0x1b, 0xc1, 0x59, 0x12, 0x97, 0xe0, 0x7d, 0x28, 0xc6, 0xb4, + 0xd2, 0xd2, 0x26, 0x54, 0x24, 0x74, 0x58, 0x50, 0xd4, 0x1c, 0xa4, 0xf9, 0x9d, 0xcc, 0x26, 0xb1, + 0xac, 0x42, 0x42, 0x9d, 0x83, 0x69, 0x5e, 0xdc, 0x46, 0xbe, 0x51, 0xd7, 0xc4, 0x57, 0xad, 0x5c, + 0x31, 0x85, 0x24, 0x33, 0x90, 0xa8, 0x6d, 0x07, 0xbf, 0x14, 0xf5, 0x43, 0xea, 0x14, 0x8c, 0xcb, + 0x8f, 0xea, 0xe4, 0x97, 0xaa, 0xc4, 0x75, 0x0a, 0xc3, 0x0c, 0x4a, 0xbc, 0x3a, 0x6e, 0x7f, 0xdb, + 0x58, 0x18, 0x79, 0xfc, 0x9d, 0x40, 0xdf, 0xdb, 0x88, 0x9e, 0x30, 0x99, 0x1d, 0xec, 0x1c, 0xd4, + 0xb8, 0xaa, 0xb9, 0xcc, 0x44, 0x89, 0x69, 0xb9, 0xb2, 0x13, 0x6a, 0xb9, 0xb2, 0xf3, 0x8c, 0x49, + 0x51, 0xdb, 0xf8, 0xe0, 0x60, 0xab, 0xa2, 0x15, 0x12, 0x42, 0x8a, 0xb2, 0xc8, 0xa4, 0xb4, 0xb6, + 0xbb, 0xb3, 0x5e, 0xdd, 0xaf, 0xee, 0xee, 0x54, 0x98, 0x46, 0xb9, 0x94, 0x62, 0x55, 0xea, 0x32, + 0xcc, 0xac, 0x57, 0xb5, 0x8d, 0x35, 0x56, 0x64, 0x8a, 0xd4, 0x77, 0x35, 0xfd, 0x69, 0xf5, 0x83, + 0xa7, 0x1b, 0x5a, 0x21, 0x35, 0x37, 0x7e, 0x71, 0x59, 0xca, 0xb5, 0x54, 0xb6, 0xf6, 0xe7, 0xe2, + 0xde, 0xd5, 0xf4, 0xad, 0xdd, 0x9f, 0xdf, 0xd0, 0x0a, 0x05, 0xd1, 0xbf, 0xa5, 0x52, 0x9d, 0x87, + 0xcc, 0xfe, 0xb3, 0xbd, 0x0d, 0x7d, 0xbb, 0xa2, 0x7d, 0xb8, 0xb1, 0x5f, 0x28, 0x89, 0xa9, 0x88, + 0x92, 0x3a, 0x0b, 0xc0, 0x1b, 0xb7, 0xaa, 0xdb, 0xd5, 0xfd, 0xc2, 0xfb, 0x73, 0xe9, 0x8b, 0xcb, + 0xd2, 0x30, 0x2f, 0xac, 0xd6, 0xbf, 0xff, 0xe9, 0x82, 0xf2, 0xc3, 0x4f, 0x17, 0x94, 0x7f, 0xfd, + 0x74, 0x41, 0xf9, 0xee, 0x67, 0x0b, 0xf7, 0x7e, 0xf8, 0xd9, 0xc2, 0xbd, 0x7f, 0xfc, 0x6c, 0xe1, + 0xde, 0x37, 0x76, 0x62, 0x69, 0x52, 0x35, 0x70, 0xe0, 0x5b, 0xe8, 0x90, 0xae, 0x84, 0xee, 0xfc, + 0x2d, 0xc3, 0xf5, 0x70, 0xbc, 0x58, 0x47, 0xc4, 0x59, 0xb1, 0x5d, 0x96, 0xae, 0xd3, 0xe8, 0x6f, + 0x64, 0xf0, 0x94, 0xea, 0x70, 0x84, 0x7f, 0x99, 0xf9, 0x33, 0xff, 0x1d, 0x00, 0x00, 0xff, 0xff, + 0x6a, 0xde, 0xbc, 0xbe, 0x46, 0x43, 0x00, 0x00, } func (this *Params) Equal(that interface{}) bool { @@ -4088,6 +4112,13 @@ func (m *DerivativeMarket) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.QuoteDecimals != 0 { + i = encodeVarintExchange(dAtA, i, uint64(m.QuoteDecimals)) + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xa0 + } if m.AdminPermissions != 0 { i = encodeVarintExchange(dAtA, i, uint64(m.AdminPermissions)) i-- @@ -4271,6 +4302,13 @@ func (m *BinaryOptionsMarket) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.QuoteDecimals != 0 { + i = encodeVarintExchange(dAtA, i, uint64(m.QuoteDecimals)) + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xa0 + } if m.AdminPermissions != 0 { i = encodeVarintExchange(dAtA, i, uint64(m.AdminPermissions)) i-- @@ -4741,6 +4779,16 @@ func (m *SpotMarket) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.QuoteDecimals != 0 { + i = encodeVarintExchange(dAtA, i, uint64(m.QuoteDecimals)) + i-- + dAtA[i] = 0x78 + } + if m.BaseDecimals != 0 { + i = encodeVarintExchange(dAtA, i, uint64(m.BaseDecimals)) + i-- + dAtA[i] = 0x70 + } if m.AdminPermissions != 0 { i = encodeVarintExchange(dAtA, i, uint64(m.AdminPermissions)) i-- @@ -7123,6 +7171,9 @@ func (m *DerivativeMarket) Size() (n int) { if m.AdminPermissions != 0 { n += 2 + sovExchange(uint64(m.AdminPermissions)) } + if m.QuoteDecimals != 0 { + n += 2 + sovExchange(uint64(m.QuoteDecimals)) + } return n } @@ -7190,6 +7241,9 @@ func (m *BinaryOptionsMarket) Size() (n int) { if m.AdminPermissions != 0 { n += 2 + sovExchange(uint64(m.AdminPermissions)) } + if m.QuoteDecimals != 0 { + n += 2 + sovExchange(uint64(m.QuoteDecimals)) + } return n } @@ -7347,6 +7401,12 @@ func (m *SpotMarket) Size() (n int) { if m.AdminPermissions != 0 { n += 1 + sovExchange(uint64(m.AdminPermissions)) } + if m.BaseDecimals != 0 { + n += 1 + sovExchange(uint64(m.BaseDecimals)) + } + if m.QuoteDecimals != 0 { + n += 1 + sovExchange(uint64(m.QuoteDecimals)) + } return n } @@ -9739,6 +9799,25 @@ func (m *DerivativeMarket) Unmarshal(dAtA []byte) error { break } } + case 20: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field QuoteDecimals", wireType) + } + m.QuoteDecimals = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowExchange + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.QuoteDecimals |= uint32(b&0x7F) << shift + if b < 0x80 { + break + } + } default: iNdEx = preIndex skippy, err := skipExchange(dAtA[iNdEx:]) @@ -10335,6 +10414,25 @@ func (m *BinaryOptionsMarket) Unmarshal(dAtA []byte) error { break } } + case 20: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field QuoteDecimals", wireType) + } + m.QuoteDecimals = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowExchange + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.QuoteDecimals |= uint32(b&0x7F) << shift + if b < 0x80 { + break + } + } default: iNdEx = preIndex skippy, err := skipExchange(dAtA[iNdEx:]) @@ -11643,6 +11741,44 @@ func (m *SpotMarket) Unmarshal(dAtA []byte) error { break } } + case 14: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field BaseDecimals", wireType) + } + m.BaseDecimals = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowExchange + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.BaseDecimals |= uint32(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 15: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field QuoteDecimals", wireType) + } + m.QuoteDecimals = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowExchange + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.QuoteDecimals |= uint32(b&0x7F) << shift + if b < 0x80 { + break + } + } default: iNdEx = preIndex skippy, err := skipExchange(dAtA[iNdEx:]) diff --git a/chain/exchange/types/msgs.go b/chain/exchange/types/msgs.go index c1fdf2c0..e2236d37 100644 --- a/chain/exchange/types/msgs.go +++ b/chain/exchange/types/msgs.go @@ -10,6 +10,7 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/ethereum/go-ethereum/common" + "github.com/InjectiveLabs/sdk-go/chain/helpers" oracletypes "github.com/InjectiveLabs/sdk-go/chain/oracle/types" wasmxtypes "github.com/InjectiveLabs/sdk-go/chain/wasmx/types" ) @@ -562,6 +563,13 @@ func (msg MsgInstantSpotMarketLaunch) ValidateBasic() error { return errors.Wrap(ErrInvalidNotional, err.Error()) } + if msg.BaseDecimals > MaxDecimals { + return errors.Wrap(ErrInvalidDenomDecimal, "base decimals is invalid") + } + if msg.QuoteDecimals > MaxDecimals { + return errors.Wrap(ErrInvalidDenomDecimal, "quote decimals is invalid") + } + return nil } @@ -1827,16 +1835,16 @@ func (msg MsgBatchUpdateOrders) ValidateBasic() error { return err } - hasDuplicateSpotMarketIDs := HasDuplicatesHexHash(msg.SpotMarketIdsToCancelAll) + hasDuplicateSpotMarketIDs := helpers.HasDuplicate(msg.SpotMarketIdsToCancelAll) if hasDuplicateSpotMarketIDs { return errors.Wrap(ErrInvalidBatchMsgUpdate, "msg contains duplicate cancel all spot market ids") } - hasDuplicateDerivativesMarketIDs := HasDuplicatesHexHash(msg.DerivativeMarketIdsToCancelAll) + hasDuplicateDerivativesMarketIDs := helpers.HasDuplicate(msg.DerivativeMarketIdsToCancelAll) if hasDuplicateDerivativesMarketIDs { return errors.Wrap(ErrInvalidBatchMsgUpdate, "msg contains duplicate cancel all derivative market ids") } - hasDuplicateBinaryOptionsMarketIDs := HasDuplicatesHexHash(msg.BinaryOptionsMarketIdsToCancelAll) + hasDuplicateBinaryOptionsMarketIDs := helpers.HasDuplicate(msg.BinaryOptionsMarketIdsToCancelAll) if hasDuplicateBinaryOptionsMarketIDs { return errors.Wrap(ErrInvalidBatchMsgUpdate, "msg contains duplicate cancel all binary options market ids") } diff --git a/chain/exchange/types/params.go b/chain/exchange/types/params.go index fbec3e19..e44b5cbb 100644 --- a/chain/exchange/types/params.go +++ b/chain/exchange/types/params.go @@ -35,6 +35,8 @@ const ( MaxOracleScaleFactor uint32 = 18 + MaxDecimals uint32 = 18 + MaxTickerLength int = 40 // MaxHistoricalTradeRecordAge is the maximum age of trade records to track. @@ -47,6 +49,8 @@ const ( MaxGranterDelegations = 25 ) +var DefaultInjAuctionMaxCap = math.NewIntWithDecimal(10_000, 18) + var MaxBinaryOptionsOrderPrice = math.LegacyOneDec() // would be $0.000001 for USDT @@ -190,31 +194,34 @@ func (p *Params) ParamSetPairs() paramtypes.ParamSetPairs { // DefaultParams returns a default set of parameters. func DefaultParams() Params { return Params{ - SpotMarketInstantListingFee: sdk.NewCoin("inj", math.NewIntWithDecimal(SpotMarketInstantListingFee, 18)), - DerivativeMarketInstantListingFee: sdk.NewCoin("inj", math.NewIntWithDecimal(DerivativeMarketInstantListingFee, 18)), - DefaultSpotMakerFeeRate: math.LegacyNewDecWithPrec(-1, 4), // default -0.01% maker fees - DefaultSpotTakerFeeRate: math.LegacyNewDecWithPrec(1, 3), // default 0.1% taker fees - DefaultDerivativeMakerFeeRate: math.LegacyNewDecWithPrec(-1, 4), // default -0.01% maker fees - DefaultDerivativeTakerFeeRate: math.LegacyNewDecWithPrec(1, 3), // default 0.1% taker fees - DefaultInitialMarginRatio: math.LegacyNewDecWithPrec(5, 2), // default 5% initial margin ratio - DefaultMaintenanceMarginRatio: math.LegacyNewDecWithPrec(2, 2), // default 2% maintenance margin ratio - DefaultFundingInterval: DefaultFundingIntervalSeconds, - FundingMultiple: DefaultFundingMultipleSeconds, - RelayerFeeShareRate: math.LegacyNewDecWithPrec(40, 2), // default 40% relayer fee share - DefaultHourlyFundingRateCap: math.LegacyNewDecWithPrec(625, 6), // default 0.0625% max hourly funding rate - DefaultHourlyInterestRate: math.LegacyNewDecWithPrec(416666, 11), // 0.01% daily interest rate = 0.0001 / 24 = 0.00000416666 - MaxDerivativeOrderSideCount: MaxDerivativeOrderSideCount, - InjRewardStakedRequirementThreshold: math.NewIntWithDecimal(100, 18), // 100 INJ - TradingRewardsVestingDuration: 604800, // 7 days - LiquidatorRewardShareRate: math.LegacyNewDecWithPrec(5, 2), // 5% liquidator reward - BinaryOptionsMarketInstantListingFee: sdk.NewCoin("inj", math.NewIntWithDecimal(BinaryOptionsMarketInstantListingFee, 18)), - AtomicMarketOrderAccessLevel: AtomicMarketOrderAccessLevel_SmartContractsOnly, - SpotAtomicMarketOrderFeeMultiplier: math.LegacyNewDecWithPrec(25, 1), // default 2.5 multiplier - DerivativeAtomicMarketOrderFeeMultiplier: math.LegacyNewDecWithPrec(25, 1), // default 2.5 multiplier - BinaryOptionsAtomicMarketOrderFeeMultiplier: math.LegacyNewDecWithPrec(25, 1), // default 2.5 multiplier - MinimalProtocolFeeRate: math.LegacyMustNewDecFromStr("0.00005"), // default 0.005% minimal fee rate - IsInstantDerivativeMarketLaunchEnabled: false, - PostOnlyModeHeightThreshold: 0, + SpotMarketInstantListingFee: sdk.NewCoin("inj", math.NewIntWithDecimal(SpotMarketInstantListingFee, 18)), + DerivativeMarketInstantListingFee: sdk.NewCoin("inj", math.NewIntWithDecimal(DerivativeMarketInstantListingFee, 18)), + DefaultSpotMakerFeeRate: math.LegacyNewDecWithPrec(-1, 4), // default -0.01% maker fees + DefaultSpotTakerFeeRate: math.LegacyNewDecWithPrec(1, 3), // default 0.1% taker fees + DefaultDerivativeMakerFeeRate: math.LegacyNewDecWithPrec(-1, 4), // default -0.01% maker fees + DefaultDerivativeTakerFeeRate: math.LegacyNewDecWithPrec(1, 3), // default 0.1% taker fees + DefaultInitialMarginRatio: math.LegacyNewDecWithPrec(5, 2), // default 5% initial margin ratio + DefaultMaintenanceMarginRatio: math.LegacyNewDecWithPrec(2, 2), // default 2% maintenance margin ratio + DefaultFundingInterval: DefaultFundingIntervalSeconds, + FundingMultiple: DefaultFundingMultipleSeconds, + RelayerFeeShareRate: math.LegacyNewDecWithPrec(40, 2), // default 40% relayer fee share + DefaultHourlyFundingRateCap: math.LegacyNewDecWithPrec(625, 6), // default 0.0625% max hourly funding rate + DefaultHourlyInterestRate: math.LegacyNewDecWithPrec(416666, 11), // 0.01% daily interest rate = 0.0001 / 24 = 0.00000416666 + MaxDerivativeOrderSideCount: MaxDerivativeOrderSideCount, + InjRewardStakedRequirementThreshold: math.NewIntWithDecimal(100, 18), // 100 INJ + TradingRewardsVestingDuration: 604800, // 7 days + LiquidatorRewardShareRate: math.LegacyNewDecWithPrec(5, 2), // 5% liquidator reward + BinaryOptionsMarketInstantListingFee: sdk.NewCoin("inj", math.NewIntWithDecimal(BinaryOptionsMarketInstantListingFee, 18)), + AtomicMarketOrderAccessLevel: AtomicMarketOrderAccessLevel_SmartContractsOnly, + SpotAtomicMarketOrderFeeMultiplier: math.LegacyNewDecWithPrec(25, 1), // default 2.5 multiplier + DerivativeAtomicMarketOrderFeeMultiplier: math.LegacyNewDecWithPrec(25, 1), // default 2.5 multiplier + BinaryOptionsAtomicMarketOrderFeeMultiplier: math.LegacyNewDecWithPrec(25, 1), // default 2.5 multiplier + MinimalProtocolFeeRate: math.LegacyMustNewDecFromStr("0.00005"), // default 0.005% minimal fee rate + IsInstantDerivativeMarketLaunchEnabled: false, + PostOnlyModeHeightThreshold: 0, + MarginDecreasePriceTimestampThresholdSeconds: 60, + ExchangeAdmins: []string{}, + InjAuctionMaxCap: DefaultInjAuctionMaxCap, } } diff --git a/chain/exchange/types/proposal.go b/chain/exchange/types/proposal.go index 333507e2..9cdde119 100644 --- a/chain/exchange/types/proposal.go +++ b/chain/exchange/types/proposal.go @@ -12,6 +12,7 @@ import ( gov "github.com/cosmos/cosmos-sdk/x/gov/types" "github.com/ethereum/go-ethereum/common" + "github.com/InjectiveLabs/sdk-go/chain/helpers" oracletypes "github.com/InjectiveLabs/sdk-go/chain/oracle/types" ) @@ -213,7 +214,7 @@ func (p *BatchExchangeModificationProposal) ValidateBasic() error { } // NewSpotMarketParamUpdateProposal returns new instance of SpotMarketParamUpdateProposal -func NewSpotMarketParamUpdateProposal(title, description string, marketID common.Hash, makerFeeRate, takerFeeRate, relayerFeeShareRate, minPriceTickSize, minQuantityTickSize, minNotional *math.LegacyDec, status MarketStatus, ticker string) *SpotMarketParamUpdateProposal { +func NewSpotMarketParamUpdateProposal(title, description string, marketID common.Hash, makerFeeRate, takerFeeRate, relayerFeeShareRate, minPriceTickSize, minQuantityTickSize, minNotional *math.LegacyDec, status MarketStatus, ticker string, baseDecimals, quoteDecimals uint32) *SpotMarketParamUpdateProposal { return &SpotMarketParamUpdateProposal{ title, description, @@ -227,6 +228,8 @@ func NewSpotMarketParamUpdateProposal(title, description string, marketID common ticker, minNotional, nil, + baseDecimals, + quoteDecimals, } } @@ -326,6 +329,13 @@ func (p *SpotMarketParamUpdateProposal) ValidateBasic() error { return errors.Wrap(ErrInvalidMarketStatus, p.Status.String()) } + if p.BaseDecimals > MaxDecimals { + return errors.Wrap(ErrInvalidDenomDecimal, "base decimals is invalid") + } + if p.QuoteDecimals > MaxDecimals { + return errors.Wrap(ErrInvalidDenomDecimal, "quote decimals is invalid") + } + return govtypes.ValidateAbstract(p) } @@ -341,6 +351,8 @@ func NewSpotMarketLaunchProposal( minNotional math.LegacyDec, makerFeeRate *math.LegacyDec, takerFeeRate *math.LegacyDec, + baseDecimals uint32, + quoteDecimals uint32, ) *SpotMarketLaunchProposal { return &SpotMarketLaunchProposal{ Title: title, @@ -353,6 +365,8 @@ func NewSpotMarketLaunchProposal( MinNotional: minNotional, MakerFeeRate: makerFeeRate, TakerFeeRate: takerFeeRate, + BaseDecimals: baseDecimals, + QuoteDecimals: quoteDecimals, } } @@ -424,6 +438,13 @@ func (p *SpotMarketLaunchProposal) ValidateBasic() error { } } + if p.BaseDecimals > MaxDecimals { + return errors.Wrap(ErrInvalidDenomDecimal, "base decimals is invalid") + } + if p.QuoteDecimals > MaxDecimals { + return errors.Wrap(ErrInvalidDenomDecimal, "quote decimals is invalid") + } + return govtypes.ValidateAbstract(p) } @@ -697,7 +718,7 @@ func (d *DenomDecimals) Validate() error { return errors.Wrap(sdkerrors.ErrInvalidCoins, d.Denom) } - if d.Decimals <= 0 || d.Decimals > uint64(MaxOracleScaleFactor) { + if d.Decimals > uint64(MaxDecimals) { return errors.Wrapf(ErrInvalidDenomDecimal, "invalid decimals passed: %d", d.Decimals) } return nil @@ -1089,7 +1110,7 @@ func (p *TradingRewardPendingPointsUpdateProposal) ValidateBasic() error { } } - hasDuplicateAccountAddresses := HasDuplicates(accountAddresses) + hasDuplicateAccountAddresses := helpers.HasDuplicate(accountAddresses) if hasDuplicateAccountAddresses { return errors.Wrap(ErrInvalidTradingRewardsPendingPointsUpdate, "account address cannot have duplicates") } @@ -1185,7 +1206,7 @@ func (t *TradingRewardCampaignBoostInfo) ValidateBasic() error { return errors.Wrap(ErrInvalidTradingRewardCampaign, "boosted derivative market ids is not matching derivative market multipliers") } - hasDuplicatesInMarkets := HasDuplicates(t.BoostedSpotMarketIds) || HasDuplicates(t.BoostedDerivativeMarketIds) + hasDuplicatesInMarkets := helpers.HasDuplicate(t.BoostedSpotMarketIds) || helpers.HasDuplicate(t.BoostedDerivativeMarketIds) if hasDuplicatesInMarkets { return errors.Wrap(ErrInvalidTradingRewardCampaign, "campaign contains duplicate boosted market ids") } @@ -1241,7 +1262,7 @@ func (c *TradingRewardCampaignInfo) ValidateBasic() error { return errors.Wrap(ErrInvalidTradingRewardCampaign, "campaign quote denoms cannot be nil") } - hasTradingRewardBoostInfoDefined := c != nil && c.TradingRewardBoostInfo != nil + hasTradingRewardBoostInfoDefined := c.TradingRewardBoostInfo != nil if hasTradingRewardBoostInfoDefined { if err := c.TradingRewardBoostInfo.ValidateBasic(); err != nil { return err @@ -1254,7 +1275,7 @@ func (c *TradingRewardCampaignInfo) ValidateBasic() error { } } - hasDuplicatesInDisqualifiedMarkets := c != nil && HasDuplicates(c.DisqualifiedMarketIds) + hasDuplicatesInDisqualifiedMarkets := helpers.HasDuplicate(c.DisqualifiedMarketIds) if hasDuplicatesInDisqualifiedMarkets { return errors.Wrap(ErrInvalidTradingRewardCampaign, "campaign contains duplicate disqualified market ids") } @@ -1278,7 +1299,7 @@ func validateCampaignRewardPool(pool *CampaignRewardPool, campaignDurationSecond prevStartTimestamp = pool.StartTimestamp - hasDuplicatesInEpochRewards := HasDuplicatesCoin(pool.MaxCampaignRewards) + hasDuplicatesInEpochRewards := helpers.HasDuplicateCoins(pool.MaxCampaignRewards) if hasDuplicatesInEpochRewards { return 0, errors.Wrap(ErrInvalidTradingRewardCampaign, "reward pool campaign contains duplicate market coins") } @@ -1340,7 +1361,7 @@ func (p *FeeDiscountProposal) ValidateBasic() error { return errors.Wrap(ErrInvalidFeeDiscountSchedule, "new fee discount schedule must have have bucket durations of at least 10 seconds") } - if HasDuplicates(p.Schedule.QuoteDenoms) { + if helpers.HasDuplicate(p.Schedule.QuoteDenoms) { return errors.Wrap(ErrInvalidFeeDiscountSchedule, "new fee discount schedule cannot have duplicate quote denoms") } @@ -1350,7 +1371,7 @@ func (p *FeeDiscountProposal) ValidateBasic() error { } } - if HasDuplicates(p.Schedule.DisqualifiedMarketIds) { + if helpers.HasDuplicate(p.Schedule.DisqualifiedMarketIds) { return errors.Wrap(ErrInvalidFeeDiscountSchedule, "new fee discount schedule cannot have duplicate disqualified market ids") } diff --git a/chain/exchange/types/proposal.pb.go b/chain/exchange/types/proposal.pb.go index 1a20dfa1..ad50518d 100644 --- a/chain/exchange/types/proposal.pb.go +++ b/chain/exchange/types/proposal.pb.go @@ -81,6 +81,10 @@ type SpotMarketParamUpdateProposal struct { // orders in the market MinNotional *cosmossdk_io_math.LegacyDec `protobuf:"bytes,11,opt,name=min_notional,json=minNotional,proto3,customtype=cosmossdk.io/math.LegacyDec" json:"min_notional,omitempty"` AdminInfo *AdminInfo `protobuf:"bytes,12,opt,name=admin_info,json=adminInfo,proto3" json:"admin_info,omitempty"` + // base token decimals + BaseDecimals uint32 `protobuf:"varint,13,opt,name=base_decimals,json=baseDecimals,proto3" json:"base_decimals,omitempty"` + // quote token decimals + QuoteDecimals uint32 `protobuf:"varint,14,opt,name=quote_decimals,json=quoteDecimals,proto3" json:"quote_decimals,omitempty"` } func (m *SpotMarketParamUpdateProposal) Reset() { *m = SpotMarketParamUpdateProposal{} } @@ -227,6 +231,10 @@ type SpotMarketLaunchProposal struct { // min_notional defines the minimum notional for orders in the market MinNotional cosmossdk_io_math.LegacyDec `protobuf:"bytes,10,opt,name=min_notional,json=minNotional,proto3,customtype=cosmossdk.io/math.LegacyDec" json:"min_notional"` AdminInfo *AdminInfo `protobuf:"bytes,11,opt,name=admin_info,json=adminInfo,proto3" json:"admin_info,omitempty"` + // base token decimals + BaseDecimals uint32 `protobuf:"varint,14,opt,name=base_decimals,json=baseDecimals,proto3" json:"base_decimals,omitempty"` + // quote token decimals + QuoteDecimals uint32 `protobuf:"varint,15,opt,name=quote_decimals,json=quoteDecimals,proto3" json:"quote_decimals,omitempty"` } func (m *SpotMarketLaunchProposal) Reset() { *m = SpotMarketLaunchProposal{} } @@ -1221,160 +1229,163 @@ func init() { } var fileDescriptor_32e9ec9b6b22477c = []byte{ - // 2444 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5b, 0xcb, 0x8f, 0x1b, 0x49, - 0xfd, 0x9f, 0x9e, 0x99, 0x4c, 0xec, 0xb2, 0xe7, 0xd5, 0xe3, 0x9d, 0x9f, 0x77, 0x92, 0x78, 0x66, - 0x3a, 0xaf, 0xd9, 0xfc, 0x36, 0x36, 0x09, 0x8b, 0x22, 0x2c, 0x21, 0x98, 0xe7, 0xee, 0x88, 0x64, - 0xe2, 0xb4, 0x67, 0x76, 0x57, 0x11, 0xa8, 0x55, 0xee, 0xae, 0x99, 0x29, 0xe2, 0x7e, 0xa4, 0xab, - 0x3c, 0xc9, 0xac, 0x38, 0x70, 0x60, 0x05, 0xca, 0x09, 0x10, 0x0f, 0x71, 0x88, 0xb4, 0x27, 0xce, - 0x48, 0xf0, 0x0f, 0xc0, 0x01, 0x2d, 0x2b, 0x0e, 0x2b, 0x71, 0x00, 0x71, 0x58, 0xa1, 0x44, 0x08, - 0xfe, 0x02, 0xc4, 0x81, 0x03, 0xea, 0xaa, 0xea, 0x76, 0xdb, 0x6e, 0xb7, 0xdb, 0x1e, 0x9b, 0x3d, - 0x90, 0x4b, 0xe2, 0xfe, 0xd6, 0xb7, 0x3e, 0xf5, 0xad, 0xef, 0xab, 0xbe, 0xf5, 0x18, 0xf0, 0x06, - 0xb6, 0xbe, 0x85, 0x74, 0x8a, 0x4f, 0x50, 0x09, 0x3d, 0xd5, 0x8f, 0xa1, 0x75, 0x84, 0x4a, 0x27, - 0xb7, 0x6a, 0x88, 0xc2, 0x5b, 0x25, 0xc7, 0xb5, 0x1d, 0x9b, 0xc0, 0x7a, 0xd1, 0x71, 0x6d, 0x6a, - 0xcb, 0x4b, 0x01, 0x6b, 0xd1, 0x67, 0x2d, 0x0a, 0xd6, 0xa5, 0x82, 0x6e, 0x13, 0xd3, 0x26, 0xa5, - 0x1a, 0x24, 0xcd, 0xfe, 0xba, 0x8d, 0x2d, 0xde, 0x77, 0xa9, 0x28, 0xda, 0x0d, 0x4c, 0xa8, 0x8b, - 0x6b, 0x0d, 0x8a, 0x6d, 0x2b, 0xe0, 0x0b, 0x13, 0x05, 0xff, 0xff, 0x09, 0x7e, 0x93, 0x1c, 0x95, - 0x4e, 0x6e, 0x79, 0xff, 0x89, 0x86, 0xd7, 0x79, 0x83, 0xc6, 0xbe, 0x4a, 0xfc, 0x43, 0x34, 0xe5, - 0x8e, 0xec, 0x23, 0x9b, 0xd3, 0xbd, 0x5f, 0x82, 0x1a, 0x37, 0xc1, 0x60, 0x1a, 0x9c, 0xf5, 0x6a, - 0x93, 0xd5, 0x76, 0xa1, 0x5e, 0x6f, 0x32, 0xf2, 0x4f, 0xc1, 0x36, 0x0f, 0x4d, 0x6c, 0xd9, 0x25, - 0xf6, 0x2f, 0x27, 0x29, 0x7f, 0x9c, 0x02, 0x97, 0xaa, 0x8e, 0x4d, 0xef, 0x41, 0xf7, 0x11, 0xa2, - 0x15, 0xe8, 0x42, 0xf3, 0xc0, 0x31, 0x20, 0x45, 0x15, 0xa1, 0x42, 0x39, 0x07, 0xce, 0x51, 0x4c, - 0xeb, 0x28, 0x2f, 0xad, 0x48, 0x6b, 0x69, 0x95, 0x7f, 0xc8, 0x2b, 0x20, 0x63, 0x20, 0xa2, 0xbb, - 0xd8, 0xf1, 0xe6, 0x9e, 0x1f, 0x67, 0x6d, 0x61, 0x92, 0x7c, 0x01, 0xa4, 0x4d, 0x06, 0xaa, 0x61, - 0x23, 0x3f, 0xc1, 0xda, 0x53, 0x9c, 0xb0, 0x6b, 0xc8, 0xbb, 0x60, 0xc6, 0x84, 0x8f, 0x90, 0xab, - 0x1d, 0x22, 0xa4, 0xb9, 0x90, 0xa2, 0xfc, 0xa4, 0xc7, 0xb1, 0x71, 0xf9, 0xe3, 0xcf, 0x96, 0xa5, - 0xbf, 0x7c, 0xb6, 0x7c, 0x81, 0xeb, 0x87, 0x18, 0x8f, 0x8a, 0xd8, 0x2e, 0x99, 0x90, 0x1e, 0x17, - 0xef, 0xa2, 0x23, 0xa8, 0x9f, 0x6e, 0x21, 0x5d, 0xcd, 0xb2, 0xae, 0x3b, 0x08, 0xa9, 0x90, 0x22, - 0x0f, 0x8a, 0xb6, 0x42, 0x9d, 0xeb, 0x03, 0x8a, 0x86, 0xa1, 0xde, 0x07, 0x8b, 0x2e, 0xaa, 0xc3, - 0x53, 0x01, 0x46, 0x8e, 0xa1, 0x2b, 0x20, 0xa7, 0x92, 0x43, 0x2e, 0x08, 0x88, 0x1d, 0x84, 0xaa, - 0x1e, 0x00, 0x43, 0x56, 0xc1, 0x82, 0x89, 0x2d, 0xcd, 0x71, 0xb1, 0x8e, 0x34, 0x8a, 0xf5, 0x47, - 0x1a, 0xc1, 0x1f, 0xa0, 0xfc, 0xf9, 0xe4, 0xb0, 0x73, 0x26, 0xb6, 0x2a, 0x5e, 0xf7, 0x7d, 0xac, - 0x3f, 0xaa, 0xe2, 0x0f, 0x98, 0xb4, 0x1e, 0xe6, 0xe3, 0x06, 0xb4, 0x28, 0xa6, 0xa7, 0x21, 0xd8, - 0x54, 0x1f, 0xd2, 0x9a, 0xd8, 0x7a, 0x20, 0x10, 0x02, 0xe4, 0xaf, 0x81, 0x29, 0x42, 0x21, 0x6d, - 0x90, 0x7c, 0x7a, 0x45, 0x5a, 0x9b, 0xb9, 0xbd, 0x56, 0xec, 0x1e, 0x40, 0x45, 0xee, 0x39, 0x55, - 0xc6, 0xaf, 0x8a, 0x7e, 0xf2, 0x45, 0x30, 0xe5, 0x89, 0x83, 0xdc, 0x3c, 0x60, 0xb2, 0x4c, 0x7a, - 0xb2, 0xa8, 0x82, 0x26, 0xef, 0x80, 0xac, 0x27, 0xb9, 0x65, 0x7b, 0x8e, 0x02, 0xeb, 0xf9, 0x4c, - 0x72, 0x79, 0x33, 0x26, 0xb6, 0xf6, 0x44, 0x3f, 0x79, 0x0b, 0x00, 0x68, 0x78, 0x48, 0xd8, 0x3a, - 0xb4, 0xf3, 0xd9, 0x15, 0x69, 0x2d, 0x73, 0xfb, 0x6a, 0x9c, 0xac, 0xeb, 0x1e, 0xf7, 0xae, 0x75, - 0x68, 0xab, 0x69, 0xe8, 0xff, 0x2c, 0x3f, 0xf8, 0xfe, 0x47, 0xcb, 0x63, 0xff, 0xf8, 0x68, 0x79, - 0xec, 0x93, 0x5f, 0xdf, 0x5c, 0x12, 0x71, 0x79, 0x64, 0x9f, 0x04, 0x9d, 0x36, 0x6d, 0x8b, 0x22, - 0x8b, 0x3e, 0xfb, 0xfb, 0x2f, 0x6f, 0x5c, 0x0b, 0x02, 0x31, 0x36, 0x66, 0x94, 0x3f, 0x48, 0x60, - 0x71, 0x5b, 0xb0, 0x6e, 0x5b, 0xb0, 0x56, 0x3f, 0x7b, 0x38, 0xdd, 0x05, 0x59, 0x7f, 0xf0, 0xfd, - 0x53, 0x07, 0xb1, 0x88, 0xea, 0x61, 0x99, 0xed, 0x10, 0xbf, 0xda, 0xd2, 0xbb, 0xfc, 0xa6, 0x3f, - 0x67, 0x6f, 0x56, 0xcb, 0xc1, 0xac, 0xa2, 0x65, 0x56, 0x7e, 0x3a, 0x0d, 0x56, 0x37, 0x20, 0xd5, - 0x8f, 0xfd, 0xf6, 0x7b, 0xb6, 0x81, 0x0f, 0xb1, 0x0e, 0x3d, 0xc9, 0xce, 0x3c, 0xb3, 0x0f, 0x25, - 0xa0, 0x10, 0xc7, 0xa6, 0x9a, 0x48, 0x17, 0x8e, 0xa7, 0x50, 0xad, 0xc1, 0x34, 0xaa, 0xf9, 0x99, - 0x9c, 0xe4, 0x27, 0x56, 0x26, 0xd6, 0x32, 0xb7, 0xbf, 0x1c, 0x37, 0xe1, 0x58, 0xa3, 0xa8, 0x05, - 0x12, 0xd7, 0x4c, 0xe4, 0x9f, 0x49, 0x60, 0xcd, 0x40, 0x2e, 0x3e, 0x81, 0x1e, 0x7a, 0x0f, 0x69, - 0x26, 0x99, 0x34, 0x5f, 0x8d, 0x93, 0x66, 0x2b, 0xc0, 0xea, 0x2e, 0xd3, 0x15, 0xa3, 0x37, 0x13, - 0x91, 0x1b, 0xe0, 0x62, 0x58, 0x41, 0x75, 0xd8, 0xb0, 0xf4, 0xe3, 0x90, 0x30, 0xe7, 0x98, 0x30, - 0x6f, 0x25, 0x53, 0xcd, 0x5d, 0xd6, 0x3b, 0x90, 0xe0, 0x75, 0xd2, 0xa5, 0x85, 0xc8, 0xdf, 0x95, - 0xc0, 0xaa, 0x83, 0x5c, 0x07, 0xd1, 0x06, 0xac, 0x77, 0x1d, 0x7c, 0xaa, 0xb7, 0x5d, 0x2a, 0x3e, - 0x48, 0xa4, 0x04, 0x05, 0x27, 0xae, 0x99, 0xc8, 0x3f, 0x94, 0xc0, 0x35, 0xf4, 0xd4, 0xc1, 0xee, - 0xa9, 0x76, 0xd8, 0xa0, 0x0d, 0x17, 0x91, 0xae, 0xb2, 0x9c, 0x67, 0xb2, 0x7c, 0x25, 0x3e, 0x28, - 0x3c, 0xa4, 0x1d, 0x0e, 0x14, 0x29, 0x8f, 0x82, 0x7a, 0xb1, 0x10, 0xf9, 0x27, 0x12, 0xb8, 0x4e, - 0x5d, 0x68, 0x60, 0xeb, 0x48, 0x73, 0xd1, 0x13, 0xe8, 0x1a, 0x9a, 0x0e, 0x4d, 0x07, 0xe2, 0x23, - 0xab, 0xdd, 0x57, 0x58, 0x36, 0xee, 0xe1, 0x2a, 0xfb, 0x1c, 0x4a, 0x65, 0x48, 0x9b, 0x02, 0xa8, - 0xcd, 0x55, 0x2e, 0xd3, 0xde, 0x4c, 0x4c, 0x57, 0x35, 0x6c, 0x41, 0xf7, 0x54, 0xb3, 0x59, 0x74, - 0x75, 0xd7, 0x55, 0xba, 0xb7, 0xae, 0x36, 0x18, 0xd2, 0x7d, 0x0e, 0x14, 0xad, 0xab, 0x5a, 0x2f, - 0x16, 0x22, 0xff, 0x58, 0x02, 0x57, 0xdb, 0x64, 0xea, 0x12, 0x54, 0x80, 0x89, 0xb4, 0xd1, 0xa7, - 0x48, 0x51, 0x71, 0xb5, 0xda, 0x22, 0x57, 0x64, 0x50, 0x7d, 0x1b, 0x14, 0x0c, 0x64, 0xd9, 0xa6, - 0x66, 0x20, 0x1d, 0x9b, 0xb0, 0x4e, 0x3a, 0x0c, 0x97, 0x61, 0x86, 0xbb, 0x13, 0x27, 0x0e, 0x07, - 0xdd, 0xf2, 0x70, 0xb6, 0x04, 0x4c, 0x20, 0xc3, 0x05, 0x23, 0x4c, 0x6e, 0x33, 0x94, 0x0e, 0x5e, - 0xf3, 0x4a, 0x0c, 0x03, 0x13, 0xdd, 0x6e, 0x58, 0xb4, 0x39, 0x28, 0x5f, 0xc5, 0x4a, 0x71, 0x83, - 0xee, 0x20, 0xb4, 0x25, 0xfa, 0x05, 0x83, 0x2d, 0x1c, 0x76, 0x12, 0xe5, 0xef, 0x49, 0x40, 0x11, - 0xe6, 0x3f, 0xb4, 0x5d, 0x1d, 0x19, 0x1a, 0x41, 0x94, 0xd6, 0x91, 0x89, 0x42, 0x23, 0x92, 0xfc, - 0x34, 0x53, 0x7b, 0xb9, 0xf7, 0x22, 0xbf, 0xc3, 0x40, 0xaa, 0x01, 0x46, 0x30, 0xfa, 0xb2, 0x19, - 0xdb, 0x4e, 0xca, 0x07, 0xc9, 0xd7, 0xd8, 0x1b, 0xc1, 0x6a, 0xd4, 0x73, 0xc9, 0x51, 0x3e, 0x39, - 0x07, 0xf2, 0xdd, 0x32, 0xdb, 0xc0, 0xeb, 0xd1, 0x62, 0x50, 0xbb, 0xf0, 0xaa, 0xd5, 0xaf, 0x5a, - 0x2e, 0x01, 0xe0, 0x6d, 0x12, 0x34, 0x66, 0x56, 0x5e, 0xaf, 0xaa, 0x69, 0x8f, 0xc2, 0xcc, 0x2f, - 0x2f, 0x83, 0xcc, 0xe3, 0x86, 0x4d, 0xfd, 0x76, 0x56, 0x84, 0xaa, 0x80, 0x91, 0x38, 0x43, 0x97, - 0x1a, 0xb0, 0x59, 0x5a, 0x8e, 0x0d, 0xb3, 0x06, 0x3c, 0x9f, 0x1c, 0x36, 0xb2, 0x06, 0xec, 0xac, - 0xd0, 0x53, 0xc3, 0xab, 0xd0, 0xd3, 0x83, 0x56, 0xe8, 0xed, 0x95, 0x23, 0x48, 0x3e, 0xcb, 0x98, - 0xca, 0x31, 0x33, 0x60, 0xe5, 0x78, 0x37, 0xb9, 0x57, 0xaf, 0x46, 0x54, 0x8e, 0xad, 0xfe, 0xaa, - 0xfc, 0x22, 0x05, 0x2e, 0xc5, 0xae, 0x94, 0x43, 0xf7, 0xe8, 0x36, 0x97, 0x9d, 0xec, 0x70, 0xd9, - 0x65, 0x90, 0xe1, 0x1b, 0x48, 0xcd, 0xf3, 0x73, 0xdf, 0xa7, 0x39, 0x69, 0x03, 0x12, 0x24, 0xaf, - 0x82, 0xac, 0x60, 0x60, 0xbd, 0xb8, 0x33, 0xab, 0xa2, 0xd3, 0x03, 0x8f, 0x24, 0x17, 0xc1, 0x82, - 0x60, 0x21, 0x3a, 0xac, 0x23, 0xed, 0x10, 0xea, 0xd4, 0x76, 0x99, 0x7f, 0x4e, 0xab, 0xf3, 0xbc, - 0xa9, 0xea, 0xb5, 0xec, 0xb0, 0x06, 0x79, 0x3b, 0x18, 0x93, 0x7a, 0x75, 0x6e, 0x8a, 0xd5, 0xb9, - 0x57, 0x42, 0xb6, 0x11, 0x5b, 0x5a, 0x5f, 0xc9, 0xf7, 0xd9, 0x27, 0xab, 0x71, 0x85, 0x64, 0xde, - 0x6f, 0xf9, 0x00, 0xe4, 0xb0, 0x85, 0x29, 0xe6, 0x95, 0xcb, 0x11, 0xb6, 0x3c, 0xcf, 0xc3, 0x76, - 0xc8, 0xf5, 0x7a, 0x7a, 0x8c, 0x2c, 0x00, 0xee, 0xb1, 0xfe, 0xaa, 0xd7, 0x5d, 0xfe, 0x26, 0xc8, - 0x9b, 0x10, 0x7b, 0x66, 0x85, 0x96, 0x8e, 0x5a, 0xa1, 0xfb, 0x70, 0xc6, 0xc5, 0x10, 0x48, 0x18, - 0xbe, 0x33, 0xea, 0x32, 0xc9, 0x41, 0x7b, 0x45, 0x5d, 0xb6, 0x0f, 0xa8, 0x96, 0xa8, 0xeb, 0x92, - 0xb9, 0xa6, 0x47, 0x93, 0xb9, 0x66, 0xce, 0x98, 0xb9, 0xda, 0x73, 0xc4, 0xec, 0x50, 0x72, 0xc4, - 0xdc, 0x7f, 0x73, 0x77, 0x19, 0x9b, 0x06, 0x94, 0xbf, 0x9d, 0x07, 0xab, 0x3d, 0x4b, 0xb3, 0xa1, - 0x27, 0x8b, 0xcb, 0x60, 0xda, 0x8f, 0xe3, 0x53, 0xb3, 0x66, 0xd7, 0x45, 0xba, 0x10, 0xf1, 0x5f, - 0x65, 0x34, 0xf9, 0x3a, 0x98, 0x15, 0x4c, 0x8e, 0x6b, 0x9f, 0x60, 0x03, 0xb9, 0x22, 0x69, 0xcc, - 0x70, 0x72, 0x45, 0x50, 0xdb, 0xa3, 0x7c, 0x6a, 0xc0, 0x28, 0xef, 0x37, 0xb9, 0xdc, 0x02, 0x39, - 0x56, 0xdd, 0xb3, 0x32, 0x42, 0xa3, 0xd8, 0x44, 0x84, 0x42, 0xd3, 0x61, 0x59, 0x66, 0x42, 0x5d, - 0x68, 0xb6, 0xed, 0xfb, 0x4d, 0x5e, 0x97, 0x50, 0xd5, 0xd4, 0xec, 0x92, 0xe6, 0x5d, 0x9a, 0x6d, - 0xcd, 0x2e, 0x39, 0x70, 0x8e, 0x39, 0x00, 0xcf, 0x08, 0x2a, 0xff, 0x68, 0xcf, 0xb6, 0x99, 0x8e, - 0x6c, 0xdb, 0x19, 0xfc, 0xd9, 0xe1, 0x05, 0xff, 0xf4, 0x90, 0x83, 0x7f, 0x66, 0x34, 0xc1, 0x3f, - 0x3b, 0xe4, 0xe0, 0x9f, 0x1b, 0x30, 0xf8, 0xff, 0x1f, 0xcc, 0xf3, 0xe0, 0x77, 0x90, 0x6b, 0x62, - 0x42, 0xbc, 0x30, 0xcb, 0xcf, 0x33, 0xb7, 0x9a, 0x63, 0x0d, 0x95, 0x26, 0x7d, 0xc0, 0xea, 0xb6, - 0x57, 0x04, 0x2b, 0xbf, 0x4b, 0x81, 0xd5, 0x9e, 0xdb, 0xd5, 0x57, 0x45, 0x41, 0x1f, 0xe9, 0x62, - 0x11, 0x4c, 0xf1, 0xcd, 0xbd, 0x88, 0x5e, 0xf1, 0xd5, 0xb5, 0x58, 0x00, 0xa3, 0x2b, 0x16, 0x32, - 0xa3, 0x28, 0x16, 0x5e, 0xe5, 0x8b, 0xcf, 0x2b, 0x5f, 0xb4, 0x16, 0x0b, 0xf3, 0x03, 0x16, 0x0b, - 0x03, 0x25, 0x92, 0x9e, 0x29, 0x42, 0xf9, 0x11, 0x00, 0x97, 0x13, 0x9c, 0x46, 0x8e, 0xe6, 0xaa, - 0xa7, 0x5b, 0x6c, 0xf5, 0x71, 0xe1, 0xd3, 0x6f, 0x6c, 0xf5, 0x71, 0x01, 0x94, 0x3c, 0xb6, 0xa6, - 0x86, 0xb7, 0xfd, 0x3d, 0x3f, 0xfc, 0x0b, 0xaa, 0xd4, 0x68, 0x2e, 0xa8, 0xd2, 0xa3, 0xb9, 0xa0, - 0x02, 0x67, 0xbc, 0xa0, 0xaa, 0x02, 0xf9, 0x1d, 0xbb, 0xe1, 0xd6, 0x4f, 0x77, 0x2d, 0x8a, 0x5c, - 0x44, 0xa8, 0xda, 0xba, 0x55, 0xea, 0xed, 0x51, 0x9d, 0xdd, 0xe5, 0xf7, 0x40, 0x8e, 0x53, 0x77, - 0x1a, 0x16, 0x3b, 0x68, 0x85, 0x14, 0x6d, 0x42, 0x27, 0x94, 0x54, 0x7b, 0xc2, 0x46, 0x02, 0x84, - 0xae, 0xd3, 0xa6, 0x07, 0xbc, 0x4e, 0xbb, 0x17, 0xd4, 0xde, 0xec, 0xe4, 0x94, 0xb0, 0x6c, 0x9a, - 0x89, 0x07, 0xe2, 0x4b, 0x20, 0x0b, 0x73, 0xe2, 0x57, 0xe9, 0xfc, 0x2b, 0x74, 0x3b, 0x37, 0x9b, - 0xe0, 0x76, 0x6e, 0x6e, 0x28, 0xb7, 0x73, 0x83, 0xa6, 0xc4, 0xf7, 0x92, 0xa7, 0xc4, 0x37, 0x83, - 0x94, 0x98, 0x20, 0xd9, 0x29, 0x7b, 0x20, 0x1d, 0x0c, 0xd8, 0xac, 0xd8, 0xa5, 0x70, 0xc5, 0x1e, - 0x59, 0x04, 0x8e, 0x47, 0x17, 0x81, 0xca, 0xcf, 0xc7, 0x41, 0x21, 0xfe, 0x98, 0x74, 0x34, 0xf9, - 0x75, 0x0f, 0xcc, 0xb5, 0x9c, 0xea, 0x62, 0xbd, 0xaf, 0xcb, 0xf4, 0x59, 0x12, 0x92, 0x13, 0xeb, - 0xa8, 0xac, 0x26, 0x57, 0xf8, 0xf5, 0x40, 0xe1, 0xf1, 0x13, 0x57, 0xfe, 0x25, 0x81, 0x0b, 0x31, - 0x47, 0xe5, 0x03, 0x2b, 0xa6, 0x02, 0x66, 0x5a, 0xcf, 0xf0, 0xc5, 0x2d, 0xe1, 0x1b, 0xf1, 0xf7, - 0x72, 0x21, 0x11, 0xd4, 0xe9, 0x96, 0x53, 0xfa, 0xf2, 0xfd, 0xe4, 0xb3, 0xbf, 0x12, 0xcc, 0x3e, - 0x66, 0x6a, 0xca, 0x6f, 0x53, 0xe0, 0x5a, 0xb2, 0x4b, 0x8b, 0x57, 0x2f, 0x2d, 0xfe, 0xf7, 0x5e, - 0x5a, 0x74, 0x3b, 0x8f, 0x48, 0xf7, 0x7f, 0x1e, 0x01, 0xba, 0x9f, 0x47, 0x44, 0xa5, 0x88, 0xcc, - 0xe0, 0x29, 0xa2, 0x99, 0x2d, 0xb3, 0xe1, 0x6c, 0x79, 0xf6, 0x65, 0xee, 0x20, 0x7a, 0x99, 0xfb, - 0x42, 0xec, 0xdd, 0xb2, 0x38, 0x51, 0xfa, 0xbc, 0x97, 0xbb, 0xf2, 0xc3, 0xe4, 0x99, 0xa3, 0x14, - 0x77, 0x08, 0x10, 0xb5, 0x56, 0xfd, 0x46, 0x02, 0xb9, 0xa8, 0x89, 0x7a, 0x1b, 0x5a, 0x71, 0x1a, - 0xc7, 0x73, 0x86, 0xf8, 0x92, 0x97, 0x40, 0x2a, 0x38, 0x80, 0xe3, 0x19, 0x23, 0xf8, 0xee, 0xb6, - 0xf7, 0x9e, 0x48, 0xb8, 0xf7, 0x9e, 0x1c, 0x6c, 0xef, 0xad, 0xfc, 0x5e, 0x02, 0xd9, 0x16, 0xd9, - 0xdb, 0xce, 0x11, 0xa4, 0x9e, 0xe7, 0x08, 0xe3, 0x89, 0xcf, 0x11, 0x46, 0x3d, 0x97, 0x7f, 0x8e, - 0x83, 0xcb, 0x91, 0x77, 0xf6, 0x43, 0x3a, 0x9b, 0x79, 0x08, 0xa6, 0x83, 0xe7, 0x04, 0xac, 0x7a, - 0x9a, 0x60, 0x81, 0xf0, 0xa5, 0xbe, 0xdf, 0x10, 0xb0, 0x6a, 0x2a, 0xab, 0x87, 0xbe, 0xe4, 0x1a, - 0x78, 0x2d, 0xc0, 0x16, 0x4f, 0x17, 0x1c, 0xdb, 0x0e, 0x9e, 0xb4, 0x14, 0xe3, 0xc6, 0xf0, 0x61, - 0xf9, 0x20, 0x15, 0xdb, 0xae, 0xab, 0x0b, 0x7a, 0x07, 0x8d, 0x0c, 0x56, 0xb4, 0x25, 0x50, 0xa8, - 0xf2, 0xef, 0x89, 0x2e, 0x8a, 0x1f, 0xd2, 0x52, 0x3a, 0x4a, 0xc5, 0x37, 0xc0, 0x72, 0xa4, 0xe2, - 0x35, 0x68, 0x18, 0x98, 0x25, 0x80, 0x01, 0x4d, 0x70, 0x31, 0xc2, 0x04, 0xeb, 0x3e, 0xa6, 0xfc, - 0x18, 0x5c, 0x8a, 0x1e, 0x96, 0x3f, 0x77, 0xf0, 0x5f, 0x0f, 0xf5, 0x3b, 0xe8, 0x52, 0xc4, 0xa0, - 0xdc, 0x08, 0xc3, 0x34, 0x7f, 0x5b, 0x1e, 0xfc, 0x8e, 0x04, 0xe6, 0xfd, 0xf1, 0xb0, 0x45, 0x79, - 0xab, 0x7c, 0x1d, 0xcc, 0x42, 0x9d, 0x3f, 0xa3, 0x80, 0x86, 0xe1, 0x22, 0x42, 0x84, 0xd9, 0x67, - 0x04, 0x79, 0x9d, 0x53, 0xe5, 0x0d, 0x00, 0x2c, 0xf4, 0x44, 0x73, 0xbc, 0xbe, 0xa4, 0x9f, 0xc3, - 0xb2, 0xb4, 0x85, 0x9e, 0xb0, 0x11, 0x89, 0xf2, 0xa7, 0x71, 0xb0, 0xd6, 0x22, 0x6a, 0x05, 0xb1, - 0xcd, 0x1e, 0x6f, 0x1e, 0x92, 0x1b, 0xbe, 0x05, 0x16, 0x1d, 0x0e, 0xcb, 0x6c, 0x15, 0x5a, 0xe5, - 0x27, 0xd8, 0x2a, 0x9f, 0x73, 0xfc, 0x41, 0xed, 0x7a, 0x73, 0x99, 0xd7, 0x40, 0x2e, 0x30, 0x30, - 0xb6, 0x68, 0x60, 0x60, 0xee, 0x55, 0x37, 0xe3, 0x0c, 0xdc, 0xa1, 0x54, 0x55, 0x76, 0xdb, 0x49, - 0xa4, 0xfc, 0x8d, 0xe4, 0x76, 0xbd, 0x15, 0x6d, 0xd7, 0x18, 0x65, 0x29, 0x2f, 0x25, 0xb0, 0x10, - 0xf1, 0xb4, 0x65, 0x60, 0x25, 0x7e, 0x1d, 0xa4, 0x88, 0x7e, 0x8c, 0x8c, 0x46, 0x1d, 0x89, 0x30, - 0x4e, 0xfa, 0xaa, 0xa6, 0x2a, 0xba, 0xa9, 0x01, 0x40, 0xf9, 0xed, 0xe4, 0x53, 0xbf, 0x18, 0x4c, - 0x3d, 0x62, 0x36, 0xca, 0x87, 0xe3, 0x60, 0x99, 0x3d, 0x6c, 0xd9, 0xb4, 0x4d, 0xb3, 0x61, 0x61, - 0x7a, 0xea, 0x19, 0xb1, 0xea, 0x19, 0xf4, 0xcc, 0x33, 0x3e, 0x00, 0xe9, 0xf6, 0xf7, 0x92, 0x77, - 0xc4, 0xfb, 0xf5, 0x62, 0xcb, 0x53, 0xf5, 0xa6, 0xd4, 0xdd, 0x64, 0x50, 0x9b, 0x48, 0xe5, 0x6a, - 0xf2, 0xb9, 0xaf, 0xb5, 0x3e, 0xde, 0xe9, 0x8e, 0xaf, 0xfc, 0x6a, 0x1c, 0x14, 0xd7, 0xa9, 0x6d, - 0x62, 0x9d, 0x97, 0x3d, 0xf7, 0x5d, 0x83, 0x55, 0xf2, 0xf7, 0x1a, 0x75, 0x8a, 0x9d, 0x3a, 0x46, - 0xae, 0x6f, 0x85, 0x33, 0xab, 0x05, 0x81, 0x45, 0xff, 0x15, 0x14, 0x42, 0x9a, 0x19, 0x0c, 0xe0, - 0xeb, 0xa8, 0x94, 0xe0, 0xe5, 0x53, 0x58, 0x30, 0x35, 0x67, 0x76, 0x12, 0x49, 0xb9, 0x96, 0x5c, - 0x4d, 0x77, 0x02, 0x35, 0xf5, 0xa7, 0x82, 0x1b, 0x4f, 0x41, 0x36, 0xfc, 0xaa, 0x57, 0xbe, 0x0d, - 0x72, 0xdb, 0xef, 0x6f, 0xbe, 0xb3, 0xbe, 0xf7, 0xf6, 0xb6, 0x76, 0xb0, 0x57, 0xad, 0x6c, 0x6f, - 0xee, 0xee, 0xec, 0x6e, 0x6f, 0xcd, 0x8d, 0x2d, 0xe5, 0x9f, 0x3d, 0x5f, 0x89, 0x6c, 0x93, 0x65, - 0x30, 0x59, 0xad, 0xdc, 0xdf, 0x9f, 0x93, 0x96, 0x52, 0xcf, 0x9e, 0xaf, 0xb0, 0xdf, 0x9e, 0x12, - 0xb7, 0xb6, 0xd5, 0xdd, 0x77, 0xd7, 0xf7, 0x77, 0xdf, 0xdd, 0xae, 0xce, 0x8d, 0x2f, 0xcd, 0x3e, - 0x7b, 0xbe, 0x12, 0x26, 0x6d, 0x1c, 0x7f, 0xfc, 0xa2, 0x20, 0x7d, 0xfa, 0xa2, 0x20, 0xfd, 0xf5, - 0x45, 0x41, 0xfa, 0xc1, 0xcb, 0xc2, 0xd8, 0xa7, 0x2f, 0x0b, 0x63, 0x7f, 0x7e, 0x59, 0x18, 0x7b, - 0xb8, 0x77, 0x84, 0xe9, 0x71, 0xa3, 0x56, 0xd4, 0x6d, 0xb3, 0xb4, 0xeb, 0x2b, 0xf2, 0x2e, 0xac, - 0x91, 0x52, 0xa0, 0xd6, 0x9b, 0xba, 0xed, 0xa2, 0xf0, 0xe7, 0x31, 0xc4, 0x56, 0xc9, 0xb4, 0xbd, - 0xb9, 0x91, 0x66, 0x35, 0xec, 0xd5, 0x64, 0xa4, 0x36, 0xc5, 0xfe, 0x32, 0xe1, 0x8b, 0xff, 0x09, - 0x00, 0x00, 0xff, 0xff, 0x16, 0x7b, 0x31, 0x71, 0xe1, 0x31, 0x00, 0x00, + // 2486 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5b, 0xcb, 0x6f, 0x1c, 0x49, + 0x19, 0x77, 0xdb, 0x8e, 0xed, 0xa9, 0x99, 0xf1, 0xa3, 0xed, 0x35, 0xb3, 0x4e, 0xe2, 0xc7, 0x38, + 0x0f, 0x6f, 0xd8, 0xcc, 0x90, 0xb0, 0x28, 0x62, 0x24, 0x04, 0x7e, 0xee, 0x5a, 0x24, 0xce, 0xa4, + 0xc7, 0xde, 0x5d, 0x45, 0xa0, 0x56, 0x4d, 0x77, 0xd9, 0x2e, 0x32, 0xfd, 0x48, 0x57, 0x8d, 0x13, + 0xaf, 0x38, 0x70, 0x60, 0x05, 0xca, 0x09, 0x10, 0x2c, 0xe2, 0x10, 0xb1, 0x27, 0xce, 0x48, 0xf0, + 0x0f, 0xc0, 0x01, 0x2d, 0x88, 0xc3, 0xde, 0x40, 0x1c, 0x56, 0x28, 0x11, 0x82, 0xbf, 0x00, 0x71, + 0xe0, 0x80, 0xea, 0xd1, 0x3d, 0x3d, 0x33, 0x3d, 0x3d, 0x3d, 0xe3, 0xb1, 0xf6, 0x40, 0x2e, 0xc9, + 0xf4, 0x57, 0x5f, 0xfd, 0xea, 0xab, 0xaf, 0xea, 0xfb, 0xea, 0x57, 0x0f, 0x83, 0x37, 0xb0, 0xfd, + 0x1d, 0x64, 0x50, 0x7c, 0x82, 0x8a, 0xe8, 0xa9, 0x71, 0x0c, 0xed, 0x23, 0x54, 0x3c, 0xb9, 0x55, + 0x45, 0x14, 0xde, 0x2a, 0xba, 0x9e, 0xe3, 0x3a, 0x04, 0xd6, 0x0a, 0xae, 0xe7, 0x50, 0x47, 0x5d, + 0x08, 0x54, 0x0b, 0xbe, 0x6a, 0x41, 0xaa, 0x2e, 0x2c, 0x1a, 0x0e, 0xb1, 0x1c, 0x52, 0xac, 0x42, + 0xd2, 0xa8, 0x6f, 0x38, 0xd8, 0x16, 0x75, 0x17, 0x0a, 0xb2, 0xdc, 0xc4, 0x84, 0x7a, 0xb8, 0x5a, + 0xa7, 0xd8, 0xb1, 0x03, 0xbd, 0xb0, 0x50, 0xea, 0x7f, 0x41, 0xea, 0x5b, 0xe4, 0xa8, 0x78, 0x72, + 0x8b, 0xfd, 0x27, 0x0b, 0x5e, 0x17, 0x05, 0x3a, 0xff, 0x2a, 0x8a, 0x0f, 0x59, 0x34, 0x77, 0xe4, + 0x1c, 0x39, 0x42, 0xce, 0x7e, 0x49, 0x69, 0x5c, 0x07, 0x83, 0x6e, 0x08, 0xd5, 0xab, 0x0d, 0x55, + 0xc7, 0x83, 0x46, 0xad, 0xa1, 0x28, 0x3e, 0xa5, 0xda, 0x0c, 0xb4, 0xb0, 0xed, 0x14, 0xf9, 0xbf, + 0x42, 0x94, 0xff, 0xe5, 0x38, 0xb8, 0x5c, 0x71, 0x1d, 0x7a, 0x0f, 0x7a, 0x8f, 0x10, 0x2d, 0x43, + 0x0f, 0x5a, 0x07, 0xae, 0x09, 0x29, 0x2a, 0x4b, 0x17, 0xaa, 0x73, 0xe0, 0x02, 0xc5, 0xb4, 0x86, + 0x72, 0xca, 0xb2, 0xb2, 0x96, 0xd2, 0xc4, 0x87, 0xba, 0x0c, 0xd2, 0x26, 0x22, 0x86, 0x87, 0x5d, + 0xd6, 0xf7, 0xdc, 0x30, 0x2f, 0x0b, 0x8b, 0xd4, 0x8b, 0x20, 0x65, 0x71, 0x50, 0x1d, 0x9b, 0xb9, + 0x11, 0x5e, 0x3e, 0x21, 0x04, 0xbb, 0xa6, 0xba, 0x0b, 0x26, 0x2d, 0xf8, 0x08, 0x79, 0xfa, 0x21, + 0x42, 0xba, 0x07, 0x29, 0xca, 0x8d, 0x32, 0x8d, 0x8d, 0xd5, 0x4f, 0x3e, 0x5b, 0x52, 0xfe, 0xf6, + 0xd9, 0xd2, 0x45, 0xe1, 0x1f, 0x62, 0x3e, 0x2a, 0x60, 0xa7, 0x68, 0x41, 0x7a, 0x5c, 0xb8, 0x8b, + 0x8e, 0xa0, 0x71, 0xba, 0x85, 0x0c, 0x2d, 0xc3, 0xab, 0xee, 0x20, 0xa4, 0x41, 0x8a, 0x18, 0x14, + 0x6d, 0x86, 0xba, 0xd0, 0x03, 0x14, 0x0d, 0x43, 0xbd, 0x0f, 0xe6, 0x3d, 0x54, 0x83, 0xa7, 0x12, + 0x8c, 0x1c, 0x43, 0x4f, 0x42, 0x8e, 0x25, 0x87, 0x9c, 0x95, 0x10, 0x3b, 0x08, 0x55, 0x18, 0x00, + 0x47, 0xd6, 0xc0, 0xac, 0x85, 0x6d, 0xdd, 0xf5, 0xb0, 0x81, 0x74, 0x8a, 0x8d, 0x47, 0x3a, 0xc1, + 0x1f, 0xa0, 0xdc, 0x78, 0x72, 0xd8, 0x69, 0x0b, 0xdb, 0x65, 0x56, 0x7d, 0x1f, 0x1b, 0x8f, 0x2a, + 0xf8, 0x03, 0x6e, 0x2d, 0xc3, 0x7c, 0x5c, 0x87, 0x36, 0xc5, 0xf4, 0x34, 0x04, 0x3b, 0xd1, 0x83, + 0xb5, 0x16, 0xb6, 0x1f, 0x48, 0x84, 0x00, 0xf9, 0x1b, 0x60, 0x8c, 0x50, 0x48, 0xeb, 0x24, 0x97, + 0x5a, 0x56, 0xd6, 0x26, 0x6f, 0xaf, 0x15, 0x3a, 0x07, 0x50, 0x41, 0xcc, 0x9c, 0x0a, 0xd7, 0xd7, + 0x64, 0x3d, 0xf5, 0x12, 0x18, 0x63, 0xe6, 0x20, 0x2f, 0x07, 0xb8, 0x2d, 0xa3, 0xcc, 0x16, 0x4d, + 0xca, 0xd4, 0x1d, 0x90, 0x61, 0x96, 0xdb, 0x0e, 0x9b, 0x28, 0xb0, 0x96, 0x4b, 0x27, 0xb7, 0x37, + 0x6d, 0x61, 0x7b, 0x4f, 0xd6, 0x53, 0xb7, 0x00, 0x80, 0x26, 0x43, 0xc2, 0xf6, 0xa1, 0x93, 0xcb, + 0x2c, 0x2b, 0x6b, 0xe9, 0xdb, 0x57, 0xe3, 0x6c, 0x5d, 0x67, 0xda, 0xbb, 0xf6, 0xa1, 0xa3, 0xa5, + 0xa0, 0xff, 0x53, 0x5d, 0x05, 0x59, 0x16, 0xfc, 0xba, 0x89, 0x0c, 0x6c, 0xc1, 0x1a, 0xc9, 0x65, + 0x97, 0x95, 0xb5, 0xac, 0x96, 0x61, 0xc2, 0x2d, 0x29, 0x53, 0xaf, 0x82, 0xc9, 0xc7, 0x75, 0x87, + 0x86, 0xb4, 0x26, 0xb9, 0x56, 0x96, 0x4b, 0x7d, 0xb5, 0xd2, 0x83, 0x1f, 0x7e, 0xbc, 0x34, 0xf4, + 0xaf, 0x8f, 0x97, 0x86, 0xfe, 0xf4, 0xdb, 0x9b, 0x0b, 0x32, 0xc6, 0x8f, 0x9c, 0x93, 0xc0, 0x80, + 0x4d, 0xc7, 0xa6, 0xc8, 0xa6, 0xcf, 0xfe, 0xf9, 0xeb, 0x1b, 0xd7, 0x82, 0xa0, 0x8e, 0x8d, 0xbf, + 0xfc, 0x9f, 0x15, 0x30, 0xbf, 0x2d, 0x55, 0xb7, 0x6d, 0x58, 0xad, 0x9d, 0x3d, 0x34, 0xef, 0x82, + 0x8c, 0xdf, 0xf8, 0xfe, 0xa9, 0x8b, 0x78, 0x74, 0x76, 0x19, 0xe5, 0xed, 0x90, 0xbe, 0xd6, 0x54, + 0xbb, 0xf4, 0xa6, 0xdf, 0x67, 0xd6, 0xab, 0xa5, 0xa0, 0x57, 0xd1, 0x36, 0xe7, 0x3f, 0xca, 0x82, + 0x95, 0x0d, 0x48, 0x8d, 0x63, 0xbf, 0xfc, 0x9e, 0x63, 0xe2, 0x43, 0x6c, 0x40, 0x66, 0xd9, 0x99, + 0x7b, 0xf6, 0xa1, 0x02, 0xf2, 0xc4, 0x75, 0xa8, 0x2e, 0x53, 0x8f, 0xcb, 0x1c, 0xaa, 0xd7, 0xb9, + 0x47, 0x75, 0x7f, 0x55, 0x20, 0xb9, 0x91, 0xe5, 0x91, 0xb5, 0xf4, 0xed, 0xaf, 0xc6, 0x75, 0x38, + 0x76, 0x50, 0xb4, 0x45, 0x12, 0x57, 0x4c, 0xd4, 0x9f, 0x2b, 0x60, 0xcd, 0x44, 0x1e, 0x3e, 0x81, + 0x0c, 0xbd, 0x8b, 0x35, 0xa3, 0xdc, 0x9a, 0xaf, 0xc7, 0x59, 0xb3, 0x15, 0x60, 0x75, 0xb6, 0xe9, + 0x8a, 0xd9, 0x5d, 0x89, 0xa8, 0x75, 0x70, 0x29, 0xec, 0xa0, 0x1a, 0xac, 0xdb, 0xc6, 0x71, 0xc8, + 0x98, 0x0b, 0xdc, 0x98, 0xb7, 0x92, 0xb9, 0xe6, 0x2e, 0xaf, 0x1d, 0x58, 0xf0, 0x3a, 0xe9, 0x50, + 0x42, 0xd4, 0xef, 0x2b, 0x60, 0xc5, 0x45, 0x9e, 0x8b, 0x68, 0x1d, 0xd6, 0x3a, 0x36, 0x3e, 0xd6, + 0x7d, 0x5c, 0xca, 0x3e, 0x48, 0xa4, 0x05, 0x8b, 0x6e, 0x5c, 0x31, 0x51, 0x7f, 0xac, 0x80, 0x6b, + 0xe8, 0xa9, 0x8b, 0xbd, 0x53, 0xfd, 0xb0, 0x4e, 0xeb, 0x1e, 0x22, 0x1d, 0x6d, 0x19, 0xe7, 0xb6, + 0x7c, 0x2d, 0x3e, 0x28, 0x18, 0xd2, 0x8e, 0x00, 0x8a, 0xb4, 0x27, 0x8f, 0xba, 0xa9, 0x10, 0xf5, + 0x67, 0x0a, 0xb8, 0x4e, 0x3d, 0x68, 0x62, 0xfb, 0x48, 0xf7, 0xd0, 0x13, 0xe8, 0x99, 0xba, 0x01, + 0x2d, 0x17, 0xe2, 0x23, 0xbb, 0x75, 0xae, 0xf0, 0xcc, 0xde, 0x65, 0xaa, 0xec, 0x0b, 0x28, 0x8d, + 0x23, 0x6d, 0x4a, 0xa0, 0x96, 0xa9, 0xb2, 0x4a, 0xbb, 0x2b, 0x71, 0x5f, 0x55, 0xb1, 0x0d, 0xbd, + 0x53, 0xdd, 0xe1, 0xd1, 0xd5, 0xd9, 0x57, 0xa9, 0xee, 0xbe, 0xda, 0xe0, 0x48, 0xf7, 0x05, 0x50, + 0xb4, 0xaf, 0xaa, 0xdd, 0x54, 0x88, 0xfa, 0x53, 0x05, 0x5c, 0x6d, 0xb1, 0xa9, 0x43, 0x50, 0x01, + 0x6e, 0xd2, 0x46, 0x8f, 0x26, 0x45, 0xc5, 0xd5, 0x4a, 0x93, 0x5d, 0x91, 0x41, 0xf5, 0x5d, 0xb0, + 0x68, 0x22, 0xdb, 0xb1, 0x82, 0xd5, 0xa1, 0x6d, 0xe0, 0xd2, 0x7c, 0xe0, 0xee, 0xc4, 0x99, 0x23, + 0x40, 0xb7, 0x18, 0x8e, 0xbf, 0x9e, 0x04, 0x36, 0x5c, 0x34, 0xc3, 0xe2, 0x96, 0x81, 0x32, 0xc0, + 0x6b, 0x8c, 0xae, 0x98, 0x98, 0x18, 0x4e, 0xdd, 0xa6, 0x8d, 0x46, 0xc5, 0x8a, 0x58, 0x8c, 0x6b, + 0x74, 0x07, 0xa1, 0x2d, 0x59, 0x2f, 0x68, 0x6c, 0xf6, 0xb0, 0x5d, 0xa8, 0xfe, 0x40, 0x01, 0x79, + 0x39, 0xfc, 0x87, 0x8e, 0x67, 0x20, 0x53, 0x27, 0x88, 0xd2, 0x1a, 0xb2, 0x50, 0xa8, 0x45, 0xb6, + 0x76, 0x32, 0xb7, 0x97, 0xba, 0x13, 0x86, 0x1d, 0x0e, 0x52, 0x09, 0x30, 0x82, 0xd6, 0x97, 0xac, + 0xd8, 0x72, 0x52, 0x3a, 0x48, 0xbe, 0xc6, 0xde, 0x08, 0x56, 0xa3, 0xae, 0x4b, 0x4e, 0xfe, 0xa3, + 0x31, 0x90, 0xeb, 0x94, 0xd9, 0xfa, 0x5e, 0x8f, 0xe6, 0x03, 0x1e, 0x24, 0x18, 0xb0, 0xcf, 0x80, + 0x2e, 0x03, 0x20, 0x39, 0x87, 0xed, 0x58, 0x82, 0xfb, 0x6a, 0x29, 0x41, 0x38, 0x6c, 0xc7, 0x52, + 0x97, 0x40, 0xda, 0x67, 0x1b, 0xac, 0x9c, 0x13, 0x5a, 0x0d, 0x48, 0xaa, 0xc1, 0x14, 0x3a, 0xf0, + 0xc9, 0x06, 0x4d, 0x1d, 0x1a, 0x24, 0x9f, 0x1c, 0x4f, 0x0e, 0x1b, 0xc9, 0x27, 0xdb, 0xd9, 0xfe, + 0xc4, 0xe0, 0xd8, 0x7e, 0xaa, 0x5f, 0xb6, 0xdf, 0xca, 0x42, 0x41, 0xf2, 0x5e, 0xc6, 0xb0, 0xd0, + 0xf4, 0xa0, 0x58, 0xe8, 0x64, 0x22, 0x16, 0x3a, 0x15, 0xc5, 0x42, 0xef, 0x26, 0x8f, 0x90, 0x95, + 0x08, 0x16, 0xda, 0x3c, 0xf7, 0xf3, 0xbf, 0x9a, 0x00, 0x97, 0x63, 0x57, 0xdd, 0x81, 0x47, 0x47, + 0xcb, 0xf4, 0x1f, 0x6d, 0x9b, 0xfe, 0x4b, 0x20, 0x2d, 0x36, 0xb6, 0x3a, 0x73, 0x8f, 0x1f, 0x1f, + 0x42, 0xb4, 0x01, 0x09, 0x52, 0x57, 0x40, 0x46, 0x2a, 0xf0, 0x5a, 0x22, 0x30, 0x34, 0x59, 0xe9, + 0x01, 0x13, 0xa9, 0x05, 0x30, 0x2b, 0x55, 0x88, 0x01, 0x6b, 0x48, 0x3f, 0x84, 0x06, 0x75, 0x3c, + 0x3e, 0xd7, 0xb3, 0xda, 0x8c, 0x28, 0xaa, 0xb0, 0x92, 0x1d, 0x5e, 0xa0, 0x6e, 0x07, 0x6d, 0x52, + 0xc6, 0x99, 0x27, 0x38, 0x67, 0xbe, 0x12, 0x1a, 0x67, 0xb9, 0xd5, 0xf6, 0x9d, 0x7c, 0x9f, 0x7f, + 0x72, 0xbe, 0x2c, 0x2d, 0x63, 0xbf, 0xd5, 0x03, 0x30, 0x87, 0x6d, 0x4c, 0xb1, 0x60, 0x41, 0x47, + 0xd8, 0x66, 0xb3, 0x18, 0x3b, 0xa1, 0x69, 0xdc, 0x75, 0xf6, 0xa9, 0x12, 0xe0, 0x1e, 0xaf, 0xaf, + 0xb1, 0xea, 0xea, 0xb7, 0x41, 0xce, 0x82, 0x98, 0x0d, 0x2b, 0xb4, 0x0d, 0xd4, 0x0c, 0xdd, 0xc3, + 0xc4, 0x9e, 0x0f, 0x81, 0x84, 0xe1, 0xdb, 0x23, 0x38, 0x9d, 0x1c, 0xb4, 0x5b, 0x04, 0x67, 0x7a, + 0x80, 0x6a, 0x8a, 0xe0, 0x0e, 0x59, 0x30, 0x7b, 0x3e, 0x59, 0x70, 0xf2, 0x8c, 0x59, 0xb0, 0x35, + 0xdf, 0x4c, 0x0d, 0x24, 0xdf, 0x4c, 0xf7, 0x97, 0x6f, 0xfa, 0xdb, 0xa9, 0xc6, 0xa6, 0x81, 0xfc, + 0x3f, 0xc6, 0xc1, 0x4a, 0x57, 0x9a, 0x37, 0xf0, 0x64, 0xb1, 0x0a, 0xb2, 0x7e, 0x1c, 0x9f, 0x5a, + 0x55, 0xa7, 0x26, 0xd3, 0x85, 0x8c, 0xff, 0x0a, 0x97, 0xa9, 0xd7, 0xc1, 0x94, 0x54, 0x72, 0x3d, + 0xe7, 0x04, 0x9b, 0xc8, 0x93, 0x49, 0x63, 0x52, 0x88, 0xcb, 0x52, 0xda, 0x1a, 0xe5, 0x63, 0x7d, + 0x46, 0x79, 0xaf, 0xc9, 0xe5, 0x16, 0x98, 0xe3, 0x3b, 0x05, 0x4e, 0x49, 0x74, 0x8a, 0x2d, 0x44, + 0x28, 0xb4, 0x5c, 0x9e, 0x65, 0x46, 0xb4, 0xd9, 0x46, 0xd9, 0xbe, 0x5f, 0xc4, 0xaa, 0x84, 0x18, + 0x58, 0xa3, 0x4a, 0x4a, 0x54, 0x69, 0x94, 0x35, 0xaa, 0xcc, 0x81, 0x0b, 0x7c, 0x02, 0x88, 0x8c, + 0xa0, 0x89, 0x8f, 0xd6, 0x6c, 0x9b, 0x6e, 0xcb, 0xb6, 0xed, 0xc1, 0x9f, 0x19, 0x5c, 0xf0, 0x67, + 0x07, 0x1c, 0xfc, 0x93, 0xe7, 0x13, 0xfc, 0x53, 0x03, 0x0e, 0xfe, 0xe9, 0x3e, 0x83, 0xff, 0x8b, + 0x60, 0x46, 0x04, 0xbf, 0x8b, 0x3c, 0x0b, 0x13, 0xc2, 0xc2, 0x2c, 0x37, 0xc3, 0xa7, 0xd5, 0x34, + 0x2f, 0x28, 0x37, 0xe4, 0x7d, 0x32, 0xe5, 0x6e, 0x11, 0x9c, 0xff, 0xc3, 0x04, 0x58, 0xe9, 0xba, + 0xf5, 0x7d, 0x45, 0x0a, 0x7a, 0x48, 0x17, 0xf3, 0x60, 0x4c, 0x1c, 0x14, 0xc8, 0xe8, 0x95, 0x5f, + 0x1d, 0xc9, 0x02, 0x38, 0x3f, 0xb2, 0x90, 0x3e, 0x0f, 0xb2, 0xf0, 0x2a, 0x5f, 0x7c, 0x5e, 0xf9, + 0xa2, 0x99, 0x2c, 0xcc, 0xf4, 0x49, 0x16, 0xfa, 0x4a, 0x24, 0x5d, 0x53, 0x44, 0xfe, 0x27, 0x00, + 0xac, 0x26, 0x38, 0xd9, 0x3c, 0x9f, 0x2b, 0xa8, 0x4e, 0xb1, 0xd5, 0xc3, 0x45, 0x54, 0xaf, 0xb1, + 0xd5, 0xc3, 0xc5, 0x54, 0xf2, 0xd8, 0x1a, 0x1b, 0xdc, 0x56, 0x7a, 0x7c, 0xf0, 0x17, 0x67, 0x13, + 0xe7, 0x73, 0x71, 0x96, 0x3a, 0x9f, 0x8b, 0x33, 0x70, 0xc6, 0x8b, 0xb3, 0x0a, 0x50, 0xdf, 0x71, + 0xea, 0x5e, 0xed, 0x74, 0xd7, 0xa6, 0xc8, 0x43, 0x84, 0x6a, 0xcd, 0x5b, 0xa5, 0xee, 0x33, 0xaa, + 0xbd, 0xba, 0xfa, 0x1e, 0x98, 0x13, 0xd2, 0x9d, 0xba, 0xcd, 0x0f, 0x6d, 0x21, 0x45, 0x9b, 0xd0, + 0x0d, 0x25, 0xd5, 0xae, 0xb0, 0x91, 0x00, 0xa1, 0x6b, 0xbe, 0x6c, 0x9f, 0xd7, 0x7c, 0xf7, 0x02, + 0xee, 0xcd, 0x4f, 0x61, 0xc5, 0xa1, 0x45, 0x3a, 0x1e, 0x48, 0x2c, 0x81, 0x3c, 0xcc, 0x89, 0xcf, + 0xd2, 0xc5, 0x57, 0xe8, 0xd6, 0x70, 0x2a, 0xc1, 0xad, 0xe1, 0xf4, 0x40, 0x6e, 0x0d, 0xfb, 0x4d, + 0x89, 0xef, 0x25, 0x4f, 0x89, 0x6f, 0x06, 0x29, 0x31, 0x41, 0xb2, 0xcb, 0xef, 0x81, 0x54, 0xd0, + 0x60, 0x83, 0xb1, 0x2b, 0x61, 0xc6, 0x1e, 0x49, 0x02, 0x87, 0xa3, 0x49, 0x60, 0xfe, 0x17, 0xc3, + 0x60, 0x31, 0xfe, 0xc8, 0xf5, 0x7c, 0xf2, 0xeb, 0x1e, 0x98, 0x6e, 0x3a, 0x21, 0xc6, 0x46, 0x4f, + 0x97, 0xfc, 0x53, 0x24, 0x64, 0x27, 0x36, 0x50, 0x49, 0x4b, 0xee, 0xf0, 0xeb, 0x81, 0xc3, 0xe3, + 0x3b, 0x9e, 0xff, 0x8f, 0x02, 0x2e, 0xc6, 0x1c, 0xbb, 0xf7, 0xed, 0x98, 0x32, 0x98, 0x6c, 0xbe, + 0x0f, 0x90, 0x37, 0x8e, 0x6f, 0xc4, 0xdf, 0xf1, 0x85, 0x4c, 0xd0, 0xb2, 0x4d, 0x27, 0xfe, 0xa5, + 0xfb, 0xc9, 0x7b, 0x7f, 0x25, 0xe8, 0x7d, 0x4c, 0xd7, 0xf2, 0xbf, 0x9f, 0x00, 0xd7, 0x92, 0x5d, + 0x80, 0xbc, 0x7a, 0x01, 0xf2, 0xff, 0xf7, 0x02, 0xa4, 0xd3, 0x79, 0x44, 0xaa, 0xf7, 0xf3, 0x08, + 0xd0, 0xf9, 0x3c, 0x22, 0x2a, 0x45, 0xa4, 0xfb, 0x4f, 0x11, 0x8d, 0x6c, 0x99, 0x09, 0x67, 0xcb, + 0xb3, 0x2f, 0x73, 0x07, 0xd1, 0xcb, 0xdc, 0x97, 0x62, 0xef, 0xa9, 0xe5, 0x89, 0xd2, 0xe7, 0xbd, + 0xdc, 0x95, 0x1e, 0x26, 0xcf, 0x1c, 0xc5, 0xb8, 0x43, 0x80, 0xa8, 0xb5, 0xea, 0x77, 0x0a, 0x98, + 0x8b, 0xea, 0x28, 0xdb, 0xd0, 0xca, 0xd3, 0x38, 0x91, 0x33, 0xe4, 0x97, 0xba, 0x00, 0x26, 0x82, + 0x03, 0x38, 0x91, 0x31, 0x82, 0xef, 0x4e, 0x7b, 0xef, 0x91, 0x84, 0x7b, 0xef, 0xd1, 0xfe, 0xf6, + 0xde, 0xf9, 0x3f, 0x2a, 0x20, 0xd3, 0x64, 0x7b, 0xcb, 0x39, 0x82, 0xd2, 0xf5, 0x1c, 0x61, 0x38, + 0xf1, 0x39, 0xc2, 0x79, 0xf7, 0xe5, 0xdf, 0xc3, 0x60, 0x35, 0xf2, 0xfe, 0x7f, 0x40, 0x67, 0x33, + 0x0f, 0x41, 0x36, 0x78, 0x9a, 0xc0, 0xd9, 0xd3, 0x08, 0x0f, 0x84, 0xaf, 0xf4, 0xfc, 0x1e, 0x81, + 0xb3, 0xa9, 0x8c, 0x11, 0xfa, 0x52, 0xab, 0xe0, 0xb5, 0x00, 0x5b, 0x3e, 0x83, 0x70, 0x1d, 0x27, + 0x78, 0x1e, 0x53, 0x88, 0x6b, 0xc3, 0x87, 0x15, 0x8d, 0x94, 0x1d, 0xa7, 0xa6, 0xcd, 0x1a, 0x6d, + 0x32, 0xd2, 0x1f, 0x69, 0x4b, 0xe0, 0xd0, 0xfc, 0x7f, 0x47, 0x3a, 0x38, 0x7e, 0x40, 0x4b, 0xe9, + 0x79, 0x3a, 0xbe, 0x0e, 0x96, 0x22, 0x1d, 0xaf, 0x43, 0xd3, 0xc4, 0x3c, 0x01, 0xf4, 0x39, 0x04, + 0x97, 0x22, 0x86, 0x60, 0xdd, 0xc7, 0x54, 0x1f, 0x83, 0xcb, 0xd1, 0xcd, 0x8a, 0xa7, 0x13, 0xfe, + 0x4b, 0xa4, 0x5e, 0x1b, 0x5d, 0x88, 0x68, 0x54, 0x0c, 0xc2, 0x20, 0x87, 0xbf, 0x25, 0x0f, 0x7e, + 0x4f, 0x01, 0x33, 0x7e, 0x7b, 0xd8, 0xa6, 0xa2, 0x54, 0xbd, 0x0e, 0xa6, 0xa0, 0x21, 0x9e, 0x64, + 0x40, 0xd3, 0xf4, 0x10, 0x21, 0x72, 0xd8, 0x27, 0xa5, 0x78, 0x5d, 0x48, 0xd5, 0x0d, 0x00, 0x6c, + 0xf4, 0x44, 0x77, 0x59, 0x5d, 0xd2, 0xcb, 0x61, 0x59, 0xca, 0x46, 0x4f, 0x78, 0x8b, 0x24, 0xff, + 0x97, 0x61, 0xb0, 0xd6, 0x64, 0x6a, 0x19, 0xf1, 0xcd, 0x9e, 0x28, 0x1e, 0xd0, 0x34, 0x7c, 0x0b, + 0xcc, 0xbb, 0x02, 0x96, 0x8f, 0x55, 0x68, 0x95, 0x1f, 0xe1, 0xab, 0xfc, 0x9c, 0xeb, 0x37, 0xea, + 0xd4, 0x1a, 0xcb, 0xbc, 0x0e, 0xe6, 0x82, 0x01, 0xc6, 0x36, 0x0d, 0x06, 0x58, 0xcc, 0xaa, 0x9b, + 0x71, 0x03, 0xdc, 0xe6, 0x54, 0x4d, 0xf5, 0x5a, 0x45, 0xa4, 0xf4, 0xad, 0xe4, 0xe3, 0x7a, 0x2b, + 0x7a, 0x5c, 0x63, 0x9c, 0x95, 0x7f, 0xa9, 0x80, 0xd9, 0x88, 0x67, 0x32, 0x7d, 0x3b, 0xf1, 0x9b, + 0x60, 0x82, 0x18, 0xc7, 0xc8, 0xac, 0xd7, 0x90, 0x0c, 0xe3, 0xa4, 0x2f, 0x74, 0x2a, 0xb2, 0x9a, + 0x16, 0x00, 0x94, 0xde, 0x4e, 0xde, 0xf5, 0x4b, 0x41, 0xd7, 0x23, 0x7a, 0x93, 0xff, 0x70, 0x18, + 0x2c, 0xf1, 0x47, 0x32, 0x9b, 0x8e, 0x65, 0xd5, 0x6d, 0x4c, 0x4f, 0xd9, 0x20, 0x56, 0xd8, 0x80, + 0x9e, 0xb9, 0xc7, 0x07, 0x20, 0xd5, 0xfa, 0xf6, 0xf2, 0x8e, 0x7c, 0x57, 0x5f, 0x68, 0x7a, 0x42, + 0xdf, 0xb0, 0xba, 0x93, 0x0d, 0x5a, 0x03, 0xa9, 0x54, 0x49, 0xde, 0xf7, 0xb5, 0xe6, 0x87, 0x40, + 0x9d, 0xf1, 0xf3, 0xbf, 0x19, 0x06, 0x85, 0x75, 0xea, 0x58, 0xd8, 0x10, 0xb4, 0xe7, 0xbe, 0x67, + 0x72, 0x26, 0x7f, 0xaf, 0x5e, 0xa3, 0xd8, 0xad, 0x61, 0xe4, 0xf9, 0xa3, 0x70, 0x66, 0xb7, 0x20, + 0x30, 0xef, 0xbf, 0xa8, 0x42, 0x48, 0xb7, 0x82, 0x06, 0x7c, 0x1f, 0x15, 0x13, 0xbc, 0xa2, 0x0a, + 0x1b, 0xa6, 0xcd, 0x59, 0xed, 0x42, 0x52, 0xaa, 0x26, 0x77, 0xd3, 0x9d, 0xc0, 0x4d, 0xbd, 0xb9, + 0xe0, 0xc6, 0x53, 0x90, 0x09, 0xbf, 0x10, 0x56, 0x6f, 0x83, 0xb9, 0xed, 0xf7, 0x37, 0xdf, 0x59, + 0xdf, 0x7b, 0x7b, 0x5b, 0x3f, 0xd8, 0xab, 0x94, 0xb7, 0x37, 0x77, 0x77, 0x76, 0xb7, 0xb7, 0xa6, + 0x87, 0x16, 0x72, 0xcf, 0x9e, 0x2f, 0x47, 0x96, 0xa9, 0x2a, 0x18, 0xad, 0x94, 0xef, 0xef, 0x4f, + 0x2b, 0x0b, 0x13, 0xcf, 0x9e, 0x2f, 0xf3, 0xdf, 0xcc, 0x89, 0x5b, 0xdb, 0xda, 0xee, 0xbb, 0xeb, + 0xfb, 0xbb, 0xef, 0x6e, 0x57, 0xa6, 0x87, 0x17, 0xa6, 0x9e, 0x3d, 0x5f, 0x0e, 0x8b, 0x36, 0x8e, + 0x3f, 0x79, 0xb1, 0xa8, 0x7c, 0xfa, 0x62, 0x51, 0xf9, 0xfb, 0x8b, 0x45, 0xe5, 0x47, 0x2f, 0x17, + 0x87, 0x3e, 0x7d, 0xb9, 0x38, 0xf4, 0xd7, 0x97, 0x8b, 0x43, 0x0f, 0xf7, 0x8e, 0x30, 0x3d, 0xae, + 0x57, 0x0b, 0x86, 0x63, 0x15, 0x77, 0x7d, 0x47, 0xde, 0x85, 0x55, 0x52, 0x0c, 0xdc, 0x7a, 0xd3, + 0x70, 0x3c, 0x14, 0xfe, 0x3c, 0x86, 0xd8, 0x2e, 0x5a, 0x0e, 0xeb, 0x1b, 0x69, 0xb0, 0x61, 0xc6, + 0xc9, 0x48, 0x75, 0x8c, 0xff, 0xc5, 0xc4, 0x97, 0xff, 0x17, 0x00, 0x00, 0xff, 0xff, 0x86, 0x3e, + 0x35, 0xf5, 0x79, 0x32, 0x00, 0x00, } func (m *SpotMarketParamUpdateProposal) Marshal() (dAtA []byte, err error) { @@ -1397,6 +1408,16 @@ func (m *SpotMarketParamUpdateProposal) MarshalToSizedBuffer(dAtA []byte) (int, _ = i var l int _ = l + if m.QuoteDecimals != 0 { + i = encodeVarintProposal(dAtA, i, uint64(m.QuoteDecimals)) + i-- + dAtA[i] = 0x70 + } + if m.BaseDecimals != 0 { + i = encodeVarintProposal(dAtA, i, uint64(m.BaseDecimals)) + i-- + dAtA[i] = 0x68 + } if m.AdminInfo != nil { { size, err := m.AdminInfo.MarshalToSizedBuffer(dAtA[:i]) @@ -1764,6 +1785,16 @@ func (m *SpotMarketLaunchProposal) MarshalToSizedBuffer(dAtA []byte) (int, error _ = i var l int _ = l + if m.QuoteDecimals != 0 { + i = encodeVarintProposal(dAtA, i, uint64(m.QuoteDecimals)) + i-- + dAtA[i] = 0x78 + } + if m.BaseDecimals != 0 { + i = encodeVarintProposal(dAtA, i, uint64(m.BaseDecimals)) + i-- + dAtA[i] = 0x70 + } if m.AdminInfo != nil { { size, err := m.AdminInfo.MarshalToSizedBuffer(dAtA[:i]) @@ -3406,6 +3437,12 @@ func (m *SpotMarketParamUpdateProposal) Size() (n int) { l = m.AdminInfo.Size() n += 1 + l + sovProposal(uint64(l)) } + if m.BaseDecimals != 0 { + n += 1 + sovProposal(uint64(m.BaseDecimals)) + } + if m.QuoteDecimals != 0 { + n += 1 + sovProposal(uint64(m.QuoteDecimals)) + } return n } @@ -3550,6 +3587,12 @@ func (m *SpotMarketLaunchProposal) Size() (n int) { l = m.AdminInfo.Size() n += 1 + l + sovProposal(uint64(l)) } + if m.BaseDecimals != 0 { + n += 1 + sovProposal(uint64(m.BaseDecimals)) + } + if m.QuoteDecimals != 0 { + n += 1 + sovProposal(uint64(m.QuoteDecimals)) + } return n } @@ -4590,6 +4633,44 @@ func (m *SpotMarketParamUpdateProposal) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 13: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field BaseDecimals", wireType) + } + m.BaseDecimals = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowProposal + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.BaseDecimals |= uint32(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 14: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field QuoteDecimals", wireType) + } + m.QuoteDecimals = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowProposal + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.QuoteDecimals |= uint32(b&0x7F) << shift + if b < 0x80 { + break + } + } default: iNdEx = preIndex skippy, err := skipProposal(dAtA[iNdEx:]) @@ -5637,6 +5718,44 @@ func (m *SpotMarketLaunchProposal) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 14: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field BaseDecimals", wireType) + } + m.BaseDecimals = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowProposal + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.BaseDecimals |= uint32(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 15: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field QuoteDecimals", wireType) + } + m.QuoteDecimals = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowProposal + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.QuoteDecimals |= uint32(b&0x7F) << shift + if b < 0x80 { + break + } + } default: iNdEx = preIndex skippy, err := skipProposal(dAtA[iNdEx:]) diff --git a/chain/exchange/types/query.pb.go b/chain/exchange/types/query.pb.go index 865c480d..00a13881 100644 --- a/chain/exchange/types/query.pb.go +++ b/chain/exchange/types/query.pb.go @@ -6275,6 +6275,255 @@ func (m *QueryTraderDerivativeConditionalOrdersResponse) GetOrders() []*TrimmedD return nil } +type QueryFullSpotOrderbookRequest struct { + // market id + MarketId string `protobuf:"bytes,1,opt,name=market_id,json=marketId,proto3" json:"market_id,omitempty"` +} + +func (m *QueryFullSpotOrderbookRequest) Reset() { *m = QueryFullSpotOrderbookRequest{} } +func (m *QueryFullSpotOrderbookRequest) String() string { return proto.CompactTextString(m) } +func (*QueryFullSpotOrderbookRequest) ProtoMessage() {} +func (*QueryFullSpotOrderbookRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_523db28b8af54781, []int{122} +} +func (m *QueryFullSpotOrderbookRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryFullSpotOrderbookRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryFullSpotOrderbookRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryFullSpotOrderbookRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryFullSpotOrderbookRequest.Merge(m, src) +} +func (m *QueryFullSpotOrderbookRequest) XXX_Size() int { + return m.Size() +} +func (m *QueryFullSpotOrderbookRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryFullSpotOrderbookRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryFullSpotOrderbookRequest proto.InternalMessageInfo + +func (m *QueryFullSpotOrderbookRequest) GetMarketId() string { + if m != nil { + return m.MarketId + } + return "" +} + +type QueryFullSpotOrderbookResponse struct { + Bids []*TrimmedLimitOrder `protobuf:"bytes,1,rep,name=Bids,proto3" json:"Bids,omitempty"` + Asks []*TrimmedLimitOrder `protobuf:"bytes,2,rep,name=Asks,proto3" json:"Asks,omitempty"` +} + +func (m *QueryFullSpotOrderbookResponse) Reset() { *m = QueryFullSpotOrderbookResponse{} } +func (m *QueryFullSpotOrderbookResponse) String() string { return proto.CompactTextString(m) } +func (*QueryFullSpotOrderbookResponse) ProtoMessage() {} +func (*QueryFullSpotOrderbookResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_523db28b8af54781, []int{123} +} +func (m *QueryFullSpotOrderbookResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryFullSpotOrderbookResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryFullSpotOrderbookResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryFullSpotOrderbookResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryFullSpotOrderbookResponse.Merge(m, src) +} +func (m *QueryFullSpotOrderbookResponse) XXX_Size() int { + return m.Size() +} +func (m *QueryFullSpotOrderbookResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryFullSpotOrderbookResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryFullSpotOrderbookResponse proto.InternalMessageInfo + +func (m *QueryFullSpotOrderbookResponse) GetBids() []*TrimmedLimitOrder { + if m != nil { + return m.Bids + } + return nil +} + +func (m *QueryFullSpotOrderbookResponse) GetAsks() []*TrimmedLimitOrder { + if m != nil { + return m.Asks + } + return nil +} + +type QueryFullDerivativeOrderbookRequest struct { + // market id + MarketId string `protobuf:"bytes,1,opt,name=market_id,json=marketId,proto3" json:"market_id,omitempty"` +} + +func (m *QueryFullDerivativeOrderbookRequest) Reset() { *m = QueryFullDerivativeOrderbookRequest{} } +func (m *QueryFullDerivativeOrderbookRequest) String() string { return proto.CompactTextString(m) } +func (*QueryFullDerivativeOrderbookRequest) ProtoMessage() {} +func (*QueryFullDerivativeOrderbookRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_523db28b8af54781, []int{124} +} +func (m *QueryFullDerivativeOrderbookRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryFullDerivativeOrderbookRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryFullDerivativeOrderbookRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryFullDerivativeOrderbookRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryFullDerivativeOrderbookRequest.Merge(m, src) +} +func (m *QueryFullDerivativeOrderbookRequest) XXX_Size() int { + return m.Size() +} +func (m *QueryFullDerivativeOrderbookRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryFullDerivativeOrderbookRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryFullDerivativeOrderbookRequest proto.InternalMessageInfo + +func (m *QueryFullDerivativeOrderbookRequest) GetMarketId() string { + if m != nil { + return m.MarketId + } + return "" +} + +type QueryFullDerivativeOrderbookResponse struct { + Bids []*TrimmedLimitOrder `protobuf:"bytes,1,rep,name=Bids,proto3" json:"Bids,omitempty"` + Asks []*TrimmedLimitOrder `protobuf:"bytes,2,rep,name=Asks,proto3" json:"Asks,omitempty"` +} + +func (m *QueryFullDerivativeOrderbookResponse) Reset() { *m = QueryFullDerivativeOrderbookResponse{} } +func (m *QueryFullDerivativeOrderbookResponse) String() string { return proto.CompactTextString(m) } +func (*QueryFullDerivativeOrderbookResponse) ProtoMessage() {} +func (*QueryFullDerivativeOrderbookResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_523db28b8af54781, []int{125} +} +func (m *QueryFullDerivativeOrderbookResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryFullDerivativeOrderbookResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryFullDerivativeOrderbookResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryFullDerivativeOrderbookResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryFullDerivativeOrderbookResponse.Merge(m, src) +} +func (m *QueryFullDerivativeOrderbookResponse) XXX_Size() int { + return m.Size() +} +func (m *QueryFullDerivativeOrderbookResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryFullDerivativeOrderbookResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryFullDerivativeOrderbookResponse proto.InternalMessageInfo + +func (m *QueryFullDerivativeOrderbookResponse) GetBids() []*TrimmedLimitOrder { + if m != nil { + return m.Bids + } + return nil +} + +func (m *QueryFullDerivativeOrderbookResponse) GetAsks() []*TrimmedLimitOrder { + if m != nil { + return m.Asks + } + return nil +} + +type TrimmedLimitOrder struct { + Price cosmossdk_io_math.LegacyDec `protobuf:"bytes,1,opt,name=price,proto3,customtype=cosmossdk.io/math.LegacyDec" json:"price"` + // quantity of the order + Quantity cosmossdk_io_math.LegacyDec `protobuf:"bytes,2,opt,name=quantity,proto3,customtype=cosmossdk.io/math.LegacyDec" json:"quantity"` + OrderHash string `protobuf:"bytes,3,opt,name=order_hash,json=orderHash,proto3" json:"order_hash,omitempty"` + SubaccountId string `protobuf:"bytes,4,opt,name=subaccount_id,json=subaccountId,proto3" json:"subaccount_id,omitempty"` +} + +func (m *TrimmedLimitOrder) Reset() { *m = TrimmedLimitOrder{} } +func (m *TrimmedLimitOrder) String() string { return proto.CompactTextString(m) } +func (*TrimmedLimitOrder) ProtoMessage() {} +func (*TrimmedLimitOrder) Descriptor() ([]byte, []int) { + return fileDescriptor_523db28b8af54781, []int{126} +} +func (m *TrimmedLimitOrder) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *TrimmedLimitOrder) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_TrimmedLimitOrder.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *TrimmedLimitOrder) XXX_Merge(src proto.Message) { + xxx_messageInfo_TrimmedLimitOrder.Merge(m, src) +} +func (m *TrimmedLimitOrder) XXX_Size() int { + return m.Size() +} +func (m *TrimmedLimitOrder) XXX_DiscardUnknown() { + xxx_messageInfo_TrimmedLimitOrder.DiscardUnknown(m) +} + +var xxx_messageInfo_TrimmedLimitOrder proto.InternalMessageInfo + +func (m *TrimmedLimitOrder) GetOrderHash() string { + if m != nil { + return m.OrderHash + } + return "" +} + +func (m *TrimmedLimitOrder) GetSubaccountId() string { + if m != nil { + return m.SubaccountId + } + return "" +} + type QueryMarketAtomicExecutionFeeMultiplierRequest struct { MarketId string `protobuf:"bytes,1,opt,name=market_id,json=marketId,proto3" json:"market_id,omitempty"` } @@ -6287,7 +6536,7 @@ func (m *QueryMarketAtomicExecutionFeeMultiplierRequest) String() string { } func (*QueryMarketAtomicExecutionFeeMultiplierRequest) ProtoMessage() {} func (*QueryMarketAtomicExecutionFeeMultiplierRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_523db28b8af54781, []int{122} + return fileDescriptor_523db28b8af54781, []int{127} } func (m *QueryMarketAtomicExecutionFeeMultiplierRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6335,7 +6584,7 @@ func (m *QueryMarketAtomicExecutionFeeMultiplierResponse) String() string { } func (*QueryMarketAtomicExecutionFeeMultiplierResponse) ProtoMessage() {} func (*QueryMarketAtomicExecutionFeeMultiplierResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_523db28b8af54781, []int{123} + return fileDescriptor_523db28b8af54781, []int{128} } func (m *QueryMarketAtomicExecutionFeeMultiplierResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6372,7 +6621,7 @@ func (m *QueryActiveStakeGrantRequest) Reset() { *m = QueryActiveStakeGr func (m *QueryActiveStakeGrantRequest) String() string { return proto.CompactTextString(m) } func (*QueryActiveStakeGrantRequest) ProtoMessage() {} func (*QueryActiveStakeGrantRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_523db28b8af54781, []int{124} + return fileDescriptor_523db28b8af54781, []int{129} } func (m *QueryActiveStakeGrantRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6417,7 +6666,7 @@ func (m *QueryActiveStakeGrantResponse) Reset() { *m = QueryActiveStakeG func (m *QueryActiveStakeGrantResponse) String() string { return proto.CompactTextString(m) } func (*QueryActiveStakeGrantResponse) ProtoMessage() {} func (*QueryActiveStakeGrantResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_523db28b8af54781, []int{125} + return fileDescriptor_523db28b8af54781, []int{130} } func (m *QueryActiveStakeGrantResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6469,7 +6718,7 @@ func (m *QueryGrantAuthorizationRequest) Reset() { *m = QueryGrantAuthor func (m *QueryGrantAuthorizationRequest) String() string { return proto.CompactTextString(m) } func (*QueryGrantAuthorizationRequest) ProtoMessage() {} func (*QueryGrantAuthorizationRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_523db28b8af54781, []int{126} + return fileDescriptor_523db28b8af54781, []int{131} } func (m *QueryGrantAuthorizationRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6520,7 +6769,7 @@ func (m *QueryGrantAuthorizationResponse) Reset() { *m = QueryGrantAutho func (m *QueryGrantAuthorizationResponse) String() string { return proto.CompactTextString(m) } func (*QueryGrantAuthorizationResponse) ProtoMessage() {} func (*QueryGrantAuthorizationResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_523db28b8af54781, []int{127} + return fileDescriptor_523db28b8af54781, []int{132} } func (m *QueryGrantAuthorizationResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6557,7 +6806,7 @@ func (m *QueryGrantAuthorizationsRequest) Reset() { *m = QueryGrantAutho func (m *QueryGrantAuthorizationsRequest) String() string { return proto.CompactTextString(m) } func (*QueryGrantAuthorizationsRequest) ProtoMessage() {} func (*QueryGrantAuthorizationsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_523db28b8af54781, []int{128} + return fileDescriptor_523db28b8af54781, []int{133} } func (m *QueryGrantAuthorizationsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6602,7 +6851,7 @@ func (m *QueryGrantAuthorizationsResponse) Reset() { *m = QueryGrantAuth func (m *QueryGrantAuthorizationsResponse) String() string { return proto.CompactTextString(m) } func (*QueryGrantAuthorizationsResponse) ProtoMessage() {} func (*QueryGrantAuthorizationsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_523db28b8af54781, []int{129} + return fileDescriptor_523db28b8af54781, []int{134} } func (m *QueryGrantAuthorizationsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6764,6 +7013,11 @@ func init() { proto.RegisterType((*QueryTraderDerivativeConditionalOrdersRequest)(nil), "injective.exchange.v1beta1.QueryTraderDerivativeConditionalOrdersRequest") proto.RegisterType((*TrimmedDerivativeConditionalOrder)(nil), "injective.exchange.v1beta1.TrimmedDerivativeConditionalOrder") proto.RegisterType((*QueryTraderDerivativeConditionalOrdersResponse)(nil), "injective.exchange.v1beta1.QueryTraderDerivativeConditionalOrdersResponse") + proto.RegisterType((*QueryFullSpotOrderbookRequest)(nil), "injective.exchange.v1beta1.QueryFullSpotOrderbookRequest") + proto.RegisterType((*QueryFullSpotOrderbookResponse)(nil), "injective.exchange.v1beta1.QueryFullSpotOrderbookResponse") + proto.RegisterType((*QueryFullDerivativeOrderbookRequest)(nil), "injective.exchange.v1beta1.QueryFullDerivativeOrderbookRequest") + proto.RegisterType((*QueryFullDerivativeOrderbookResponse)(nil), "injective.exchange.v1beta1.QueryFullDerivativeOrderbookResponse") + proto.RegisterType((*TrimmedLimitOrder)(nil), "injective.exchange.v1beta1.TrimmedLimitOrder") proto.RegisterType((*QueryMarketAtomicExecutionFeeMultiplierRequest)(nil), "injective.exchange.v1beta1.QueryMarketAtomicExecutionFeeMultiplierRequest") proto.RegisterType((*QueryMarketAtomicExecutionFeeMultiplierResponse)(nil), "injective.exchange.v1beta1.QueryMarketAtomicExecutionFeeMultiplierResponse") proto.RegisterType((*QueryActiveStakeGrantRequest)(nil), "injective.exchange.v1beta1.QueryActiveStakeGrantRequest") @@ -6779,372 +7033,382 @@ func init() { } var fileDescriptor_523db28b8af54781 = []byte{ - // 5833 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x5d, 0x7d, 0x8c, 0x1c, 0xc9, - 0x55, 0x77, 0xcf, 0x7e, 0x78, 0xf7, 0xed, 0xa7, 0x6b, 0xd7, 0xeb, 0xf5, 0xdc, 0x9d, 0x3f, 0xda, - 0x71, 0xce, 0xe7, 0x9c, 0x77, 0xed, 0xf5, 0xf7, 0xb7, 0xf7, 0xc3, 0x6b, 0xef, 0xd9, 0x6b, 0x3b, - 0xb3, 0xeb, 0xbb, 0xe4, 0x02, 0x4c, 0x7a, 0x67, 0x6a, 0x67, 0x3b, 0xee, 0x99, 0x1e, 0x4f, 0xf7, - 0xec, 0x79, 0x31, 0x46, 0x40, 0x40, 0x89, 0x40, 0x02, 0xa4, 0x08, 0x10, 0x02, 0x21, 0xe0, 0x4f, - 0xa4, 0x08, 0x89, 0x08, 0x81, 0x12, 0x29, 0x51, 0x08, 0x42, 0x21, 0xe1, 0x23, 0x40, 0x08, 0x28, - 0x82, 0x23, 0xba, 0x0b, 0x44, 0x39, 0x81, 0xc4, 0x5f, 0x48, 0x08, 0x14, 0x50, 0x57, 0xbd, 0xaa, - 0xe9, 0xef, 0xa9, 0x9e, 0xdd, 0xd3, 0x25, 0xf0, 0xd7, 0x4e, 0x57, 0xd7, 0x7b, 0xf5, 0xde, 0xab, - 0x57, 0xaf, 0x5e, 0x7d, 0xfc, 0x7a, 0xe1, 0xfd, 0x66, 0xed, 0x63, 0xb4, 0xe4, 0x9a, 0x9b, 0x74, - 0x9a, 0x3e, 0x29, 0x6d, 0x18, 0xb5, 0x0a, 0x9d, 0xde, 0x3c, 0xb5, 0x46, 0x5d, 0xe3, 0xd4, 0xf4, - 0xe3, 0x26, 0x6d, 0x6c, 0x4d, 0xd5, 0x1b, 0xb6, 0x6b, 0x93, 0xbc, 0xac, 0x37, 0x25, 0xea, 0x4d, - 0x61, 0xbd, 0xfc, 0xf3, 0x15, 0xdb, 0xae, 0x58, 0x74, 0xda, 0xa8, 0x9b, 0xd3, 0x46, 0xad, 0x66, - 0xbb, 0x86, 0x6b, 0xda, 0x35, 0x87, 0x53, 0xe6, 0x5f, 0x4a, 0x69, 0x41, 0xb2, 0xe2, 0x55, 0x8f, - 0xa5, 0x54, 0xad, 0xd0, 0x1a, 0x75, 0x4c, 0xc1, 0xf4, 0x68, 0xab, 0xa6, 0xdd, 0x30, 0x4a, 0x56, - 0xab, 0x1e, 0x7f, 0xc4, 0x6a, 0xe3, 0x15, 0xbb, 0x62, 0xb3, 0x9f, 0xd3, 0xde, 0x2f, 0x5e, 0xaa, - 0xdf, 0x07, 0x58, 0x69, 0xae, 0x19, 0xa5, 0x92, 0xdd, 0xac, 0xb9, 0x64, 0x02, 0x7a, 0xdd, 0x86, - 0x51, 0xa6, 0x8d, 0x49, 0xed, 0x90, 0x76, 0xac, 0xbf, 0x80, 0x4f, 0xe4, 0x25, 0x18, 0x75, 0x64, - 0xad, 0x62, 0xcd, 0xae, 0x95, 0xe8, 0x64, 0xee, 0x90, 0x76, 0x6c, 0xa8, 0x30, 0xd2, 0x2a, 0xbf, - 0xe7, 0x15, 0xeb, 0x1f, 0x85, 0xe7, 0x3f, 0xe8, 0xd9, 0xaa, 0xc5, 0xf5, 0x7e, 0xa3, 0x4c, 0x1b, - 0x4e, 0x81, 0x3e, 0x6e, 0x52, 0xc7, 0x25, 0x47, 0x60, 0xc8, 0xc7, 0xca, 0x2c, 0x63, 0x4b, 0x83, - 0xad, 0xc2, 0xa5, 0x32, 0x79, 0x0e, 0xfa, 0xab, 0x46, 0xe3, 0x11, 0x65, 0x15, 0x72, 0xac, 0x42, - 0x1f, 0x2f, 0x58, 0x2a, 0xeb, 0x5f, 0xd4, 0xe0, 0x85, 0x84, 0x26, 0x9c, 0xba, 0x5d, 0x73, 0x28, - 0xb9, 0x07, 0xb0, 0xd6, 0xdc, 0x2a, 0xda, 0xac, 0x74, 0x52, 0x3b, 0xd4, 0x75, 0x6c, 0x60, 0x66, - 0x7a, 0x2a, 0xb9, 0xd7, 0xa6, 0x42, 0x9c, 0x16, 0x0c, 0xd7, 0x28, 0xf4, 0xaf, 0x35, 0xb7, 0x38, - 0x5f, 0xf2, 0x00, 0x06, 0x1c, 0x6a, 0x59, 0x82, 0x61, 0xae, 0x33, 0x86, 0xe0, 0xf1, 0xe0, 0x1c, - 0xf5, 0xdf, 0xd5, 0xe0, 0x68, 0xa8, 0xce, 0x9a, 0x6d, 0x3f, 0x5a, 0xa6, 0xae, 0x51, 0x36, 0x5c, - 0xe3, 0x35, 0xd3, 0xdd, 0x58, 0x66, 0xfa, 0x92, 0x15, 0xe8, 0xab, 0x62, 0x29, 0x33, 0xd5, 0xc0, - 0xcc, 0xf9, 0x0c, 0x0d, 0xfb, 0x99, 0x16, 0x24, 0xa3, 0x54, 0xfb, 0x92, 0x71, 0xe8, 0x31, 0x9d, - 0xb9, 0xe6, 0xd6, 0x64, 0xd7, 0x21, 0xed, 0x58, 0x5f, 0x81, 0x3f, 0xe8, 0xcf, 0x43, 0x9e, 0x19, - 0xfd, 0x26, 0xb6, 0xf8, 0xc0, 0x68, 0x18, 0x55, 0xd1, 0xab, 0x7a, 0x11, 0x9e, 0x8b, 0x7d, 0x8b, - 0x1d, 0x72, 0x03, 0x7a, 0xeb, 0xac, 0x04, 0x55, 0xd0, 0xd3, 0x54, 0xe0, 0xb4, 0x73, 0xdd, 0x5f, - 0x7e, 0xf3, 0xe0, 0xae, 0x02, 0xd2, 0xe9, 0x9f, 0xd2, 0xe0, 0x40, 0xa8, 0xd3, 0x17, 0x68, 0xdd, - 0x76, 0x4c, 0x37, 0x9b, 0x67, 0xdd, 0x05, 0x68, 0x3d, 0x33, 0xd5, 0x07, 0x66, 0xde, 0xaf, 0x66, - 0x50, 0x26, 0x91, 0x56, 0xf0, 0xd1, 0xeb, 0xef, 0x68, 0x70, 0x30, 0x51, 0x2a, 0xd4, 0x9d, 0x42, - 0x5f, 0x19, 0xcb, 0xd0, 0x15, 0x97, 0xd2, 0xda, 0x6b, 0xc3, 0x6e, 0x4a, 0x14, 0xdc, 0xac, 0xb9, - 0x8d, 0xad, 0x82, 0x64, 0x9d, 0xff, 0x28, 0x0c, 0x05, 0x5e, 0x91, 0x51, 0xe8, 0x7a, 0x44, 0xb7, - 0xd0, 0x08, 0xde, 0x4f, 0x72, 0x11, 0x7a, 0x36, 0x0d, 0xab, 0x49, 0x51, 0xed, 0x23, 0x69, 0x62, - 0x20, 0xaf, 0x02, 0xa7, 0xb8, 0x94, 0xbb, 0xa0, 0xe9, 0x07, 0x70, 0x64, 0x8b, 0x3e, 0x9e, 0x33, - 0x2c, 0xa3, 0x56, 0xa2, 0xd2, 0x07, 0xd6, 0x71, 0x58, 0x46, 0xdf, 0xa3, 0x25, 0x6e, 0x42, 0xdf, - 0x1a, 0x96, 0xa1, 0x25, 0x52, 0x45, 0x40, 0x7a, 0x74, 0x04, 0x49, 0xaa, 0x9f, 0x47, 0x5f, 0x9b, - 0xad, 0x54, 0x1a, 0xb4, 0x62, 0xb8, 0xf4, 0x55, 0xdb, 0x6a, 0x56, 0xa9, 0x70, 0x83, 0x49, 0xd8, - 0x2d, 0xba, 0x97, 0xeb, 0x2e, 0x1e, 0xf5, 0x26, 0x2a, 0x10, 0x21, 0x44, 0xf9, 0x1e, 0xc2, 0x1e, - 0x43, 0xbc, 0x2a, 0x6e, 0xb2, 0x77, 0x42, 0xd0, 0x63, 0x69, 0x82, 0xf2, 0x91, 0x8a, 0xcc, 0x46, - 0x8d, 0x20, 0x77, 0x47, 0xff, 0x70, 0x7c, 0xb3, 0xd2, 0x6f, 0xf3, 0xd0, 0x87, 0x12, 0xf2, 0xd6, - 0xfa, 0x0b, 0xf2, 0x99, 0xbc, 0x00, 0x20, 0x07, 0x2a, 0x0f, 0x3c, 0xfd, 0x85, 0x7e, 0x31, 0x52, - 0x1d, 0xfd, 0x3f, 0x45, 0x28, 0x8c, 0xf2, 0x46, 0x9d, 0x5c, 0xd8, 0xdf, 0xd2, 0x49, 0x8c, 0x8d, - 0xa0, 0x6e, 0x17, 0xd2, 0x74, 0x93, 0x8c, 0x67, 0x39, 0xad, 0x30, 0x59, 0xc9, 0x6e, 0x94, 0x0b, - 0xfb, 0x8c, 0xd8, 0xb7, 0x0e, 0x59, 0x83, 0xc9, 0x56, 0xab, 0xa8, 0x80, 0x68, 0x34, 0x97, 0xd1, - 0xa0, 0x13, 0x92, 0x93, 0xbf, 0xd8, 0xd1, 0x6f, 0xc0, 0xe1, 0xa0, 0xea, 0x01, 0x2a, 0xb4, 0x6d, - 0x20, 0xd0, 0x69, 0xa1, 0x89, 0xc4, 0x02, 0x3d, 0x8d, 0x03, 0x5a, 0x70, 0x11, 0x7a, 0xb9, 0xe8, - 0x18, 0xbb, 0x52, 0x25, 0xf7, 0x9b, 0x47, 0x44, 0x30, 0x4e, 0xad, 0x9f, 0x84, 0x49, 0xd6, 0xda, - 0x02, 0xad, 0xd9, 0xd5, 0x05, 0x5a, 0x32, 0xab, 0x86, 0x25, 0xc4, 0x1c, 0x87, 0x9e, 0xb2, 0x57, - 0x8c, 0x22, 0xf2, 0x07, 0xfd, 0x2c, 0xec, 0x8f, 0xa1, 0x40, 0xb1, 0x26, 0x61, 0x77, 0x99, 0x17, - 0x31, 0xa2, 0xee, 0x82, 0x78, 0xd4, 0x4f, 0xc7, 0x90, 0x49, 0x67, 0x9b, 0x80, 0x5e, 0xc6, 0x5c, - 0xb8, 0x1a, 0x3e, 0xe9, 0x2e, 0x86, 0xf7, 0x10, 0x11, 0x36, 0xf6, 0x2a, 0x0c, 0xb3, 0x7a, 0x45, - 0x6c, 0x43, 0xb8, 0xce, 0x4b, 0xe9, 0x21, 0xc4, 0xc7, 0x0a, 0x8d, 0x31, 0x54, 0xf6, 0x17, 0xea, - 0xf3, 0x69, 0x3d, 0x20, 0x65, 0x0e, 0x0e, 0x02, 0x2d, 0x3c, 0x08, 0x4c, 0x38, 0x92, 0xca, 0x04, - 0x75, 0x98, 0x83, 0xdd, 0x9d, 0x8e, 0x69, 0x41, 0xa8, 0xbf, 0x1e, 0xc9, 0x3c, 0x44, 0x9c, 0xcc, - 0x32, 0x07, 0xc9, 0xde, 0xce, 0xf9, 0x7b, 0xdb, 0x48, 0x9a, 0xe0, 0xa4, 0x06, 0xd7, 0x03, 0x33, - 0x89, 0x72, 0x08, 0x97, 0x44, 0xfa, 0x03, 0xd8, 0xc7, 0x9b, 0xa8, 0xdb, 0x2e, 0x57, 0xd0, 0xef, - 0x17, 0x8e, 0x6b, 0xb8, 0x4d, 0x47, 0x64, 0x7e, 0xfc, 0xa9, 0x5d, 0x00, 0xfa, 0x21, 0x74, 0xea, - 0x00, 0x47, 0x39, 0xe9, 0xef, 0xe6, 0x15, 0x85, 0xc1, 0xd3, 0xe7, 0x59, 0xc9, 0xa1, 0x20, 0xc8, - 0xf4, 0xb3, 0x30, 0x11, 0xe2, 0xae, 0x34, 0xae, 0x3f, 0x1c, 0x51, 0x53, 0xca, 0x74, 0x0d, 0x7a, - 0x79, 0x35, 0x34, 0xa0, 0xaa, 0x48, 0x48, 0xa5, 0x7f, 0x23, 0x87, 0x83, 0xcb, 0x7b, 0x27, 0x33, - 0x2c, 0x15, 0xa9, 0xbc, 0x5e, 0xb7, 0xcc, 0xaa, 0xc9, 0x93, 0x8e, 0xee, 0x02, 0x7f, 0x20, 0x0b, - 0x00, 0x2c, 0xab, 0x2c, 0x3a, 0x66, 0x99, 0xb2, 0x8c, 0x6b, 0x78, 0xe6, 0x68, 0x9a, 0x50, 0xac, - 0xd1, 0x15, 0xb3, 0x4c, 0x0b, 0xfd, 0xb6, 0xf8, 0x49, 0x8a, 0xb0, 0x9f, 0xb1, 0x2b, 0x96, 0x9a, - 0xd5, 0xa6, 0x65, 0x78, 0x94, 0xc5, 0x9a, 0xed, 0xad, 0x3c, 0x0c, 0x6b, 0xb2, 0xdb, 0x13, 0x64, - 0xee, 0x88, 0x97, 0xbc, 0x7c, 0xf3, 0xcd, 0x83, 0xcf, 0x95, 0x6c, 0xa7, 0x6a, 0x3b, 0x4e, 0xf9, - 0xd1, 0x94, 0x69, 0x4f, 0x57, 0x0d, 0x77, 0x63, 0xea, 0x2e, 0xad, 0x18, 0xa5, 0xad, 0x05, 0x5a, - 0x2a, 0xec, 0x63, 0x5c, 0xe6, 0x25, 0x93, 0x7b, 0xc8, 0x23, 0xb6, 0x81, 0xc7, 0x4d, 0xa3, 0xe6, - 0x9a, 0xee, 0xd6, 0x64, 0x4f, 0xe7, 0x0d, 0x7c, 0x10, 0x79, 0xe8, 0x7f, 0xa8, 0x61, 0x00, 0x0a, - 0x19, 0x16, 0xfb, 0xed, 0x0e, 0x8c, 0xae, 0x35, 0xb7, 0x9c, 0x62, 0xbd, 0x61, 0x96, 0x68, 0xd1, - 0xa2, 0x9b, 0xd4, 0x42, 0xa7, 0x3a, 0x9c, 0x66, 0xac, 0xbb, 0x5e, 0xc5, 0xc2, 0xb0, 0x47, 0xfa, - 0xc0, 0xa3, 0x64, 0xcf, 0x64, 0x19, 0xf6, 0x78, 0xa9, 0x78, 0x90, 0x5b, 0x4e, 0x95, 0xdb, 0x08, - 0xa3, 0x6d, 0xb1, 0xd3, 0x3f, 0xad, 0xc1, 0xf0, 0x62, 0xd3, 0xb2, 0x5a, 0xee, 0xb2, 0x5d, 0x37, - 0x23, 0x1f, 0x81, 0x3d, 0x55, 0xb3, 0x8c, 0xf2, 0x19, 0xb5, 0x72, 0xd1, 0xb5, 0xd7, 0x30, 0x6b, - 0x3b, 0x9e, 0x1a, 0xb5, 0xcc, 0x32, 0x13, 0x6c, 0xb6, 0x56, 0x5e, 0xbd, 0x3f, 0x87, 0x09, 0xeb, - 0x70, 0xd5, 0x57, 0x6a, 0xaf, 0xe9, 0x9f, 0xd4, 0x30, 0x81, 0x0a, 0x0a, 0xbd, 0xcd, 0x50, 0x40, - 0x66, 0x60, 0xe2, 0x0d, 0xd3, 0xdd, 0x28, 0x46, 0x05, 0xe7, 0xeb, 0x08, 0xe2, 0xbd, 0x5d, 0x0e, - 0x8a, 0x52, 0xc6, 0xd4, 0x28, 0x22, 0x09, 0x76, 0xfb, 0x42, 0x38, 0x84, 0xa4, 0x6a, 0x1f, 0xe4, - 0xd2, 0x0a, 0x23, 0x55, 0x74, 0xad, 0xd0, 0x7b, 0x95, 0x41, 0x9b, 0xac, 0x54, 0x2e, 0x51, 0x29, - 0x23, 0xd6, 0xbc, 0xbe, 0x79, 0x28, 0xe8, 0x1b, 0x59, 0x54, 0x12, 0x61, 0xe8, 0x67, 0xe4, 0x6a, - 0x48, 0x8c, 0x16, 0x67, 0x6e, 0xeb, 0xb6, 0xe1, 0x6c, 0xb4, 0x26, 0xcd, 0x54, 0xb5, 0x22, 0xd3, - 0x54, 0x2e, 0x66, 0x9a, 0x3a, 0x0c, 0x83, 0x3c, 0x34, 0x6d, 0x30, 0xc6, 0x93, 0x5d, 0xac, 0xc7, - 0x07, 0x58, 0x19, 0x6f, 0x4b, 0xb7, 0xc4, 0xf2, 0x27, 0x46, 0x0c, 0x54, 0x77, 0x09, 0x7a, 0x03, - 0xeb, 0xf0, 0x53, 0x69, 0xea, 0xae, 0x36, 0xcc, 0x6a, 0x95, 0x96, 0x3d, 0x76, 0x77, 0xbd, 0x40, - 0xc1, 0x78, 0x16, 0x90, 0x81, 0xdc, 0x5a, 0x58, 0x65, 0x9b, 0x12, 0xad, 0x36, 0x77, 0x4c, 0x65, - 0xdd, 0x82, 0xf7, 0xf1, 0x54, 0x82, 0x97, 0xcc, 0x96, 0xcb, 0x0d, 0xea, 0x38, 0x19, 0x5b, 0x7a, - 0x11, 0x46, 0x44, 0x33, 0x06, 0x67, 0x80, 0x6d, 0x0d, 0x1b, 0x01, 0xb6, 0xfa, 0xaf, 0xe5, 0x60, - 0x6f, 0xac, 0xc6, 0xde, 0x4a, 0x8d, 0x79, 0x1b, 0xe7, 0xcd, 0x42, 0xeb, 0xae, 0x76, 0xa1, 0x95, - 0x53, 0x78, 0x49, 0x82, 0x0c, 0xcc, 0x39, 0x75, 0x6a, 0x49, 0xe4, 0x31, 0x58, 0x37, 0x2d, 0xcb, - 0x58, 0xb3, 0xf8, 0x7c, 0xa4, 0xca, 0x40, 0x10, 0xb5, 0xf6, 0x0f, 0xba, 0x7d, 0xfb, 0x07, 0x5e, - 0xf4, 0x68, 0x79, 0x13, 0x9f, 0x32, 0x70, 0x06, 0xf3, 0x1c, 0xc6, 0x5b, 0xad, 0x96, 0xcc, 0xf2, - 0x64, 0x2f, 0x5f, 0xad, 0x96, 0xcc, 0xb2, 0xfe, 0x31, 0xcc, 0xb5, 0xa2, 0xbd, 0xbd, 0xf3, 0x9e, - 0xd5, 0x80, 0xa3, 0x6d, 0xfa, 0x7d, 0xe7, 0xdb, 0xbc, 0xea, 0x1b, 0xc2, 0xc1, 0xb8, 0xad, 0x94, - 0xe4, 0xfc, 0x97, 0xe6, 0x1b, 0x7b, 0x61, 0x7a, 0x99, 0x81, 0xf5, 0xcb, 0xc0, 0xe5, 0x73, 0xa5, - 0xb6, 0xb3, 0x74, 0x9f, 0x98, 0x31, 0xc8, 0x12, 0x0c, 0xaf, 0x51, 0xc7, 0x2d, 0xae, 0x35, 0xb7, - 0x90, 0x4d, 0x4e, 0x9d, 0xcd, 0xa0, 0x47, 0x3a, 0xd7, 0xdc, 0xe2, 0xac, 0xee, 0xc0, 0x08, 0x63, - 0xc5, 0x76, 0xd2, 0x38, 0xaf, 0x2e, 0x75, 0x5e, 0x43, 0x1e, 0xed, 0x0a, 0xb5, 0x2c, 0xc6, 0x4c, - 0x9f, 0xc7, 0x81, 0xba, 0x40, 0x1b, 0xe6, 0x26, 0xcb, 0x24, 0x3a, 0x30, 0xe1, 0x4f, 0xe6, 0xb0, - 0xdb, 0x93, 0xb9, 0xfc, 0x9f, 0x37, 0xe4, 0xef, 0x0b, 0x37, 0x6a, 0xd9, 0x60, 0x27, 0xd2, 0xda, - 0xd4, 0x84, 0xb4, 0x6b, 0xfb, 0x09, 0xa9, 0xfe, 0x79, 0x0d, 0x0e, 0x25, 0xcb, 0xfd, 0x03, 0x90, - 0x35, 0xfe, 0x7a, 0x17, 0x4c, 0xc5, 0xc6, 0xb7, 0x55, 0x7b, 0xde, 0xa8, 0x95, 0xa8, 0xf5, 0xb0, - 0xbe, 0x6a, 0xcf, 0x56, 0xbd, 0x70, 0xb4, 0x73, 0x53, 0xfa, 0x02, 0x0c, 0xac, 0x19, 0x0e, 0x2d, - 0x1a, 0x8c, 0x6f, 0x96, 0xf0, 0x0e, 0x1e, 0x1d, 0x17, 0x87, 0x2c, 0xc2, 0xe0, 0xe3, 0xa6, 0xed, - 0x4a, 0x36, 0xdd, 0xea, 0x6c, 0x06, 0x18, 0x21, 0xf2, 0xb9, 0x0b, 0x7d, 0x8e, 0xdb, 0x30, 0x5c, - 0x5a, 0xe1, 0x6b, 0x88, 0xe1, 0x99, 0x93, 0x69, 0x86, 0xe4, 0x66, 0xb1, 0xd8, 0x81, 0xca, 0x0a, - 0xd2, 0x15, 0x24, 0x07, 0x72, 0x17, 0x46, 0x1a, 0x74, 0x9d, 0x36, 0x68, 0xad, 0x44, 0x71, 0x58, - 0xf4, 0xaa, 0x3b, 0xda, 0xb0, 0xa4, 0xe5, 0xe3, 0xe2, 0x1f, 0x72, 0x70, 0xc6, 0xd7, 0x3d, 0x21, - 0x2f, 0x7b, 0x57, 0x3b, 0x29, 0x6c, 0xde, 0xae, 0x1d, 0x30, 0x6f, 0xf7, 0xbb, 0x61, 0xde, 0x9e, - 0xce, 0xcd, 0xbb, 0x8e, 0x1b, 0x3f, 0xf1, 0xd6, 0xdd, 0xb9, 0x84, 0xae, 0x01, 0xc7, 0x63, 0x26, - 0xf6, 0x8e, 0xda, 0x53, 0x4e, 0xeb, 0xbe, 0x9b, 0x83, 0xe7, 0x70, 0xea, 0x6f, 0x35, 0xf4, 0x7d, - 0x92, 0xdc, 0x5d, 0x66, 0x8b, 0x8f, 0x8a, 0x59, 0xcb, 0xe2, 0x55, 0x48, 0x12, 0xc8, 0x0c, 0xbb, - 0x3b, 0xc9, 0x0c, 0x0f, 0x8a, 0xcc, 0xd0, 0xf3, 0x9c, 0xbe, 0xb9, 0xfe, 0x77, 0xde, 0x3c, 0xc8, - 0x0b, 0xe2, 0x93, 0xc4, 0xde, 0x84, 0x24, 0x71, 0x77, 0x2b, 0x49, 0xdc, 0xc4, 0xbd, 0xbf, 0x24, - 0x3f, 0xc2, 0x89, 0xe0, 0x7e, 0x28, 0x6d, 0x3b, 0xaf, 0x90, 0xb6, 0xc5, 0xf5, 0x9d, 0x4c, 0xde, - 0x7e, 0x1c, 0x3e, 0xa0, 0xe4, 0x57, 0xef, 0x56, 0xfb, 0x3f, 0xa7, 0x45, 0x12, 0xa0, 0xf7, 0x70, - 0x19, 0xf8, 0x24, 0x92, 0x47, 0x25, 0x2c, 0x06, 0x77, 0xdc, 0x0e, 0x3f, 0x2b, 0x0e, 0x40, 0x7c, - 0x29, 0xdc, 0x7b, 0xb6, 0x9b, 0xf1, 0x49, 0x0d, 0xc0, 0x97, 0x30, 0xbc, 0x87, 0xe3, 0x5c, 0xff, - 0x82, 0x06, 0xe3, 0x0f, 0x68, 0xa3, 0x4e, 0xdd, 0xa6, 0x61, 0x71, 0x8b, 0xac, 0xb8, 0x86, 0x4b, - 0xc9, 0x03, 0x18, 0x10, 0x6a, 0xd7, 0xd6, 0x6d, 0xdc, 0x82, 0x48, 0x3d, 0xca, 0x0e, 0xb1, 0x59, - 0xaa, 0xad, 0xdb, 0x05, 0x34, 0x9d, 0xf7, 0x9b, 0x3c, 0x84, 0xc1, 0xf5, 0x66, 0xad, 0x6c, 0xd6, - 0x2a, 0x9c, 0x25, 0xdf, 0xa6, 0x9a, 0xc9, 0xc0, 0x72, 0x91, 0x93, 0x17, 0x06, 0x90, 0x8f, 0xc7, - 0x56, 0xff, 0x6c, 0x17, 0x8c, 0x2f, 0x36, 0x2d, 0x2b, 0xdc, 0xb1, 0x64, 0x21, 0xb4, 0x7f, 0xf2, - 0x72, 0xfa, 0x1e, 0x78, 0x90, 0x5a, 0xee, 0xb0, 0x7d, 0x18, 0x86, 0xeb, 0x42, 0x0a, 0xbf, 0xdc, - 0x27, 0x33, 0xc8, 0xcd, 0x2c, 0x7a, 0x7b, 0x57, 0x61, 0x48, 0x72, 0x62, 0x06, 0xf9, 0x90, 0x67, - 0x10, 0xb7, 0xd9, 0xa0, 0x0e, 0x67, 0xdc, 0xc5, 0x18, 0x9f, 0x4e, 0x63, 0x7c, 0xf3, 0x49, 0xdd, - 0x6c, 0x6c, 0x2d, 0x72, 0xaa, 0x96, 0x9d, 0x6f, 0xef, 0xf2, 0x6c, 0xc2, 0x0a, 0x19, 0xe7, 0x39, - 0xee, 0xb3, 0x38, 0xfd, 0x66, 0x08, 0xc1, 0xcc, 0xb1, 0xf9, 0xea, 0x21, 0x76, 0x6b, 0xb1, 0x67, - 0x67, 0xb6, 0x16, 0xe7, 0x7a, 0xa1, 0xdb, 0x53, 0x59, 0xb7, 0x70, 0x6d, 0x1b, 0x33, 0x2a, 0x31, - 0x12, 0xbc, 0x12, 0xde, 0xd9, 0x3b, 0xd9, 0x6e, 0x1b, 0x2c, 0xd2, 0x95, 0x72, 0x7f, 0xef, 0x32, - 0xee, 0x0b, 0x45, 0x6a, 0xa8, 0x2c, 0x02, 0xcd, 0x84, 0x00, 0x22, 0x25, 0xbd, 0x1d, 0xf2, 0xb7, - 0xec, 0x82, 0x8a, 0x5d, 0xbb, 0x39, 0x9c, 0xac, 0xc2, 0x15, 0x70, 0xf6, 0x50, 0x12, 0x97, 0x46, - 0x17, 0xbe, 0x41, 0x1e, 0xad, 0xe3, 0x41, 0x91, 0xa5, 0x88, 0x53, 0x70, 0xfe, 0xa8, 0x96, 0x37, - 0xdd, 0xc2, 0xd5, 0x55, 0xeb, 0x30, 0x8a, 0xcd, 0xb0, 0xec, 0x8a, 0x4f, 0x96, 0xb3, 0x2e, 0x7d, - 0x31, 0x72, 0x41, 0xe2, 0x81, 0xed, 0x98, 0xec, 0x4e, 0x54, 0x26, 0x3e, 0x1f, 0x83, 0xf7, 0x27, - 0xf0, 0x59, 0xaa, 0x05, 0x7b, 0x7b, 0xfb, 0x17, 0x8c, 0x1c, 0x98, 0x0e, 0xb5, 0x75, 0x73, 0x7d, - 0x9d, 0xf7, 0xf8, 0xbb, 0xd7, 0xe8, 0x2b, 0xe8, 0x1c, 0xa1, 0x0b, 0x3c, 0xf2, 0xf2, 0x4e, 0x16, - 0x63, 0xd5, 0x22, 0xbd, 0xe7, 0x33, 0xba, 0x1c, 0x80, 0x3d, 0xde, 0x4c, 0x48, 0x71, 0xf8, 0x4d, - 0xa9, 0x45, 0x51, 0xc1, 0x07, 0x8f, 0x73, 0x39, 0x0b, 0xfd, 0x11, 0xbc, 0xd8, 0xb6, 0x73, 0xe4, - 0x4e, 0x8a, 0x6c, 0xd6, 0x1b, 0x4c, 0xef, 0x4b, 0x0d, 0xb7, 0xfe, 0xc6, 0x34, 0xd1, 0xd8, 0xc7, - 0x73, 0xb0, 0x27, 0xd2, 0x1f, 0x64, 0x1f, 0xec, 0x36, 0x9d, 0xa2, 0x65, 0xd7, 0x2a, 0x8c, 0x73, - 0x5f, 0xa1, 0xd7, 0x74, 0xee, 0xda, 0xb5, 0xca, 0xf6, 0x53, 0xe6, 0x05, 0x18, 0xa0, 0x35, 0xb7, - 0xb1, 0x15, 0xd9, 0x6a, 0x69, 0xbf, 0x66, 0x66, 0x74, 0x3c, 0xec, 0xde, 0x83, 0x51, 0x2a, 0x84, - 0x2e, 0x62, 0x0a, 0x9e, 0x21, 0x80, 0x8f, 0x48, 0xe2, 0x65, 0x46, 0xab, 0x3f, 0x83, 0x93, 0xea, - 0x3e, 0x2a, 0x37, 0x2f, 0x03, 0xb6, 0x3f, 0x91, 0x3a, 0x23, 0x85, 0xb9, 0x05, 0x3b, 0xe1, 0x1a, - 0x0e, 0xeb, 0xb8, 0xe4, 0x40, 0x25, 0x8c, 0x55, 0xd1, 0x43, 0x63, 0xe9, 0xa5, 0xb8, 0xdd, 0xdb, - 0xc8, 0x51, 0xd0, 0x43, 0xf9, 0x7c, 0x24, 0x22, 0x6f, 0xc2, 0x3c, 0xab, 0x24, 0x72, 0x13, 0x23, - 0x6f, 0x22, 0x0f, 0x14, 0x7b, 0x39, 0x20, 0x76, 0x27, 0xd3, 0x7e, 0x40, 0xf4, 0x59, 0x5c, 0x29, - 0x27, 0xe4, 0x4c, 0x6a, 0x92, 0x1f, 0x49, 0x65, 0x21, 0x6f, 0x4d, 0x06, 0xdc, 0xa3, 0x83, 0x0c, - 0x2e, 0x18, 0x15, 0xe4, 0x1a, 0x25, 0x31, 0xa4, 0x61, 0xc3, 0xa5, 0xc0, 0x15, 0x47, 0x2f, 0x1a, - 0xcd, 0x76, 0x78, 0xc5, 0xb1, 0x75, 0x6f, 0x52, 0xdc, 0x1a, 0x13, 0x8c, 0xf5, 0x8b, 0x78, 0x5d, - 0x28, 0x7e, 0x46, 0x43, 0x49, 0xc6, 0xa1, 0x87, 0x5f, 0x6e, 0xd5, 0xd8, 0xe5, 0x56, 0xfe, 0xa0, - 0xef, 0xc7, 0xfb, 0x04, 0xcb, 0x76, 0xb9, 0x69, 0x51, 0x96, 0xf5, 0x89, 0x3b, 0x6f, 0xaf, 0xe3, - 0xfd, 0x87, 0xc0, 0x2b, 0x79, 0xd7, 0x20, 0x60, 0xcf, 0xd4, 0xeb, 0x26, 0xb7, 0xf8, 0x8d, 0x5e, - 0xce, 0x00, 0xed, 0xb7, 0x0f, 0xf6, 0xf2, 0x6e, 0x0b, 0x4d, 0x98, 0x7a, 0x19, 0xaf, 0x45, 0xbc, - 0xbb, 0x41, 0xfd, 0xb1, 0xff, 0xfc, 0xa5, 0x40, 0xdf, 0x30, 0x1a, 0xe5, 0x07, 0xb6, 0x59, 0x73, - 0x95, 0xee, 0xad, 0x9d, 0x81, 0x89, 0x3a, 0xe5, 0x8b, 0x82, 0xba, 0x6d, 0x5b, 0x45, 0xd7, 0xac, - 0x52, 0xc7, 0x35, 0xaa, 0x75, 0x16, 0x83, 0xbb, 0x0a, 0xe3, 0xf8, 0xf6, 0x81, 0x6d, 0x5b, 0xab, - 0xe2, 0x9d, 0xfe, 0xd3, 0xe2, 0x58, 0x33, 0xa6, 0x4d, 0xd4, 0x70, 0x0d, 0x9e, 0x13, 0x93, 0x1f, - 0xbb, 0x9b, 0x5c, 0x6c, 0xb0, 0x5a, 0xc5, 0x3a, 0xab, 0xc6, 0xe5, 0x50, 0x0b, 0xa9, 0x93, 0x7e, - 0x37, 0xf0, 0xb7, 0xa5, 0x1f, 0xc6, 0xe0, 0xe6, 0x7b, 0x33, 0x6f, 0x54, 0xeb, 0x86, 0x59, 0xa9, - 0x89, 0x2e, 0xf8, 0x5e, 0x37, 0x06, 0xb0, 0xd8, 0x3a, 0x28, 0xeb, 0x26, 0x3c, 0xef, 0xc9, 0xe8, - 0x19, 0x01, 0xa5, 0x2c, 0x61, 0x15, 0xff, 0xe2, 0xeb, 0x6c, 0xfa, 0x1a, 0xd8, 0xe0, 0x63, 0xd4, - 0xdf, 0x00, 0x0b, 0x37, 0xfb, 0xdd, 0xa4, 0x57, 0xe4, 0x27, 0x34, 0x38, 0x1a, 0x6a, 0x98, 0x75, - 0x82, 0x6c, 0xdd, 0x29, 0x6d, 0x50, 0xcf, 0x5f, 0x71, 0xfb, 0x7a, 0x2a, 0x7d, 0x5b, 0x50, 0x68, - 0xc5, 0x2d, 0x64, 0x5b, 0x85, 0xc3, 0x81, 0xa6, 0xbd, 0x22, 0x51, 0x69, 0x05, 0x19, 0x93, 0x1f, - 0x81, 0xfd, 0xae, 0xed, 0x1a, 0x56, 0x6c, 0x27, 0x65, 0x98, 0x42, 0x27, 0x18, 0x97, 0x48, 0x17, - 0x91, 0x5f, 0xd0, 0xe0, 0x84, 0x70, 0x30, 0x35, 0x55, 0xbb, 0x3b, 0x52, 0xf5, 0x18, 0x36, 0xb2, - 0xda, 0x56, 0xe3, 0x2a, 0x1c, 0x96, 0x02, 0x25, 0x6a, 0xde, 0xa3, 0xee, 0x9e, 0x2f, 0x88, 0x96, - 0x63, 0x0d, 0xa0, 0x5f, 0x46, 0x1f, 0x5d, 0x72, 0xee, 0xd7, 0x5d, 0x5a, 0xbe, 0xdf, 0x74, 0xef, - 0xaf, 0xf3, 0x0a, 0x4e, 0xfb, 0x8b, 0xb0, 0x0b, 0xe8, 0xbc, 0xb1, 0xc4, 0xe8, 0xbc, 0x87, 0x60, - 0xd0, 0x74, 0x8a, 0xb6, 0xf7, 0xbe, 0x68, 0x37, 0x5d, 0xcc, 0xaa, 0xc0, 0x94, 0x24, 0xfa, 0x8b, - 0xb8, 0xeb, 0x13, 0xe1, 0x81, 0x9b, 0x62, 0x32, 0x5e, 0x2d, 0x60, 0xee, 0x9e, 0x52, 0x11, 0x1b, - 0x4d, 0x09, 0x29, 0xfa, 0x35, 0x9c, 0x08, 0x17, 0x29, 0x5d, 0x30, 0x1d, 0xbe, 0xed, 0x86, 0x19, - 0xaf, 0x6f, 0x0a, 0x4f, 0x56, 0xfa, 0xbb, 0x1a, 0x4e, 0x83, 0x49, 0x0c, 0x50, 0x86, 0x17, 0x00, - 0x5c, 0x93, 0x36, 0xe4, 0x71, 0x91, 0x76, 0xac, 0xbb, 0xd0, 0xef, 0x95, 0xf0, 0x5d, 0x9d, 0x02, - 0x0c, 0xca, 0xec, 0xbb, 0xb5, 0x6d, 0x90, 0x9a, 0x9d, 0xf8, 0x1a, 0x5c, 0x35, 0x69, 0x83, 0xb5, - 0x36, 0x60, 0xb4, 0x9a, 0x26, 0xf7, 0x61, 0x40, 0x06, 0x35, 0xd7, 0xc2, 0x0d, 0x83, 0xa9, 0x0c, - 0x2c, 0x57, 0x57, 0xef, 0x16, 0x40, 0xc4, 0x33, 0xd7, 0x92, 0x11, 0xcc, 0x57, 0x4d, 0x38, 0xaa, - 0xe8, 0x94, 0x4f, 0x88, 0x03, 0xb4, 0xd8, 0x3a, 0x72, 0x66, 0xde, 0xbb, 0x4e, 0x69, 0xb1, 0x8c, - 0xef, 0x5b, 0xa3, 0x49, 0xcb, 0xa4, 0xb5, 0xe4, 0x3b, 0xb6, 0x1e, 0x2d, 0xd4, 0x6f, 0xe0, 0x44, - 0x83, 0xf7, 0xbd, 0x97, 0x4d, 0xa7, 0x6a, 0xb8, 0x25, 0xdf, 0x1e, 0xe6, 0x41, 0x18, 0x28, 0x37, - 0x1d, 0xb7, 0xb8, 0x6e, 0x94, 0x5c, 0x9b, 0x43, 0x53, 0xba, 0x0a, 0xe0, 0x15, 0x2d, 0xb2, 0x12, - 0xfd, 0xb7, 0xbb, 0x60, 0x24, 0x44, 0x4d, 0x74, 0x08, 0xac, 0x89, 0xd4, 0x2f, 0x62, 0x92, 0x59, - 0xe8, 0x37, 0x36, 0x0d, 0x33, 0xf3, 0x0d, 0x88, 0x16, 0x15, 0xb9, 0x08, 0x3d, 0x2c, 0x08, 0x64, - 0x49, 0xf1, 0x39, 0x05, 0x59, 0x84, 0x41, 0xbc, 0xe9, 0x5e, 0xdc, 0xb0, 0xad, 0xb2, 0xef, 0x90, - 0xa5, 0xfd, 0xe9, 0x0f, 0x12, 0xde, 0xb6, 0xad, 0x32, 0x79, 0x05, 0x86, 0xe9, 0x93, 0x3a, 0x2d, - 0x79, 0xe3, 0x97, 0xcb, 0xd2, 0xab, 0xce, 0x69, 0x48, 0x90, 0xb2, 0xe8, 0x43, 0xe6, 0x01, 0xca, - 0xe6, 0x3a, 0x1e, 0xe0, 0xf0, 0xed, 0x77, 0xc5, 0x15, 0x50, 0x8b, 0x4c, 0xff, 0x31, 0x9c, 0xdb, - 0x63, 0xba, 0x19, 0xbd, 0xed, 0x75, 0x20, 0x42, 0xf5, 0xaa, 0x7c, 0x8b, 0xa9, 0xcc, 0x07, 0x14, - 0x90, 0x02, 0x82, 0x65, 0x61, 0xcf, 0x5a, 0xb8, 0x0d, 0xfd, 0x28, 0x0e, 0x7e, 0xac, 0xea, 0x25, - 0x8a, 0x73, 0x2d, 0x6b, 0xc9, 0x50, 0xf5, 0x2b, 0x39, 0xd8, 0xeb, 0xab, 0xc2, 0x17, 0x5b, 0xcc, - 0x9e, 0xff, 0xcf, 0xfd, 0x49, 0xff, 0x65, 0x91, 0xcd, 0x27, 0x5a, 0x10, 0x7b, 0xb1, 0x06, 0x79, - 0xd1, 0x20, 0xdb, 0x41, 0xf7, 0xb7, 0xae, 0x74, 0x6d, 0x26, 0xd6, 0xfe, 0x85, 0x7d, 0x6b, 0xf1, - 0xed, 0xca, 0x69, 0x28, 0x14, 0x12, 0xbd, 0x54, 0xda, 0x74, 0x5c, 0xb3, 0x24, 0xfb, 0xf6, 0x22, - 0x0c, 0x05, 0x5e, 0x10, 0x02, 0xdd, 0x5e, 0x5c, 0xc7, 0x18, 0xcf, 0x7e, 0x7b, 0x5d, 0xd8, 0x82, - 0x06, 0x75, 0x17, 0xf8, 0x83, 0xee, 0xe0, 0x0c, 0x96, 0xd2, 0x86, 0x5c, 0xb4, 0x82, 0x23, 0x4b, - 0x55, 0x6e, 0xc9, 0x07, 0xf8, 0x14, 0x7c, 0xc4, 0x5e, 0xfe, 0xbf, 0x6c, 0xba, 0xf6, 0xab, 0x46, - 0xd3, 0x62, 0xd3, 0x84, 0x54, 0xe4, 0x8f, 0x35, 0x98, 0x08, 0xbf, 0xc1, 0xe6, 0x5f, 0x82, 0xd1, - 0xaa, 0xe1, 0xb8, 0xb4, 0x21, 0xce, 0x28, 0xa9, 0x98, 0x48, 0x47, 0x78, 0xf9, 0xac, 0x28, 0x26, - 0xa7, 0x60, 0xbc, 0x2c, 0x97, 0x00, 0xbe, 0xea, 0xfc, 0x28, 0x64, 0xac, 0xf5, 0xae, 0x45, 0x72, - 0x14, 0x86, 0x9d, 0xba, 0xed, 0xfa, 0x2a, 0xf3, 0xc3, 0xa0, 0x21, 0xaf, 0x34, 0x50, 0xad, 0xf4, - 0xc6, 0xcc, 0x49, 0x5f, 0xb5, 0x6e, 0x5e, 0xcd, 0x2b, 0x95, 0xd5, 0xf4, 0x05, 0x8c, 0xfb, 0xb8, - 0xf0, 0x5d, 0x58, 0x6c, 0xd8, 0x55, 0xa6, 0x92, 0x6f, 0xaf, 0x6b, 0xd3, 0x7b, 0x2e, 0x06, 0x77, - 0x32, 0x07, 0x59, 0xa1, 0x38, 0x6d, 0x15, 0xd7, 0xa8, 0x62, 0xb8, 0xa0, 0x4d, 0x52, 0xd7, 0xc6, - 0x62, 0x79, 0x7d, 0xdb, 0x74, 0x5c, 0xbb, 0x61, 0x96, 0x64, 0xae, 0x55, 0xb2, 0x7d, 0xa9, 0x54, - 0x2a, 0x0b, 0x17, 0x43, 0x4b, 0x12, 0x0b, 0xb9, 0x2f, 0x30, 0x24, 0x52, 0x42, 0xf6, 0x42, 0x05, - 0x85, 0x10, 0x60, 0x34, 0xe8, 0xfa, 0x9e, 0xf4, 0x3f, 0xd0, 0x60, 0x8c, 0xbd, 0xe6, 0xcd, 0x7a, - 0xc9, 0x95, 0xb7, 0x14, 0x24, 0x2f, 0x03, 0xe1, 0xcd, 0x54, 0x1a, 0x76, 0xb3, 0xee, 0xa5, 0xa3, - 0x0e, 0x2d, 0xa1, 0x8b, 0x8f, 0xb2, 0x37, 0xb7, 0xf0, 0xc5, 0x0a, 0x2d, 0x91, 0x7d, 0xb0, 0xbb, - 0x6a, 0x3c, 0x29, 0x1a, 0x15, 0x8a, 0x0e, 0xdf, 0x5b, 0x35, 0x9e, 0xcc, 0x56, 0x28, 0x99, 0x82, - 0x31, 0xb3, 0x56, 0xb2, 0x9a, 0x9e, 0xbc, 0xc6, 0x1b, 0xc5, 0x0d, 0xde, 0x08, 0x5e, 0xe9, 0xdb, - 0x83, 0xaf, 0x0a, 0xc6, 0x1b, 0xd8, 0xba, 0xe7, 0x78, 0xa2, 0xbe, 0x5c, 0xcb, 0xb3, 0x53, 0xde, - 0xc2, 0x08, 0x96, 0x8b, 0x35, 0xba, 0xfe, 0x9b, 0x1a, 0xee, 0xd7, 0x4b, 0x8c, 0x85, 0xe1, 0x9a, - 0x96, 0xe9, 0x6e, 0x29, 0x9d, 0x59, 0x96, 0x60, 0x2f, 0xd7, 0x0f, 0x45, 0xf2, 0x52, 0x54, 0x4f, - 0x71, 0x95, 0x44, 0x2c, 0xc6, 0x5e, 0x85, 0x31, 0x37, 0x5a, 0xa8, 0x7f, 0x3c, 0x17, 0xf0, 0x4d, - 0xbf, 0x88, 0x12, 0x8b, 0x01, 0x9b, 0xb2, 0x14, 0x4f, 0xf8, 0x0e, 0xb6, 0x9d, 0x0e, 0x5b, 0x24, - 0xe4, 0x35, 0x18, 0x15, 0x1a, 0x48, 0x83, 0xe5, 0x22, 0x07, 0x5a, 0x88, 0xe0, 0x95, 0x87, 0x30, - 0x58, 0xd3, 0x17, 0x78, 0x46, 0x90, 0x8b, 0x78, 0x45, 0x6e, 0xc3, 0x80, 0xbf, 0xc7, 0xba, 0x98, - 0x97, 0xbd, 0xa8, 0xe8, 0x65, 0x05, 0x68, 0xc8, 0x3e, 0x95, 0x40, 0xa2, 0x39, 0xb3, 0x66, 0x08, - 0x53, 0xb4, 0x3b, 0x57, 0xd5, 0x2b, 0x78, 0xd9, 0x3a, 0x44, 0x24, 0xc3, 0x63, 0xe8, 0xd8, 0x27, - 0xb5, 0xbf, 0x38, 0x0f, 0xec, 0x94, 0xf0, 0xa9, 0xcf, 0x63, 0x38, 0x11, 0x7b, 0xf4, 0x3f, 0x6f, - 0xd7, 0xca, 0x26, 0xbf, 0x25, 0xb6, 0xd3, 0xc8, 0xe3, 0xdf, 0xe8, 0x82, 0xc3, 0x91, 0x53, 0xe9, - 0x70, 0x7b, 0x3f, 0xb8, 0xf7, 0x3b, 0x6e, 0xc1, 0xa0, 0xdb, 0x30, 0x2b, 0x15, 0xda, 0x78, 0x90, - 0xf5, 0x80, 0x31, 0x40, 0xd8, 0xfe, 0x9e, 0xc7, 0x51, 0xd8, 0x6d, 0x3a, 0xec, 0x38, 0x9f, 0x65, - 0xa5, 0x7d, 0x73, 0x03, 0xef, 0xbc, 0x79, 0x50, 0x14, 0x15, 0xc4, 0x8f, 0xd0, 0x75, 0x90, 0xdd, - 0x09, 0xd7, 0x41, 0xfa, 0x5a, 0xd7, 0x41, 0x3e, 0xa1, 0x05, 0x2e, 0xd5, 0xa5, 0x3a, 0x85, 0x04, - 0x7d, 0x06, 0xaf, 0x24, 0x5c, 0xcd, 0x74, 0x25, 0x21, 0xcc, 0x57, 0x5e, 0x4c, 0x58, 0x46, 0x41, - 0xf0, 0x74, 0xce, 0xb5, 0xab, 0x66, 0xe9, 0xe6, 0x13, 0x5a, 0x6a, 0x7a, 0x95, 0x17, 0x29, 0x5d, - 0x6e, 0x5a, 0xae, 0x59, 0xb7, 0x4c, 0xda, 0x50, 0x9a, 0x63, 0x36, 0xf1, 0x48, 0x4a, 0x85, 0x1d, - 0x2a, 0x36, 0x0f, 0x50, 0x95, 0xa5, 0x59, 0x7c, 0xd1, 0x47, 0xa6, 0x5f, 0x10, 0xd8, 0x55, 0x66, - 0x90, 0x15, 0xd7, 0x78, 0x44, 0x6f, 0x35, 0x8c, 0xd6, 0x6d, 0xb7, 0x49, 0xd8, 0x5d, 0xf1, 0x9e, - 0x29, 0x15, 0xcb, 0x6d, 0x7c, 0xd4, 0x3f, 0x23, 0xa1, 0xa9, 0x11, 0x52, 0x14, 0xf0, 0x2a, 0xf4, - 0xb0, 0xca, 0xb8, 0x98, 0x4c, 0x0d, 0x51, 0x9c, 0x09, 0xa7, 0xe7, 0x54, 0x64, 0x05, 0x5a, 0x87, - 0x22, 0x45, 0xce, 0x48, 0x01, 0x21, 0x23, 0xcf, 0x35, 0x38, 0xaf, 0x61, 0x1a, 0x78, 0xd6, 0x57, - 0x31, 0x9b, 0x60, 0x4f, 0xb3, 0x4d, 0x77, 0xc3, 0x6e, 0x98, 0x3f, 0xca, 0xae, 0xc4, 0x45, 0x34, - 0x6e, 0x04, 0x35, 0x6e, 0xf8, 0x6d, 0x91, 0x0b, 0xda, 0xe2, 0x43, 0xb8, 0x1c, 0x8f, 0xe3, 0x8a, - 0xc6, 0x38, 0x0b, 0xbd, 0x78, 0xdd, 0x8f, 0xf7, 0xd4, 0x0b, 0xd8, 0x53, 0x7b, 0xa3, 0x3d, 0xb5, - 0x54, 0x73, 0x0b, 0x58, 0x59, 0x6e, 0x03, 0x45, 0x39, 0x3b, 0x6d, 0x05, 0xf6, 0x52, 0x88, 0x43, - 0xc9, 0xd4, 0xf2, 0x0e, 0x2d, 0xe1, 0xfb, 0x59, 0x8c, 0xaa, 0x98, 0x45, 0xc8, 0x51, 0x46, 0xc8, - 0x99, 0x8b, 0x9b, 0xa3, 0xbd, 0x8c, 0x8d, 0xa3, 0xb2, 0xf3, 0x18, 0x63, 0x2d, 0xa4, 0x3e, 0x7e, - 0x06, 0xfa, 0x25, 0x0e, 0x8e, 0x8c, 0xc3, 0xa8, 0xf7, 0xb7, 0xf8, 0xb0, 0xe6, 0xd4, 0x69, 0xc9, - 0x5c, 0x37, 0x69, 0x79, 0x74, 0x17, 0xd9, 0x0d, 0x5d, 0x73, 0xcd, 0xad, 0x51, 0x8d, 0xf4, 0x41, - 0xf7, 0x0a, 0xb5, 0xac, 0xd1, 0xdc, 0xf1, 0x57, 0x61, 0x3c, 0xee, 0x92, 0xa3, 0xc7, 0xc0, 0x47, - 0xcb, 0x18, 0x8f, 0xee, 0x22, 0x63, 0x30, 0xe2, 0xe5, 0x92, 0xaf, 0xd9, 0x0d, 0xc7, 0x5d, 0xb5, - 0xe7, 0xa8, 0xe3, 0x8e, 0x6a, 0xa2, 0xd0, 0x7b, 0x5a, 0xb5, 0xd9, 0xab, 0xd1, 0xdc, 0xcc, 0x9f, - 0x53, 0xe8, 0x61, 0x76, 0x24, 0x9f, 0xd5, 0x60, 0x2c, 0xe6, 0x3b, 0x08, 0xe4, 0x5c, 0x5b, 0xc4, - 0x7f, 0xec, 0x67, 0x15, 0xf2, 0xe7, 0x33, 0xd3, 0xf1, 0x5e, 0xd3, 0x67, 0x7e, 0xea, 0x6f, 0xbe, - 0xfd, 0xa9, 0xdc, 0xcb, 0xe4, 0xf8, 0xb4, 0xc2, 0x17, 0x47, 0x50, 0xc8, 0xbf, 0xd0, 0x80, 0x44, - 0x3f, 0x3c, 0x40, 0x2e, 0x75, 0xf4, 0xb5, 0x02, 0x2e, 0xff, 0xe5, 0x6d, 0x7c, 0xe9, 0x40, 0xbf, - 0xce, 0x74, 0xb8, 0x48, 0xce, 0xab, 0xe8, 0x30, 0xed, 0x44, 0x25, 0xff, 0x8a, 0x06, 0x7b, 0x22, - 0xfc, 0xc9, 0xc5, 0xec, 0x32, 0x09, 0x75, 0x2e, 0x75, 0x42, 0x8a, 0xda, 0x5c, 0x63, 0xda, 0x5c, - 0x20, 0xe7, 0x3a, 0xd3, 0x86, 0xfc, 0x89, 0x06, 0xa3, 0xe1, 0x2f, 0x2b, 0x90, 0x0b, 0xca, 0xfe, - 0x11, 0xfa, 0x58, 0x43, 0xfe, 0x62, 0x07, 0x94, 0xa8, 0xc9, 0x55, 0xa6, 0xc9, 0x79, 0x72, 0x56, - 0x49, 0x13, 0x1a, 0x96, 0xf9, 0xcf, 0x34, 0x18, 0x09, 0x7d, 0xae, 0x80, 0xb4, 0xf7, 0xf3, 0xf8, - 0x8f, 0x3d, 0xe4, 0x2f, 0x64, 0x27, 0x44, 0x2d, 0x16, 0x99, 0x16, 0x37, 0xc8, 0x35, 0x25, 0x2d, - 0x42, 0x1f, 0x75, 0x98, 0x7e, 0x8a, 0xbd, 0xf3, 0x8c, 0xf5, 0x4b, 0xf8, 0xeb, 0x0b, 0x24, 0xb3, - 0x58, 0x19, 0xfa, 0x25, 0xe9, 0x53, 0x0f, 0x19, 0xfb, 0x25, 0xfc, 0x99, 0x0a, 0xf2, 0x2f, 0x1a, - 0xec, 0x8d, 0x85, 0xd0, 0x93, 0xab, 0xea, 0x32, 0xc5, 0x7c, 0x83, 0x21, 0x7f, 0xad, 0x53, 0x72, - 0xd4, 0xeb, 0x1e, 0xd3, 0xeb, 0x36, 0x59, 0xcc, 0xa6, 0x97, 0x9f, 0xd7, 0xf4, 0x53, 0x99, 0x5a, - 0x3d, 0x23, 0x6f, 0x6a, 0x30, 0x11, 0xff, 0xad, 0x00, 0xd2, 0xa1, 0xa8, 0xb2, 0xf7, 0xae, 0x77, - 0x4c, 0x8f, 0xba, 0xce, 0x33, 0x5d, 0xaf, 0x92, 0xcb, 0x9d, 0xeb, 0xea, 0x90, 0x2f, 0x68, 0x30, - 0xe8, 0xff, 0xf8, 0x02, 0x39, 0xd3, 0x56, 0xac, 0x98, 0x8f, 0x52, 0xe4, 0xcf, 0x66, 0xa4, 0x42, - 0x15, 0xe6, 0x98, 0x0a, 0x57, 0xc8, 0x25, 0x25, 0x15, 0x02, 0x9f, 0x95, 0x98, 0x7e, 0xca, 0x1e, - 0x9f, 0x91, 0xcf, 0x69, 0x30, 0x14, 0xf8, 0x7c, 0x04, 0xc9, 0x26, 0x8c, 0xec, 0x90, 0x73, 0x59, - 0xc9, 0x50, 0x89, 0xcb, 0x4c, 0x89, 0xb3, 0xe4, 0x74, 0x76, 0x25, 0x1c, 0xf2, 0x3b, 0x1a, 0x0c, - 0xf8, 0xd0, 0xcc, 0xe4, 0x74, 0xfb, 0x69, 0x23, 0x82, 0xc2, 0xce, 0x9f, 0xc9, 0x46, 0x84, 0x72, - 0x9f, 0x64, 0x72, 0x1f, 0x27, 0xc7, 0xd2, 0xe4, 0x76, 0xea, 0xb6, 0x3b, 0x8d, 0xcb, 0x68, 0xf2, - 0x19, 0x0d, 0xc0, 0x87, 0x5c, 0x9f, 0xc9, 0xd0, 0xac, 0x10, 0xf5, 0x74, 0x26, 0x1a, 0x94, 0xf4, - 0x0a, 0x93, 0xf4, 0x1c, 0x39, 0xa3, 0x2a, 0x69, 0x60, 0x0c, 0x7f, 0x4e, 0x83, 0x91, 0x10, 0x68, - 0x5c, 0x61, 0x12, 0x89, 0x07, 0xbc, 0x2b, 0x4c, 0x22, 0x09, 0xf8, 0x74, 0xfd, 0x2c, 0x53, 0x62, - 0x9a, 0x9c, 0x68, 0xab, 0xc4, 0x7a, 0xd3, 0xb2, 0x8a, 0xc2, 0xe6, 0x5f, 0x8a, 0x7e, 0x31, 0xe0, - 0x5c, 0x46, 0x19, 0xd4, 0x33, 0xc4, 0x78, 0x18, 0xba, 0x7e, 0x83, 0x89, 0x7e, 0x89, 0x5c, 0xc8, - 0x22, 0x7a, 0xa0, 0x0f, 0x3e, 0xaf, 0xc1, 0x50, 0xe0, 0x6b, 0x0d, 0x0a, 0x83, 0x34, 0xee, 0xb3, - 0x19, 0x0a, 0x83, 0x34, 0xf6, 0xa3, 0x10, 0x6a, 0x29, 0x15, 0x53, 0xc1, 0x16, 0xb4, 0x01, 0x05, - 0xbe, 0xae, 0xc1, 0x68, 0x18, 0x7d, 0xa7, 0x30, 0x75, 0x27, 0xc0, 0xcf, 0x15, 0xa6, 0xee, 0x24, - 0x28, 0xb3, 0x7e, 0x87, 0x69, 0x72, 0x93, 0xcc, 0xab, 0x69, 0x12, 0x18, 0x0b, 0xd3, 0x4f, 0x03, - 0xbb, 0x5a, 0xcf, 0xc8, 0x7f, 0x68, 0x30, 0x99, 0x04, 0x64, 0x26, 0x37, 0xda, 0xcf, 0x50, 0xe9, - 0xd8, 0xf7, 0xfc, 0xec, 0x36, 0x38, 0xa0, 0xba, 0x0f, 0x99, 0xba, 0xf7, 0xc9, 0x72, 0x27, 0xea, - 0xa2, 0xaa, 0x32, 0x05, 0x13, 0xa7, 0x03, 0xcf, 0xc8, 0xb7, 0xbd, 0x05, 0x4c, 0xe4, 0x4b, 0x04, - 0x2a, 0x0b, 0x98, 0xa4, 0xaf, 0x28, 0xa8, 0x2c, 0x60, 0x12, 0x3f, 0x7d, 0x90, 0x59, 0xcd, 0xe2, - 0xda, 0x16, 0x82, 0x6c, 0x52, 0xfb, 0xf7, 0x4b, 0x1a, 0x8c, 0x86, 0x3f, 0x7d, 0xa8, 0xe0, 0xb6, - 0x09, 0x1f, 0x64, 0xcc, 0x5f, 0xec, 0x80, 0x12, 0x15, 0xbc, 0xc4, 0x14, 0x3c, 0x43, 0x66, 0xd2, - 0x14, 0x14, 0x5d, 0x18, 0xd2, 0xe2, 0x3b, 0x1a, 0xec, 0x6f, 0x8d, 0x87, 0xd5, 0x86, 0x51, 0x73, - 0x4c, 0x5a, 0x7b, 0x4f, 0x47, 0xa1, 0x7a, 0x7f, 0xb9, 0x42, 0xdc, 0xa2, 0xc2, 0x78, 0xfc, 0x5b, - 0x74, 0xcb, 0x20, 0x82, 0x42, 0xd1, 0x2d, 0x63, 0x61, 0xed, 0x8a, 0x6e, 0x19, 0x0f, 0x66, 0x57, - 0x5b, 0xf9, 0xf0, 0x99, 0x37, 0x0c, 0x14, 0x09, 0x84, 0xcf, 0x7f, 0xd3, 0x60, 0x32, 0x09, 0x39, - 0xaf, 0x10, 0x67, 0xda, 0x40, 0xf7, 0x15, 0xe2, 0x4c, 0x3b, 0xd8, 0xbe, 0x7e, 0x97, 0x69, 0xba, - 0x48, 0x16, 0xd2, 0x34, 0x6d, 0x1d, 0x74, 0xb6, 0xd1, 0xf7, 0x1b, 0x1a, 0x8c, 0xc5, 0xa0, 0xcd, - 0xc9, 0xe5, 0x0c, 0x82, 0x46, 0xe6, 0xbe, 0x2b, 0x9d, 0x11, 0xa3, 0x82, 0x0b, 0x4c, 0xc1, 0x6b, - 0xe4, 0x8a, 0xa2, 0x82, 0xf1, 0xf3, 0xe0, 0xbf, 0x6a, 0x30, 0x11, 0x0f, 0xa0, 0x54, 0x58, 0x10, - 0xa5, 0x22, 0x78, 0x15, 0x16, 0x44, 0xe9, 0xc8, 0x4d, 0xfd, 0x83, 0x4c, 0xc3, 0x3b, 0x64, 0x29, - 0x8b, 0x86, 0xe9, 0xe3, 0xf1, 0xe7, 0x73, 0x70, 0x20, 0x1d, 0xb7, 0x49, 0x16, 0x33, 0xce, 0x71, - 0x49, 0xea, 0xdf, 0xda, 0x36, 0x1f, 0x34, 0xc3, 0x47, 0x98, 0x19, 0x1e, 0x92, 0x95, 0xce, 0xcd, - 0x90, 0x3c, 0x6f, 0xfe, 0x77, 0x60, 0x20, 0x87, 0x66, 0xcf, 0x1b, 0x59, 0x1d, 0x34, 0x32, 0x87, - 0xce, 0x6e, 0x83, 0xc3, 0xb6, 0xd4, 0x57, 0x9c, 0x4f, 0xff, 0x47, 0x83, 0x83, 0x61, 0x2f, 0x0c, - 0xcf, 0x47, 0xef, 0xf9, 0x38, 0xc8, 0x6a, 0x81, 0x4c, 0x33, 0xd4, 0x1f, 0x69, 0xb0, 0x27, 0x02, - 0xd5, 0x53, 0xd8, 0x28, 0x4d, 0x02, 0xdd, 0x2a, 0x6c, 0x94, 0x26, 0x22, 0x03, 0xf5, 0x73, 0x4c, - 0xd3, 0x93, 0x64, 0x4a, 0x35, 0x68, 0xa3, 0xb8, 0x5f, 0xd5, 0x60, 0x34, 0x02, 0x16, 0xbd, 0x90, - 0x59, 0x10, 0xf5, 0x3c, 0x22, 0x09, 0x31, 0xa8, 0xb6, 0x03, 0x12, 0xd5, 0x20, 0x10, 0x93, 0xbf, - 0xa3, 0xc1, 0xbe, 0x04, 0x8c, 0x1f, 0xb9, 0x9e, 0x59, 0xb4, 0x20, 0xc2, 0x30, 0x7f, 0xa3, 0x73, - 0x06, 0xa8, 0xe2, 0x12, 0x53, 0x71, 0x9e, 0xcc, 0x66, 0x52, 0x51, 0x84, 0x9c, 0x80, 0xa6, 0x7f, - 0xa5, 0xc1, 0x78, 0x1c, 0x28, 0x83, 0x5c, 0xc9, 0x90, 0x98, 0x46, 0xd0, 0x89, 0xf9, 0xab, 0x1d, - 0x52, 0x67, 0xd9, 0x9e, 0x90, 0x05, 0xe1, 0x01, 0xf5, 0x7b, 0x1a, 0x8c, 0x89, 0xfd, 0x73, 0x1f, - 0x34, 0x44, 0x61, 0x27, 0x28, 0x8a, 0x31, 0x51, 0xd8, 0x09, 0x8a, 0x41, 0x9f, 0xa8, 0xed, 0x04, - 0x55, 0x19, 0x61, 0x91, 0x01, 0x3e, 0xc8, 0x6f, 0x69, 0xd0, 0x2f, 0x21, 0x25, 0xe4, 0x54, 0xdb, - 0x56, 0xc3, 0xb8, 0x94, 0xfc, 0x4c, 0x16, 0x12, 0x14, 0xf3, 0x04, 0x13, 0xf3, 0x45, 0x72, 0x34, - 0x4d, 0xcc, 0xba, 0x94, 0xea, 0x2f, 0x35, 0x18, 0x8b, 0x41, 0x35, 0x92, 0x2c, 0x07, 0x4d, 0x11, - 0xb9, 0xaf, 0x74, 0x46, 0x9c, 0x65, 0xdb, 0x5d, 0x6a, 0x10, 0x71, 0x95, 0x7f, 0xd7, 0x20, 0x9f, - 0x8c, 0x9b, 0x24, 0x73, 0x1d, 0xc8, 0x16, 0x02, 0xa7, 0xe6, 0xe7, 0xb7, 0xc5, 0x23, 0xcb, 0x88, - 0x4f, 0x54, 0x33, 0x30, 0xe2, 0x7f, 0x29, 0x07, 0x47, 0x14, 0x70, 0x8b, 0xe4, 0x4e, 0x06, 0xb9, - 0xdb, 0x21, 0x74, 0xf3, 0x77, 0x77, 0x86, 0x19, 0x5a, 0x63, 0x85, 0x59, 0x63, 0x99, 0xdc, 0x49, - 0x0d, 0x0f, 0xf2, 0x7a, 0x82, 0x9a, 0x5d, 0xfe, 0x4e, 0x83, 0xb1, 0x18, 0x24, 0xa3, 0x82, 0x73, - 0x27, 0xc3, 0x30, 0x15, 0x9c, 0x3b, 0x05, 0x83, 0xa9, 0xdf, 0x64, 0x7a, 0x5e, 0x27, 0x57, 0x53, - 0x7b, 0x5d, 0x7e, 0x48, 0xc1, 0xf7, 0x69, 0x89, 0x80, 0x66, 0xdf, 0xd2, 0x60, 0x5f, 0x02, 0xd8, - 0x51, 0x61, 0x36, 0x4b, 0x47, 0x6d, 0x2a, 0xcc, 0x66, 0x6d, 0x20, 0x9b, 0xaa, 0x47, 0x16, 0x1e, - 0x93, 0x44, 0x15, 0xdf, 0xd6, 0x60, 0x22, 0x1e, 0x15, 0xa9, 0x90, 0x3c, 0xa6, 0x82, 0x3b, 0x15, - 0x92, 0xc7, 0x74, 0x64, 0xa7, 0x7e, 0x9b, 0xe9, 0x37, 0x47, 0x6e, 0x64, 0xea, 0x45, 0xfc, 0x1a, - 0x47, 0xa4, 0x23, 0x13, 0xe0, 0x9c, 0x0a, 0x1d, 0x99, 0x8e, 0x6d, 0x57, 0xe8, 0xc8, 0x36, 0x48, - 0x52, 0xb5, 0x8e, 0xe4, 0x57, 0xca, 0xc4, 0xa5, 0xcb, 0xb8, 0xed, 0xb5, 0x3d, 0x51, 0xc0, 0x99, - 0xe2, 0xb6, 0x52, 0x0c, 0x4e, 0x52, 0x21, 0x19, 0x4e, 0x84, 0x3b, 0xea, 0xe7, 0x99, 0x42, 0xa7, - 0xc8, 0x74, 0x9a, 0x42, 0x31, 0x48, 0x33, 0xf2, 0xd7, 0x1a, 0x4c, 0x3e, 0x68, 0x61, 0xd7, 0xbe, - 0x2f, 0x94, 0x51, 0xba, 0xd0, 0xe1, 0x47, 0xf5, 0x85, 0x95, 0xfa, 0xaa, 0xb8, 0xf3, 0x1c, 0x04, - 0x3d, 0x2a, 0x04, 0xc8, 0x64, 0x28, 0xa7, 0x42, 0x80, 0x4c, 0xc1, 0x78, 0xea, 0x17, 0x99, 0x4e, - 0xa7, 0xc9, 0x29, 0xe5, 0x0e, 0x12, 0xd0, 0x44, 0xf2, 0x96, 0x06, 0x13, 0xf1, 0x58, 0x34, 0x85, - 0x88, 0x91, 0x8a, 0x82, 0x53, 0x88, 0x18, 0xe9, 0x20, 0x38, 0xfd, 0x16, 0x53, 0x6b, 0x96, 0x5c, - 0x4f, 0x53, 0x2b, 0x00, 0x0d, 0xf3, 0x83, 0xe2, 0x7c, 0xd7, 0x23, 0xbc, 0x2e, 0x8b, 0x41, 0x82, - 0x29, 0x74, 0x59, 0x32, 0x76, 0x4d, 0xa1, 0xcb, 0x52, 0x40, 0x6d, 0x6a, 0x5d, 0x16, 0x0b, 0x7b, - 0x23, 0x5f, 0xd3, 0x60, 0x4f, 0x04, 0xbf, 0xa4, 0x30, 0x9c, 0x92, 0xa0, 0x6d, 0x0a, 0xc3, 0x29, - 0x11, 0x2e, 0xa5, 0xb6, 0xf9, 0x17, 0x05, 0x54, 0x4d, 0x3f, 0xf5, 0x81, 0xe9, 0x9e, 0x91, 0x7f, - 0xd4, 0x60, 0x5f, 0x02, 0xa4, 0x47, 0x21, 0xa2, 0xa7, 0xc3, 0xa9, 0x14, 0x22, 0x7a, 0x1b, 0x34, - 0x91, 0x5a, 0xcc, 0x10, 0xff, 0x1a, 0x26, 0x06, 0x70, 0x44, 0xfe, 0x49, 0x83, 0xfd, 0x89, 0xb0, - 0x1d, 0x32, 0x9b, 0xc5, 0x93, 0x62, 0x61, 0x45, 0xf9, 0xb9, 0xed, 0xb0, 0xc8, 0x72, 0xdd, 0x20, - 0xe0, 0x92, 0x0c, 0xa2, 0xea, 0xad, 0xdb, 0x1c, 0xf2, 0x69, 0x0d, 0x86, 0x83, 0x70, 0xa0, 0xf4, - 0xc5, 0x5b, 0x2c, 0xa8, 0x28, 0x7d, 0xf1, 0x16, 0x8f, 0x36, 0xd2, 0xcf, 0x30, 0xb1, 0xa7, 0xc8, - 0xcb, 0xa9, 0x6b, 0x4c, 0xd3, 0xb5, 0x8b, 0x1c, 0xc7, 0x63, 0x32, 0xe1, 0xbe, 0xae, 0xe1, 0xf7, - 0x0b, 0x22, 0x90, 0x1d, 0x85, 0x91, 0x94, 0x04, 0x16, 0x52, 0x18, 0x49, 0x89, 0x08, 0x21, 0xb5, - 0x5b, 0x37, 0x5c, 0x05, 0x99, 0x0b, 0x4d, 0x3f, 0x0d, 0x60, 0x93, 0x58, 0xf6, 0x3e, 0x11, 0x0f, - 0x01, 0x52, 0x08, 0xe7, 0xa9, 0xf0, 0x23, 0x85, 0x70, 0x9e, 0x8e, 0x3d, 0x52, 0xdb, 0xcd, 0xd8, - 0x90, 0x3c, 0x8a, 0x01, 0xa0, 0x12, 0x5b, 0x97, 0xc4, 0x40, 0xc5, 0x15, 0x62, 0x78, 0x32, 0x3a, - 0x5d, 0x21, 0x86, 0xa7, 0xa0, 0xd3, 0xd5, 0xd6, 0x25, 0x7e, 0xfc, 0x7a, 0xd1, 0x5e, 0xc7, 0x09, - 0xd8, 0xf1, 0xcd, 0x4e, 0xff, 0xac, 0xc1, 0xfe, 0x44, 0x54, 0xba, 0x42, 0x70, 0x68, 0x07, 0x7d, - 0x57, 0x08, 0x0e, 0x6d, 0x41, 0xf1, 0xfa, 0x2c, 0xd3, 0xf5, 0x32, 0xb9, 0x98, 0x9a, 0xd4, 0xc6, - 0x28, 0x5a, 0x94, 0x9f, 0xe3, 0xf8, 0x8a, 0x06, 0xa3, 0x61, 0x28, 0x93, 0xc2, 0xde, 0x68, 0x02, - 0x40, 0x2b, 0x7f, 0xb1, 0x03, 0xca, 0x2c, 0xca, 0xb4, 0xfe, 0x63, 0x14, 0x92, 0x07, 0xd6, 0x20, - 0x5f, 0xd4, 0x60, 0x3c, 0x06, 0x19, 0xa4, 0x72, 0x47, 0x2c, 0x0e, 0xc9, 0xa4, 0x70, 0xfd, 0x24, - 0x16, 0xcb, 0xa4, 0x76, 0xfa, 0xbd, 0xc6, 0x48, 0x05, 0x48, 0x4d, 0x6e, 0x56, 0xff, 0x6a, 0x0e, - 0x0e, 0xb7, 0xc5, 0xa8, 0x90, 0xa5, 0xcc, 0xa7, 0x06, 0x49, 0xe0, 0xa7, 0xfc, 0x2b, 0x3b, 0xc1, - 0x0a, 0x15, 0xff, 0x61, 0xa6, 0xf8, 0x6b, 0xe4, 0x61, 0xb6, 0xc3, 0xa8, 0x52, 0x8b, 0x61, 0xea, - 0x69, 0xc4, 0xf7, 0x34, 0xd0, 0xdb, 0xe3, 0x5c, 0xc8, 0x2b, 0x8a, 0x4e, 0xa8, 0x80, 0xbd, 0xc9, - 0xdf, 0xd9, 0x11, 0x5e, 0x59, 0x52, 0x16, 0x83, 0x71, 0xe2, 0x87, 0x33, 0x45, 0x6f, 0x66, 0x6f, - 0x81, 0x6e, 0xc8, 0x9f, 0x6a, 0x30, 0x1a, 0x46, 0xcd, 0xa8, 0x5c, 0x29, 0x8e, 0xc7, 0xe8, 0xa8, - 0x5c, 0x29, 0x4e, 0x80, 0xe8, 0xa8, 0x5d, 0x12, 0x33, 0xf8, 0x1e, 0x97, 0xe3, 0x91, 0x73, 0x94, - 0xc8, 0xf4, 0x53, 0x44, 0xbe, 0x3c, 0x23, 0xdf, 0xd4, 0x80, 0x44, 0x81, 0x1c, 0x0a, 0x97, 0x1f, - 0x12, 0x11, 0x38, 0x0a, 0x97, 0x1f, 0x92, 0x71, 0x36, 0x6a, 0x37, 0xad, 0x10, 0xea, 0xe2, 0x67, - 0x20, 0x54, 0x6a, 0x3c, 0xf3, 0x29, 0xf7, 0x75, 0x0d, 0xc6, 0x62, 0xb0, 0x33, 0xa4, 0x13, 0x09, - 0x33, 0x4c, 0x8c, 0x29, 0x70, 0x1d, 0xb5, 0x1d, 0x90, 0x18, 0xfd, 0x9c, 0x96, 0x82, 0x73, 0x1b, - 0x5f, 0x7e, 0xeb, 0x80, 0xf6, 0xb5, 0xb7, 0x0e, 0x68, 0xdf, 0x7a, 0xeb, 0x80, 0xf6, 0x8b, 0x6f, - 0x1f, 0xd8, 0xf5, 0xb5, 0xb7, 0x0f, 0xec, 0xfa, 0xfb, 0xb7, 0x0f, 0xec, 0x7a, 0xfd, 0x5e, 0xc5, - 0x74, 0x37, 0x9a, 0x6b, 0x53, 0x25, 0xbb, 0x3a, 0xbd, 0x24, 0xf8, 0xdf, 0x35, 0xd6, 0x9c, 0x56, - 0x6b, 0x27, 0x4a, 0x76, 0x83, 0xfa, 0x1f, 0x37, 0x0c, 0xb3, 0x86, 0x07, 0x0d, 0x4e, 0x4b, 0x14, - 0x77, 0xab, 0x4e, 0x9d, 0xb5, 0x5e, 0xf6, 0x4f, 0x68, 0x4f, 0xff, 0x6f, 0x00, 0x00, 0x00, 0xff, - 0xff, 0x1e, 0xed, 0xe6, 0xe6, 0x7a, 0x77, 0x00, 0x00, + // 5988 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x3d, 0x6d, 0x8c, 0x1c, 0xc9, + 0x55, 0xee, 0xd9, 0x0f, 0xef, 0xbe, 0xfd, 0x74, 0xed, 0x7a, 0xbd, 0x9e, 0xbb, 0xf3, 0x47, 0x3b, + 0xbe, 0xf3, 0x39, 0xe7, 0x1d, 0x7b, 0xfd, 0xfd, 0xed, 0x9d, 0x5d, 0xaf, 0xbd, 0xe7, 0x5d, 0xdb, + 0x37, 0xbb, 0xbe, 0xcb, 0x5d, 0x80, 0x49, 0xef, 0x4c, 0xef, 0x6c, 0x9f, 0x7b, 0xa6, 0xc7, 0xd3, + 0x3d, 0x7b, 0x5e, 0x8c, 0x11, 0x10, 0x50, 0x22, 0x90, 0x00, 0x29, 0x02, 0x84, 0x40, 0x08, 0xf8, + 0xc1, 0x0f, 0x44, 0x84, 0x44, 0x84, 0x40, 0x89, 0x94, 0x28, 0x04, 0xa1, 0x70, 0x41, 0x70, 0x90, + 0x23, 0xa0, 0x08, 0x8e, 0xe8, 0x2e, 0x10, 0xe5, 0x04, 0x12, 0xbf, 0x90, 0x10, 0x28, 0x41, 0x5d, + 0xf5, 0xaa, 0xa6, 0xbf, 0xa7, 0x7a, 0x76, 0x4f, 0xbe, 0x90, 0x5f, 0xde, 0xa9, 0xae, 0xf7, 0xea, + 0xbd, 0x7a, 0xaf, 0xde, 0x7b, 0x55, 0xf5, 0x5e, 0x19, 0x9e, 0x35, 0x6a, 0xaf, 0xeb, 0x25, 0xc7, + 0xd8, 0xd0, 0x73, 0xfa, 0xc3, 0xd2, 0xba, 0x56, 0xab, 0xe8, 0xb9, 0x8d, 0x13, 0xab, 0xba, 0xa3, + 0x9d, 0xc8, 0x3d, 0x68, 0xea, 0x8d, 0xcd, 0xa9, 0x7a, 0xc3, 0x72, 0x2c, 0x92, 0x15, 0xfd, 0xa6, + 0x78, 0xbf, 0x29, 0xec, 0x97, 0x7d, 0xba, 0x62, 0x59, 0x15, 0x53, 0xcf, 0x69, 0x75, 0x23, 0xa7, + 0xd5, 0x6a, 0x96, 0xa3, 0x39, 0x86, 0x55, 0xb3, 0x19, 0x64, 0xf6, 0xf9, 0x84, 0x11, 0x04, 0x2a, + 0xd6, 0xf5, 0x48, 0x42, 0xd7, 0x8a, 0x5e, 0xd3, 0x6d, 0x83, 0x23, 0x3d, 0xdc, 0xea, 0x69, 0x35, + 0xb4, 0x92, 0xd9, 0xea, 0xc7, 0x7e, 0x62, 0xb7, 0xf1, 0x8a, 0x55, 0xb1, 0xe8, 0x9f, 0x39, 0xf7, + 0x2f, 0xd6, 0xaa, 0xde, 0x01, 0x58, 0x6e, 0xae, 0x6a, 0xa5, 0x92, 0xd5, 0xac, 0x39, 0x64, 0x02, + 0x7a, 0x9d, 0x86, 0x56, 0xd6, 0x1b, 0x93, 0xca, 0x01, 0xe5, 0x48, 0x7f, 0x01, 0x7f, 0x91, 0xe7, + 0x61, 0xd4, 0x16, 0xbd, 0x8a, 0x35, 0xab, 0x56, 0xd2, 0x27, 0x33, 0x07, 0x94, 0x23, 0x43, 0x85, + 0x91, 0x56, 0xfb, 0x6d, 0xb7, 0x59, 0xfd, 0x04, 0x3c, 0xfd, 0x92, 0x3b, 0x57, 0x2d, 0xac, 0x77, + 0x1a, 0x65, 0xbd, 0x61, 0x17, 0xf4, 0x07, 0x4d, 0xdd, 0x76, 0xc8, 0x21, 0x18, 0xf2, 0xa0, 0x32, + 0xca, 0x38, 0xd2, 0x60, 0xab, 0x71, 0xa1, 0x4c, 0x9e, 0x82, 0xfe, 0xaa, 0xd6, 0xb8, 0xaf, 0xd3, + 0x0e, 0x19, 0xda, 0xa1, 0x8f, 0x35, 0x2c, 0x94, 0xd5, 0x2f, 0x2b, 0xf0, 0x4c, 0xcc, 0x10, 0x76, + 0xdd, 0xaa, 0xd9, 0x3a, 0xb9, 0x0d, 0xb0, 0xda, 0xdc, 0x2c, 0x5a, 0xb4, 0x75, 0x52, 0x39, 0xd0, + 0x75, 0x64, 0x60, 0x3a, 0x37, 0x15, 0x2f, 0xb5, 0xa9, 0x00, 0xa6, 0x39, 0xcd, 0xd1, 0x0a, 0xfd, + 0xab, 0xcd, 0x4d, 0x86, 0x97, 0xdc, 0x85, 0x01, 0x5b, 0x37, 0x4d, 0x8e, 0x30, 0xd3, 0x19, 0x42, + 0x70, 0x71, 0x30, 0x8c, 0xea, 0x1f, 0x2a, 0x70, 0x38, 0xd0, 0x67, 0xd5, 0xb2, 0xee, 0x2f, 0xe9, + 0x8e, 0x56, 0xd6, 0x1c, 0xed, 0x15, 0xc3, 0x59, 0x5f, 0xa2, 0xfc, 0x92, 0x65, 0xe8, 0xab, 0x62, + 0x2b, 0x9d, 0xaa, 0x81, 0xe9, 0xb3, 0x29, 0x06, 0xf6, 0x22, 0x2d, 0x08, 0x44, 0x89, 0xf3, 0x4b, + 0xc6, 0xa1, 0xc7, 0xb0, 0xf3, 0xcd, 0xcd, 0xc9, 0xae, 0x03, 0xca, 0x91, 0xbe, 0x02, 0xfb, 0xa1, + 0x3e, 0x0d, 0x59, 0x3a, 0xe9, 0xd7, 0x71, 0xc4, 0xbb, 0x5a, 0x43, 0xab, 0x72, 0xa9, 0xaa, 0x45, + 0x78, 0x2a, 0xf2, 0x2b, 0x0a, 0xe4, 0x1a, 0xf4, 0xd6, 0x69, 0x0b, 0xb2, 0xa0, 0x26, 0xb1, 0xc0, + 0x60, 0xf3, 0xdd, 0x5f, 0x7d, 0x67, 0xff, 0x8e, 0x02, 0xc2, 0xa9, 0x9f, 0x51, 0x60, 0x5f, 0x40, + 0xe8, 0x73, 0x7a, 0xdd, 0xb2, 0x0d, 0x27, 0x9d, 0x66, 0x2d, 0x02, 0xb4, 0x7e, 0x53, 0xd6, 0x07, + 0xa6, 0x9f, 0x95, 0x9b, 0x50, 0x4a, 0x91, 0x52, 0xf0, 0xc0, 0xab, 0xef, 0x2b, 0xb0, 0x3f, 0x96, + 0x2a, 0xe4, 0x5d, 0x87, 0xbe, 0x32, 0xb6, 0xa1, 0x2a, 0x2e, 0x24, 0x8d, 0xd7, 0x06, 0xdd, 0x14, + 0x6f, 0xb8, 0x5e, 0x73, 0x1a, 0x9b, 0x05, 0x81, 0x3a, 0xfb, 0x09, 0x18, 0xf2, 0x7d, 0x22, 0xa3, + 0xd0, 0x75, 0x5f, 0xdf, 0xc4, 0x49, 0x70, 0xff, 0x24, 0xe7, 0xa1, 0x67, 0x43, 0x33, 0x9b, 0x3a, + 0xb2, 0x7d, 0x28, 0x89, 0x0c, 0xc4, 0x55, 0x60, 0x10, 0x17, 0x32, 0xe7, 0x14, 0x75, 0x1f, 0xae, + 0x6c, 0x2e, 0xe3, 0xbc, 0x66, 0x6a, 0xb5, 0x92, 0x2e, 0x74, 0x60, 0x0d, 0x97, 0x65, 0xf8, 0x3b, + 0xce, 0xc4, 0x75, 0xe8, 0x5b, 0xc5, 0x36, 0x9c, 0x89, 0x44, 0x12, 0x10, 0x1e, 0x15, 0x41, 0x80, + 0xaa, 0x67, 0x51, 0xd7, 0x66, 0x2a, 0x95, 0x86, 0x5e, 0xd1, 0x1c, 0xfd, 0x65, 0xcb, 0x6c, 0x56, + 0x75, 0xae, 0x06, 0x93, 0xb0, 0x93, 0x8b, 0x97, 0xf1, 0xce, 0x7f, 0xaa, 0x4d, 0x64, 0x20, 0x04, + 0x88, 0xf4, 0xdd, 0x83, 0x5d, 0x1a, 0xff, 0x54, 0xdc, 0xa0, 0xdf, 0x38, 0xa1, 0x47, 0x92, 0x08, + 0x65, 0x2b, 0x15, 0x91, 0x8d, 0x6a, 0x7e, 0xec, 0xb6, 0xfa, 0x6a, 0xf4, 0xb0, 0x42, 0x6f, 0xb3, + 0xd0, 0x87, 0x14, 0xb2, 0xd1, 0xfa, 0x0b, 0xe2, 0x37, 0x79, 0x06, 0x40, 0x2c, 0x54, 0x66, 0x78, + 0xfa, 0x0b, 0xfd, 0x7c, 0xa5, 0xda, 0xea, 0x7f, 0x73, 0x53, 0x18, 0xc6, 0x8d, 0x3c, 0x39, 0xb0, + 0xb7, 0xc5, 0x13, 0x5f, 0x1b, 0x7e, 0xde, 0xce, 0x25, 0xf1, 0x26, 0x10, 0xcf, 0x30, 0x58, 0x3e, + 0x65, 0x25, 0xab, 0x51, 0x2e, 0xec, 0xd1, 0x22, 0xbf, 0xda, 0x64, 0x15, 0x26, 0x5b, 0xa3, 0x22, + 0x03, 0x7c, 0xd0, 0x4c, 0xca, 0x09, 0x9d, 0x10, 0x98, 0xbc, 0xcd, 0xb6, 0x7a, 0x0d, 0x0e, 0xfa, + 0x59, 0xf7, 0x41, 0xe1, 0xdc, 0xfa, 0x0c, 0x9d, 0x12, 0x70, 0x24, 0x26, 0xa8, 0x49, 0x18, 0x70, + 0x06, 0xe7, 0xa1, 0x97, 0x91, 0x8e, 0xb6, 0x2b, 0x91, 0x72, 0xef, 0xf4, 0x70, 0x0b, 0xc6, 0xa0, + 0xd5, 0xe3, 0x30, 0x49, 0x47, 0x9b, 0xd3, 0x6b, 0x56, 0x75, 0x4e, 0x2f, 0x19, 0x55, 0xcd, 0xe4, + 0x64, 0x8e, 0x43, 0x4f, 0xd9, 0x6d, 0x46, 0x12, 0xd9, 0x0f, 0xf5, 0x34, 0xec, 0x8d, 0x80, 0x40, + 0xb2, 0x26, 0x61, 0x67, 0x99, 0x35, 0x51, 0xa0, 0xee, 0x02, 0xff, 0xa9, 0x9e, 0x8c, 0x00, 0x13, + 0xca, 0x36, 0x01, 0xbd, 0x14, 0x39, 0x57, 0x35, 0xfc, 0xa5, 0x3a, 0x68, 0xde, 0x03, 0x40, 0x38, + 0xd8, 0xcb, 0x30, 0x4c, 0xfb, 0x15, 0x71, 0x0c, 0xae, 0x3a, 0xcf, 0x27, 0x9b, 0x10, 0x0f, 0x2a, + 0x9c, 0x8c, 0xa1, 0xb2, 0xb7, 0x51, 0x9d, 0x4d, 0x92, 0x80, 0xa0, 0xd9, 0xbf, 0x08, 0x94, 0xe0, + 0x22, 0x30, 0xe0, 0x50, 0x22, 0x12, 0xe4, 0x21, 0x0f, 0x3b, 0x3b, 0x5d, 0xd3, 0x1c, 0x50, 0x7d, + 0x2d, 0x14, 0x79, 0x70, 0x3b, 0x99, 0xc6, 0x07, 0x09, 0x69, 0x67, 0xbc, 0xd2, 0xd6, 0xe2, 0x1c, + 0x9c, 0xe0, 0xe0, 0xaa, 0xcf, 0x93, 0x48, 0x9b, 0x70, 0x01, 0xa4, 0xde, 0x85, 0x3d, 0x6c, 0x88, + 0xba, 0xe5, 0x30, 0x06, 0xbd, 0x7a, 0x61, 0x3b, 0x9a, 0xd3, 0xb4, 0x79, 0xe4, 0xc7, 0x7e, 0xb5, + 0x33, 0x40, 0x3f, 0x82, 0x4a, 0xed, 0xc3, 0x28, 0x9c, 0xfe, 0x4e, 0xd6, 0x91, 0x4f, 0x78, 0xb2, + 0x9f, 0x15, 0x18, 0x0a, 0x1c, 0x4c, 0x3d, 0x0d, 0x13, 0x01, 0xec, 0x52, 0xeb, 0xfa, 0xd5, 0x10, + 0x9b, 0x82, 0xa6, 0x2b, 0xd0, 0xcb, 0xba, 0xe1, 0x04, 0xca, 0x92, 0x84, 0x50, 0xea, 0x37, 0x32, + 0xb8, 0xb8, 0xdc, 0x6f, 0x22, 0xc2, 0x92, 0xa1, 0xca, 0x95, 0xba, 0x69, 0x54, 0x0d, 0x16, 0x74, + 0x74, 0x17, 0xd8, 0x0f, 0x32, 0x07, 0x40, 0xa3, 0xca, 0xa2, 0x6d, 0x94, 0x75, 0x1a, 0x71, 0x0d, + 0x4f, 0x1f, 0x4e, 0x22, 0x8a, 0x0e, 0xba, 0x6c, 0x94, 0xf5, 0x42, 0xbf, 0xc5, 0xff, 0x24, 0x45, + 0xd8, 0x4b, 0xd1, 0x15, 0x4b, 0xcd, 0x6a, 0xd3, 0xd4, 0x5c, 0xc8, 0x62, 0xcd, 0x72, 0x77, 0x1e, + 0x9a, 0x39, 0xd9, 0xed, 0x12, 0x92, 0x3f, 0xe4, 0x06, 0x2f, 0xdf, 0x7c, 0x67, 0xff, 0x53, 0x25, + 0xcb, 0xae, 0x5a, 0xb6, 0x5d, 0xbe, 0x3f, 0x65, 0x58, 0xb9, 0xaa, 0xe6, 0xac, 0x4f, 0x2d, 0xea, + 0x15, 0xad, 0xb4, 0x39, 0xa7, 0x97, 0x0a, 0x7b, 0x28, 0x96, 0x59, 0x81, 0xe4, 0x36, 0xe2, 0x88, + 0x1c, 0xe0, 0x41, 0x53, 0xab, 0x39, 0x86, 0xb3, 0x39, 0xd9, 0xd3, 0xf9, 0x00, 0x2f, 0x21, 0x0e, + 0xf5, 0x4f, 0x15, 0x34, 0x40, 0x81, 0x89, 0x45, 0xb9, 0xdd, 0x82, 0xd1, 0xd5, 0xe6, 0xa6, 0x5d, + 0xac, 0x37, 0x8c, 0x92, 0x5e, 0x34, 0xf5, 0x0d, 0xdd, 0x44, 0xa5, 0x3a, 0x98, 0x34, 0x59, 0x8b, + 0x6e, 0xc7, 0xc2, 0xb0, 0x0b, 0x7a, 0xd7, 0x85, 0xa4, 0xbf, 0xc9, 0x12, 0xec, 0x72, 0x43, 0x71, + 0x3f, 0xb6, 0x8c, 0x2c, 0xb6, 0x11, 0x0a, 0xdb, 0x42, 0xa7, 0x7e, 0x56, 0x81, 0xe1, 0xf9, 0xa6, + 0x69, 0xb6, 0xd4, 0x65, 0xab, 0x6a, 0x46, 0x3e, 0x0e, 0xbb, 0xaa, 0x46, 0x19, 0xe9, 0xd3, 0x6a, + 0xe5, 0xa2, 0x63, 0xad, 0x62, 0xd4, 0x76, 0x34, 0xd1, 0x6a, 0x19, 0x65, 0x4a, 0xd8, 0x4c, 0xad, + 0xbc, 0x72, 0x27, 0x8f, 0x01, 0xeb, 0x70, 0xd5, 0xd3, 0x6a, 0xad, 0xaa, 0x9f, 0x56, 0x30, 0x80, + 0xf2, 0x13, 0xbd, 0x45, 0x53, 0x40, 0xa6, 0x61, 0xe2, 0x0d, 0xc3, 0x59, 0x2f, 0x86, 0x09, 0x67, + 0xfb, 0x08, 0xe2, 0x7e, 0x5d, 0xf2, 0x93, 0x52, 0xc6, 0xd0, 0x28, 0x44, 0x09, 0x8a, 0x7d, 0x2e, + 0x68, 0x42, 0x12, 0xb9, 0xf7, 0x63, 0x69, 0x99, 0x91, 0x2a, 0xaa, 0x56, 0xe0, 0xbb, 0xcc, 0xa2, + 0x8d, 0x67, 0x2a, 0x13, 0xcb, 0x94, 0x16, 0x39, 0xbd, 0x1e, 0x3f, 0xe4, 0xd7, 0x8d, 0x34, 0x2c, + 0x71, 0x33, 0xf4, 0x73, 0x62, 0x37, 0xc4, 0x57, 0x8b, 0x9d, 0xdf, 0xbc, 0xa9, 0xd9, 0xeb, 0x2d, + 0xa7, 0x99, 0xc8, 0x56, 0xc8, 0x4d, 0x65, 0x22, 0xdc, 0xd4, 0x41, 0x18, 0x64, 0xa6, 0x69, 0x9d, + 0x22, 0x9e, 0xec, 0xa2, 0x12, 0x1f, 0xa0, 0x6d, 0x6c, 0x2c, 0xd5, 0xe4, 0xdb, 0x9f, 0x08, 0x32, + 0x90, 0xdd, 0x05, 0xe8, 0xf5, 0xed, 0xc3, 0x4f, 0x24, 0xb1, 0xbb, 0xd2, 0x30, 0xaa, 0x55, 0xbd, + 0xec, 0xa2, 0x5b, 0x74, 0x0d, 0x05, 0xc5, 0x59, 0x40, 0x04, 0xe2, 0x68, 0x61, 0x85, 0x1e, 0x4a, + 0xb4, 0xc6, 0xdc, 0x36, 0x96, 0x55, 0x13, 0x3e, 0xc2, 0x42, 0x09, 0xd6, 0x32, 0x53, 0x2e, 0x37, + 0x74, 0xdb, 0x4e, 0x39, 0xd2, 0x73, 0x30, 0xc2, 0x87, 0xd1, 0x18, 0x02, 0x1c, 0x6b, 0x58, 0xf3, + 0xa1, 0x55, 0x7f, 0x23, 0x03, 0xbb, 0x23, 0x39, 0x76, 0x77, 0x6a, 0x54, 0xdb, 0x18, 0x6e, 0x6a, + 0x5a, 0x77, 0xb4, 0x33, 0xad, 0x0c, 0xc2, 0x0d, 0x12, 0x84, 0x61, 0xce, 0xc8, 0x43, 0x0b, 0x20, + 0x17, 0xc1, 0x9a, 0x61, 0x9a, 0xda, 0xaa, 0xc9, 0xfc, 0x91, 0x2c, 0x02, 0x0e, 0xd4, 0x3a, 0x3f, + 0xe8, 0xf6, 0x9c, 0x1f, 0xb8, 0xd6, 0xa3, 0xa5, 0x4d, 0xcc, 0x65, 0xa0, 0x07, 0x73, 0x15, 0xc6, + 0xdd, 0xad, 0x96, 0x8c, 0xf2, 0x64, 0x2f, 0xdb, 0xad, 0x96, 0x8c, 0xb2, 0xfa, 0x3a, 0xc6, 0x5a, + 0x61, 0x69, 0x6f, 0xbf, 0x66, 0x35, 0xe0, 0x70, 0x1b, 0xb9, 0x6f, 0xff, 0x98, 0x97, 0x3d, 0x4b, + 0xd8, 0x6f, 0xb7, 0xa5, 0x82, 0x9c, 0xff, 0x51, 0x3c, 0x6b, 0x2f, 0x08, 0x2f, 0x22, 0xb0, 0x7e, + 0x61, 0xb8, 0x3c, 0xaa, 0xd4, 0xd6, 0x4b, 0xf7, 0x71, 0x8f, 0x41, 0x16, 0x60, 0x78, 0x55, 0xb7, + 0x9d, 0xe2, 0x6a, 0x73, 0x13, 0xd1, 0x64, 0xe4, 0xd1, 0x0c, 0xba, 0xa0, 0xf9, 0xe6, 0x26, 0x43, + 0x75, 0x0b, 0x46, 0x28, 0x2a, 0x7a, 0x92, 0xc6, 0x70, 0x75, 0xc9, 0xe3, 0x1a, 0x72, 0x61, 0x97, + 0x75, 0xd3, 0xa4, 0xc8, 0xd4, 0x59, 0x5c, 0xa8, 0x73, 0x7a, 0xc3, 0xd8, 0xa0, 0x91, 0x44, 0x07, + 0x53, 0xf8, 0xd3, 0x19, 0x14, 0x7b, 0x3c, 0x96, 0xff, 0xf7, 0x13, 0xf9, 0xc7, 0x5c, 0x8d, 0x5a, + 0x73, 0xb0, 0x1d, 0x61, 0x6d, 0x62, 0x40, 0xda, 0xb5, 0xf5, 0x80, 0x54, 0xfd, 0xa2, 0x02, 0x07, + 0xe2, 0xe9, 0xfe, 0x01, 0x88, 0x1a, 0x7f, 0xb3, 0x0b, 0xa6, 0x22, 0xed, 0xdb, 0x8a, 0x35, 0xab, + 0xd5, 0x4a, 0xba, 0x79, 0xaf, 0xbe, 0x62, 0xcd, 0x54, 0x5d, 0x73, 0xb4, 0x7d, 0x2e, 0x7d, 0x0e, + 0x06, 0x56, 0x35, 0x5b, 0x2f, 0x6a, 0x14, 0x6f, 0x1a, 0xf3, 0x0e, 0x2e, 0x1c, 0x23, 0x87, 0xcc, + 0xc3, 0xe0, 0x83, 0xa6, 0xe5, 0x08, 0x34, 0xdd, 0xf2, 0x68, 0x06, 0x28, 0x20, 0xe2, 0x59, 0x84, + 0x3e, 0xdb, 0x69, 0x68, 0x8e, 0x5e, 0x61, 0x7b, 0x88, 0xe1, 0xe9, 0xe3, 0x49, 0x13, 0xc9, 0xa6, + 0xc5, 0xa4, 0x17, 0x2a, 0xcb, 0x08, 0x57, 0x10, 0x18, 0xc8, 0x22, 0x8c, 0x34, 0xf4, 0x35, 0xbd, + 0xa1, 0xd7, 0x4a, 0x3a, 0x2e, 0x8b, 0x5e, 0x79, 0x45, 0x1b, 0x16, 0xb0, 0x6c, 0x5d, 0xfc, 0x53, + 0x06, 0x4e, 0x79, 0xc4, 0x13, 0xd0, 0xb2, 0x0f, 0x54, 0x48, 0xc1, 0xe9, 0xed, 0xda, 0x86, 0xe9, + 0xed, 0xfe, 0x20, 0xa6, 0xb7, 0xa7, 0xf3, 0xe9, 0x5d, 0xc3, 0x83, 0x9f, 0xe8, 0xd9, 0xdd, 0xbe, + 0x80, 0xae, 0x01, 0x47, 0x23, 0x1c, 0x7b, 0x47, 0xe3, 0x49, 0x87, 0x75, 0xdf, 0xcd, 0xc0, 0x53, + 0xe8, 0xfa, 0x5b, 0x03, 0x7d, 0x48, 0x82, 0xbb, 0x8b, 0x74, 0xf3, 0x51, 0x31, 0x6a, 0x69, 0xb4, + 0x0a, 0x41, 0x7c, 0x91, 0x61, 0x77, 0x27, 0x91, 0xe1, 0x7e, 0x1e, 0x19, 0xba, 0x9a, 0xd3, 0x97, + 0xef, 0x7f, 0xff, 0x9d, 0xfd, 0xac, 0x21, 0x3a, 0x48, 0xec, 0x8d, 0x09, 0x12, 0x77, 0xb6, 0x82, + 0xc4, 0x0d, 0x3c, 0xfb, 0x8b, 0xd3, 0x23, 0x74, 0x04, 0x77, 0x02, 0x61, 0xdb, 0x59, 0x89, 0xb0, + 0x2d, 0x4a, 0x76, 0x22, 0x78, 0xfb, 0x49, 0xf8, 0xa8, 0x94, 0x5e, 0x7d, 0x50, 0xe3, 0xff, 0x82, + 0x12, 0x0a, 0x80, 0x9e, 0xe0, 0x36, 0xf0, 0x61, 0x28, 0x8e, 0x8a, 0xd9, 0x0c, 0x6e, 0xfb, 0x3c, + 0xfc, 0x3c, 0xbf, 0x00, 0xf1, 0x84, 0x70, 0x4f, 0xec, 0x34, 0xe3, 0xd3, 0x0a, 0x80, 0x27, 0x60, + 0x78, 0x82, 0xeb, 0x5c, 0xfd, 0x92, 0x02, 0xe3, 0x77, 0xf5, 0x46, 0x5d, 0x77, 0x9a, 0x9a, 0xc9, + 0x66, 0x64, 0xd9, 0xd1, 0x1c, 0x9d, 0xdc, 0x85, 0x01, 0xce, 0x76, 0x6d, 0xcd, 0xc2, 0x23, 0x88, + 0xc4, 0xab, 0xec, 0x00, 0x9a, 0x85, 0xda, 0x9a, 0x55, 0xc0, 0xa9, 0x73, 0xff, 0x26, 0xf7, 0x60, + 0x70, 0xad, 0x59, 0x2b, 0x1b, 0xb5, 0x0a, 0x43, 0xc9, 0x8e, 0xa9, 0xa6, 0x53, 0xa0, 0x9c, 0x67, + 0xe0, 0x85, 0x01, 0xc4, 0xe3, 0xa2, 0x55, 0x3f, 0xdf, 0x05, 0xe3, 0xf3, 0x4d, 0xd3, 0x0c, 0x0a, + 0x96, 0xcc, 0x05, 0xce, 0x4f, 0x5e, 0x48, 0x3e, 0x03, 0xf7, 0x43, 0x8b, 0x13, 0xb6, 0x57, 0x61, + 0xb8, 0xce, 0xa9, 0xf0, 0xd2, 0x7d, 0x3c, 0x05, 0xdd, 0x74, 0x46, 0x6f, 0xee, 0x28, 0x0c, 0x09, + 0x4c, 0x74, 0x42, 0x3e, 0xe6, 0x4e, 0x88, 0xd3, 0x6c, 0xe8, 0x36, 0x43, 0xdc, 0x45, 0x11, 0x9f, + 0x4c, 0x42, 0x7c, 0xfd, 0x61, 0xdd, 0x68, 0x6c, 0xce, 0x33, 0xa8, 0xd6, 0x3c, 0xdf, 0xdc, 0xe1, + 0xce, 0x09, 0x6d, 0xa4, 0x98, 0xf3, 0x4c, 0x67, 0xd1, 0xfd, 0xa6, 0x30, 0xc1, 0x54, 0xb1, 0xd9, + 0xee, 0x21, 0xf2, 0x68, 0xb1, 0x67, 0x7b, 0x8e, 0x16, 0xf3, 0xbd, 0xd0, 0xed, 0xb2, 0xac, 0x9a, + 0xb8, 0xb7, 0x8d, 0x58, 0x95, 0x68, 0x09, 0x5e, 0x0c, 0x9e, 0xec, 0x1d, 0x6f, 0x77, 0x0c, 0x16, + 0x12, 0xa5, 0x38, 0xdf, 0xbb, 0x88, 0xe7, 0x42, 0xa1, 0x1e, 0x32, 0x9b, 0x40, 0x23, 0xc6, 0x80, + 0x08, 0x4a, 0x6f, 0x06, 0xf4, 0x2d, 0x3d, 0xa1, 0xfc, 0xd4, 0x2e, 0x8f, 0xce, 0x2a, 0xd8, 0x01, + 0xbd, 0x87, 0x14, 0xb9, 0x7a, 0x78, 0xe3, 0xeb, 0xc7, 0xd1, 0xba, 0x1e, 0xe4, 0x51, 0x0a, 0xbf, + 0x05, 0x67, 0x3f, 0xe5, 0xe2, 0xa6, 0x1b, 0xb8, 0xbb, 0x6a, 0x5d, 0x46, 0x51, 0x0f, 0x4b, 0x53, + 0x7c, 0xd2, 0xdc, 0x75, 0xa9, 0xf3, 0xa1, 0x04, 0x89, 0xbb, 0x96, 0x6d, 0xd0, 0x9c, 0xa8, 0x54, + 0x78, 0x5e, 0x87, 0x67, 0x63, 0xf0, 0x2c, 0xd4, 0xfc, 0xd2, 0xde, 0x7a, 0x82, 0x91, 0x0d, 0xb9, + 0xc0, 0x58, 0xd7, 0xd7, 0xd6, 0x98, 0xc4, 0x3f, 0xb8, 0x41, 0x5f, 0x44, 0xe5, 0x08, 0x24, 0xf0, + 0x88, 0xe4, 0x9d, 0x34, 0x93, 0x55, 0x0b, 0x49, 0xcf, 0x33, 0xe9, 0x62, 0x01, 0xf6, 0xb8, 0x9e, + 0x50, 0xc7, 0xe5, 0x37, 0x25, 0x67, 0x45, 0x39, 0x1e, 0xbc, 0xce, 0x65, 0x28, 0xd4, 0xfb, 0xf0, + 0x5c, 0x5b, 0xe1, 0x88, 0x93, 0x14, 0x31, 0xac, 0xbb, 0x98, 0x3e, 0x92, 0x68, 0x6e, 0xbd, 0x83, + 0x29, 0x7c, 0xb0, 0x4f, 0x66, 0x60, 0x57, 0x48, 0x1e, 0x64, 0x0f, 0xec, 0x34, 0xec, 0xa2, 0x69, + 0xd5, 0x2a, 0x14, 0x73, 0x5f, 0xa1, 0xd7, 0xb0, 0x17, 0xad, 0x5a, 0x65, 0xeb, 0x21, 0xf3, 0x1c, + 0x0c, 0xe8, 0x35, 0xa7, 0xb1, 0x19, 0x3a, 0x6a, 0x69, 0xbf, 0x67, 0xa6, 0x70, 0xcc, 0xec, 0xde, + 0x86, 0x51, 0x9d, 0x13, 0x5d, 0xc4, 0x10, 0x3c, 0x85, 0x01, 0x1f, 0x11, 0xc0, 0x4b, 0x14, 0x56, + 0x7d, 0x0c, 0xc7, 0xe5, 0x75, 0x54, 0x1c, 0x5e, 0xfa, 0xe6, 0xfe, 0x58, 0xa2, 0x47, 0x0a, 0x62, + 0xf3, 0x0b, 0xe1, 0x0a, 0x2e, 0xeb, 0xa8, 0xe0, 0x40, 0xc6, 0x8c, 0x55, 0x51, 0x43, 0x23, 0xe1, + 0x05, 0xb9, 0xdd, 0x5b, 0x88, 0x51, 0x50, 0x43, 0x99, 0x3f, 0xe2, 0x96, 0x37, 0xc6, 0xcf, 0x4a, + 0x91, 0xdc, 0x44, 0xcb, 0x1b, 0x8b, 0x03, 0xc9, 0x5e, 0xf2, 0x91, 0xdd, 0x89, 0xdb, 0xf7, 0x91, + 0x3e, 0x83, 0x3b, 0xe5, 0x98, 0x98, 0x49, 0x8e, 0xf2, 0x43, 0x89, 0x28, 0x44, 0xd6, 0xa4, 0x4f, + 0x3d, 0x3a, 0x88, 0xe0, 0xfc, 0x56, 0x41, 0xec, 0x51, 0x62, 0x4d, 0x1a, 0x0e, 0x5c, 0xf2, 0xa5, + 0x38, 0xba, 0xd6, 0x68, 0xa6, 0xc3, 0x14, 0xc7, 0x56, 0xde, 0x24, 0xcf, 0x1a, 0xe3, 0x88, 0xd5, + 0xf3, 0x98, 0x2e, 0x14, 0xed, 0xd1, 0x90, 0x92, 0x71, 0xe8, 0x61, 0xc9, 0xad, 0x0a, 0x4d, 0x6e, + 0x65, 0x3f, 0xd4, 0xbd, 0x98, 0x4f, 0xb0, 0x64, 0x95, 0x9b, 0xa6, 0x4e, 0xa3, 0x3e, 0x9e, 0xf3, + 0xf6, 0x1a, 0xe6, 0x3f, 0xf8, 0x3e, 0x89, 0x5c, 0x03, 0xdf, 0x7c, 0x26, 0xa6, 0x9b, 0xdc, 0x60, + 0x19, 0xbd, 0x0c, 0x01, 0xce, 0xdf, 0x1e, 0xd8, 0xcd, 0xc4, 0x16, 0x70, 0x98, 0x6a, 0x19, 0xd3, + 0x22, 0x3e, 0x58, 0xa3, 0xfe, 0xc0, 0x7b, 0xff, 0x52, 0xd0, 0xdf, 0xd0, 0x1a, 0xe5, 0xbb, 0x96, + 0x51, 0x73, 0xa4, 0xf2, 0xd6, 0x4e, 0xc1, 0x44, 0x5d, 0x67, 0x9b, 0x82, 0xba, 0x65, 0x99, 0x45, + 0xc7, 0xa8, 0xea, 0xb6, 0xa3, 0x55, 0xeb, 0xd4, 0x06, 0x77, 0x15, 0xc6, 0xf1, 0xeb, 0x5d, 0xcb, + 0x32, 0x57, 0xf8, 0x37, 0xf5, 0x67, 0xf9, 0xb5, 0x66, 0xc4, 0x98, 0xc8, 0xe1, 0x2a, 0x3c, 0xc5, + 0x9d, 0x1f, 0xcd, 0x4d, 0x2e, 0x36, 0x68, 0xaf, 0x62, 0x9d, 0x76, 0x63, 0x74, 0xc8, 0x99, 0xd4, + 0x49, 0xaf, 0x1a, 0x78, 0xc7, 0x52, 0x0f, 0xa2, 0x71, 0xf3, 0x7c, 0x99, 0xd5, 0xaa, 0x75, 0xcd, + 0xa8, 0xd4, 0xb8, 0x08, 0xbe, 0xd7, 0x8d, 0x06, 0x2c, 0xb2, 0x0f, 0xd2, 0xba, 0x01, 0x4f, 0xbb, + 0x34, 0xba, 0x93, 0x80, 0x54, 0x96, 0xb0, 0x8b, 0x77, 0xf3, 0x75, 0x3a, 0x79, 0x0f, 0xac, 0xb1, + 0x35, 0xea, 0x1d, 0x80, 0x9a, 0x9b, 0xbd, 0x4e, 0xdc, 0x27, 0xf2, 0x53, 0x0a, 0x1c, 0x0e, 0x0c, + 0x4c, 0x85, 0x20, 0x46, 0xb7, 0x4b, 0xeb, 0xba, 0xab, 0xaf, 0x78, 0x7c, 0x3d, 0x95, 0x7c, 0x2c, + 0xc8, 0xb9, 0x62, 0x33, 0x64, 0x99, 0x85, 0x83, 0xbe, 0xa1, 0xdd, 0x26, 0xde, 0x69, 0x19, 0x11, + 0x93, 0x1f, 0x83, 0xbd, 0x8e, 0xe5, 0x68, 0x66, 0xa4, 0x90, 0x52, 0xb8, 0xd0, 0x09, 0x8a, 0x25, + 0x24, 0x22, 0xf2, 0x4b, 0x0a, 0x1c, 0xe3, 0x0a, 0x26, 0xc7, 0x6a, 0x77, 0x47, 0xac, 0x1e, 0xc1, + 0x41, 0x56, 0xda, 0x72, 0x5c, 0x85, 0x83, 0x82, 0xa0, 0x58, 0xce, 0x7b, 0xe4, 0xd5, 0xf3, 0x19, + 0x3e, 0x72, 0xe4, 0x04, 0xa8, 0x17, 0x51, 0x47, 0x17, 0xec, 0x3b, 0x75, 0x47, 0x2f, 0xdf, 0x69, + 0x3a, 0x77, 0xd6, 0x58, 0x07, 0xbb, 0x7d, 0x22, 0xec, 0x1c, 0x2a, 0x6f, 0x24, 0x30, 0x2a, 0xef, + 0x01, 0x18, 0x34, 0xec, 0xa2, 0xe5, 0x7e, 0x2f, 0x5a, 0x4d, 0x07, 0xa3, 0x2a, 0x30, 0x04, 0x88, + 0xfa, 0x1c, 0x9e, 0xfa, 0x84, 0x70, 0xe0, 0xa1, 0x98, 0xb0, 0x57, 0x73, 0x18, 0xbb, 0x27, 0x74, + 0xc4, 0x41, 0x13, 0x4c, 0x8a, 0x7a, 0x05, 0x1d, 0xe1, 0xbc, 0xae, 0xcf, 0x19, 0x36, 0x3b, 0x76, + 0xc3, 0x88, 0xd7, 0xe3, 0xc2, 0xe3, 0x99, 0xfe, 0xae, 0x82, 0x6e, 0x30, 0x0e, 0x01, 0xd2, 0xf0, + 0x0c, 0x80, 0x63, 0xe8, 0x0d, 0x71, 0x5d, 0xa4, 0x1c, 0xe9, 0x2e, 0xf4, 0xbb, 0x2d, 0xec, 0x54, + 0xa7, 0x00, 0x83, 0x22, 0xfa, 0x6e, 0x1d, 0x1b, 0x24, 0x46, 0x27, 0x9e, 0x01, 0x57, 0x0c, 0xbd, + 0x41, 0x47, 0x1b, 0xd0, 0x5a, 0x43, 0x93, 0x3b, 0x30, 0x20, 0x8c, 0x9a, 0x63, 0xe2, 0x81, 0xc1, + 0x54, 0x0a, 0x94, 0x2b, 0x2b, 0x8b, 0x05, 0xe0, 0xf6, 0xcc, 0x31, 0x85, 0x05, 0xf3, 0x74, 0xe3, + 0x8a, 0xca, 0x85, 0xf2, 0x29, 0x7e, 0x81, 0x16, 0xd9, 0x47, 0x78, 0xe6, 0xdd, 0x6b, 0xba, 0x5e, + 0x2c, 0xe3, 0xf7, 0xd6, 0x6a, 0x52, 0x52, 0x71, 0x2d, 0xf0, 0x8e, 0xad, 0x85, 0x1b, 0xd5, 0x6b, + 0xe8, 0x68, 0x30, 0xdf, 0x7b, 0xc9, 0xb0, 0xab, 0x9a, 0x53, 0xf2, 0x9c, 0x61, 0xee, 0x87, 0x81, + 0x72, 0xd3, 0x76, 0x8a, 0x6b, 0x5a, 0xc9, 0xb1, 0x58, 0x69, 0x4a, 0x57, 0x01, 0xdc, 0xa6, 0x79, + 0xda, 0xa2, 0xfe, 0x6e, 0x17, 0x8c, 0x04, 0xa0, 0x89, 0x0a, 0xbe, 0x3d, 0x91, 0x7c, 0x22, 0x26, + 0x99, 0x81, 0x7e, 0x6d, 0x43, 0x33, 0x52, 0x67, 0x40, 0xb4, 0xa0, 0xc8, 0x79, 0xe8, 0xa1, 0x46, + 0x20, 0x4d, 0x88, 0xcf, 0x20, 0xc8, 0x3c, 0x0c, 0x62, 0xa6, 0x7b, 0x71, 0xdd, 0x32, 0xcb, 0x9e, + 0x4b, 0x96, 0xf6, 0xb7, 0x3f, 0x08, 0x78, 0xd3, 0x32, 0xcb, 0xe4, 0x45, 0x18, 0xd6, 0x1f, 0xd6, + 0xf5, 0x92, 0xbb, 0x7e, 0x19, 0x2d, 0xbd, 0xf2, 0x98, 0x86, 0x38, 0x28, 0xb5, 0x3e, 0x64, 0x16, + 0xa0, 0x6c, 0xac, 0xe1, 0x05, 0x0e, 0x3b, 0x7e, 0x97, 0xdc, 0x01, 0xb5, 0xc0, 0xd4, 0x9f, 0x40, + 0xdf, 0x1e, 0x21, 0x66, 0xd4, 0xb6, 0xd7, 0x80, 0x70, 0xd6, 0xab, 0xe2, 0x2b, 0x86, 0x32, 0x1f, + 0x95, 0xa8, 0x14, 0xe0, 0x28, 0x0b, 0xbb, 0x56, 0x83, 0x63, 0xa8, 0x87, 0x71, 0xf1, 0x63, 0x57, + 0x37, 0x50, 0xcc, 0xb7, 0x66, 0x4b, 0x98, 0xaa, 0x5f, 0xcb, 0xc0, 0x6e, 0x4f, 0x17, 0xb6, 0xd9, + 0xa2, 0xf3, 0xf9, 0x43, 0xae, 0x4f, 0xea, 0xaf, 0xf2, 0x68, 0x3e, 0x76, 0x06, 0x51, 0x8a, 0x35, + 0xc8, 0xf2, 0x01, 0xe9, 0x09, 0xba, 0x77, 0x74, 0xa9, 0xb4, 0x99, 0xc8, 0xf9, 0x2f, 0xec, 0x59, + 0x8d, 0x1e, 0x57, 0xb8, 0xa1, 0x80, 0x49, 0x74, 0x43, 0x69, 0xc3, 0x76, 0x8c, 0x92, 0x90, 0xed, + 0x79, 0x18, 0xf2, 0x7d, 0x20, 0x04, 0xba, 0x5d, 0xbb, 0x8e, 0x36, 0x9e, 0xfe, 0xed, 0x8a, 0xb0, + 0x55, 0x1a, 0xd4, 0x5d, 0x60, 0x3f, 0x54, 0x1b, 0x3d, 0x58, 0xc2, 0x18, 0x62, 0xd3, 0x0a, 0xb6, + 0x68, 0x95, 0xc9, 0x92, 0xf7, 0xe1, 0x29, 0x78, 0x80, 0xdd, 0xf8, 0x7f, 0xc9, 0x70, 0xac, 0x97, + 0xb5, 0xa6, 0x49, 0xdd, 0x84, 0x60, 0xe4, 0xcf, 0x15, 0x98, 0x08, 0x7e, 0xc1, 0xe1, 0x9f, 0x87, + 0xd1, 0xaa, 0x66, 0x3b, 0x7a, 0x83, 0xdf, 0x51, 0xea, 0xdc, 0x91, 0x8e, 0xb0, 0xf6, 0x19, 0xde, + 0x4c, 0x4e, 0xc0, 0x78, 0x59, 0x6c, 0x01, 0x3c, 0xdd, 0xd9, 0x55, 0xc8, 0x58, 0xeb, 0x5b, 0x0b, + 0xe4, 0x30, 0x0c, 0xdb, 0x75, 0xcb, 0xf1, 0x74, 0x66, 0x97, 0x41, 0x43, 0x6e, 0xab, 0xaf, 0x5b, + 0xe9, 0x8d, 0xe9, 0xe3, 0x9e, 0x6e, 0xdd, 0xac, 0x9b, 0xdb, 0x2a, 0xba, 0xa9, 0x73, 0x68, 0xf7, + 0x71, 0xe3, 0x3b, 0x37, 0xdf, 0xb0, 0xaa, 0x94, 0x25, 0xcf, 0x59, 0xd7, 0x86, 0xfb, 0xbb, 0xe8, + 0x3f, 0xc9, 0x1c, 0xa4, 0x8d, 0xfc, 0xb6, 0x95, 0xa7, 0x51, 0x45, 0x60, 0xc1, 0x39, 0x49, 0xdc, + 0x1b, 0xf3, 0xed, 0xf5, 0x4d, 0xc3, 0x76, 0xac, 0x86, 0x51, 0x12, 0xb1, 0x56, 0xc9, 0xf2, 0x84, + 0x52, 0x89, 0x28, 0x1c, 0x34, 0x2d, 0x71, 0x28, 0xc4, 0xb9, 0xc0, 0x10, 0x0f, 0x09, 0xe9, 0x07, + 0x99, 0x2a, 0x04, 0x1f, 0xa2, 0x41, 0xc7, 0xf3, 0x4b, 0xfd, 0x13, 0x05, 0xc6, 0xe8, 0x67, 0x36, + 0xac, 0x1b, 0x5c, 0xb9, 0x5b, 0x41, 0xf2, 0x02, 0x10, 0x36, 0x4c, 0xa5, 0x61, 0x35, 0xeb, 0x6e, + 0x38, 0x6a, 0xeb, 0x25, 0x54, 0xf1, 0x51, 0xfa, 0xe5, 0x06, 0x7e, 0x58, 0xd6, 0x4b, 0x64, 0x0f, + 0xec, 0xac, 0x6a, 0x0f, 0x8b, 0x5a, 0x45, 0x47, 0x85, 0xef, 0xad, 0x6a, 0x0f, 0x67, 0x2a, 0x3a, + 0x99, 0x82, 0x31, 0xa3, 0x56, 0x32, 0x9b, 0x2e, 0xbd, 0xda, 0x1b, 0xc5, 0x75, 0x36, 0x08, 0xa6, + 0xf4, 0xed, 0xc2, 0x4f, 0x05, 0xed, 0x0d, 0x1c, 0xdd, 0x55, 0x3c, 0xde, 0x5f, 0xec, 0xe5, 0xe9, + 0x2d, 0x6f, 0x61, 0x04, 0xdb, 0xf9, 0x1e, 0x5d, 0xfd, 0x6d, 0x05, 0xcf, 0xeb, 0x45, 0x8d, 0x85, + 0xe6, 0x18, 0xa6, 0xe1, 0x6c, 0x4a, 0xdd, 0x59, 0x96, 0x60, 0x37, 0xe3, 0x0f, 0x49, 0x72, 0x43, + 0x54, 0x97, 0x71, 0x99, 0x40, 0x2c, 0x62, 0xbe, 0x0a, 0x63, 0x4e, 0xb8, 0x51, 0xfd, 0x64, 0xc6, + 0xa7, 0x9b, 0x5e, 0x12, 0x45, 0x2d, 0x06, 0x6c, 0x88, 0x56, 0xbc, 0xe1, 0xdb, 0xdf, 0xd6, 0x1d, + 0xb6, 0x40, 0xc8, 0x2b, 0x30, 0xca, 0x39, 0x10, 0x13, 0x96, 0x09, 0x5d, 0x68, 0x61, 0x05, 0xaf, + 0xb8, 0x84, 0xc1, 0x9e, 0x1e, 0xc3, 0x33, 0x82, 0x58, 0xf8, 0x27, 0x72, 0x13, 0x06, 0xbc, 0x12, + 0xeb, 0xa2, 0x5a, 0xf6, 0x9c, 0xa4, 0x96, 0x15, 0xa0, 0x21, 0x64, 0x2a, 0x0a, 0x89, 0xf2, 0x46, + 0x4d, 0xe3, 0x53, 0xd1, 0xee, 0x5e, 0x55, 0xad, 0x60, 0xb2, 0x75, 0x00, 0x48, 0x98, 0xc7, 0xc0, + 0xb5, 0x4f, 0xa2, 0xbc, 0x18, 0x0e, 0x14, 0x4a, 0xf0, 0xd6, 0xe7, 0x01, 0x1c, 0x8b, 0xbc, 0xfa, + 0x9f, 0xb5, 0x6a, 0x65, 0x83, 0x65, 0x89, 0x6d, 0x77, 0xe5, 0xf1, 0x6f, 0x75, 0xc1, 0xc1, 0xd0, + 0xad, 0x74, 0x70, 0xbc, 0x1f, 0xdc, 0xfc, 0x8e, 0x1b, 0x30, 0xe8, 0x34, 0x8c, 0x4a, 0x45, 0x6f, + 0xdc, 0x4d, 0x7b, 0xc1, 0xe8, 0x03, 0x6c, 0x9f, 0xe7, 0x71, 0x18, 0x76, 0x1a, 0x36, 0xbd, 0xce, + 0xa7, 0x51, 0x69, 0x5f, 0x7e, 0xe0, 0xfd, 0x77, 0xf6, 0xf3, 0xa6, 0x02, 0xff, 0x23, 0x90, 0x0e, + 0xb2, 0x33, 0x26, 0x1d, 0xa4, 0xaf, 0x95, 0x0e, 0xf2, 0x29, 0xc5, 0x97, 0x54, 0x97, 0xa8, 0x14, + 0xa2, 0xe8, 0xd3, 0x9f, 0x92, 0x70, 0x39, 0x55, 0x4a, 0x42, 0x10, 0xaf, 0x48, 0x4c, 0xb8, 0x84, + 0x06, 0x84, 0x27, 0xf0, 0xa7, 0x4a, 0xaa, 0x54, 0x7f, 0x8f, 0x1f, 0x84, 0x45, 0x80, 0x23, 0xdd, + 0x33, 0xd0, 0x9d, 0x37, 0x84, 0x17, 0x39, 0x26, 0x41, 0xb5, 0x27, 0x7d, 0x82, 0x82, 0xba, 0x28, + 0x66, 0xec, 0xfb, 0xbc, 0x22, 0x33, 0x2d, 0x0a, 0x17, 0x54, 0x1c, 0xac, 0xfb, 0xef, 0x3d, 0xd3, + 0x31, 0xfb, 0x07, 0x3c, 0xb2, 0x8c, 0x45, 0xf2, 0xa1, 0x62, 0xf9, 0xeb, 0x0a, 0xec, 0x0a, 0x7d, + 0x7b, 0xa2, 0x8b, 0xde, 0xbf, 0x4c, 0xba, 0x82, 0xcb, 0x24, 0x64, 0xf7, 0xba, 0x23, 0xae, 0x0c, + 0x97, 0x70, 0xe1, 0xe0, 0x6d, 0xb2, 0x63, 0x55, 0x8d, 0xd2, 0xf5, 0x87, 0x7a, 0xa9, 0xe9, 0x2a, + 0xf7, 0xbc, 0xae, 0x2f, 0x35, 0x4d, 0xc7, 0xa8, 0x9b, 0x86, 0xde, 0x90, 0x92, 0xe9, 0x06, 0x5e, + 0xa1, 0xca, 0xa0, 0x43, 0xe9, 0xce, 0x02, 0x54, 0x45, 0x6b, 0x9a, 0x69, 0xf4, 0x80, 0xa9, 0xe7, + 0x78, 0xad, 0x35, 0x15, 0xea, 0xb2, 0xa3, 0xdd, 0xd7, 0x6f, 0x34, 0xb4, 0x56, 0x76, 0xe6, 0x24, + 0xec, 0xac, 0xb8, 0xbf, 0x75, 0x9d, 0x1f, 0x0f, 0xe1, 0x4f, 0xf5, 0x73, 0xa2, 0x94, 0x3a, 0x04, + 0x8a, 0x04, 0x5e, 0x86, 0x1e, 0xda, 0x19, 0x0f, 0x3f, 0x12, 0x5d, 0x2a, 0x43, 0xc2, 0xe0, 0x19, + 0x14, 0x59, 0x86, 0xd6, 0x25, 0x5e, 0x91, 0x21, 0x92, 0xa8, 0xe8, 0x12, 0xf7, 0x70, 0x0c, 0xd7, + 0xb0, 0xee, 0xfb, 0xad, 0xae, 0xa0, 0x9d, 0xa0, 0xbf, 0x66, 0x9a, 0xce, 0xba, 0xd5, 0x30, 0x7e, + 0x9c, 0xa6, 0x70, 0x86, 0x38, 0x6e, 0xf8, 0x39, 0x6e, 0x78, 0xe7, 0x22, 0xe3, 0x9f, 0x8b, 0x8f, + 0xe1, 0xf1, 0x51, 0x14, 0x56, 0x9c, 0x8c, 0xd3, 0xd0, 0x8b, 0xe9, 0xa9, 0x4c, 0x52, 0xcf, 0xa0, + 0xa4, 0x76, 0x87, 0x25, 0xb5, 0x50, 0x73, 0x0a, 0xd8, 0x59, 0x1c, 0x5b, 0x86, 0x31, 0xdb, 0x6d, + 0x09, 0x76, 0x43, 0xde, 0x03, 0xf1, 0xd0, 0x22, 0xe7, 0x9b, 0xb0, 0xf3, 0x57, 0x0a, 0x55, 0x4c, + 0x43, 0xe4, 0x28, 0x05, 0x64, 0xc8, 0x79, 0xa6, 0x73, 0x2f, 0x45, 0x63, 0xcb, 0x9c, 0x94, 0x47, + 0xcc, 0x16, 0x42, 0x1f, 0x3d, 0x05, 0xfd, 0xa2, 0x6e, 0x93, 0x8c, 0xc3, 0xa8, 0xfb, 0x6f, 0xf1, + 0x5e, 0xcd, 0xae, 0xeb, 0x25, 0x63, 0xcd, 0xd0, 0xcb, 0xa3, 0x3b, 0xc8, 0x4e, 0xe8, 0xca, 0x37, + 0x37, 0x47, 0x15, 0xd2, 0x07, 0xdd, 0xcb, 0xba, 0x69, 0x8e, 0x66, 0x8e, 0xbe, 0x0c, 0xe3, 0x51, + 0x49, 0xb9, 0x2e, 0x02, 0x0f, 0x2c, 0x45, 0x3c, 0xba, 0x83, 0x8c, 0xc1, 0x88, 0xbb, 0xf7, 0x79, + 0xc5, 0x6a, 0xd8, 0xce, 0x8a, 0x95, 0xd7, 0x6d, 0x67, 0x54, 0xe1, 0x8d, 0xee, 0xaf, 0x15, 0x8b, + 0x7e, 0x1a, 0xcd, 0x4c, 0x7f, 0x7f, 0x1d, 0x7a, 0xe8, 0x3c, 0x92, 0x77, 0x15, 0xd8, 0xbd, 0x78, + 0x32, 0x60, 0x73, 0xf3, 0x96, 0x75, 0x9f, 0x5c, 0x6d, 0xfb, 0x46, 0x45, 0xb2, 0xc9, 0xcf, 0x5e, + 0xeb, 0x1c, 0x01, 0x93, 0xa4, 0x3a, 0xff, 0x33, 0x5f, 0xff, 0xf6, 0x67, 0x32, 0xd7, 0xc8, 0x95, + 0x5c, 0xc2, 0x53, 0x38, 0xad, 0x6d, 0x6a, 0x6e, 0xf1, 0xa4, 0x20, 0x3f, 0xf7, 0x48, 0x98, 0xa6, + 0xc7, 0xe4, 0x4d, 0x05, 0x46, 0x16, 0x4f, 0x0a, 0x2f, 0x4a, 0xd9, 0x3b, 0x2f, 0x45, 0x5d, 0x94, + 0xe3, 0xce, 0x5e, 0xe8, 0x04, 0x14, 0x59, 0xba, 0x46, 0x59, 0xba, 0x40, 0xce, 0x25, 0xb1, 0xe4, + 0x6e, 0xa6, 0x63, 0x99, 0xf9, 0xbc, 0x02, 0x63, 0x11, 0x2f, 0xad, 0x90, 0x33, 0x6d, 0xa9, 0x8a, + 0x7c, 0xb8, 0x25, 0x7b, 0x36, 0x35, 0x1c, 0xb2, 0x32, 0x4d, 0x59, 0x79, 0x81, 0x1c, 0xcd, 0x49, + 0xbc, 0x69, 0x84, 0x44, 0xfe, 0xb5, 0x02, 0x24, 0xfc, 0xb4, 0x09, 0xb9, 0xd0, 0xd1, 0x7b, 0x28, + 0x8c, 0xfe, 0x8b, 0x5b, 0x78, 0x4b, 0x45, 0xbd, 0x4a, 0x79, 0x38, 0x4f, 0xce, 0xca, 0xf0, 0x90, + 0xb3, 0xc3, 0x94, 0xbf, 0xa9, 0xc0, 0xae, 0x10, 0x7e, 0x09, 0xe5, 0x8a, 0x7b, 0x3f, 0x20, 0x7b, + 0xa1, 0x13, 0x50, 0xe4, 0xe6, 0x0a, 0xe5, 0xe6, 0x1c, 0x39, 0xd3, 0x19, 0x37, 0xe4, 0x2f, 0x14, + 0x18, 0x0d, 0xbe, 0xdd, 0x42, 0xce, 0x49, 0xeb, 0x47, 0xe0, 0x39, 0x98, 0xec, 0xf9, 0x0e, 0x20, + 0x91, 0x93, 0xcb, 0x94, 0x93, 0xb3, 0xe4, 0xb4, 0x14, 0x27, 0x7a, 0x90, 0xe6, 0xbf, 0x52, 0x60, + 0x24, 0xf0, 0x20, 0x0a, 0x69, 0xaf, 0xe7, 0xd1, 0xcf, 0xc9, 0x64, 0xcf, 0xa5, 0x07, 0x4c, 0x63, + 0xbf, 0x44, 0x43, 0xe0, 0xd9, 0x98, 0xdc, 0x23, 0x94, 0xce, 0x63, 0x2a, 0x97, 0xe0, 0xfb, 0x2e, + 0x24, 0x35, 0x59, 0x29, 0xe4, 0x12, 0xf7, 0x98, 0x4c, 0x4a, 0xb9, 0x04, 0x1f, 0xc2, 0x21, 0xff, + 0xa6, 0xc0, 0xee, 0xc8, 0x47, 0x3a, 0xc8, 0x65, 0x79, 0x9a, 0x22, 0x5e, 0x79, 0xc9, 0x5e, 0xe9, + 0x14, 0x1c, 0xf9, 0xba, 0x4d, 0xf9, 0xba, 0x49, 0xe6, 0xd3, 0xf1, 0xe5, 0xc5, 0xe5, 0x33, 0xd2, + 0xef, 0x28, 0x30, 0x11, 0xfd, 0x1a, 0x09, 0xe9, 0x90, 0x54, 0x21, 0xbd, 0xab, 0x1d, 0xc3, 0x23, + 0xaf, 0xb3, 0x94, 0xd7, 0xcb, 0xe4, 0x62, 0xe7, 0xbc, 0xda, 0xe4, 0x4b, 0x0a, 0x0c, 0x7a, 0x9f, + 0x77, 0x21, 0xa7, 0xda, 0x92, 0x15, 0xf1, 0xec, 0x4d, 0xf6, 0x74, 0x4a, 0x28, 0x64, 0x21, 0x4f, + 0x59, 0xb8, 0x44, 0x2e, 0x48, 0xb1, 0xe0, 0x7b, 0xb8, 0x26, 0xf7, 0x88, 0xfe, 0x7c, 0x4c, 0xbe, + 0xa0, 0xc0, 0x90, 0xef, 0x81, 0x1a, 0x92, 0x8e, 0x18, 0x21, 0x90, 0x33, 0x69, 0xc1, 0x90, 0x89, + 0x8b, 0x94, 0x89, 0xd3, 0xe4, 0x64, 0x7a, 0x26, 0x6c, 0xf2, 0xfb, 0x0a, 0x0c, 0x78, 0xde, 0x4b, + 0x20, 0x27, 0xdb, 0xbb, 0x8d, 0xd0, 0x3b, 0x0f, 0xd9, 0x53, 0xe9, 0x80, 0x90, 0xee, 0xe3, 0x94, + 0xee, 0xa3, 0xe4, 0x48, 0xdb, 0x10, 0x06, 0x0f, 0xea, 0xc8, 0xe7, 0x14, 0x00, 0xcf, 0xdb, 0x18, + 0xd3, 0x29, 0x86, 0xe5, 0xa4, 0x9e, 0x4c, 0x05, 0x83, 0x94, 0x5e, 0xa2, 0x94, 0x9e, 0x21, 0xa7, + 0x64, 0x29, 0xf5, 0xad, 0xe1, 0x2f, 0x28, 0x30, 0x12, 0x78, 0x96, 0x42, 0xc2, 0x89, 0x44, 0x3f, + 0xa9, 0x21, 0xe1, 0x44, 0x62, 0x5e, 0xc0, 0x50, 0x4f, 0x53, 0x26, 0x72, 0xe4, 0x58, 0x5b, 0x26, + 0xd6, 0x9a, 0xa6, 0x59, 0xe4, 0x73, 0xfe, 0x95, 0xf0, 0x9b, 0x24, 0x67, 0x52, 0xd2, 0x20, 0x1f, + 0x21, 0x46, 0x3f, 0x74, 0x91, 0x22, 0xd8, 0xf5, 0x90, 0xee, 0x93, 0xc1, 0x17, 0x15, 0x18, 0xf2, + 0x05, 0xd2, 0x12, 0x8b, 0x34, 0x32, 0x66, 0x3f, 0x93, 0x16, 0x2c, 0x4d, 0x48, 0x45, 0x59, 0xb0, + 0x38, 0xac, 0x8f, 0x81, 0xb7, 0x15, 0x18, 0x0d, 0xd6, 0xf7, 0x4a, 0xb8, 0xee, 0x98, 0x07, 0x2e, + 0x24, 0x5c, 0x77, 0xdc, 0x63, 0x09, 0xea, 0x2d, 0xca, 0xc9, 0x75, 0x32, 0x2b, 0xc7, 0x89, 0x6f, + 0x2d, 0xe4, 0x1e, 0xf9, 0xce, 0x8f, 0x1e, 0x93, 0xff, 0x52, 0x60, 0x32, 0xee, 0xa9, 0x04, 0xd2, + 0x7e, 0xe3, 0xd7, 0xe6, 0x75, 0x8d, 0xec, 0xcc, 0x16, 0x30, 0x20, 0xbb, 0xf7, 0x28, 0xbb, 0x77, + 0xc8, 0x52, 0x27, 0xec, 0x22, 0xab, 0x22, 0x04, 0xe3, 0xf7, 0x8f, 0x8f, 0xc9, 0xb7, 0xdd, 0x0d, + 0x4c, 0xe8, 0xad, 0x13, 0x99, 0x0d, 0x4c, 0xdc, 0x3b, 0x2d, 0x32, 0x1b, 0x98, 0xd8, 0xc7, 0x55, + 0x52, 0xb3, 0x59, 0x5c, 0xdd, 0xc4, 0x32, 0xbe, 0x44, 0xf9, 0x7e, 0x45, 0x81, 0xd1, 0xe0, 0xe3, + 0xaa, 0x12, 0x6a, 0x1b, 0xf3, 0xe4, 0x6b, 0xf6, 0x7c, 0x07, 0x90, 0xc8, 0xe0, 0x05, 0xca, 0xe0, + 0x29, 0x32, 0x9d, 0xc4, 0x20, 0x17, 0x61, 0x80, 0x8b, 0xef, 0x28, 0xb0, 0xb7, 0xb5, 0x1e, 0x56, + 0x1a, 0x5a, 0xcd, 0x36, 0xf4, 0xda, 0x13, 0x5d, 0x85, 0xf2, 0xf2, 0x72, 0x38, 0xb9, 0x45, 0x89, + 0xf5, 0xf8, 0xf7, 0xa8, 0x96, 0xfe, 0x1a, 0x2d, 0x49, 0xb5, 0x8c, 0x7c, 0x38, 0x43, 0x52, 0x2d, + 0xa3, 0x9f, 0xcb, 0x90, 0xdb, 0xf9, 0x30, 0xcf, 0x1b, 0x2c, 0x45, 0xf3, 0x99, 0xcf, 0xff, 0x50, + 0x60, 0x32, 0xee, 0x6d, 0x0e, 0x09, 0x3b, 0xd3, 0xe6, 0x71, 0x10, 0x09, 0x3b, 0xd3, 0xee, 0x61, + 0x10, 0x75, 0x91, 0x72, 0x3a, 0x4f, 0xe6, 0x24, 0xcf, 0xa8, 0x92, 0xf9, 0xfd, 0x86, 0x02, 0x63, + 0x11, 0x27, 0x62, 0xe4, 0x62, 0x0a, 0x42, 0x43, 0xbe, 0xef, 0x52, 0x67, 0xc0, 0xc8, 0xe0, 0x1c, + 0x65, 0xf0, 0x0a, 0xb9, 0x24, 0xc9, 0x60, 0xb4, 0x1f, 0xfc, 0x77, 0x05, 0x26, 0xa2, 0x4b, 0xb4, + 0x25, 0x36, 0x44, 0x89, 0x6f, 0x04, 0x48, 0x6c, 0x88, 0x92, 0x6b, 0xc3, 0xd5, 0x97, 0x28, 0x87, + 0xb7, 0xc8, 0x42, 0x1a, 0x0e, 0x93, 0xd7, 0xe3, 0x2f, 0x66, 0x60, 0x5f, 0x72, 0x65, 0x38, 0x99, + 0x4f, 0xe9, 0xe3, 0xe2, 0xd8, 0xbf, 0xb1, 0x65, 0x3c, 0x38, 0x0d, 0x1f, 0xa7, 0xd3, 0x70, 0x8f, + 0x2c, 0x77, 0x3e, 0x0d, 0xf1, 0x7e, 0xf3, 0x7f, 0x7d, 0x0b, 0x39, 0xe0, 0x3d, 0xaf, 0xa5, 0x55, + 0xd0, 0x90, 0x0f, 0x9d, 0xd9, 0x02, 0x86, 0x2d, 0xb1, 0x2f, 0xe9, 0x4f, 0xbf, 0xaf, 0xc0, 0xfe, + 0xa0, 0x16, 0x06, 0xfd, 0xd1, 0x13, 0x5f, 0x07, 0x69, 0x67, 0x20, 0x95, 0x87, 0xfa, 0x33, 0x05, + 0x76, 0x85, 0x8a, 0x81, 0x25, 0x0e, 0x4a, 0xe3, 0xca, 0xfa, 0x25, 0x0e, 0x4a, 0x63, 0x6b, 0x8f, + 0xd5, 0x33, 0x94, 0xd3, 0xe3, 0x64, 0x4a, 0xd6, 0x68, 0x23, 0xb9, 0x5f, 0x53, 0x60, 0x34, 0x54, + 0x8e, 0x7e, 0x2e, 0x35, 0x21, 0xf2, 0x71, 0x44, 0x5c, 0x4d, 0xb2, 0xdc, 0x09, 0x48, 0x98, 0x03, + 0x9f, 0x4d, 0xfe, 0x8e, 0x02, 0x7b, 0x62, 0xaa, 0x88, 0x25, 0x6e, 0x7f, 0x92, 0x6b, 0x98, 0xb3, + 0xd7, 0x3a, 0x47, 0x80, 0x2c, 0x2e, 0x50, 0x16, 0x67, 0xc9, 0x4c, 0x2a, 0x16, 0xb9, 0xc9, 0xf1, + 0x71, 0xfa, 0xb7, 0x0a, 0x8c, 0x47, 0x95, 0x7d, 0x91, 0x4b, 0x29, 0x02, 0xd3, 0x50, 0xfd, 0x73, + 0xf6, 0x72, 0x87, 0xd0, 0x69, 0x8e, 0x27, 0x44, 0x43, 0x70, 0x41, 0xfd, 0x91, 0x02, 0x63, 0xfc, + 0xfc, 0xdc, 0x53, 0x7c, 0x26, 0x71, 0x12, 0x14, 0xae, 0x62, 0x93, 0x38, 0x09, 0x8a, 0xa8, 0x6f, + 0x93, 0x3b, 0x09, 0xaa, 0x52, 0xc0, 0x22, 0x2d, 0x29, 0x23, 0xbf, 0xa3, 0x40, 0xbf, 0x28, 0x5a, + 0x23, 0x27, 0xda, 0x8e, 0x1a, 0xac, 0x7c, 0xcb, 0x4e, 0xa7, 0x01, 0x41, 0x32, 0x8f, 0x51, 0x32, + 0x9f, 0x23, 0x87, 0x93, 0xc8, 0xac, 0x0b, 0xaa, 0xfe, 0x46, 0x81, 0xb1, 0x88, 0xba, 0x69, 0x92, + 0xe6, 0xa2, 0x29, 0x44, 0xf7, 0xa5, 0xce, 0x80, 0xd3, 0x1c, 0xbb, 0x0b, 0x0e, 0x42, 0xaa, 0xf2, + 0x9f, 0x0a, 0x64, 0xe3, 0x2b, 0xb3, 0x49, 0xbe, 0x03, 0xda, 0x02, 0xe5, 0xef, 0xd9, 0xd9, 0x2d, + 0xe1, 0x48, 0xb3, 0xe2, 0x63, 0xd9, 0xf4, 0xad, 0xf8, 0x5f, 0xc9, 0xc0, 0x21, 0x89, 0xca, 0x68, + 0x72, 0x2b, 0x05, 0xdd, 0xed, 0xde, 0x00, 0xc8, 0x2e, 0x6e, 0x0f, 0x32, 0x9c, 0x8d, 0x65, 0x3a, + 0x1b, 0x4b, 0xe4, 0x56, 0xa2, 0x79, 0x10, 0x09, 0x25, 0x72, 0xf3, 0xf2, 0x0f, 0x0a, 0x8c, 0x45, + 0xd4, 0x4a, 0x4b, 0x28, 0x77, 0x7c, 0xa1, 0xb7, 0x84, 0x72, 0x27, 0x54, 0x79, 0xab, 0xd7, 0x29, + 0x9f, 0x57, 0xc9, 0xe5, 0x44, 0xa9, 0x8b, 0xa7, 0x5a, 0x3c, 0x8f, 0xd7, 0xf8, 0x38, 0xfb, 0x96, + 0x02, 0x7b, 0x62, 0xca, 0xa9, 0x25, 0xbc, 0x59, 0x72, 0x5d, 0xb8, 0x84, 0x37, 0x6b, 0x53, 0x14, + 0x2e, 0x7b, 0x65, 0xe1, 0x22, 0x89, 0x65, 0xf1, 0x3d, 0x05, 0x26, 0xa2, 0xeb, 0xae, 0x25, 0x82, + 0xc7, 0xc4, 0xf2, 0x71, 0x89, 0xe0, 0x31, 0xb9, 0x76, 0x5c, 0xbd, 0x49, 0xf9, 0xcb, 0x93, 0x6b, + 0xa9, 0xa4, 0x88, 0xef, 0xfd, 0x84, 0x04, 0x19, 0x53, 0x30, 0x2e, 0x21, 0xc8, 0xe4, 0xd7, 0x33, + 0x24, 0x04, 0xd9, 0xa6, 0x56, 0x5d, 0x4e, 0x90, 0x2c, 0x1b, 0x8f, 0xa7, 0x75, 0x47, 0x1d, 0xaf, + 0xed, 0x0a, 0x97, 0xb4, 0x4a, 0x1e, 0x2b, 0x45, 0x54, 0x62, 0x4b, 0x04, 0xc3, 0xb1, 0x05, 0xd5, + 0xea, 0x59, 0xca, 0xd0, 0x09, 0x92, 0x4b, 0x62, 0x28, 0xa2, 0x96, 0x95, 0xfc, 0x9d, 0x02, 0x93, + 0x77, 0x5b, 0xd5, 0xb1, 0x1f, 0x0a, 0x66, 0xa4, 0x12, 0x3a, 0xbc, 0x75, 0xc3, 0x41, 0xa6, 0xbe, + 0xc6, 0xab, 0x2a, 0xfc, 0x65, 0xd5, 0x12, 0x06, 0x32, 0xbe, 0x58, 0x5c, 0xc2, 0x40, 0x26, 0x54, + 0x91, 0xab, 0xe7, 0x29, 0x4f, 0x27, 0xc9, 0x09, 0x69, 0x01, 0xf1, 0xe2, 0x67, 0xf2, 0xae, 0x02, + 0x13, 0xd1, 0xd5, 0xae, 0x12, 0x16, 0x23, 0xb1, 0xce, 0x56, 0xc2, 0x62, 0x24, 0x97, 0xd9, 0xaa, + 0x37, 0x28, 0x5b, 0x33, 0xe4, 0x6a, 0x12, 0x5b, 0xbe, 0xe2, 0x53, 0x6f, 0xd9, 0xad, 0x27, 0x3d, + 0xc2, 0x15, 0x59, 0x44, 0xad, 0xa9, 0x84, 0xc8, 0xe2, 0xab, 0x63, 0x25, 0x44, 0x96, 0x50, 0x36, + 0x2b, 0x27, 0xb2, 0xc8, 0xc2, 0x5a, 0xf2, 0x96, 0x02, 0xbb, 0x42, 0x15, 0x92, 0x12, 0xcb, 0x29, + 0xae, 0x78, 0x56, 0x62, 0x39, 0xc5, 0x16, 0x64, 0xca, 0x1d, 0xfe, 0x85, 0x4b, 0x36, 0x73, 0x8f, + 0x3c, 0xe5, 0xba, 0x8f, 0xc9, 0x3f, 0x2b, 0xb0, 0x27, 0xa6, 0x68, 0x50, 0xc2, 0xa2, 0x27, 0x17, + 0x6c, 0x4a, 0x58, 0xf4, 0x36, 0xf5, 0x8a, 0x72, 0x36, 0x83, 0xff, 0xe7, 0x53, 0x11, 0x25, 0x8d, + 0xe4, 0x5f, 0x14, 0xd8, 0x1b, 0x5b, 0x18, 0x48, 0x66, 0xd2, 0x68, 0x52, 0x64, 0xe1, 0x62, 0x36, + 0xbf, 0x15, 0x14, 0x69, 0xd2, 0x0d, 0x7c, 0x2a, 0x49, 0x8b, 0xe0, 0xdd, 0x7d, 0x9b, 0x4d, 0x3e, + 0xab, 0xc0, 0xb0, 0xbf, 0xe0, 0x30, 0x79, 0xf3, 0x16, 0x59, 0xb6, 0x98, 0xbc, 0x79, 0x8b, 0xae, + 0x67, 0x54, 0x4f, 0x51, 0xb2, 0xa7, 0xc8, 0x0b, 0x89, 0x7b, 0x4c, 0xc3, 0xb1, 0x8a, 0xac, 0x52, + 0xd0, 0xa0, 0xc4, 0xbd, 0xad, 0xe0, 0x0b, 0x29, 0xa1, 0xa2, 0x40, 0x89, 0x95, 0x14, 0x57, 0x8e, + 0x28, 0xb1, 0x92, 0x62, 0x6b, 0x10, 0xe5, 0xb2, 0x6e, 0x18, 0x0b, 0x22, 0x16, 0xca, 0x3d, 0xf2, + 0x55, 0x3f, 0xd2, 0xe8, 0x7d, 0x22, 0xba, 0xc8, 0x50, 0xc2, 0x9c, 0x27, 0x16, 0x38, 0x4a, 0x98, + 0xf3, 0xe4, 0xea, 0x46, 0xb9, 0xd3, 0x8c, 0x75, 0x81, 0xa3, 0xe8, 0x2b, 0x85, 0xa4, 0xfb, 0x92, + 0x88, 0xc7, 0x28, 0x24, 0x6c, 0x78, 0xfc, 0xfb, 0x17, 0x12, 0x36, 0x3c, 0xe1, 0xfd, 0x0b, 0xb9, + 0x7d, 0x89, 0xf7, 0x85, 0x8c, 0xa2, 0xb5, 0x86, 0x0e, 0xd8, 0xf6, 0x78, 0xa7, 0x7f, 0x55, 0x60, + 0x6f, 0xec, 0xbb, 0x17, 0x12, 0xc6, 0xa1, 0xdd, 0xe3, 0x1a, 0x12, 0xc6, 0xa1, 0xed, 0xb3, 0x1b, + 0xea, 0x0c, 0xe5, 0xf5, 0x22, 0x39, 0x9f, 0x18, 0xd4, 0x46, 0x30, 0x5a, 0x14, 0x0f, 0xfe, 0xbc, + 0xa9, 0xc0, 0x68, 0xb0, 0x58, 0x52, 0xe2, 0x6c, 0x34, 0xa6, 0x04, 0x34, 0x7b, 0xbe, 0x03, 0xc8, + 0x34, 0xcc, 0xb4, 0xfe, 0x4f, 0x3a, 0x04, 0xf7, 0xed, 0x41, 0xbe, 0xac, 0xc0, 0x78, 0x44, 0xed, + 0xa1, 0x4c, 0x8e, 0x58, 0x54, 0xad, 0xa4, 0x44, 0xfa, 0x49, 0x64, 0xb5, 0xa4, 0xdc, 0xed, 0xf7, + 0x2a, 0x05, 0xe5, 0x65, 0xb0, 0xe2, 0xb0, 0xfa, 0xd7, 0x33, 0x70, 0xb0, 0x6d, 0x15, 0x1c, 0x59, + 0x48, 0x7d, 0x6b, 0x10, 0x57, 0x5e, 0x99, 0x7d, 0x71, 0x3b, 0x50, 0x21, 0xe3, 0x3f, 0x4a, 0x19, + 0x7f, 0x85, 0xdc, 0x4b, 0x77, 0x19, 0x55, 0x6a, 0x21, 0x4c, 0xbc, 0x8d, 0xf8, 0x9e, 0x02, 0x6a, + 0xfb, 0xca, 0x24, 0xf2, 0xa2, 0xa4, 0x12, 0x4a, 0x54, 0x4b, 0x65, 0x6f, 0x6d, 0x0b, 0xae, 0x34, + 0x21, 0x8b, 0x46, 0x31, 0xb1, 0xcb, 0x99, 0xa2, 0xeb, 0xd9, 0x5b, 0x65, 0x52, 0xe4, 0x2f, 0x15, + 0x18, 0x0d, 0xd6, 0x39, 0xc9, 0xa4, 0x14, 0x47, 0x57, 0x55, 0xc9, 0xa4, 0x14, 0xc7, 0x14, 0x55, + 0xc9, 0x25, 0x89, 0x69, 0xec, 0x8c, 0xcb, 0x76, 0xc1, 0x59, 0x5d, 0x4f, 0xee, 0x11, 0xd6, 0x2a, + 0x3d, 0x26, 0xdf, 0x54, 0x80, 0x84, 0x4b, 0x6f, 0x24, 0x92, 0x1f, 0x62, 0x6b, 0xa6, 0x24, 0x92, + 0x1f, 0xe2, 0x2b, 0xa3, 0xe4, 0x32, 0xad, 0xb0, 0x38, 0xc9, 0x8b, 0x80, 0xb3, 0xd4, 0x78, 0xec, + 0x61, 0xee, 0x6d, 0x05, 0xc6, 0x22, 0xaa, 0x9d, 0x48, 0x27, 0x14, 0xa6, 0x70, 0x8c, 0x09, 0x05, + 0x56, 0x72, 0x27, 0x20, 0x11, 0xfc, 0xd9, 0x2d, 0x06, 0xf3, 0xeb, 0x5f, 0x7d, 0x77, 0x9f, 0xf2, + 0xd6, 0xbb, 0xfb, 0x94, 0x6f, 0xbd, 0xbb, 0x4f, 0xf9, 0xe5, 0xf7, 0xf6, 0xed, 0x78, 0xeb, 0xbd, + 0x7d, 0x3b, 0xfe, 0xf1, 0xbd, 0x7d, 0x3b, 0x5e, 0xbb, 0x5d, 0x31, 0x9c, 0xf5, 0xe6, 0xea, 0x54, + 0xc9, 0xaa, 0xe6, 0x16, 0x38, 0xfe, 0x45, 0x6d, 0xd5, 0x6e, 0x8d, 0x76, 0xac, 0x64, 0x35, 0x74, + 0xef, 0xcf, 0x75, 0xcd, 0xa8, 0xe1, 0x45, 0x83, 0xdd, 0x22, 0xc5, 0xd9, 0xac, 0xeb, 0xf6, 0x6a, + 0x2f, 0xfd, 0x6f, 0xae, 0x4f, 0xfe, 0x5f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x04, 0xe4, 0x86, 0x01, + 0xdc, 0x7b, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -7159,6 +7423,8 @@ const _ = grpc.SupportPackageIsVersion4 // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. type QueryClient interface { + L3DerivativeOrderBook(ctx context.Context, in *QueryFullDerivativeOrderbookRequest, opts ...grpc.CallOption) (*QueryFullDerivativeOrderbookResponse, error) + L3SpotOrderBook(ctx context.Context, in *QueryFullSpotOrderbookRequest, opts ...grpc.CallOption) (*QueryFullSpotOrderbookResponse, error) // Retrieves exchange params QueryExchangeParams(ctx context.Context, in *QueryExchangeParamsRequest, opts ...grpc.CallOption) (*QueryExchangeParamsResponse, error) // Retrieves a Subaccount's Deposits @@ -7293,6 +7559,24 @@ func NewQueryClient(cc grpc1.ClientConn) QueryClient { return &queryClient{cc} } +func (c *queryClient) L3DerivativeOrderBook(ctx context.Context, in *QueryFullDerivativeOrderbookRequest, opts ...grpc.CallOption) (*QueryFullDerivativeOrderbookResponse, error) { + out := new(QueryFullDerivativeOrderbookResponse) + err := c.cc.Invoke(ctx, "/injective.exchange.v1beta1.Query/L3DerivativeOrderBook", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *queryClient) L3SpotOrderBook(ctx context.Context, in *QueryFullSpotOrderbookRequest, opts ...grpc.CallOption) (*QueryFullSpotOrderbookResponse, error) { + out := new(QueryFullSpotOrderbookResponse) + err := c.cc.Invoke(ctx, "/injective.exchange.v1beta1.Query/L3SpotOrderBook", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *queryClient) QueryExchangeParams(ctx context.Context, in *QueryExchangeParamsRequest, opts ...grpc.CallOption) (*QueryExchangeParamsResponse, error) { out := new(QueryExchangeParamsResponse) err := c.cc.Invoke(ctx, "/injective.exchange.v1beta1.Query/QueryExchangeParams", in, out, opts...) @@ -7835,6 +8119,8 @@ func (c *queryClient) GrantAuthorizations(ctx context.Context, in *QueryGrantAut // QueryServer is the server API for Query service. type QueryServer interface { + L3DerivativeOrderBook(context.Context, *QueryFullDerivativeOrderbookRequest) (*QueryFullDerivativeOrderbookResponse, error) + L3SpotOrderBook(context.Context, *QueryFullSpotOrderbookRequest) (*QueryFullSpotOrderbookResponse, error) // Retrieves exchange params QueryExchangeParams(context.Context, *QueryExchangeParamsRequest) (*QueryExchangeParamsResponse, error) // Retrieves a Subaccount's Deposits @@ -7965,6 +8251,12 @@ type QueryServer interface { type UnimplementedQueryServer struct { } +func (*UnimplementedQueryServer) L3DerivativeOrderBook(ctx context.Context, req *QueryFullDerivativeOrderbookRequest) (*QueryFullDerivativeOrderbookResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method L3DerivativeOrderBook not implemented") +} +func (*UnimplementedQueryServer) L3SpotOrderBook(ctx context.Context, req *QueryFullSpotOrderbookRequest) (*QueryFullSpotOrderbookResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method L3SpotOrderBook not implemented") +} func (*UnimplementedQueryServer) QueryExchangeParams(ctx context.Context, req *QueryExchangeParamsRequest) (*QueryExchangeParamsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method QueryExchangeParams not implemented") } @@ -8150,6 +8442,42 @@ func RegisterQueryServer(s grpc1.Server, srv QueryServer) { s.RegisterService(&_Query_serviceDesc, srv) } +func _Query_L3DerivativeOrderBook_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryFullDerivativeOrderbookRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).L3DerivativeOrderBook(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/injective.exchange.v1beta1.Query/L3DerivativeOrderBook", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).L3DerivativeOrderBook(ctx, req.(*QueryFullDerivativeOrderbookRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Query_L3SpotOrderBook_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryFullSpotOrderbookRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).L3SpotOrderBook(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/injective.exchange.v1beta1.Query/L3SpotOrderBook", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).L3SpotOrderBook(ctx, req.(*QueryFullSpotOrderbookRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _Query_QueryExchangeParams_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(QueryExchangeParamsRequest) if err := dec(in); err != nil { @@ -9234,6 +9562,14 @@ var _Query_serviceDesc = grpc.ServiceDesc{ ServiceName: "injective.exchange.v1beta1.Query", HandlerType: (*QueryServer)(nil), Methods: []grpc.MethodDesc{ + { + MethodName: "L3DerivativeOrderBook", + Handler: _Query_L3DerivativeOrderBook_Handler, + }, + { + MethodName: "L3SpotOrderBook", + Handler: _Query_L3SpotOrderBook_Handler, + }, { MethodName: "QueryExchangeParams", Handler: _Query_QueryExchangeParams_Handler, @@ -14394,7 +14730,7 @@ func (m *QueryTraderDerivativeConditionalOrdersResponse) MarshalToSizedBuffer(dA return len(dAtA) - i, nil } -func (m *QueryMarketAtomicExecutionFeeMultiplierRequest) Marshal() (dAtA []byte, err error) { +func (m *QueryFullSpotOrderbookRequest) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -14404,12 +14740,12 @@ func (m *QueryMarketAtomicExecutionFeeMultiplierRequest) Marshal() (dAtA []byte, return dAtA[:n], nil } -func (m *QueryMarketAtomicExecutionFeeMultiplierRequest) MarshalTo(dAtA []byte) (int, error) { +func (m *QueryFullSpotOrderbookRequest) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *QueryMarketAtomicExecutionFeeMultiplierRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *QueryFullSpotOrderbookRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -14424,7 +14760,7 @@ func (m *QueryMarketAtomicExecutionFeeMultiplierRequest) MarshalToSizedBuffer(dA return len(dAtA) - i, nil } -func (m *QueryMarketAtomicExecutionFeeMultiplierResponse) Marshal() (dAtA []byte, err error) { +func (m *QueryFullSpotOrderbookResponse) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -14434,30 +14770,48 @@ func (m *QueryMarketAtomicExecutionFeeMultiplierResponse) Marshal() (dAtA []byte return dAtA[:n], nil } -func (m *QueryMarketAtomicExecutionFeeMultiplierResponse) MarshalTo(dAtA []byte) (int, error) { +func (m *QueryFullSpotOrderbookResponse) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *QueryMarketAtomicExecutionFeeMultiplierResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *QueryFullSpotOrderbookResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l - { - size := m.Multiplier.Size() - i -= size - if _, err := m.Multiplier.MarshalTo(dAtA[i:]); err != nil { - return 0, err + if len(m.Asks) > 0 { + for iNdEx := len(m.Asks) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Asks[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + } + if len(m.Bids) > 0 { + for iNdEx := len(m.Bids) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Bids[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa } - i = encodeVarintQuery(dAtA, i, uint64(size)) } - i-- - dAtA[i] = 0xa return len(dAtA) - i, nil } -func (m *QueryActiveStakeGrantRequest) Marshal() (dAtA []byte, err error) { +func (m *QueryFullDerivativeOrderbookRequest) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -14467,22 +14821,223 @@ func (m *QueryActiveStakeGrantRequest) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *QueryActiveStakeGrantRequest) MarshalTo(dAtA []byte) (int, error) { +func (m *QueryFullDerivativeOrderbookRequest) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *QueryActiveStakeGrantRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *QueryFullDerivativeOrderbookRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l - if len(m.Grantee) > 0 { - i -= len(m.Grantee) - copy(dAtA[i:], m.Grantee) - i = encodeVarintQuery(dAtA, i, uint64(len(m.Grantee))) - i-- - dAtA[i] = 0xa + if len(m.MarketId) > 0 { + i -= len(m.MarketId) + copy(dAtA[i:], m.MarketId) + i = encodeVarintQuery(dAtA, i, uint64(len(m.MarketId))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *QueryFullDerivativeOrderbookResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryFullDerivativeOrderbookResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryFullDerivativeOrderbookResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Asks) > 0 { + for iNdEx := len(m.Asks) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Asks[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + } + if len(m.Bids) > 0 { + for iNdEx := len(m.Bids) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Bids[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func (m *TrimmedLimitOrder) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *TrimmedLimitOrder) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *TrimmedLimitOrder) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.SubaccountId) > 0 { + i -= len(m.SubaccountId) + copy(dAtA[i:], m.SubaccountId) + i = encodeVarintQuery(dAtA, i, uint64(len(m.SubaccountId))) + i-- + dAtA[i] = 0x22 + } + if len(m.OrderHash) > 0 { + i -= len(m.OrderHash) + copy(dAtA[i:], m.OrderHash) + i = encodeVarintQuery(dAtA, i, uint64(len(m.OrderHash))) + i-- + dAtA[i] = 0x1a + } + { + size := m.Quantity.Size() + i -= size + if _, err := m.Quantity.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + { + size := m.Price.Size() + i -= size + if _, err := m.Price.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func (m *QueryMarketAtomicExecutionFeeMultiplierRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryMarketAtomicExecutionFeeMultiplierRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryMarketAtomicExecutionFeeMultiplierRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.MarketId) > 0 { + i -= len(m.MarketId) + copy(dAtA[i:], m.MarketId) + i = encodeVarintQuery(dAtA, i, uint64(len(m.MarketId))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *QueryMarketAtomicExecutionFeeMultiplierResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryMarketAtomicExecutionFeeMultiplierResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryMarketAtomicExecutionFeeMultiplierResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size := m.Multiplier.Size() + i -= size + if _, err := m.Multiplier.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func (m *QueryActiveStakeGrantRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryActiveStakeGrantRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryActiveStakeGrantRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Grantee) > 0 { + i -= len(m.Grantee) + copy(dAtA[i:], m.Grantee) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Grantee))) + i-- + dAtA[i] = 0xa } return len(dAtA) - i, nil } @@ -16683,7 +17238,7 @@ func (m *QueryTraderDerivativeConditionalOrdersResponse) Size() (n int) { return n } -func (m *QueryMarketAtomicExecutionFeeMultiplierRequest) Size() (n int) { +func (m *QueryFullSpotOrderbookRequest) Size() (n int) { if m == nil { return 0 } @@ -16696,95 +17251,184 @@ func (m *QueryMarketAtomicExecutionFeeMultiplierRequest) Size() (n int) { return n } -func (m *QueryMarketAtomicExecutionFeeMultiplierResponse) Size() (n int) { +func (m *QueryFullSpotOrderbookResponse) Size() (n int) { if m == nil { return 0 } var l int _ = l - l = m.Multiplier.Size() - n += 1 + l + sovQuery(uint64(l)) + if len(m.Bids) > 0 { + for _, e := range m.Bids { + l = e.Size() + n += 1 + l + sovQuery(uint64(l)) + } + } + if len(m.Asks) > 0 { + for _, e := range m.Asks { + l = e.Size() + n += 1 + l + sovQuery(uint64(l)) + } + } return n } -func (m *QueryActiveStakeGrantRequest) Size() (n int) { +func (m *QueryFullDerivativeOrderbookRequest) Size() (n int) { if m == nil { return 0 } var l int _ = l - l = len(m.Grantee) + l = len(m.MarketId) if l > 0 { n += 1 + l + sovQuery(uint64(l)) } return n } -func (m *QueryActiveStakeGrantResponse) Size() (n int) { +func (m *QueryFullDerivativeOrderbookResponse) Size() (n int) { if m == nil { return 0 } var l int _ = l - if m.Grant != nil { - l = m.Grant.Size() - n += 1 + l + sovQuery(uint64(l)) + if len(m.Bids) > 0 { + for _, e := range m.Bids { + l = e.Size() + n += 1 + l + sovQuery(uint64(l)) + } } - if m.EffectiveGrant != nil { - l = m.EffectiveGrant.Size() - n += 1 + l + sovQuery(uint64(l)) + if len(m.Asks) > 0 { + for _, e := range m.Asks { + l = e.Size() + n += 1 + l + sovQuery(uint64(l)) + } } return n } -func (m *QueryGrantAuthorizationRequest) Size() (n int) { +func (m *TrimmedLimitOrder) Size() (n int) { if m == nil { return 0 } var l int _ = l - l = len(m.Granter) + l = m.Price.Size() + n += 1 + l + sovQuery(uint64(l)) + l = m.Quantity.Size() + n += 1 + l + sovQuery(uint64(l)) + l = len(m.OrderHash) if l > 0 { n += 1 + l + sovQuery(uint64(l)) } - l = len(m.Grantee) + l = len(m.SubaccountId) if l > 0 { n += 1 + l + sovQuery(uint64(l)) } return n } -func (m *QueryGrantAuthorizationResponse) Size() (n int) { +func (m *QueryMarketAtomicExecutionFeeMultiplierRequest) Size() (n int) { if m == nil { return 0 } var l int _ = l - l = m.Amount.Size() + l = len(m.MarketId) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryMarketAtomicExecutionFeeMultiplierResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.Multiplier.Size() n += 1 + l + sovQuery(uint64(l)) return n } -func (m *QueryGrantAuthorizationsRequest) Size() (n int) { +func (m *QueryActiveStakeGrantRequest) Size() (n int) { if m == nil { return 0 } var l int _ = l - l = len(m.Granter) + l = len(m.Grantee) if l > 0 { n += 1 + l + sovQuery(uint64(l)) } return n } -func (m *QueryGrantAuthorizationsResponse) Size() (n int) { +func (m *QueryActiveStakeGrantResponse) Size() (n int) { if m == nil { return 0 } var l int _ = l - l = m.TotalGrantAmount.Size() + if m.Grant != nil { + l = m.Grant.Size() + n += 1 + l + sovQuery(uint64(l)) + } + if m.EffectiveGrant != nil { + l = m.EffectiveGrant.Size() + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryGrantAuthorizationRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Granter) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + l = len(m.Grantee) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryGrantAuthorizationResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.Amount.Size() + n += 1 + l + sovQuery(uint64(l)) + return n +} + +func (m *QueryGrantAuthorizationsRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Granter) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryGrantAuthorizationsResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.TotalGrantAmount.Size() n += 1 + l + sovQuery(uint64(l)) if len(m.Grants) > 0 { for _, e := range m.Grants { @@ -29814,6 +30458,588 @@ func (m *QueryTraderDerivativeConditionalOrdersResponse) Unmarshal(dAtA []byte) } return nil } +func (m *QueryFullSpotOrderbookRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryFullSpotOrderbookRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryFullSpotOrderbookRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MarketId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.MarketId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryFullSpotOrderbookResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryFullSpotOrderbookResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryFullSpotOrderbookResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Bids", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Bids = append(m.Bids, &TrimmedLimitOrder{}) + if err := m.Bids[len(m.Bids)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Asks", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Asks = append(m.Asks, &TrimmedLimitOrder{}) + if err := m.Asks[len(m.Asks)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryFullDerivativeOrderbookRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryFullDerivativeOrderbookRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryFullDerivativeOrderbookRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MarketId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.MarketId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryFullDerivativeOrderbookResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryFullDerivativeOrderbookResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryFullDerivativeOrderbookResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Bids", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Bids = append(m.Bids, &TrimmedLimitOrder{}) + if err := m.Bids[len(m.Bids)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Asks", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Asks = append(m.Asks, &TrimmedLimitOrder{}) + if err := m.Asks[len(m.Asks)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *TrimmedLimitOrder) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: TrimmedLimitOrder: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: TrimmedLimitOrder: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Price", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Price.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Quantity", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Quantity.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OrderHash", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.OrderHash = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SubaccountId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.SubaccountId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *QueryMarketAtomicExecutionFeeMultiplierRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 diff --git a/chain/exchange/types/reclamation.go b/chain/exchange/types/reclamation.go deleted file mode 100644 index e1d7d3f0..00000000 --- a/chain/exchange/types/reclamation.go +++ /dev/null @@ -1,41 +0,0 @@ -package types - -import ( - "fmt" - - sdksecp256k1 "github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1" - - "github.com/InjectiveLabs/sdk-go/chain/crypto/ethsecp256k1" - - sdk "github.com/cosmos/cosmos-sdk/types" -) - -func ValidateFundsReclaimSignature( - lockedAccountPubKey, signature []byte, -) error { - // validate the signature of the locked account - lockedPubKey := sdksecp256k1.PubKey{ - Key: lockedAccountPubKey, - } - - correctPubKey := ethsecp256k1.PubKey{ - Key: lockedAccountPubKey, - } - - lockedAddress := sdk.AccAddress(lockedPubKey.Address()) - recipient := sdk.AccAddress(correctPubKey.Address()) - - signMessage := ConstructFundsReclaimMessage(recipient, lockedAddress) - - if !lockedPubKey.VerifySignature(signMessage, signature) { - return ErrInvalidSignature - } - return nil -} - -func ConstructFundsReclaimMessage( - recipient, signer sdk.AccAddress, -) []byte { - message := fmt.Sprintf("I authorize %s to reclaim my funds from locked account %s on Injective", recipient.String(), signer.String()) - return []byte(message) -} diff --git a/chain/exchange/types/spot_orders.go b/chain/exchange/types/spot_orders.go index ac5b243e..f7e34d45 100644 --- a/chain/exchange/types/spot_orders.go +++ b/chain/exchange/types/spot_orders.go @@ -24,6 +24,14 @@ func (o *SpotOrder) ToSpotMarketOrder(sender sdk.AccAddress, balanceHold math.Le TriggerPrice: o.TriggerPrice, } } +func (m *SpotLimitOrder) ToStandardized() *TrimmedLimitOrder { + return &TrimmedLimitOrder{ + Price: m.OrderInfo.Price, + Quantity: m.OrderInfo.Quantity, + OrderHash: common.BytesToHash(m.OrderHash).Hex(), + SubaccountId: m.OrderInfo.SubaccountId, + } +} func (o *SpotOrder) GetNewSpotLimitOrder(sender sdk.AccAddress, orderHash common.Hash) *SpotLimitOrder { if o.OrderInfo.FeeRecipient == "" { @@ -143,7 +151,9 @@ func (m *SpotLimitOrder) GetUnfilledFeeAmount(fee math.LegacyDec) math.LegacyDec return m.GetUnfilledNotional().Mul(fee) } -func (m *SpotOrder) GetBalanceHoldAndMarginDenom(market *SpotMarket) (balanceHold math.LegacyDec, denom string) { +func (m *SpotOrder) GetBalanceHoldAndMarginDenom(market *SpotMarket) (math.LegacyDec, string) { + var denom string + var balanceHold math.LegacyDec if m.IsBuy() { denom = market.QuoteDenom if m.OrderType.IsPostOnly() { @@ -165,7 +175,9 @@ func (m *SpotOrder) GetBalanceHoldAndMarginDenom(market *SpotMarket) (balanceHol return balanceHold, denom } -func (m *SpotLimitOrder) GetUnfilledMarginHoldAndMarginDenom(market *SpotMarket, isTransient bool) (balanceHold math.LegacyDec, denom string) { +func (m *SpotLimitOrder) GetUnfilledMarginHoldAndMarginDenom(market *SpotMarket, isTransient bool) (math.LegacyDec, string) { + var denom string + var balanceHold math.LegacyDec if m.IsBuy() { var tradeFeeRate math.LegacyDec diff --git a/chain/exchange/types/tx.pb.go b/chain/exchange/types/tx.pb.go index 4a78fb8f..fb3514dd 100644 --- a/chain/exchange/types/tx.pb.go +++ b/chain/exchange/types/tx.pb.go @@ -638,6 +638,10 @@ type MsgInstantSpotMarketLaunch struct { // min_notional defines the minimum notional (in quote asset) required for // orders in the market MinNotional cosmossdk_io_math.LegacyDec `protobuf:"bytes,7,opt,name=min_notional,json=minNotional,proto3,customtype=cosmossdk.io/math.LegacyDec" json:"min_notional"` + // base token decimals + BaseDecimals uint32 `protobuf:"varint,8,opt,name=base_decimals,json=baseDecimals,proto3" json:"base_decimals,omitempty"` + // quote token decimals + QuoteDecimals uint32 `protobuf:"varint,9,opt,name=quote_decimals,json=quoteDecimals,proto3" json:"quote_decimals,omitempty"` } func (m *MsgInstantSpotMarketLaunch) Reset() { *m = MsgInstantSpotMarketLaunch{} } @@ -3674,254 +3678,256 @@ func init() { } var fileDescriptor_bd45b74cb6d81462 = []byte{ - // 3942 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x3c, 0x4b, 0x6c, 0x1c, 0xc7, - 0x95, 0x6a, 0x0e, 0x39, 0x24, 0x1f, 0x29, 0x89, 0x6a, 0x52, 0xe2, 0x70, 0xf8, 0x93, 0x9a, 0x92, - 0xf5, 0x27, 0xf5, 0xff, 0x8c, 0x56, 0x96, 0xf8, 0x91, 0x6c, 0xae, 0x45, 0x4b, 0x1e, 0xca, 0xbb, - 0xde, 0x85, 0xbd, 0x83, 0x66, 0x4f, 0x71, 0xd8, 0xe6, 0x4c, 0xf7, 0xa8, 0xbb, 0x47, 0x12, 0x8d, - 0x05, 0xd6, 0xeb, 0xc3, 0x42, 0xfb, 0xc1, 0x62, 0x17, 0x58, 0x60, 0x81, 0x05, 0x0c, 0x18, 0x58, - 0x20, 0x06, 0x9c, 0x20, 0x91, 0x83, 0x20, 0xf0, 0x21, 0x3f, 0x04, 0x39, 0x18, 0x3e, 0x29, 0x01, - 0x02, 0x04, 0x39, 0x28, 0x81, 0x7d, 0xb0, 0xe1, 0x53, 0x90, 0x4b, 0x80, 0xe4, 0x12, 0x74, 0x55, - 0x75, 0x4d, 0x7f, 0xaa, 0xba, 0x7b, 0x46, 0xa4, 0x2d, 0x07, 0xbe, 0x48, 0xec, 0xaa, 0xf7, 0x5e, - 0xbd, 0xf7, 0xea, 0x7d, 0xaa, 0x5e, 0x55, 0x0d, 0x4c, 0xe9, 0xc6, 0xeb, 0x48, 0x73, 0xf4, 0xbb, - 0x68, 0x06, 0xdd, 0xd7, 0xd6, 0x54, 0xa3, 0x82, 0x66, 0xee, 0x9e, 0x5c, 0x41, 0x8e, 0x7a, 0x72, - 0xc6, 0xb9, 0x3f, 0x5d, 0xb7, 0x4c, 0xc7, 0x94, 0xf3, 0x0c, 0x68, 0xda, 0x03, 0x9a, 0xa6, 0x40, - 0xf9, 0x09, 0xcd, 0xb4, 0x6b, 0xa6, 0x3d, 0xb3, 0xa2, 0xda, 0x4d, 0x4c, 0xcd, 0xd4, 0x0d, 0x82, - 0x9b, 0x9f, 0xa6, 0xfd, 0x65, 0xdd, 0x76, 0x2c, 0x7d, 0xa5, 0xe1, 0xe8, 0xa6, 0xc1, 0xe0, 0xfc, - 0x8d, 0x14, 0x7e, 0x98, 0xc2, 0xd7, 0xec, 0xca, 0xcc, 0xdd, 0x93, 0xee, 0x7f, 0xb4, 0x63, 0x84, - 0x74, 0x94, 0xf0, 0xd7, 0x0c, 0xf9, 0xa0, 0x5d, 0x43, 0x15, 0xb3, 0x62, 0x92, 0x76, 0xf7, 0x2f, - 0xda, 0x7a, 0x38, 0x46, 0x34, 0x26, 0x06, 0x01, 0x3d, 0xd0, 0x04, 0x35, 0x2d, 0x55, 0xab, 0x36, - 0x01, 0xc9, 0x27, 0x05, 0xdb, 0xa5, 0xd6, 0x74, 0xc3, 0x9c, 0xc1, 0xff, 0x92, 0x26, 0xe5, 0xdd, - 0x0c, 0x0c, 0x2e, 0xd9, 0x95, 0x97, 0xeb, 0x65, 0xd5, 0x41, 0xcb, 0x75, 0xd3, 0x59, 0x52, 0xad, - 0x75, 0xe4, 0xc8, 0x43, 0xd0, 0xa5, 0x96, 0x6b, 0xba, 0x91, 0x93, 0xf6, 0x4a, 0x87, 0x7a, 0x8b, - 0xe4, 0x43, 0x1e, 0x85, 0xde, 0x1a, 0xee, 0x2f, 0xe9, 0xe5, 0x5c, 0x07, 0xee, 0xe9, 0x21, 0x0d, - 0x8b, 0x65, 0x79, 0x1c, 0xc0, 0x40, 0xf7, 0x4a, 0x8e, 0xae, 0xad, 0x23, 0x2b, 0x97, 0xc1, 0xbd, - 0xbd, 0x06, 0xba, 0x77, 0x1b, 0x37, 0xc8, 0x7f, 0x07, 0xc3, 0x6e, 0x77, 0x4d, 0x37, 0x4a, 0x75, - 0x4b, 0xd7, 0x10, 0x06, 0x2c, 0xd9, 0xfa, 0x1b, 0x28, 0xd7, 0xe9, 0xc2, 0xce, 0x4d, 0x7d, 0xf8, - 0x78, 0x72, 0xdb, 0xaf, 0x1f, 0x4f, 0x8e, 0x12, 0xdd, 0xd8, 0xe5, 0xf5, 0x69, 0xdd, 0x9c, 0xa9, - 0xa9, 0xce, 0xda, 0xf4, 0x0d, 0x54, 0x51, 0xb5, 0x8d, 0x05, 0xa4, 0x15, 0x07, 0x0d, 0x74, 0x6f, - 0x49, 0x37, 0x6e, 0xb9, 0x14, 0x5c, 0xc2, 0xcb, 0xfa, 0x1b, 0x48, 0x2e, 0x41, 0xde, 0x23, 0x7d, - 0xa7, 0xa1, 0x1a, 0x8e, 0xee, 0x6c, 0xf8, 0xa8, 0x77, 0xa5, 0xa7, 0xbe, 0x87, 0x50, 0x7f, 0x89, - 0x12, 0x61, 0x03, 0x2c, 0xc1, 0x80, 0x37, 0x80, 0x61, 0xba, 0x93, 0xad, 0x56, 0x73, 0xd9, 0xf4, - 0x64, 0x77, 0x10, 0xb2, 0x2f, 0x52, 0xd4, 0xc2, 0xe9, 0x07, 0xef, 0x4c, 0x6e, 0xfb, 0xec, 0x9d, - 0xc9, 0x6d, 0x6f, 0x7d, 0xfa, 0xf0, 0x08, 0x51, 0xed, 0xbf, 0x7d, 0xfa, 0xf0, 0xc8, 0x18, 0x9b, - 0x66, 0xce, 0x8c, 0x28, 0xe3, 0x30, 0xca, 0x69, 0x2e, 0x22, 0xbb, 0x6e, 0x1a, 0x36, 0x52, 0xfe, - 0xd0, 0x09, 0x23, 0xac, 0x7f, 0x01, 0x59, 0xfa, 0x5d, 0xd5, 0xb5, 0x87, 0xaf, 0xa7, 0x73, 0xcb, - 0xa7, 0x53, 0x7e, 0x15, 0x72, 0x2e, 0x39, 0xdd, 0xd0, 0x1d, 0x5d, 0xad, 0x96, 0x6a, 0xaa, 0x55, - 0xd1, 0x8d, 0x92, 0xa5, 0x3a, 0xba, 0x99, 0xeb, 0x4e, 0x4f, 0x76, 0xb7, 0x81, 0xee, 0x2d, 0x12, - 0x1a, 0x4b, 0x98, 0x44, 0xd1, 0xa5, 0x20, 0x97, 0x61, 0x0c, 0x33, 0xab, 0xea, 0x86, 0x83, 0x0c, - 0xd5, 0xd0, 0x50, 0x70, 0x84, 0x9e, 0xf4, 0x23, 0x8c, 0xb8, 0x8c, 0x37, 0xe9, 0xf8, 0x46, 0x29, - 0x5c, 0xe4, 0x9b, 0xa4, 0x12, 0x35, 0xc9, 0xb0, 0x6d, 0x29, 0x53, 0xb0, 0x4f, 0xd8, 0xc9, 0xcc, - 0xf3, 0x03, 0x09, 0x76, 0x32, 0xa8, 0x5b, 0xaa, 0xa5, 0xd6, 0x6c, 0xf9, 0x1c, 0xf4, 0xaa, 0x0d, - 0x67, 0xcd, 0xb4, 0x74, 0x67, 0x83, 0x18, 0xe6, 0x5c, 0xee, 0x17, 0xdf, 0x3b, 0x3e, 0x44, 0x63, - 0xe3, 0x6c, 0xb9, 0x6c, 0x21, 0xdb, 0x5e, 0x76, 0x2c, 0xdd, 0xa8, 0x14, 0x9b, 0xa0, 0xf2, 0x55, - 0xc8, 0xd6, 0x31, 0x05, 0x6c, 0xb3, 0x7d, 0xa7, 0x94, 0x69, 0x71, 0x7c, 0x9f, 0x26, 0x63, 0xcd, - 0x75, 0xba, 0xfa, 0x29, 0x52, 0xbc, 0xc2, 0x51, 0x57, 0xca, 0x26, 0x45, 0x57, 0xd2, 0x5c, 0x54, - 0x52, 0x82, 0xaa, 0x8c, 0xc0, 0x70, 0xa8, 0x89, 0x49, 0xf5, 0x1d, 0x09, 0x60, 0xc9, 0xae, 0x2c, - 0xa0, 0xba, 0x69, 0xeb, 0x8e, 0xbc, 0x07, 0xb2, 0x36, 0x32, 0xca, 0xc8, 0xa2, 0x6e, 0x46, 0xbf, - 0xe4, 0x29, 0xd8, 0x6e, 0x37, 0x56, 0x54, 0x4d, 0x33, 0x1b, 0x86, 0xcf, 0xd7, 0xfa, 0x9b, 0x8d, - 0x8b, 0x65, 0xf9, 0x3c, 0x64, 0xd5, 0x9a, 0xfb, 0x37, 0xf6, 0xb5, 0xbe, 0x53, 0x23, 0x34, 0xf3, - 0x4c, 0xbb, 0x99, 0x89, 0x89, 0x33, 0x6f, 0xea, 0x86, 0x27, 0x0c, 0x01, 0x2f, 0x1c, 0xf5, 0x4f, - 0x1d, 0x1d, 0xd2, 0x95, 0x68, 0xd0, 0x2f, 0x11, 0x65, 0x51, 0x19, 0x02, 0xb9, 0xf9, 0xc5, 0xe4, - 0x78, 0x5f, 0x82, 0xbe, 0x25, 0xbb, 0xf2, 0xb7, 0xba, 0xb3, 0x56, 0xb6, 0xd4, 0x7b, 0x5f, 0x92, - 0x20, 0xc7, 0x04, 0x82, 0x0c, 0xf9, 0x05, 0xf1, 0x78, 0x54, 0x76, 0xe3, 0xc4, 0xe5, 0x7d, 0x32, - 0x51, 0xbe, 0x2d, 0xe1, 0xe9, 0x9a, 0xb7, 0x10, 0x8d, 0x93, 0x37, 0xf4, 0x9a, 0xee, 0xdc, 0xb4, - 0x5c, 0xf6, 0x45, 0x62, 0xcd, 0x42, 0x97, 0xe9, 0x02, 0x50, 0x7b, 0x3a, 0x10, 0x67, 0x4f, 0x2e, - 0x49, 0x4c, 0x8d, 0x32, 0x4f, 0x30, 0x0b, 0x17, 0x04, 0xbc, 0xef, 0xf5, 0xf3, 0xce, 0x63, 0x4a, - 0x79, 0x15, 0x26, 0x05, 0x5d, 0x9e, 0x4c, 0x6e, 0x28, 0xc6, 0xa3, 0x94, 0xd6, 0x54, 0x7b, 0x8d, - 0xf2, 0xde, 0x8b, 0x5b, 0x9e, 0x57, 0xed, 0x35, 0x79, 0x00, 0x32, 0x1a, 0x9b, 0x0b, 0xf7, 0xcf, - 0x42, 0x8f, 0xc7, 0x8d, 0xf2, 0x03, 0x09, 0xc6, 0x97, 0xec, 0xca, 0x9c, 0xea, 0x68, 0x6b, 0xbc, - 0x31, 0x6c, 0xa1, 0x52, 0xe6, 0x21, 0x8b, 0x87, 0x70, 0xbd, 0x2c, 0xd3, 0xaa, 0x56, 0x28, 0x6a, - 0xe1, 0x59, 0x81, 0x5a, 0x9e, 0xf1, 0xab, 0x45, 0xcc, 0x9c, 0xf2, 0x5d, 0x09, 0x0e, 0xc4, 0x42, - 0x30, 0x1d, 0xed, 0x83, 0xfe, 0xa6, 0x8e, 0x90, 0x9d, 0x93, 0xf6, 0x66, 0x0e, 0xf5, 0x16, 0xfb, - 0x98, 0x96, 0x90, 0x2d, 0x4f, 0xc3, 0xa0, 0x86, 0x69, 0x94, 0x4b, 0x84, 0xbd, 0x92, 0xa6, 0x97, - 0x89, 0x78, 0xbd, 0xc5, 0x5d, 0xb4, 0x8b, 0x90, 0x9d, 0xd7, 0xcb, 0xb6, 0x7c, 0x0c, 0xe4, 0x55, - 0x55, 0xaf, 0x86, 0xc0, 0x33, 0x18, 0x7c, 0x80, 0xf4, 0x34, 0xa1, 0x7d, 0x3a, 0xff, 0x71, 0x06, - 0xf2, 0x4b, 0x76, 0x65, 0xd1, 0xb0, 0x1d, 0xd5, 0x70, 0x9a, 0xb9, 0xfa, 0x86, 0xda, 0x30, 0xb4, - 0x35, 0xa1, 0xc2, 0xf7, 0x40, 0x96, 0x26, 0x5b, 0x32, 0x93, 0xf4, 0xcb, 0x9d, 0x7d, 0xd7, 0x73, - 0x4a, 0x65, 0x64, 0x98, 0x35, 0x2f, 0x11, 0xbb, 0x2d, 0x0b, 0x6e, 0x83, 0x3c, 0x09, 0x7d, 0x77, - 0x1a, 0xa6, 0xe3, 0xf5, 0xe3, 0xe4, 0x5b, 0x04, 0xdc, 0x44, 0x00, 0x8a, 0x30, 0xc8, 0xcb, 0xd2, - 0x2d, 0xe4, 0xd1, 0x81, 0x5a, 0x38, 0x45, 0xbf, 0x02, 0x7b, 0x04, 0xe9, 0xb9, 0x85, 0x3c, 0xea, - 0xb2, 0x15, 0xc9, 0xcd, 0xd7, 0xa1, 0x3f, 0x90, 0x97, 0x5b, 0x48, 0xa0, 0x7d, 0x35, 0xdf, 0x1a, - 0xeb, 0x92, 0xc0, 0xf2, 0xa6, 0xfc, 0x96, 0x27, 0x98, 0x22, 0x65, 0x3f, 0x28, 0xe2, 0xde, 0x66, - 0xd4, 0xec, 0xc6, 0xae, 0x4b, 0xc1, 0x6e, 0x21, 0xab, 0x8e, 0x9c, 0x06, 0x4e, 0xde, 0xed, 0x4f, - 0x76, 0x68, 0x36, 0x33, 0x91, 0xd9, 0x9c, 0x84, 0x3e, 0xb2, 0xa6, 0x2f, 0xb9, 0x26, 0xe0, 0x4d, - 0x37, 0x69, 0x9a, 0x53, 0x3d, 0x47, 0xc0, 0x00, 0x18, 0x8b, 0xcc, 0x73, 0x91, 0x22, 0xbd, 0xe4, - 0x36, 0xb9, 0x8e, 0x40, 0x41, 0x6c, 0x4d, 0xad, 0xa2, 0xd2, 0xaa, 0xaa, 0x39, 0xa6, 0x85, 0xa7, - 0x6e, 0x7b, 0x71, 0x17, 0xe9, 0x5a, 0x76, 0x7b, 0xae, 0xe3, 0x0e, 0xf9, 0x1a, 0x1b, 0xd3, 0xd9, - 0xa8, 0x23, 0x3c, 0x25, 0x3b, 0x4e, 0xed, 0xf7, 0xc5, 0x03, 0xba, 0xcb, 0xf0, 0xa2, 0xc1, 0x4d, - 0xfc, 0x79, 0x7b, 0xa3, 0x8e, 0x3c, 0xce, 0xdc, 0xbf, 0xe5, 0x45, 0xd8, 0x51, 0x53, 0xd7, 0x91, - 0x55, 0x5a, 0x45, 0xc8, 0x5d, 0xbc, 0xa0, 0x56, 0xd6, 0x2e, 0xfd, 0x18, 0xf5, 0x3a, 0x42, 0x45, - 0xd5, 0xc1, 0xa4, 0x9c, 0x20, 0xa9, 0xde, 0x16, 0x48, 0x39, 0x7e, 0x52, 0x2f, 0xc3, 0x10, 0x77, - 0xe5, 0x06, 0xe9, 0x09, 0xca, 0x7a, 0x74, 0xd9, 0xf6, 0x1a, 0xe4, 0x84, 0x4b, 0xb6, 0xbe, 0x16, - 0x96, 0xb0, 0x35, 0xee, 0x7a, 0x4d, 0xe4, 0xd4, 0xfd, 0x5b, 0xe3, 0xd4, 0xdb, 0x37, 0xd9, 0xa9, - 0x77, 0xb4, 0xe9, 0xd4, 0x57, 0x05, 0x4e, 0x7d, 0x88, 0xe3, 0xd4, 0x5c, 0x7f, 0x54, 0x0e, 0xc3, - 0xc1, 0x04, 0x10, 0xe6, 0xde, 0xff, 0xda, 0x0d, 0x53, 0x4d, 0xd8, 0x39, 0xdd, 0x50, 0xad, 0x8d, - 0x9b, 0x75, 0x97, 0x13, 0xfb, 0x89, 0x5c, 0x7c, 0x0a, 0xb6, 0x7b, 0xde, 0xb7, 0x51, 0x5b, 0x31, - 0xab, 0xd4, 0xc9, 0xa9, 0xd7, 0x2e, 0xe3, 0x36, 0xf9, 0x20, 0xec, 0xa4, 0x40, 0x75, 0xcb, 0xbc, - 0xab, 0xbb, 0xd4, 0x89, 0xab, 0xef, 0x20, 0xcd, 0xb7, 0x68, 0x6b, 0xd8, 0x37, 0xbb, 0xda, 0xf4, - 0xcd, 0x56, 0x43, 0x42, 0xd4, 0x97, 0xbb, 0x37, 0xcf, 0x97, 0x7b, 0xda, 0xf5, 0xe5, 0x93, 0x30, - 0x84, 0xee, 0xd7, 0x75, 0xec, 0x65, 0x46, 0xc9, 0xd1, 0x6b, 0xc8, 0x76, 0xd4, 0x5a, 0x1d, 0x07, - 0x87, 0x4c, 0x71, 0xb0, 0xd9, 0x77, 0xdb, 0xeb, 0x72, 0x51, 0x6c, 0xe4, 0x38, 0x55, 0x54, 0x43, - 0x86, 0xe3, 0x43, 0x01, 0x82, 0xd2, 0xec, 0x6b, 0xa2, 0xb0, 0xcd, 0x74, 0x9f, 0x7f, 0x33, 0x1d, - 0x8a, 0xdc, 0xfd, 0x69, 0xf3, 0xf0, 0xf6, 0xad, 0x71, 0xd9, 0x1d, 0x9b, 0xec, 0xb2, 0x3b, 0xdb, - 0x74, 0xd9, 0x05, 0x81, 0xcb, 0x1e, 0xe3, 0xb8, 0xac, 0xd0, 0xc7, 0x94, 0xe3, 0x70, 0x34, 0x05, - 0x18, 0x73, 0xdd, 0x9f, 0x07, 0x5c, 0xf7, 0x9a, 0x3b, 0xed, 0x1b, 0xd7, 0x1b, 0x4e, 0xc3, 0x42, - 0xf6, 0xd3, 0x9f, 0x9d, 0x43, 0x1e, 0x9d, 0xdd, 0x5c, 0x8f, 0xee, 0x16, 0x79, 0xf4, 0x1e, 0xc8, - 0x62, 0xff, 0xd8, 0xc0, 0xee, 0x97, 0x29, 0xd2, 0x2f, 0x8e, 0xa7, 0xf7, 0x6e, 0x9e, 0xa7, 0xc3, - 0x66, 0x67, 0xed, 0xbe, 0xad, 0xcb, 0xda, 0xfd, 0x5b, 0x96, 0xb5, 0xbf, 0x0e, 0x01, 0xc9, 0xbe, - 0x1a, 0x0c, 0x01, 0x42, 0x30, 0x16, 0x02, 0x1e, 0x4a, 0x90, 0x0b, 0xec, 0xab, 0x09, 0xd4, 0x96, - 0x17, 0x02, 0x2e, 0x0a, 0x84, 0xdd, 0xc7, 0x2f, 0x04, 0xf8, 0xb8, 0x52, 0xde, 0x97, 0x60, 0xaf, - 0xa8, 0x33, 0x6d, 0x2d, 0xa0, 0x08, 0xdd, 0x16, 0xb2, 0x1b, 0x55, 0xc7, 0x2b, 0x8e, 0x9d, 0x4a, - 0x92, 0x21, 0x38, 0x88, 0x8b, 0x89, 0x05, 0x92, 0x8a, 0x1e, 0x21, 0xaf, 0xbe, 0x90, 0xe1, 0xd5, - 0x17, 0x7e, 0x29, 0xc1, 0x1e, 0x3e, 0x15, 0xf9, 0x0a, 0xf4, 0x78, 0x46, 0x49, 0xab, 0x7b, 0xa9, - 0x4c, 0x87, 0x21, 0xc9, 0x17, 0xa1, 0x0b, 0x7b, 0x0a, 0x09, 0xc2, 0xe9, 0xb0, 0x09, 0x86, 0x7c, - 0x16, 0x32, 0xab, 0x08, 0x11, 0x96, 0xd3, 0x21, 0xba, 0xf0, 0xd1, 0xba, 0x09, 0x99, 0x8b, 0x66, - 0x55, 0x33, 0x45, 0x31, 0xe9, 0xb9, 0xa0, 0x0d, 0x1d, 0x8d, 0xd3, 0x7f, 0x93, 0x30, 0xc7, 0x92, - 0x0a, 0x0f, 0x12, 0xea, 0x26, 0x62, 0xe6, 0x94, 0x15, 0x5c, 0x36, 0x11, 0x03, 0x6c, 0x46, 0x69, - 0xe9, 0xa7, 0x7e, 0x73, 0x0d, 0xe4, 0xe4, 0x2f, 0x52, 0x4b, 0x97, 0x39, 0x5a, 0x3a, 0x1c, 0xd5, - 0x92, 0x80, 0x3f, 0x05, 0xc1, 0xa1, 0x24, 0x98, 0xcd, 0xd0, 0xd5, 0x47, 0x12, 0x5e, 0x90, 0xf8, - 0xea, 0x58, 0xbc, 0x59, 0x11, 0x17, 0xe3, 0x16, 0x43, 0xc5, 0xb8, 0x36, 0xf4, 0xe5, 0x95, 0xe4, - 0xae, 0x3e, 0x48, 0x88, 0xc4, 0x49, 0x4c, 0x2a, 0x1f, 0x48, 0x38, 0x14, 0x27, 0xc1, 0x3d, 0x8d, - 0xa5, 0xb9, 0x47, 0x12, 0xae, 0x7f, 0xcf, 0xbb, 0x89, 0xb9, 0xca, 0x22, 0xb8, 0x50, 0xed, 0xb1, - 0x07, 0x64, 0x91, 0x62, 0x78, 0x86, 0x53, 0x0c, 0x0f, 0xda, 0x4c, 0xa7, 0xc0, 0x66, 0xba, 0x9a, - 0x36, 0x33, 0xc3, 0x99, 0x9e, 0xd1, 0x80, 0x3d, 0x07, 0x79, 0x57, 0xc6, 0x70, 0xb1, 0x31, 0xd4, - 0xca, 0xd2, 0xe0, 0x7b, 0x24, 0x0d, 0x92, 0xb9, 0x0a, 0xc2, 0x88, 0xad, 0xed, 0x0a, 0x74, 0x96, - 0x55, 0x47, 0x4d, 0x53, 0xf8, 0xc5, 0x94, 0x16, 0x54, 0x47, 0xa5, 0x56, 0x86, 0x11, 0x0b, 0x67, - 0x1f, 0x24, 0x24, 0x40, 0x2e, 0x3f, 0xca, 0x75, 0x1c, 0x50, 0xb8, 0x7d, 0xcc, 0x98, 0x72, 0xd0, - 0x6d, 0x37, 0x34, 0x0d, 0xd9, 0xc4, 0x8e, 0x7a, 0x8a, 0xde, 0x67, 0x30, 0x78, 0xef, 0x0b, 0x12, - 0x0a, 0xb8, 0xf6, 0x56, 0x4b, 0xff, 0x2c, 0x47, 0xfa, 0x23, 0x02, 0xe9, 0x39, 0x8c, 0x29, 0x37, - 0xe1, 0x70, 0x22, 0x50, 0x4b, 0xfa, 0xf8, 0x7d, 0x37, 0x0c, 0x79, 0x14, 0xc9, 0x39, 0x56, 0x82, - 0x0a, 0x52, 0x9d, 0xf3, 0x5c, 0x81, 0x71, 0xbb, 0x6e, 0x3a, 0x25, 0xe6, 0x21, 0x76, 0xc9, 0x31, - 0x4b, 0x1a, 0xe6, 0xb8, 0xa4, 0x56, 0xab, 0xd4, 0x1d, 0x73, 0x36, 0x5b, 0x1e, 0x2c, 0x96, 0xed, - 0xdb, 0x26, 0x11, 0x69, 0xb6, 0x5a, 0x95, 0x5f, 0x80, 0xa9, 0x32, 0x0b, 0x1c, 0x62, 0x32, 0x9d, - 0x98, 0xcc, 0x44, 0x39, 0x74, 0xb4, 0x18, 0x22, 0xf6, 0x0f, 0xb0, 0x1b, 0x73, 0x43, 0xe3, 0x01, - 0x23, 0x91, 0xeb, 0x6a, 0x75, 0x1a, 0xa5, 0xa2, 0x6c, 0x33, 0xbb, 0xf3, 0x86, 0x90, 0x5f, 0x87, - 0x51, 0x1f, 0xb3, 0x91, 0x51, 0xb2, 0xad, 0x8f, 0x92, 0x2b, 0x07, 0xe3, 0x74, 0x73, 0x2c, 0x8e, - 0x2c, 0x38, 0x02, 0xe6, 0xba, 0x5b, 0x3d, 0x89, 0x09, 0xcb, 0x82, 0xc9, 0xc8, 0x75, 0x91, 0x2c, - 0x64, 0x94, 0x9e, 0xf6, 0x52, 0x0c, 0x5f, 0x22, 0x32, 0xe2, 0x1d, 0x98, 0x5c, 0xc1, 0x46, 0x5c, - 0x32, 0x89, 0x15, 0x47, 0x35, 0xd8, 0xdb, 0xba, 0x06, 0x47, 0x57, 0xa2, 0x8e, 0xc1, 0x94, 0x58, - 0x84, 0x83, 0xa1, 0x21, 0x85, 0x16, 0x06, 0xd8, 0xc2, 0xf6, 0xad, 0x44, 0xeb, 0x0a, 0x21, 0x23, - 0xbb, 0x17, 0x27, 0x06, 0x51, 0x5e, 0x5f, 0xbb, 0xca, 0x13, 0x08, 0x83, 0xa9, 0x16, 0x4e, 0x72, - 0x42, 0xca, 0x78, 0x24, 0xa4, 0xf8, 0x7d, 0x5b, 0x79, 0x90, 0x85, 0x31, 0x5e, 0x07, 0x8b, 0x1c, - 0xd3, 0x30, 0x88, 0xad, 0x8c, 0x2a, 0x22, 0x18, 0x45, 0x76, 0xb9, 0x5d, 0x34, 0x08, 0x93, 0x0e, - 0xb9, 0x00, 0x23, 0x3e, 0xab, 0x09, 0x61, 0x75, 0x60, 0xac, 0xe1, 0x26, 0x40, 0x10, 0xf7, 0x08, - 0xec, 0x6a, 0x5a, 0xb4, 0xb7, 0x0e, 0x20, 0xf1, 0x61, 0x27, 0x33, 0x50, 0xba, 0x16, 0x38, 0x07, - 0xc3, 0x61, 0xeb, 0xf4, 0x30, 0x48, 0x28, 0xd8, 0x1d, 0x32, 0x33, 0x8a, 0x37, 0x0b, 0xe3, 0xa1, - 0xc9, 0x09, 0xf1, 0xd8, 0x85, 0x79, 0xcc, 0x07, 0xf4, 0x1c, 0x64, 0xf3, 0x32, 0x8c, 0xf2, 0xe6, - 0xd7, 0x1b, 0x3e, 0x4b, 0x02, 0x5a, 0x74, 0xa2, 0x28, 0x07, 0xe7, 0x21, 0xe7, 0xad, 0x62, 0xfc, - 0xfe, 0x8b, 0xd7, 0x26, 0xdd, 0x84, 0x75, 0xda, 0xdf, 0x4c, 0x6c, 0x78, 0x39, 0x73, 0x16, 0x86, - 0xe9, 0x72, 0x26, 0x82, 0xd7, 0x83, 0xf1, 0x86, 0x48, 0x77, 0x08, 0x6d, 0x1e, 0x26, 0xbc, 0xf1, - 0xa2, 0xfe, 0x8c, 0xb1, 0x7b, 0x31, 0xf6, 0x28, 0x85, 0x0a, 0x19, 0x1e, 0x21, 0x32, 0x0b, 0xe3, - 0x74, 0x6c, 0x01, 0x0d, 0xe2, 0x1d, 0x79, 0x02, 0xc4, 0x25, 0xf1, 0xd7, 0xa0, 0x78, 0x7c, 0xf0, - 0xdd, 0x03, 0xd3, 0xe9, 0x23, 0x71, 0x9c, 0x42, 0x72, 0x72, 0x1a, 0xa6, 0xf5, 0x3c, 0xec, 0xa3, - 0xec, 0xc4, 0x90, 0xea, 0xc7, 0xa4, 0x28, 0xdf, 0x02, 0x4a, 0xbe, 0xfc, 0xf7, 0x23, 0x09, 0x26, - 0x38, 0xdb, 0xa1, 0x34, 0x15, 0x81, 0x4d, 0xdb, 0xa7, 0x5c, 0xe2, 0x78, 0xf0, 0xc1, 0xb8, 0xdd, - 0x9c, 0xbf, 0x32, 0xf0, 0x43, 0x09, 0x9e, 0x89, 0x07, 0x49, 0xbb, 0x49, 0x79, 0x25, 0x5c, 0x1f, - 0xb8, 0x90, 0x4e, 0xa2, 0x27, 0xab, 0x12, 0xfc, 0xae, 0x03, 0xc6, 0xe2, 0x68, 0x7d, 0x05, 0x6b, - 0x05, 0xf2, 0xdf, 0xc0, 0x0e, 0x7c, 0x89, 0x46, 0x37, 0x8d, 0x52, 0x19, 0x55, 0x1d, 0x15, 0xaf, - 0xee, 0xfb, 0x4e, 0x1d, 0x8e, 0xbd, 0x8d, 0x44, 0x31, 0x16, 0x5c, 0x04, 0x6a, 0x20, 0xdb, 0xeb, - 0xfe, 0x46, 0xf9, 0x12, 0x64, 0xeb, 0xea, 0x86, 0xd9, 0x70, 0x5a, 0x39, 0xa1, 0xa7, 0x28, 0x3e, - 0x95, 0xff, 0x8c, 0xac, 0x81, 0x39, 0x3b, 0xdb, 0x2f, 0xd4, 0xec, 0x13, 0xd7, 0xc2, 0xf1, 0x0c, - 0x2a, 0x3f, 0x91, 0xf0, 0x62, 0x38, 0x1e, 0xea, 0xe9, 0x36, 0xfe, 0x3f, 0xd1, 0x4a, 0x24, 0xce, - 0x34, 0x21, 0x65, 0x7d, 0x79, 0x3b, 0x4f, 0xd6, 0x5d, 0x53, 0xed, 0x75, 0x6c, 0x6a, 0x5d, 0xb4, - 0x7b, 0x49, 0xb5, 0xd7, 0x3d, 0x81, 0xb2, 0x4d, 0x81, 0x12, 0xf7, 0x74, 0x5c, 0x01, 0x15, 0x85, - 0x14, 0x89, 0x78, 0x7d, 0x6c, 0x93, 0xfa, 0xcf, 0x1d, 0xf8, 0x6e, 0xab, 0x68, 0xb3, 0xf3, 0x15, - 0x52, 0xd2, 0x05, 0x8e, 0x92, 0xf6, 0x47, 0x95, 0x14, 0x95, 0x51, 0x39, 0x80, 0x0b, 0x44, 0xa2, - 0x6e, 0xa6, 0xaa, 0xb7, 0x25, 0xe8, 0x65, 0xcb, 0xe0, 0xa0, 0x02, 0xa4, 0x24, 0x05, 0x74, 0x24, - 0x2a, 0x20, 0x13, 0xaf, 0x80, 0x4e, 0x81, 0x02, 0x9a, 0xe5, 0x0b, 0xe5, 0xfb, 0x24, 0xd5, 0xfa, - 0x36, 0xaf, 0xe1, 0x15, 0xc3, 0xd6, 0xed, 0xbb, 0x13, 0x53, 0x6c, 0x0c, 0x57, 0xca, 0x0d, 0x9c, - 0x61, 0x63, 0x20, 0x5a, 0xda, 0x71, 0xff, 0x4b, 0x07, 0xec, 0x5e, 0xb2, 0x2b, 0xcb, 0x4c, 0xd5, - 0xb7, 0x2d, 0xd5, 0xb0, 0x57, 0x63, 0x6c, 0xf9, 0x04, 0x0c, 0xd9, 0x66, 0xc3, 0xd2, 0x50, 0x89, - 0x37, 0x69, 0x32, 0xe9, 0x5b, 0xf6, 0x4f, 0x1d, 0x5e, 0x8f, 0xdb, 0x8e, 0x6e, 0x90, 0xd3, 0x6e, - 0x9e, 0xb1, 0x0f, 0xfb, 0x00, 0x96, 0xf9, 0x77, 0x34, 0x3b, 0x5b, 0xbb, 0xa3, 0x39, 0x1d, 0xd2, - 0xef, 0x84, 0x5f, 0xbf, 0x51, 0x71, 0x95, 0x49, 0x5c, 0x46, 0x8f, 0x76, 0x30, 0x83, 0x7e, 0xab, - 0x03, 0xdf, 0xe3, 0xbc, 0x76, 0xdf, 0x41, 0x96, 0xa1, 0x56, 0xff, 0x52, 0xf4, 0x74, 0x2c, 0xa4, - 0xa7, 0xc0, 0xdd, 0xfe, 0xb0, 0xb0, 0xf4, 0x6e, 0x7f, 0xb8, 0x99, 0xe9, 0xe8, 0x33, 0x09, 0xd7, - 0x6f, 0x6e, 0xe8, 0x77, 0x1a, 0x3a, 0xbe, 0x85, 0x4c, 0x17, 0x0c, 0x4f, 0x56, 0xbf, 0x09, 0x04, - 0x8f, 0x4c, 0x28, 0x78, 0xb0, 0x05, 0x40, 0x67, 0x7b, 0x0b, 0x00, 0xc9, 0x5b, 0x00, 0x1c, 0x8f, - 0xdb, 0xb5, 0x46, 0x24, 0x52, 0x26, 0xf0, 0xa6, 0x35, 0xd2, 0xce, 0x54, 0xf1, 0x2e, 0x49, 0xa6, - 0xd7, 0x6a, 0xc8, 0xaa, 0x20, 0x43, 0xdb, 0x58, 0xc6, 0xf7, 0x33, 0xe8, 0x2b, 0x87, 0x2d, 0x53, - 0x47, 0xe1, 0x64, 0x5c, 0xe2, 0xe3, 0x32, 0x43, 0x13, 0x1f, 0xb7, 0xaf, 0x79, 0x7f, 0xbc, 0x03, - 0x3f, 0xda, 0x58, 0x34, 0xdc, 0x4d, 0x91, 0xcd, 0xa4, 0x25, 0x47, 0xc6, 0x4f, 0x89, 0x0b, 0x04, - 0xf4, 0xd2, 0x19, 0x32, 0x93, 0x4b, 0xcc, 0x3f, 0x5a, 0x59, 0xac, 0x52, 0x1f, 0x39, 0x15, 0x52, - 0xaa, 0x12, 0x3c, 0x0f, 0xe6, 0xe9, 0x84, 0x3e, 0x36, 0xe0, 0x77, 0x86, 0xd5, 0xba, 0x80, 0xbe, - 0x56, 0x6b, 0x58, 0xad, 0x7c, 0x9d, 0x50, 0xb5, 0xf2, 0x3b, 0x99, 0x5a, 0x3f, 0x92, 0xb0, 0x73, - 0xde, 0xb2, 0xf4, 0xbb, 0x7a, 0x15, 0x55, 0x50, 0xf9, 0xda, 0x7d, 0xa4, 0x35, 0x1c, 0x34, 0x6f, - 0x1a, 0x8e, 0xa5, 0x6a, 0x62, 0xff, 0x1b, 0x82, 0xae, 0xd5, 0x86, 0x51, 0xb6, 0xa9, 0x2a, 0xc9, - 0x87, 0x7c, 0x18, 0x06, 0x34, 0x8a, 0x59, 0x52, 0xc9, 0x5b, 0x0f, 0xaa, 0xb4, 0x9d, 0x5e, 0x3b, - 0x7d, 0x02, 0x22, 0xcb, 0x74, 0x69, 0x40, 0xf4, 0x44, 0xb2, 0xfd, 0x65, 0xc1, 0x41, 0xfb, 0x01, - 0xbf, 0xb8, 0x42, 0x5e, 0xdd, 0x40, 0xb2, 0x3f, 0x0e, 0x80, 0xa5, 0xfb, 0xd7, 0x01, 0x30, 0xbf, - 0xa5, 0xb2, 0xbe, 0xba, 0x8a, 0x33, 0x7e, 0x6c, 0x1a, 0x38, 0xe1, 0x4e, 0xd5, 0x7b, 0xbf, 0x99, - 0x3c, 0x54, 0xd1, 0x9d, 0xb5, 0xc6, 0xca, 0xb4, 0x66, 0xd6, 0xe8, 0x63, 0x3f, 0xfa, 0xdf, 0x71, - 0xbb, 0xbc, 0x3e, 0xe3, 0x6c, 0xd4, 0x91, 0x8d, 0x11, 0xec, 0x62, 0x2f, 0x26, 0xbf, 0xa0, 0xaf, - 0xae, 0x16, 0x06, 0x39, 0x32, 0x29, 0xaf, 0xc1, 0xc0, 0x92, 0x5d, 0x29, 0xa2, 0x7b, 0xaa, 0x55, - 0xb6, 0x6f, 0xd6, 0x9d, 0x9b, 0x0d, 0xa1, 0xa6, 0x49, 0x9d, 0x90, 0xa3, 0x94, 0x11, 0xbf, 0x52, - 0x02, 0xa4, 0x94, 0x3c, 0x0e, 0xa8, 0x81, 0x36, 0xff, 0xfb, 0x96, 0xdd, 0xb8, 0x53, 0xab, 0xaa, - 0x7a, 0xed, 0x86, 0xa9, 0xad, 0xa3, 0xf2, 0x75, 0x3c, 0x79, 0x62, 0x27, 0x1a, 0xac, 0x62, 0xb0, - 0x59, 0x62, 0xe9, 0xb7, 0x1a, 0x2b, 0x2f, 0xa0, 0x0d, 0x3c, 0xf1, 0xfd, 0x45, 0x5e, 0x97, 0x3c, - 0x06, 0xbd, 0xb6, 0x5e, 0x31, 0x54, 0xa7, 0x61, 0x91, 0x4d, 0x78, 0x7f, 0xb1, 0xd9, 0x10, 0xbf, - 0xde, 0x88, 0xf2, 0x45, 0xd7, 0x1b, 0xd1, 0x0e, 0x26, 0xd2, 0x9b, 0xe4, 0xa9, 0xcb, 0xb2, 0x5e, - 0x31, 0xf0, 0x12, 0x7a, 0x19, 0xb2, 0xee, 0xdf, 0x54, 0x90, 0xfe, 0xb9, 0x4b, 0x9f, 0x3f, 0x9e, - 0xcc, 0xda, 0xb8, 0xe5, 0x8f, 0x8f, 0x27, 0x8f, 0xa7, 0x98, 0xc5, 0x59, 0x4d, 0xa3, 0x76, 0x5a, - 0xa4, 0xa4, 0xe4, 0x31, 0xe8, 0x5c, 0x20, 0x4b, 0x59, 0x97, 0x64, 0xcf, 0xe7, 0x8f, 0x27, 0xb1, - 0xcd, 0x16, 0x71, 0xab, 0x72, 0x1f, 0x3f, 0x1a, 0xc2, 0x1c, 0x98, 0x9a, 0x7c, 0x80, 0xc8, 0x4f, - 0x2e, 0x7b, 0x91, 0xda, 0x07, 0x46, 0x70, 0xbf, 0x8b, 0x3d, 0x6e, 0x17, 0xbe, 0xce, 0x35, 0x0f, - 0x5d, 0x77, 0xd5, 0x6a, 0x03, 0xd1, 0x9d, 0xeb, 0xc1, 0xb8, 0x84, 0xec, 0x93, 0xcf, 0xdb, 0x8d, - 0x63, 0x5c, 0xe5, 0x3f, 0x32, 0xd8, 0xcf, 0x67, 0xcb, 0x35, 0xdd, 0x20, 0x35, 0x61, 0xce, 0x96, - 0xba, 0xbd, 0xed, 0xd6, 0x8b, 0x30, 0xe0, 0xbb, 0x47, 0x49, 0x6a, 0x31, 0xcd, 0x92, 0x8a, 0x94, - 0x14, 0xbc, 0x76, 0x36, 0x91, 0xf1, 0xf5, 0x26, 0xe1, 0x55, 0xce, 0xce, 0xd6, 0xaf, 0x72, 0x76, - 0x89, 0xaf, 0x72, 0x5e, 0x85, 0xac, 0xed, 0xa8, 0x4e, 0xc3, 0xa6, 0xd7, 0xec, 0x0e, 0xc5, 0xaa, - 0x15, 0xcb, 0xba, 0x8c, 0xe1, 0x8b, 0x14, 0xaf, 0x50, 0x88, 0x2b, 0x6e, 0xc4, 0x2b, 0x5a, 0x39, - 0x8a, 0x6b, 0x1b, 0xf1, 0x40, 0xcc, 0x70, 0xbf, 0x49, 0x1e, 0x36, 0xcd, 0x92, 0x47, 0x6b, 0x6f, - 0xa0, 0x65, 0x47, 0x5d, 0x47, 0xcf, 0x59, 0xaa, 0xe1, 0x88, 0xbd, 0xf1, 0x3a, 0x64, 0x2b, 0x18, - 0x82, 0x6e, 0xaa, 0xa6, 0xe3, 0xc4, 0xc3, 0xb4, 0x3c, 0xf2, 0x58, 0xb5, 0x45, 0x8a, 0x5d, 0x38, - 0x11, 0xf7, 0xaa, 0x89, 0xc7, 0x91, 0xb2, 0x0f, 0x3f, 0x8d, 0xe0, 0x75, 0x31, 0x81, 0x36, 0x70, - 0x6c, 0x99, 0x75, 0xb9, 0x51, 0x1d, 0x1f, 0x84, 0x50, 0x9a, 0x1c, 0x74, 0x63, 0x7e, 0xd8, 0xb5, - 0x4c, 0xef, 0x33, 0x3e, 0x4a, 0x44, 0x47, 0xa0, 0x51, 0x22, 0xda, 0xe1, 0xf1, 0x76, 0xea, 0xd1, - 0x41, 0xc8, 0x2c, 0xd9, 0x15, 0x59, 0x85, 0x6e, 0xef, 0x71, 0xdf, 0x33, 0x09, 0x1e, 0x47, 0xe1, - 0xf2, 0xd3, 0xe9, 0xe0, 0x58, 0x7e, 0x29, 0x43, 0x0f, 0x7b, 0x77, 0x97, 0xe4, 0xd5, 0x1e, 0x60, - 0x7e, 0x26, 0x25, 0x20, 0x1b, 0xe5, 0xbf, 0x25, 0x18, 0x16, 0x3d, 0x48, 0x3a, 0x97, 0x40, 0x4c, - 0x80, 0x97, 0x7f, 0xb6, 0x3d, 0x3c, 0xc6, 0xd3, 0x3b, 0x12, 0x8c, 0xc5, 0x3e, 0x9e, 0xb9, 0x94, - 0x6e, 0x00, 0x2e, 0x72, 0x7e, 0xfe, 0x09, 0x90, 0x19, 0x8b, 0xdf, 0x92, 0x60, 0x6f, 0xe2, 0x2d, - 0xe2, 0x2b, 0xe9, 0x46, 0x12, 0x12, 0xc8, 0x3f, 0xf7, 0x84, 0x04, 0x18, 0xbb, 0x0f, 0x24, 0x18, - 0xe2, 0xbe, 0x7c, 0x3c, 0x9d, 0x30, 0x02, 0x0f, 0x29, 0x7f, 0xa9, 0x0d, 0x24, 0xc6, 0xca, 0xff, - 0x49, 0x90, 0x8f, 0x79, 0x75, 0x78, 0x31, 0x81, 0xb6, 0x18, 0x35, 0x3f, 0xdb, 0x36, 0x2a, 0x63, - 0xee, 0xdf, 0x25, 0xd8, 0xcd, 0xbf, 0x19, 0x7a, 0x26, 0xb5, 0xcc, 0x3e, 0xac, 0xfc, 0x5f, 0xb5, - 0x83, 0xc5, 0xb8, 0xd9, 0x80, 0x9d, 0xe1, 0x0b, 0x49, 0x49, 0x41, 0x24, 0x04, 0x9f, 0x3f, 0xd7, - 0x1a, 0x7c, 0x40, 0x11, 0xfc, 0xbb, 0x41, 0x67, 0x52, 0x69, 0x39, 0x84, 0x95, 0xa8, 0x88, 0xf8, - 0xbb, 0x3d, 0xff, 0x04, 0xbb, 0xa2, 0x77, 0x54, 0x4e, 0xa4, 0x21, 0xe9, 0xc7, 0xc8, 0x5f, 0x68, - 0x15, 0x83, 0x31, 0xf0, 0xbf, 0x12, 0x8c, 0x88, 0xb7, 0x37, 0x49, 0x74, 0x85, 0x98, 0xf9, 0xab, - 0xed, 0x62, 0x06, 0xdc, 0x29, 0xe6, 0x32, 0xea, 0xc5, 0x54, 0x06, 0xc8, 0x43, 0x4d, 0x74, 0xa7, - 0x14, 0x97, 0x48, 0xdd, 0x28, 0x99, 0x78, 0xb5, 0xf1, 0x4a, 0x7a, 0xb7, 0xe5, 0x12, 0x48, 0x8c, - 0x92, 0xa9, 0xef, 0x23, 0xbe, 0x2d, 0xc1, 0x68, 0xdc, 0x59, 0x70, 0xa1, 0x45, 0x8d, 0xf8, 0x23, - 0xc1, 0x5c, 0xfb, 0xb8, 0xc1, 0xe8, 0xc4, 0x3d, 0x2d, 0x3a, 0x93, 0xca, 0xcd, 0x43, 0x58, 0xc9, - 0xd1, 0x29, 0xee, 0x70, 0x06, 0x6b, 0x2b, 0xae, 0x9c, 0x5f, 0x48, 0xef, 0xf2, 0x61, 0xdc, 0x44, - 0x6d, 0xa5, 0x29, 0xc7, 0xfb, 0x52, 0xb4, 0xf8, 0x8d, 0x5e, 0xca, 0x14, 0x2d, 0x24, 0x90, 0x36, - 0x45, 0x27, 0x3e, 0x4d, 0x92, 0xff, 0x5f, 0x82, 0xf1, 0xf8, 0x2b, 0xd3, 0xe9, 0x92, 0x89, 0x00, - 0x3b, 0xbf, 0xf0, 0x24, 0xd8, 0x8c, 0xcb, 0x6f, 0x48, 0x30, 0x91, 0x70, 0x74, 0x7c, 0xb9, 0xf5, - 0x81, 0xfc, 0x8e, 0x72, 0xed, 0x89, 0xd0, 0x19, 0xa3, 0xff, 0x23, 0x41, 0x4e, 0x78, 0x6e, 0x78, - 0x3e, 0x95, 0xe1, 0x47, 0x11, 0xf3, 0x57, 0xda, 0x44, 0x0c, 0xe8, 0x2f, 0xe1, 0xfa, 0xe9, 0xe5, - 0xf4, 0xb6, 0xcf, 0x41, 0x4f, 0xd4, 0x5f, 0xca, 0xeb, 0xa3, 0x6f, 0x49, 0x20, 0x73, 0x4e, 0xa9, - 0x4e, 0x26, 0x95, 0x17, 0x22, 0x28, 0xf9, 0x8b, 0x2d, 0xa3, 0x30, 0x26, 0xfe, 0x11, 0x06, 0x22, - 0xe7, 0x3f, 0x49, 0x3b, 0x9c, 0x30, 0x42, 0xfe, 0x7c, 0x8b, 0x08, 0xfe, 0x55, 0x47, 0xf4, 0x64, - 0x25, 0x69, 0xd5, 0x11, 0xc1, 0x48, 0x5c, 0x75, 0x08, 0xcf, 0x34, 0x70, 0xbc, 0xe7, 0x1f, 0x68, - 0x24, 0xc5, 0x7b, 0x2e, 0x56, 0x62, 0xbc, 0x8f, 0x3d, 0x93, 0x90, 0xff, 0x53, 0x82, 0x3d, 0x82, - 0x03, 0x89, 0xb3, 0x89, 0x41, 0x90, 0x87, 0x96, 0xbf, 0xdc, 0x16, 0x5a, 0x80, 0x21, 0x41, 0x29, - 0xff, 0x6c, 0xe2, 0x5e, 0xbb, 0x2d, 0x86, 0xe2, 0xeb, 0xe0, 0xb2, 0x0d, 0xdb, 0x83, 0xd5, 0xd8, - 0x63, 0x09, 0xf4, 0x02, 0xd0, 0xf9, 0x33, 0xad, 0x40, 0x07, 0x22, 0x4a, 0x42, 0xdd, 0x2e, 0x49, - 0xac, 0x78, 0xf4, 0xc4, 0x88, 0x92, 0xae, 0x4e, 0x25, 0xd7, 0xa1, 0x3f, 0xf0, 0x2b, 0x4f, 0x47, - 0x13, 0xc8, 0xfa, 0x81, 0xf3, 0xa7, 0x5b, 0x00, 0xf6, 0x87, 0x8f, 0xc8, 0xef, 0xd7, 0xcd, 0xa4, - 0x22, 0xd4, 0x44, 0x48, 0x0c, 0x1f, 0xa2, 0x1f, 0x5e, 0xc3, 0xe6, 0x29, 0xf8, 0xd5, 0xb5, 0xb3, - 0xa9, 0x68, 0x86, 0xd1, 0x12, 0xcd, 0x33, 0xfe, 0xa7, 0xb6, 0x70, 0x11, 0x80, 0x5b, 0x25, 0x4c, - 0x52, 0x2e, 0x0f, 0x29, 0xb1, 0x08, 0x10, 0x57, 0xe2, 0xc3, 0xd9, 0x85, 0x53, 0xe0, 0x4b, 0xca, - 0x2e, 0x51, 0x94, 0xc4, 0xec, 0x22, 0xae, 0xe5, 0xe5, 0xbb, 0xde, 0xfc, 0xf4, 0xe1, 0x11, 0x69, - 0x6e, 0xed, 0xc3, 0x8f, 0x27, 0xa4, 0x47, 0x1f, 0x4f, 0x48, 0xbf, 0xfd, 0x78, 0x42, 0xfa, 0xaf, - 0x4f, 0x26, 0xb6, 0x3d, 0xfa, 0x64, 0x62, 0xdb, 0xaf, 0x3e, 0x99, 0xd8, 0xf6, 0xf7, 0x2f, 0xfa, - 0x8a, 0xfc, 0x8b, 0xde, 0x28, 0x37, 0xd4, 0x15, 0x7b, 0x86, 0x8d, 0x79, 0x5c, 0x33, 0x2d, 0xe4, - 0xff, 0x5c, 0x53, 0x75, 0x63, 0xa6, 0x66, 0x96, 0x1b, 0x55, 0x64, 0x37, 0x7f, 0x9e, 0x11, 0x1f, - 0x08, 0xac, 0x64, 0xf1, 0x4f, 0x2b, 0x9e, 0xfe, 0x73, 0x00, 0x00, 0x00, 0xff, 0xff, 0x5c, 0x05, - 0xa8, 0x24, 0x9c, 0x52, 0x00, 0x00, + // 3976 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x3c, 0x4b, 0x6c, 0x1c, 0x47, + 0x76, 0x6a, 0x0e, 0x39, 0x24, 0x1f, 0x3f, 0xa2, 0x9a, 0x94, 0x38, 0x1c, 0xfe, 0xa4, 0xa6, 0x64, + 0xfd, 0x49, 0xfd, 0x3f, 0xa3, 0xc8, 0x12, 0x3f, 0x92, 0xcd, 0x58, 0xb4, 0xe4, 0xa1, 0x9c, 0x38, + 0x81, 0x9d, 0x41, 0xb3, 0xa7, 0x38, 0x6c, 0x73, 0xa6, 0x7b, 0xd4, 0xdd, 0x23, 0x89, 0x46, 0x80, + 0x38, 0x3e, 0x04, 0x4a, 0x1c, 0x04, 0x09, 0x10, 0x20, 0x40, 0x00, 0x03, 0x06, 0x02, 0xc4, 0x80, + 0x13, 0x24, 0x72, 0x10, 0x04, 0x3e, 0x24, 0x41, 0x10, 0xe4, 0x60, 0xf8, 0xa4, 0x04, 0x08, 0xb0, + 0xd8, 0x83, 0x76, 0x61, 0x1f, 0x6c, 0xf8, 0xb4, 0xd8, 0xcb, 0x02, 0xbb, 0x97, 0x45, 0x57, 0x55, + 0xd7, 0xf4, 0xa7, 0xaa, 0xbb, 0x67, 0x44, 0xda, 0xf2, 0xc2, 0x17, 0x89, 0x5d, 0xf5, 0xde, 0xab, + 0xf7, 0x5e, 0xbd, 0x4f, 0xd5, 0xab, 0xaa, 0x81, 0x19, 0xdd, 0x78, 0x1b, 0x69, 0x8e, 0x7e, 0x1f, + 0xcd, 0xa1, 0x87, 0xda, 0x86, 0x6a, 0x54, 0xd0, 0xdc, 0xfd, 0xd3, 0x6b, 0xc8, 0x51, 0x4f, 0xcf, + 0x39, 0x0f, 0x67, 0xeb, 0x96, 0xe9, 0x98, 0x72, 0x9e, 0x01, 0xcd, 0x7a, 0x40, 0xb3, 0x14, 0x28, + 0x3f, 0xa5, 0x99, 0x76, 0xcd, 0xb4, 0xe7, 0xd6, 0x54, 0xbb, 0x89, 0xa9, 0x99, 0xba, 0x41, 0x70, + 0xf3, 0xb3, 0xb4, 0xbf, 0xac, 0xdb, 0x8e, 0xa5, 0xaf, 0x35, 0x1c, 0xdd, 0x34, 0x18, 0x9c, 0xbf, + 0x91, 0xc2, 0x8f, 0x52, 0xf8, 0x9a, 0x5d, 0x99, 0xbb, 0x7f, 0xda, 0xfd, 0x8f, 0x76, 0x8c, 0x91, + 0x8e, 0x12, 0xfe, 0x9a, 0x23, 0x1f, 0xb4, 0x6b, 0xa4, 0x62, 0x56, 0x4c, 0xd2, 0xee, 0xfe, 0x45, + 0x5b, 0x8f, 0xc6, 0x88, 0xc6, 0xc4, 0x20, 0xa0, 0x87, 0x9a, 0xa0, 0xa6, 0xa5, 0x6a, 0xd5, 0x26, + 0x20, 0xf9, 0xa4, 0x60, 0x7b, 0xd4, 0x9a, 0x6e, 0x98, 0x73, 0xf8, 0x5f, 0xd2, 0xa4, 0x7c, 0x94, + 0x81, 0xe1, 0x15, 0xbb, 0xf2, 0x7a, 0xbd, 0xac, 0x3a, 0x68, 0xb5, 0x6e, 0x3a, 0x2b, 0xaa, 0xb5, + 0x89, 0x1c, 0x79, 0x04, 0xba, 0xd4, 0x72, 0x4d, 0x37, 0x72, 0xd2, 0x7e, 0xe9, 0x48, 0x6f, 0x91, + 0x7c, 0xc8, 0xe3, 0xd0, 0x5b, 0xc3, 0xfd, 0x25, 0xbd, 0x9c, 0xeb, 0xc0, 0x3d, 0x3d, 0xa4, 0x61, + 0xb9, 0x2c, 0x4f, 0x02, 0x18, 0xe8, 0x41, 0xc9, 0xd1, 0xb5, 0x4d, 0x64, 0xe5, 0x32, 0xb8, 0xb7, + 0xd7, 0x40, 0x0f, 0xee, 0xe2, 0x06, 0xf9, 0xf7, 0x60, 0xd4, 0xed, 0xae, 0xe9, 0x46, 0xa9, 0x6e, + 0xe9, 0x1a, 0xc2, 0x80, 0x25, 0x5b, 0x7f, 0x07, 0xe5, 0x3a, 0x5d, 0xd8, 0x85, 0x99, 0xcf, 0x9e, + 0x4e, 0xef, 0xfa, 0xf1, 0xd3, 0xe9, 0x71, 0xa2, 0x1b, 0xbb, 0xbc, 0x39, 0xab, 0x9b, 0x73, 0x35, + 0xd5, 0xd9, 0x98, 0xbd, 0x85, 0x2a, 0xaa, 0xb6, 0xb5, 0x84, 0xb4, 0xe2, 0xb0, 0x81, 0x1e, 0xac, + 0xe8, 0xc6, 0x1d, 0x97, 0x82, 0x4b, 0x78, 0x55, 0x7f, 0x07, 0xc9, 0x25, 0xc8, 0x7b, 0xa4, 0xef, + 0x35, 0x54, 0xc3, 0xd1, 0x9d, 0x2d, 0x1f, 0xf5, 0xae, 0xf4, 0xd4, 0xf7, 0x11, 0xea, 0xaf, 0x51, + 0x22, 0x6c, 0x80, 0x15, 0x18, 0xf2, 0x06, 0x30, 0x4c, 0x77, 0xb2, 0xd5, 0x6a, 0x2e, 0x9b, 0x9e, + 0xec, 0x20, 0x21, 0xfb, 0x2a, 0x45, 0x2d, 0x9c, 0x7d, 0xf4, 0xe1, 0xf4, 0xae, 0xaf, 0x3f, 0x9c, + 0xde, 0xf5, 0xde, 0x57, 0x8f, 0x8f, 0x11, 0xd5, 0xfe, 0xd9, 0x57, 0x8f, 0x8f, 0x4d, 0xb0, 0x69, + 0xe6, 0xcc, 0x88, 0x32, 0x09, 0xe3, 0x9c, 0xe6, 0x22, 0xb2, 0xeb, 0xa6, 0x61, 0x23, 0xe5, 0x17, + 0x9d, 0x30, 0xc6, 0xfa, 0x97, 0x90, 0xa5, 0xdf, 0x57, 0x5d, 0x7b, 0xf8, 0x61, 0x3a, 0x77, 0x7c, + 0x3a, 0xe5, 0x37, 0x21, 0xe7, 0x92, 0xd3, 0x0d, 0xdd, 0xd1, 0xd5, 0x6a, 0xa9, 0xa6, 0x5a, 0x15, + 0xdd, 0x28, 0x59, 0xaa, 0xa3, 0x9b, 0xb9, 0xee, 0xf4, 0x64, 0xf7, 0x1a, 0xe8, 0xc1, 0x32, 0xa1, + 0xb1, 0x82, 0x49, 0x14, 0x5d, 0x0a, 0x72, 0x19, 0x26, 0x30, 0xb3, 0xaa, 0x6e, 0x38, 0xc8, 0x50, + 0x0d, 0x0d, 0x05, 0x47, 0xe8, 0x49, 0x3f, 0xc2, 0x98, 0xcb, 0x78, 0x93, 0x8e, 0x6f, 0x94, 0xc2, + 0x65, 0xbe, 0x49, 0x2a, 0x51, 0x93, 0x0c, 0xdb, 0x96, 0x32, 0x03, 0x07, 0x84, 0x9d, 0xcc, 0x3c, + 0x3f, 0x95, 0x60, 0x37, 0x83, 0xba, 0xa3, 0x5a, 0x6a, 0xcd, 0x96, 0x2f, 0x40, 0xaf, 0xda, 0x70, + 0x36, 0x4c, 0x4b, 0x77, 0xb6, 0x88, 0x61, 0x2e, 0xe4, 0xfe, 0xef, 0x5f, 0x4f, 0x8e, 0xd0, 0xd8, + 0x38, 0x5f, 0x2e, 0x5b, 0xc8, 0xb6, 0x57, 0x1d, 0x4b, 0x37, 0x2a, 0xc5, 0x26, 0xa8, 0x7c, 0x1d, + 0xb2, 0x75, 0x4c, 0x01, 0xdb, 0x6c, 0xdf, 0x19, 0x65, 0x56, 0x1c, 0xdf, 0x67, 0xc9, 0x58, 0x0b, + 0x9d, 0xae, 0x7e, 0x8a, 0x14, 0xaf, 0x70, 0xdc, 0x95, 0xb2, 0x49, 0xd1, 0x95, 0x34, 0x17, 0x95, + 0x94, 0xa0, 0x2a, 0x63, 0x30, 0x1a, 0x6a, 0x62, 0x52, 0xfd, 0xb3, 0x04, 0xb0, 0x62, 0x57, 0x96, + 0x50, 0xdd, 0xb4, 0x75, 0x47, 0xde, 0x07, 0x59, 0x1b, 0x19, 0x65, 0x64, 0x51, 0x37, 0xa3, 0x5f, + 0xf2, 0x0c, 0x0c, 0xd8, 0x8d, 0x35, 0x55, 0xd3, 0xcc, 0x86, 0xe1, 0xf3, 0xb5, 0xfe, 0x66, 0xe3, + 0x72, 0x59, 0xbe, 0x08, 0x59, 0xb5, 0xe6, 0xfe, 0x8d, 0x7d, 0xad, 0xef, 0xcc, 0x18, 0xcd, 0x3c, + 0xb3, 0x6e, 0x66, 0x62, 0xe2, 0x2c, 0x9a, 0xba, 0xe1, 0x09, 0x43, 0xc0, 0x0b, 0xc7, 0xfd, 0x53, + 0x47, 0x87, 0x74, 0x25, 0x1a, 0xf6, 0x4b, 0x44, 0x59, 0x54, 0x46, 0x40, 0x6e, 0x7e, 0x31, 0x39, + 0x3e, 0x91, 0xa0, 0x6f, 0xc5, 0xae, 0xfc, 0xae, 0xee, 0x6c, 0x94, 0x2d, 0xf5, 0xc1, 0x77, 0x24, + 0xc8, 0x09, 0x81, 0x20, 0x23, 0x7e, 0x41, 0x3c, 0x1e, 0x95, 0xbd, 0x38, 0x71, 0x79, 0x9f, 0x4c, + 0x94, 0x7f, 0x92, 0xf0, 0x74, 0x2d, 0x5a, 0x88, 0xc6, 0xc9, 0x5b, 0x7a, 0x4d, 0x77, 0x6e, 0x5b, + 0x2e, 0xfb, 0x22, 0xb1, 0xe6, 0xa1, 0xcb, 0x74, 0x01, 0xa8, 0x3d, 0x1d, 0x8a, 0xb3, 0x27, 0x97, + 0x24, 0xa6, 0x46, 0x99, 0x27, 0x98, 0x85, 0x4b, 0x02, 0xde, 0xf7, 0xfb, 0x79, 0xe7, 0x31, 0xa5, + 0xbc, 0x09, 0xd3, 0x82, 0x2e, 0x4f, 0x26, 0x37, 0x14, 0xe3, 0x51, 0x4a, 0x1b, 0xaa, 0xbd, 0x41, + 0x79, 0xef, 0xc5, 0x2d, 0x2f, 0xab, 0xf6, 0x86, 0x3c, 0x04, 0x19, 0x8d, 0xcd, 0x85, 0xfb, 0x67, + 0xa1, 0xc7, 0xe3, 0x46, 0xf9, 0x77, 0x09, 0x26, 0x57, 0xec, 0xca, 0x82, 0xea, 0x68, 0x1b, 0xbc, + 0x31, 0x6c, 0xa1, 0x52, 0x16, 0x21, 0x8b, 0x87, 0x70, 0xbd, 0x2c, 0xd3, 0xaa, 0x56, 0x28, 0x6a, + 0xe1, 0x45, 0x81, 0x5a, 0x5e, 0xf0, 0xab, 0x45, 0xcc, 0x9c, 0xf2, 0x2f, 0x12, 0x1c, 0x8a, 0x85, + 0x60, 0x3a, 0x3a, 0x00, 0xfd, 0x4d, 0x1d, 0x21, 0x3b, 0x27, 0xed, 0xcf, 0x1c, 0xe9, 0x2d, 0xf6, + 0x31, 0x2d, 0x21, 0x5b, 0x9e, 0x85, 0x61, 0x0d, 0xd3, 0x28, 0x97, 0x08, 0x7b, 0x25, 0x4d, 0x2f, + 0x13, 0xf1, 0x7a, 0x8b, 0x7b, 0x68, 0x17, 0x21, 0xbb, 0xa8, 0x97, 0x6d, 0xf9, 0x04, 0xc8, 0xeb, + 0xaa, 0x5e, 0x0d, 0x81, 0x67, 0x30, 0xf8, 0x10, 0xe9, 0x69, 0x42, 0xfb, 0x74, 0xfe, 0x7e, 0x27, + 0xe4, 0x57, 0xec, 0xca, 0xb2, 0x61, 0x3b, 0xaa, 0xe1, 0x34, 0x73, 0xf5, 0x2d, 0xb5, 0x61, 0x68, + 0x1b, 0x42, 0x85, 0xef, 0x83, 0x2c, 0x4d, 0xb6, 0x64, 0x26, 0xe9, 0x97, 0x3b, 0xfb, 0xae, 0xe7, + 0x94, 0xca, 0xc8, 0x30, 0x6b, 0x5e, 0x22, 0x76, 0x5b, 0x96, 0xdc, 0x06, 0x79, 0x1a, 0xfa, 0xee, + 0x35, 0x4c, 0xc7, 0xeb, 0xc7, 0xc9, 0xb7, 0x08, 0xb8, 0x89, 0x00, 0x14, 0x61, 0x98, 0x97, 0xa5, + 0x5b, 0xc8, 0xa3, 0x43, 0xb5, 0x70, 0x8a, 0x7e, 0x03, 0xf6, 0x09, 0xd2, 0x73, 0x0b, 0x79, 0xd4, + 0x65, 0x2b, 0x92, 0x9b, 0x6f, 0x42, 0x7f, 0x20, 0x2f, 0xb7, 0x90, 0x40, 0xfb, 0x6a, 0xbe, 0xa4, + 0x3c, 0x03, 0x03, 0x54, 0x6b, 0x9a, 0x5e, 0x53, 0xab, 0x36, 0xce, 0x93, 0x03, 0xc5, 0x7e, 0xa2, + 0x38, 0xd2, 0x26, 0x1f, 0x82, 0x41, 0x4f, 0x77, 0x14, 0xaa, 0x17, 0x43, 0x0d, 0x50, 0xf5, 0x91, + 0xc6, 0xc2, 0x15, 0x81, 0x15, 0xcf, 0xf8, 0xad, 0x58, 0x30, 0xdd, 0xca, 0x41, 0x50, 0xc4, 0xbd, + 0xcd, 0x08, 0xdc, 0x8d, 0xc3, 0x00, 0x05, 0xbb, 0x83, 0xac, 0x3a, 0x72, 0x1a, 0x78, 0x21, 0xd0, + 0xbe, 0xe1, 0x84, 0x2c, 0x23, 0x13, 0xb1, 0x8c, 0x69, 0xe8, 0x23, 0xfb, 0x83, 0x92, 0xab, 0x15, + 0xcf, 0x74, 0x48, 0xd3, 0x82, 0xea, 0x39, 0x15, 0x06, 0xc0, 0x58, 0xc4, 0x66, 0x8a, 0x14, 0xe9, + 0x35, 0xb7, 0xc9, 0x75, 0x2a, 0x0a, 0x62, 0x6b, 0x6a, 0x15, 0x95, 0xd6, 0x55, 0xcd, 0x31, 0x2d, + 0x6c, 0x06, 0x03, 0xc5, 0x3d, 0xa4, 0x6b, 0xd5, 0xed, 0xb9, 0x89, 0x3b, 0xe4, 0x1b, 0x6c, 0x4c, + 0x67, 0xab, 0x8e, 0xf0, 0xf4, 0x0e, 0x9e, 0x39, 0xe8, 0x8b, 0x2d, 0x74, 0xc7, 0xe2, 0x45, 0x96, + 0xdb, 0xf8, 0xf3, 0xee, 0x56, 0x1d, 0x79, 0x9c, 0xb9, 0x7f, 0xcb, 0xcb, 0x30, 0x58, 0x53, 0x37, + 0x91, 0x55, 0x5a, 0x47, 0xc8, 0x5d, 0x08, 0xa1, 0x56, 0xd6, 0x41, 0xfd, 0x18, 0xf5, 0x26, 0x42, + 0x45, 0xd5, 0xc1, 0xa4, 0x9c, 0x20, 0xa9, 0xde, 0x16, 0x48, 0x39, 0x7e, 0x52, 0xaf, 0xc3, 0x08, + 0x77, 0x15, 0x08, 0xe9, 0x09, 0xca, 0x7a, 0x74, 0x09, 0xf8, 0x16, 0xe4, 0x84, 0xcb, 0xbf, 0xbe, + 0x16, 0x96, 0xc3, 0x35, 0xee, 0xda, 0x4f, 0x14, 0x20, 0xfa, 0x77, 0x26, 0x40, 0x0c, 0x6c, 0x73, + 0x80, 0x18, 0x6c, 0x2f, 0x40, 0x14, 0xae, 0x0b, 0x9c, 0xfa, 0x08, 0xc7, 0xa9, 0xb9, 0xfe, 0xa8, + 0x1c, 0x85, 0xc3, 0x09, 0x20, 0xcc, 0xbd, 0xff, 0xb4, 0x1b, 0x66, 0x9a, 0xb0, 0x0b, 0xba, 0xa1, + 0x5a, 0x5b, 0xb7, 0xeb, 0x2e, 0x27, 0xf6, 0x33, 0xb9, 0xf8, 0x0c, 0x0c, 0x78, 0xde, 0xb7, 0x55, + 0x5b, 0x33, 0xab, 0xd4, 0xc9, 0xa9, 0xd7, 0xae, 0xe2, 0x36, 0xf9, 0x30, 0xec, 0xa6, 0x40, 0x75, + 0xcb, 0xbc, 0xaf, 0xbb, 0xd4, 0x89, 0xab, 0x0f, 0x92, 0xe6, 0x3b, 0xb4, 0x35, 0xec, 0x9b, 0x5d, + 0x6d, 0xfa, 0x66, 0xab, 0x21, 0x21, 0xea, 0xcb, 0xdd, 0xdb, 0xe7, 0xcb, 0x3d, 0xed, 0xfa, 0xf2, + 0x69, 0x18, 0x41, 0x0f, 0xeb, 0x3a, 0xf6, 0x32, 0xa3, 0xe4, 0xe8, 0x35, 0x64, 0x3b, 0x6a, 0xad, + 0x8e, 0x83, 0x43, 0xa6, 0x38, 0xdc, 0xec, 0xbb, 0xeb, 0x75, 0xb9, 0x28, 0x36, 0x72, 0x9c, 0x2a, + 0xaa, 0x21, 0xc3, 0xf1, 0xa1, 0x00, 0x41, 0x69, 0xf6, 0x35, 0x51, 0xd8, 0xc6, 0xbc, 0xcf, 0xbf, + 0x31, 0x0f, 0x45, 0xee, 0xfe, 0xb4, 0x39, 0x7d, 0x60, 0x67, 0x5c, 0x76, 0x70, 0x9b, 0x5d, 0x76, + 0x77, 0x9b, 0x2e, 0xbb, 0x24, 0x70, 0xd9, 0x13, 0x1c, 0x97, 0x15, 0xfa, 0x98, 0x72, 0x12, 0x8e, + 0xa7, 0x00, 0x63, 0xae, 0xfb, 0xbf, 0x01, 0xd7, 0xbd, 0xe1, 0x4e, 0xfb, 0xd6, 0xcd, 0x86, 0xd3, + 0xb0, 0x90, 0xfd, 0xfc, 0x67, 0xe7, 0x90, 0x47, 0x67, 0xb7, 0xd7, 0xa3, 0xbb, 0x45, 0x1e, 0xbd, + 0x0f, 0xb2, 0xd8, 0x3f, 0xb6, 0xb0, 0xfb, 0x65, 0x8a, 0xf4, 0x8b, 0xe3, 0xe9, 0xbd, 0xdb, 0xe7, + 0xe9, 0xb0, 0xdd, 0x59, 0xbb, 0x6f, 0xe7, 0xb2, 0x76, 0xff, 0x8e, 0x65, 0xed, 0x1f, 0x42, 0x40, + 0xb2, 0xaf, 0x06, 0x43, 0x80, 0x10, 0x8c, 0x85, 0x80, 0xc7, 0x12, 0xe4, 0x02, 0x7b, 0x74, 0x02, + 0xb5, 0xe3, 0x45, 0x85, 0xcb, 0x02, 0x61, 0x0f, 0xf0, 0x8b, 0x0a, 0x3e, 0xae, 0x94, 0x4f, 0x24, + 0xd8, 0x2f, 0xea, 0x4c, 0x5b, 0x57, 0x28, 0x42, 0xb7, 0x85, 0xec, 0x46, 0xd5, 0xf1, 0x0a, 0x6d, + 0x67, 0x92, 0x64, 0x08, 0x0e, 0xe2, 0x62, 0x62, 0x81, 0xa4, 0xa2, 0x47, 0xc8, 0xab, 0x55, 0x64, + 0x78, 0xb5, 0x8a, 0xff, 0x97, 0x60, 0x1f, 0x9f, 0x8a, 0x7c, 0x0d, 0x7a, 0x3c, 0xa3, 0xa4, 0x95, + 0xc2, 0x54, 0xa6, 0xc3, 0x90, 0xe4, 0xcb, 0xd0, 0x85, 0x3d, 0x85, 0x04, 0xe1, 0x74, 0xd8, 0x04, + 0x43, 0x3e, 0x0f, 0x99, 0x75, 0x84, 0x08, 0xcb, 0xe9, 0x10, 0x5d, 0xf8, 0x68, 0x0d, 0x86, 0xcc, + 0x45, 0xb3, 0x42, 0x9a, 0xa2, 0x30, 0xf5, 0x52, 0xd0, 0x86, 0x8e, 0xc7, 0xe9, 0xbf, 0x49, 0x98, + 0x63, 0x49, 0x85, 0x47, 0x09, 0x35, 0x18, 0x31, 0x73, 0xca, 0x1a, 0x2e, 0xc1, 0x88, 0x01, 0xb6, + 0xa3, 0x4c, 0xf5, 0xdf, 0x7e, 0x73, 0x0d, 0xe4, 0xe4, 0x6f, 0x53, 0x4b, 0x57, 0x39, 0x5a, 0x3a, + 0x1a, 0xd5, 0x92, 0x80, 0x3f, 0x05, 0xc1, 0x91, 0x24, 0x98, 0xed, 0xd0, 0xd5, 0xe7, 0x12, 0x5e, + 0x90, 0xf8, 0x6a, 0x62, 0xbc, 0x59, 0x11, 0x17, 0xf6, 0x96, 0x43, 0x85, 0xbd, 0x36, 0xf4, 0xe5, + 0x95, 0xf7, 0xae, 0x3f, 0x4a, 0x88, 0xc4, 0x49, 0x4c, 0x2a, 0x9f, 0x4a, 0x38, 0x14, 0x27, 0xc1, + 0x3d, 0x8f, 0x65, 0xbe, 0x27, 0x12, 0xae, 0xa5, 0x2f, 0xba, 0x89, 0xb9, 0xca, 0x22, 0xb8, 0x50, + 0xed, 0xb1, 0x87, 0x6d, 0x91, 0xc2, 0x7a, 0x86, 0x53, 0x58, 0x0f, 0xda, 0x4c, 0xa7, 0xc0, 0x66, + 0xba, 0x9a, 0x36, 0x33, 0xc7, 0x99, 0x9e, 0xf1, 0x80, 0x3d, 0x07, 0x79, 0x57, 0x26, 0x70, 0xe1, + 0x32, 0xd4, 0xca, 0xd2, 0xe0, 0xc7, 0x24, 0x0d, 0x92, 0xb9, 0x0a, 0xc2, 0x88, 0xad, 0xed, 0x1a, + 0x74, 0x96, 0x55, 0x47, 0x4d, 0x53, 0x44, 0xc6, 0x94, 0x96, 0x54, 0x47, 0xa5, 0x56, 0x86, 0x11, + 0x0b, 0xe7, 0x1f, 0x25, 0x24, 0x40, 0x2e, 0x3f, 0xca, 0x4d, 0x1c, 0x50, 0xb8, 0x7d, 0xcc, 0x98, + 0x72, 0xd0, 0x6d, 0x37, 0x34, 0x0d, 0xd9, 0xc4, 0x8e, 0x7a, 0x8a, 0xde, 0x67, 0x30, 0x78, 0x1f, + 0x08, 0x12, 0x0a, 0xb8, 0xf6, 0x4e, 0x4b, 0xff, 0x22, 0x47, 0xfa, 0x63, 0x02, 0xe9, 0x39, 0x8c, + 0x29, 0xb7, 0xe1, 0x68, 0x22, 0x50, 0x4b, 0xfa, 0xf8, 0x79, 0x37, 0x8c, 0x78, 0x14, 0xc9, 0x99, + 0x58, 0x82, 0x0a, 0x52, 0x9d, 0x19, 0x5d, 0x83, 0x49, 0xbb, 0x6e, 0x3a, 0x25, 0xe6, 0x21, 0x76, + 0xc9, 0x31, 0x4b, 0x1a, 0xe6, 0xb8, 0xa4, 0x56, 0xab, 0xd4, 0x1d, 0x73, 0x36, 0x5b, 0x1e, 0x2c, + 0x97, 0xed, 0xbb, 0x26, 0x11, 0x69, 0xbe, 0x5a, 0x95, 0x5f, 0x81, 0x99, 0x32, 0x0b, 0x1c, 0x62, + 0x32, 0x9d, 0x98, 0xcc, 0x54, 0x39, 0x74, 0x4c, 0x19, 0x22, 0xf6, 0x07, 0xb0, 0x17, 0x73, 0x43, + 0xe3, 0x01, 0x23, 0x91, 0xeb, 0x6a, 0x75, 0x1a, 0xa5, 0xa2, 0x6c, 0x33, 0xbb, 0xf3, 0x86, 0x90, + 0xdf, 0x86, 0x71, 0x1f, 0xb3, 0x91, 0x51, 0xb2, 0xad, 0x8f, 0x92, 0x2b, 0x07, 0xe3, 0x74, 0x73, + 0x2c, 0x8e, 0x2c, 0x38, 0x02, 0xe6, 0xba, 0x5b, 0x3d, 0xd5, 0x09, 0xcb, 0x82, 0xc9, 0xc8, 0x75, + 0x91, 0x2c, 0x64, 0x94, 0x9e, 0xf6, 0x52, 0x0c, 0x5f, 0x22, 0x32, 0xe2, 0x3d, 0x98, 0x5e, 0xc3, + 0x46, 0x5c, 0x32, 0x89, 0x15, 0x47, 0x35, 0xd8, 0xdb, 0xba, 0x06, 0xc7, 0xd7, 0xa2, 0x8e, 0xc1, + 0x94, 0x58, 0x84, 0xc3, 0xa1, 0x21, 0x85, 0x16, 0x06, 0xd8, 0xc2, 0x0e, 0xac, 0x45, 0xeb, 0x0a, + 0x21, 0x23, 0x7b, 0x10, 0x27, 0x06, 0x51, 0x5e, 0x5f, 0xbb, 0xca, 0x13, 0x08, 0x83, 0xa9, 0x16, + 0x4e, 0x73, 0x42, 0xca, 0x64, 0x24, 0xa4, 0xf8, 0x7d, 0x5b, 0x79, 0x94, 0x85, 0x09, 0x5e, 0x07, + 0x8b, 0x1c, 0xb3, 0x30, 0x8c, 0xad, 0x8c, 0x2a, 0x22, 0x18, 0x45, 0xf6, 0xb8, 0x5d, 0x34, 0x08, + 0x93, 0x0e, 0xb9, 0x00, 0x63, 0x3e, 0xab, 0x09, 0x61, 0x75, 0x60, 0xac, 0xd1, 0x26, 0x40, 0x10, + 0xf7, 0x18, 0xec, 0x69, 0x5a, 0xb4, 0xb7, 0x0e, 0x20, 0xf1, 0x61, 0x37, 0x33, 0x50, 0xba, 0x16, + 0xb8, 0x00, 0xa3, 0x61, 0xeb, 0xf4, 0x30, 0x48, 0x28, 0xd8, 0x1b, 0x32, 0x33, 0x8a, 0x37, 0x0f, + 0x93, 0xa1, 0xc9, 0x09, 0xf1, 0xd8, 0x85, 0x79, 0xcc, 0x07, 0xf4, 0x1c, 0x64, 0xf3, 0x2a, 0x8c, + 0xf3, 0xe6, 0xd7, 0x1b, 0x3e, 0x4b, 0x02, 0x5a, 0x74, 0xa2, 0x28, 0x07, 0x17, 0x21, 0xe7, 0xad, + 0x62, 0xfc, 0xfe, 0x8b, 0xd7, 0x26, 0xdd, 0x84, 0x75, 0xda, 0xdf, 0x4c, 0x6c, 0x78, 0x39, 0x73, + 0x1e, 0x46, 0xe9, 0x72, 0x26, 0x82, 0xd7, 0x83, 0xf1, 0x46, 0x48, 0x77, 0x08, 0x6d, 0x11, 0xa6, + 0xbc, 0xf1, 0xa2, 0xfe, 0x8c, 0xb1, 0x7b, 0x31, 0xf6, 0x38, 0x85, 0x0a, 0x19, 0x1e, 0x21, 0x32, + 0x0f, 0x93, 0x74, 0x6c, 0x01, 0x0d, 0xe2, 0x1d, 0x79, 0x02, 0xc4, 0x25, 0xf1, 0xdb, 0xa0, 0x78, + 0x7c, 0xf0, 0xdd, 0x03, 0xd3, 0xe9, 0x23, 0x71, 0x9c, 0x42, 0x72, 0x72, 0x1a, 0xa6, 0xf5, 0x32, + 0x1c, 0xa0, 0xec, 0xc4, 0x90, 0xea, 0xc7, 0xa4, 0x28, 0xdf, 0x02, 0x4a, 0xbe, 0xfc, 0xf7, 0x9f, + 0x12, 0x4c, 0x71, 0xb6, 0x43, 0x69, 0x2a, 0x02, 0xdb, 0xb6, 0x4f, 0xb9, 0xc2, 0xf1, 0xe0, 0xc3, + 0x71, 0xbb, 0x39, 0x7f, 0x65, 0xe0, 0x3f, 0x24, 0x78, 0x21, 0x1e, 0x24, 0xed, 0x26, 0xe5, 0x8d, + 0x70, 0x7d, 0xe0, 0x52, 0x3a, 0x89, 0x9e, 0xad, 0x4a, 0xf0, 0xb3, 0x0e, 0x98, 0x88, 0xa3, 0xf5, + 0x3d, 0xac, 0x15, 0xc8, 0xbf, 0x03, 0x83, 0xf8, 0x42, 0x8e, 0x6e, 0x1a, 0xa5, 0x32, 0xaa, 0x3a, + 0x2a, 0x5e, 0xdd, 0xf7, 0x9d, 0x39, 0x1a, 0x7b, 0xb3, 0x89, 0x62, 0x2c, 0xb9, 0x08, 0xd4, 0x40, + 0x06, 0xea, 0xfe, 0x46, 0xf9, 0x0a, 0x64, 0xeb, 0xea, 0x96, 0xd9, 0x70, 0x5a, 0x39, 0xed, 0xa7, + 0x28, 0x3e, 0x95, 0xff, 0x0f, 0x59, 0x03, 0x73, 0x76, 0xb6, 0xdf, 0xaa, 0xd9, 0x27, 0xae, 0x85, + 0xe3, 0x19, 0x54, 0xfe, 0x4b, 0xc2, 0x8b, 0xe1, 0x78, 0xa8, 0xe7, 0xdb, 0xf8, 0x7f, 0x45, 0x2b, + 0x91, 0x38, 0xd3, 0x84, 0x94, 0xf5, 0xdd, 0xed, 0x3c, 0x59, 0x77, 0x4d, 0xb5, 0x37, 0xb1, 0xa9, + 0x75, 0xd1, 0xee, 0x15, 0xd5, 0xde, 0xf4, 0x04, 0xca, 0x36, 0x05, 0x4a, 0xdc, 0xd3, 0x71, 0x05, + 0x54, 0x14, 0x52, 0x24, 0xe2, 0xf5, 0xb1, 0x4d, 0xea, 0x1f, 0x77, 0xe0, 0x7b, 0xb2, 0xa2, 0xcd, + 0xce, 0xf7, 0x48, 0x49, 0x97, 0x38, 0x4a, 0x3a, 0x18, 0x55, 0x52, 0x54, 0x46, 0xe5, 0x10, 0x2e, + 0x10, 0x89, 0xba, 0x99, 0xaa, 0x3e, 0x90, 0xa0, 0x97, 0x2d, 0x83, 0x83, 0x0a, 0x90, 0x92, 0x14, + 0xd0, 0x91, 0xa8, 0x80, 0x4c, 0xbc, 0x02, 0x3a, 0x05, 0x0a, 0x68, 0x96, 0x2f, 0x94, 0x7f, 0x23, + 0xa9, 0xd6, 0xb7, 0x79, 0x0d, 0xaf, 0x18, 0x76, 0x6e, 0xdf, 0x9d, 0x98, 0x62, 0x63, 0xb8, 0x52, + 0x6e, 0xe1, 0x0c, 0x1b, 0x03, 0xd1, 0xd2, 0x8e, 0xfb, 0x4f, 0x3a, 0x60, 0xef, 0x8a, 0x5d, 0x59, + 0x65, 0xaa, 0xbe, 0x6b, 0xa9, 0x86, 0xbd, 0x1e, 0x63, 0xcb, 0xa7, 0x60, 0xc4, 0x36, 0x1b, 0x96, + 0x86, 0x4a, 0xbc, 0x49, 0x93, 0x49, 0xdf, 0xaa, 0x7f, 0xea, 0xf0, 0x7a, 0xdc, 0x76, 0x74, 0x83, + 0x9c, 0x76, 0xf3, 0x8c, 0x7d, 0xd4, 0x07, 0xb0, 0xca, 0xbf, 0xef, 0xd9, 0xd9, 0xda, 0x7d, 0xcf, + 0xd9, 0x90, 0x7e, 0xa7, 0xfc, 0xfa, 0x8d, 0x8a, 0xab, 0x4c, 0xe3, 0x32, 0x7a, 0xb4, 0x83, 0x19, + 0xf4, 0x7b, 0x1d, 0xf8, 0x4e, 0xe8, 0x8d, 0x87, 0x0e, 0xb2, 0x0c, 0xb5, 0xfa, 0x9b, 0xa2, 0xa7, + 0x13, 0x21, 0x3d, 0x05, 0xde, 0x09, 0x84, 0x85, 0xa5, 0xef, 0x04, 0xc2, 0xcd, 0x4c, 0x47, 0x5f, + 0x4b, 0xb8, 0x7e, 0x73, 0x4b, 0xbf, 0xd7, 0xd0, 0xf1, 0x8d, 0x66, 0xba, 0x60, 0x78, 0xb6, 0xfa, + 0x4d, 0x20, 0x78, 0x64, 0x42, 0xc1, 0x83, 0x2d, 0x00, 0x3a, 0xdb, 0x5b, 0x00, 0x48, 0xde, 0x02, + 0xe0, 0x64, 0xdc, 0xae, 0x35, 0x22, 0x91, 0x32, 0x85, 0x37, 0xad, 0x91, 0x76, 0xa6, 0x8a, 0x8f, + 0x48, 0x32, 0xbd, 0x51, 0x43, 0x56, 0x05, 0x19, 0xda, 0xd6, 0x2a, 0xbe, 0x9f, 0x41, 0x5f, 0x4c, + 0xec, 0x98, 0x3a, 0x0a, 0xa7, 0xe3, 0x12, 0x1f, 0x97, 0x19, 0x9a, 0xf8, 0xb8, 0x7d, 0xcd, 0xbb, + 0xe8, 0x1d, 0xf8, 0x01, 0xc8, 0xb2, 0xe1, 0x6e, 0x8a, 0x6c, 0x26, 0x2d, 0x39, 0x32, 0x7e, 0x4e, + 0x5c, 0x20, 0xa0, 0x97, 0xce, 0x90, 0x99, 0x5c, 0x61, 0xfe, 0xd1, 0xca, 0x62, 0x95, 0xfa, 0xc8, + 0x99, 0x90, 0x52, 0x95, 0xe0, 0x79, 0x30, 0x4f, 0x27, 0xf4, 0xe1, 0x02, 0xbf, 0x33, 0xac, 0xd6, + 0x25, 0xf4, 0x83, 0x5a, 0xc3, 0x6a, 0xe5, 0xeb, 0x84, 0xaa, 0x95, 0xdf, 0xc9, 0xd4, 0xfa, 0xb9, + 0x84, 0x9d, 0xf3, 0x8e, 0xa5, 0xdf, 0xd7, 0xab, 0xa8, 0x82, 0xca, 0x37, 0x1e, 0x22, 0xad, 0xe1, + 0xa0, 0x45, 0xd3, 0x70, 0x2c, 0x55, 0x13, 0xfb, 0xdf, 0x08, 0x74, 0xad, 0x37, 0x8c, 0xb2, 0x4d, + 0x55, 0x49, 0x3e, 0xe4, 0xa3, 0x30, 0xa4, 0x51, 0xcc, 0x92, 0x4a, 0xde, 0x8d, 0x50, 0xa5, 0xed, + 0xf6, 0xda, 0xe9, 0x73, 0x12, 0x59, 0xa6, 0x4b, 0x03, 0xa2, 0x27, 0x92, 0xed, 0xaf, 0x0a, 0x0e, + 0xda, 0x0f, 0xf9, 0xc5, 0x15, 0xf2, 0xea, 0x06, 0x92, 0x83, 0x71, 0x00, 0x2c, 0xdd, 0xbf, 0x0d, + 0x80, 0xf9, 0x2d, 0x95, 0xf5, 0xf5, 0x75, 0x9c, 0xf1, 0x63, 0xd3, 0xc0, 0x29, 0x77, 0xaa, 0x3e, + 0xfe, 0xc9, 0xf4, 0x91, 0x8a, 0xee, 0x6c, 0x34, 0xd6, 0x66, 0x35, 0xb3, 0x46, 0x1f, 0x0e, 0xd2, + 0xff, 0x4e, 0xda, 0xe5, 0xcd, 0x39, 0x67, 0xab, 0x8e, 0x6c, 0x8c, 0x60, 0x17, 0x7b, 0x31, 0xf9, + 0x25, 0x7d, 0x7d, 0xbd, 0x30, 0xcc, 0x91, 0x49, 0x79, 0x0b, 0x86, 0x56, 0xec, 0x4a, 0x11, 0x3d, + 0x50, 0xad, 0xb2, 0x7d, 0xbb, 0xee, 0xdc, 0x6e, 0x08, 0x35, 0x4d, 0xea, 0x84, 0x1c, 0xa5, 0x8c, + 0xf9, 0x95, 0x12, 0x20, 0xa5, 0xe4, 0x71, 0x40, 0x0d, 0xb4, 0xf9, 0xdf, 0xca, 0xec, 0xc5, 0x9d, + 0x5a, 0x55, 0xd5, 0x6b, 0xb7, 0x4c, 0x6d, 0x13, 0x95, 0x6f, 0xe2, 0xc9, 0x13, 0x3b, 0xd1, 0x70, + 0x15, 0x83, 0xcd, 0x13, 0x4b, 0xbf, 0xd3, 0x58, 0x7b, 0x05, 0x6d, 0xe1, 0x89, 0xef, 0x2f, 0xf2, + 0xba, 0xe4, 0x09, 0xe8, 0xb5, 0xf5, 0x8a, 0xa1, 0x3a, 0x0d, 0x8b, 0x6c, 0xc2, 0xfb, 0x8b, 0xcd, + 0x86, 0xf8, 0xf5, 0x46, 0x94, 0x2f, 0xba, 0xde, 0x88, 0x76, 0x30, 0x91, 0xde, 0x25, 0xcf, 0x66, + 0x56, 0xf5, 0x8a, 0x81, 0x97, 0xd0, 0xab, 0x90, 0x75, 0xff, 0xa6, 0x82, 0xf4, 0x2f, 0x5c, 0xf9, + 0xe6, 0xe9, 0x74, 0xd6, 0xc6, 0x2d, 0xbf, 0x7c, 0x3a, 0x7d, 0x32, 0xc5, 0x2c, 0xce, 0x6b, 0x1a, + 0xb5, 0xd3, 0x22, 0x25, 0x25, 0x4f, 0x40, 0xe7, 0x12, 0x59, 0xca, 0xba, 0x24, 0x7b, 0xbe, 0x79, + 0x3a, 0x8d, 0x6d, 0xb6, 0x88, 0x5b, 0x95, 0x87, 0xf8, 0x01, 0x12, 0xe6, 0xc0, 0xd4, 0xe4, 0x43, + 0x44, 0x7e, 0x72, 0xd9, 0x8b, 0xd4, 0x3e, 0x30, 0x82, 0xfb, 0x5d, 0xec, 0x71, 0xbb, 0xf0, 0x75, + 0xae, 0x45, 0xe8, 0xba, 0xaf, 0x56, 0x1b, 0x88, 0xee, 0x5c, 0x0f, 0xc7, 0x25, 0x64, 0x9f, 0x7c, + 0xde, 0x6e, 0x1c, 0xe3, 0x2a, 0x7f, 0x9e, 0xc1, 0x7e, 0x3e, 0x5f, 0xae, 0xe9, 0x06, 0xa9, 0x09, + 0x73, 0xb6, 0xd4, 0xed, 0x6d, 0xb7, 0x5e, 0x85, 0x21, 0xdf, 0x3d, 0x4a, 0x52, 0x8b, 0x69, 0x96, + 0x54, 0xa4, 0xa4, 0xe0, 0xb5, 0xbb, 0x89, 0x8c, 0xaf, 0x37, 0x09, 0xaf, 0x72, 0x76, 0xb6, 0x7e, + 0x95, 0xb3, 0x4b, 0x7c, 0x95, 0xf3, 0x3a, 0x64, 0x6d, 0x47, 0x75, 0x1a, 0x36, 0xbd, 0x66, 0x77, + 0x24, 0x56, 0xad, 0x58, 0xd6, 0x55, 0x0c, 0x5f, 0xa4, 0x78, 0x85, 0x42, 0x5c, 0x71, 0x23, 0x5e, + 0xd1, 0xca, 0x71, 0x5c, 0xdb, 0x88, 0x07, 0x62, 0x86, 0xfb, 0x0f, 0xe4, 0x91, 0xd4, 0x3c, 0x79, + 0x00, 0xf7, 0x0e, 0x5a, 0x75, 0xd4, 0x4d, 0xf4, 0x92, 0xa5, 0x1a, 0x8e, 0xd8, 0x1b, 0x6f, 0x42, + 0xb6, 0x82, 0x21, 0xe8, 0xa6, 0x6a, 0x36, 0x4e, 0x3c, 0x4c, 0xcb, 0x23, 0x8f, 0x55, 0x5b, 0xa4, + 0xd8, 0x85, 0x53, 0x71, 0x2f, 0xa4, 0x78, 0x1c, 0x29, 0x07, 0xf0, 0xd3, 0x08, 0x5e, 0x17, 0x13, + 0x68, 0x0b, 0xc7, 0x96, 0x79, 0x97, 0x1b, 0xd5, 0xf1, 0x41, 0x08, 0xa5, 0xc9, 0x41, 0x37, 0xe6, + 0x87, 0x5d, 0xcb, 0xf4, 0x3e, 0xe3, 0xa3, 0x44, 0x74, 0x04, 0x1a, 0x25, 0xa2, 0x1d, 0x1e, 0x6f, + 0x67, 0x9e, 0x1c, 0x86, 0xcc, 0x8a, 0x5d, 0x91, 0x55, 0xe8, 0xf6, 0x1e, 0x0a, 0xbe, 0x90, 0xe0, + 0x71, 0x14, 0x2e, 0x3f, 0x9b, 0x0e, 0x8e, 0xe5, 0x97, 0x32, 0xf4, 0xb0, 0x37, 0x7c, 0x49, 0x5e, + 0xed, 0x01, 0xe6, 0xe7, 0x52, 0x02, 0xb2, 0x51, 0xfe, 0x4a, 0x82, 0x51, 0xd1, 0xe3, 0xa6, 0x0b, + 0x09, 0xc4, 0x04, 0x78, 0xf9, 0x17, 0xdb, 0xc3, 0x63, 0x3c, 0x7d, 0x28, 0xc1, 0x44, 0xec, 0xe3, + 0x99, 0x2b, 0xe9, 0x06, 0xe0, 0x22, 0xe7, 0x17, 0x9f, 0x01, 0x99, 0xb1, 0xf8, 0x8f, 0x12, 0xec, + 0x4f, 0xbc, 0x45, 0x7c, 0x2d, 0xdd, 0x48, 0x42, 0x02, 0xf9, 0x97, 0x9e, 0x91, 0x00, 0x63, 0xf7, + 0x91, 0x04, 0x23, 0xdc, 0x57, 0x94, 0x67, 0x13, 0x46, 0xe0, 0x21, 0xe5, 0xaf, 0xb4, 0x81, 0xc4, + 0x58, 0xf9, 0x5b, 0x09, 0xf2, 0x31, 0x2f, 0x18, 0x2f, 0x27, 0xd0, 0x16, 0xa3, 0xe6, 0xe7, 0xdb, + 0x46, 0x65, 0xcc, 0xbd, 0x2f, 0xc1, 0x5e, 0xfe, 0xcd, 0xd0, 0x73, 0xa9, 0x65, 0xf6, 0x61, 0xe5, + 0x7f, 0xab, 0x1d, 0x2c, 0xc6, 0xcd, 0x16, 0xec, 0x0e, 0x5f, 0x48, 0x4a, 0x0a, 0x22, 0x21, 0xf8, + 0xfc, 0x85, 0xd6, 0xe0, 0x03, 0x8a, 0xe0, 0xdf, 0x0d, 0x3a, 0x97, 0x4a, 0xcb, 0x21, 0xac, 0x44, + 0x45, 0xc4, 0xdf, 0xed, 0xf9, 0x23, 0xd8, 0x13, 0xbd, 0xa3, 0x72, 0x2a, 0x0d, 0x49, 0x3f, 0x46, + 0xfe, 0x52, 0xab, 0x18, 0x8c, 0x81, 0xbf, 0x91, 0x60, 0x4c, 0xbc, 0xbd, 0x49, 0xa2, 0x2b, 0xc4, + 0xcc, 0x5f, 0x6f, 0x17, 0x33, 0xe0, 0x4e, 0x31, 0x97, 0x51, 0x2f, 0xa7, 0x32, 0x40, 0x1e, 0x6a, + 0xa2, 0x3b, 0xa5, 0xb8, 0x44, 0xea, 0x46, 0xc9, 0xc4, 0xab, 0x8d, 0xd7, 0xd2, 0xbb, 0x2d, 0x97, + 0x40, 0x62, 0x94, 0x4c, 0x7d, 0x1f, 0xf1, 0x03, 0x09, 0xc6, 0xe3, 0xce, 0x82, 0x0b, 0x2d, 0x6a, + 0xc4, 0x1f, 0x09, 0x16, 0xda, 0xc7, 0x0d, 0x46, 0x27, 0xee, 0x69, 0xd1, 0xb9, 0x54, 0x6e, 0x1e, + 0xc2, 0x4a, 0x8e, 0x4e, 0x71, 0x87, 0x33, 0x58, 0x5b, 0x71, 0xe5, 0xfc, 0x42, 0x7a, 0x97, 0x0f, + 0xe3, 0x26, 0x6a, 0x2b, 0x4d, 0x39, 0xde, 0x97, 0xa2, 0xc5, 0x6f, 0xf4, 0x52, 0xa6, 0x68, 0x21, + 0x81, 0xb4, 0x29, 0x3a, 0xf1, 0x69, 0x92, 0xfc, 0x77, 0x12, 0x4c, 0xc6, 0x5f, 0x99, 0x4e, 0x97, + 0x4c, 0x04, 0xd8, 0xf9, 0xa5, 0x67, 0xc1, 0x66, 0x5c, 0xfe, 0xbd, 0x04, 0x53, 0x09, 0x47, 0xc7, + 0x57, 0x5b, 0x1f, 0xc8, 0xef, 0x28, 0x37, 0x9e, 0x09, 0x9d, 0x31, 0xfa, 0xd7, 0x12, 0xe4, 0x84, + 0xe7, 0x86, 0x17, 0x53, 0x19, 0x7e, 0x14, 0x31, 0x7f, 0xad, 0x4d, 0xc4, 0x80, 0xfe, 0x12, 0xae, + 0x9f, 0x5e, 0x4d, 0x6f, 0xfb, 0x1c, 0xf4, 0x44, 0xfd, 0xa5, 0xbc, 0x3e, 0xfa, 0x9e, 0x04, 0x32, + 0xe7, 0x94, 0xea, 0x74, 0x52, 0x79, 0x21, 0x82, 0x92, 0xbf, 0xdc, 0x32, 0x0a, 0x63, 0xe2, 0x0f, + 0x61, 0x28, 0x72, 0xfe, 0x93, 0xb4, 0xc3, 0x09, 0x23, 0xe4, 0x2f, 0xb6, 0x88, 0xe0, 0x5f, 0x75, + 0x44, 0x4f, 0x56, 0x92, 0x56, 0x1d, 0x11, 0x8c, 0xc4, 0x55, 0x87, 0xf0, 0x4c, 0x03, 0xc7, 0x7b, + 0xfe, 0x81, 0x46, 0x52, 0xbc, 0xe7, 0x62, 0x25, 0xc6, 0xfb, 0xd8, 0x33, 0x09, 0xf9, 0x2f, 0x24, + 0xd8, 0x27, 0x38, 0x90, 0x38, 0x9f, 0x18, 0x04, 0x79, 0x68, 0xf9, 0xab, 0x6d, 0xa1, 0x05, 0x18, + 0x12, 0x94, 0xf2, 0xcf, 0x27, 0xee, 0xb5, 0xdb, 0x62, 0x28, 0xbe, 0x0e, 0x2e, 0xdb, 0x30, 0x10, + 0xac, 0xc6, 0x9e, 0x48, 0xa0, 0x17, 0x80, 0xce, 0x9f, 0x6b, 0x05, 0x3a, 0x10, 0x51, 0x12, 0xea, + 0x76, 0x49, 0x62, 0xc5, 0xa3, 0x27, 0x46, 0x94, 0x74, 0x75, 0x2a, 0xb9, 0x0e, 0xfd, 0x81, 0x5f, + 0x8c, 0x3a, 0x9e, 0x40, 0xd6, 0x0f, 0x9c, 0x3f, 0xdb, 0x02, 0xb0, 0x3f, 0x7c, 0x44, 0x7e, 0x0b, + 0x6f, 0x2e, 0x15, 0xa1, 0x26, 0x42, 0x62, 0xf8, 0x10, 0xfd, 0x88, 0x1b, 0x36, 0x4f, 0xc1, 0x2f, + 0xb8, 0x9d, 0x4f, 0x45, 0x33, 0x8c, 0x96, 0x68, 0x9e, 0xf1, 0x3f, 0xdb, 0x85, 0x8b, 0x00, 0xdc, + 0x2a, 0x61, 0x92, 0x72, 0x79, 0x48, 0x89, 0x45, 0x80, 0xb8, 0x12, 0x1f, 0xce, 0x2e, 0x9c, 0x02, + 0x5f, 0x52, 0x76, 0x89, 0xa2, 0x24, 0x66, 0x17, 0x71, 0x2d, 0x2f, 0xdf, 0xf5, 0xee, 0x57, 0x8f, + 0x8f, 0x49, 0x0b, 0x1b, 0x9f, 0x7d, 0x31, 0x25, 0x3d, 0xf9, 0x62, 0x4a, 0xfa, 0xe9, 0x17, 0x53, + 0xd2, 0x5f, 0x7e, 0x39, 0xb5, 0xeb, 0xc9, 0x97, 0x53, 0xbb, 0x7e, 0xf4, 0xe5, 0xd4, 0xae, 0xdf, + 0x7f, 0xd5, 0x57, 0xe4, 0x5f, 0xf6, 0x46, 0xb9, 0xa5, 0xae, 0xd9, 0x73, 0x6c, 0xcc, 0x93, 0x9a, + 0x69, 0x21, 0xff, 0xe7, 0x86, 0xaa, 0x1b, 0x73, 0x35, 0xb3, 0xdc, 0xa8, 0x22, 0xbb, 0xf9, 0x53, + 0x8f, 0xf8, 0x40, 0x60, 0x2d, 0x8b, 0x7f, 0xa6, 0xf1, 0xec, 0xaf, 0x03, 0x00, 0x00, 0xff, 0xff, + 0xcf, 0xe6, 0x59, 0x86, 0xe8, 0x52, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -5942,6 +5948,16 @@ func (m *MsgInstantSpotMarketLaunch) MarshalToSizedBuffer(dAtA []byte) (int, err _ = i var l int _ = l + if m.QuoteDecimals != 0 { + i = encodeVarintTx(dAtA, i, uint64(m.QuoteDecimals)) + i-- + dAtA[i] = 0x48 + } + if m.BaseDecimals != 0 { + i = encodeVarintTx(dAtA, i, uint64(m.BaseDecimals)) + i-- + dAtA[i] = 0x40 + } { size := m.MinNotional.Size() i -= size @@ -9232,6 +9248,12 @@ func (m *MsgInstantSpotMarketLaunch) Size() (n int) { n += 1 + l + sovTx(uint64(l)) l = m.MinNotional.Size() n += 1 + l + sovTx(uint64(l)) + if m.BaseDecimals != 0 { + n += 1 + sovTx(uint64(m.BaseDecimals)) + } + if m.QuoteDecimals != 0 { + n += 1 + sovTx(uint64(m.QuoteDecimals)) + } return n } @@ -12459,6 +12481,44 @@ func (m *MsgInstantSpotMarketLaunch) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 8: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field BaseDecimals", wireType) + } + m.BaseDecimals = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.BaseDecimals |= uint32(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 9: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field QuoteDecimals", wireType) + } + m.QuoteDecimals = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.QuoteDecimals |= uint32(b&0x7F) << shift + if b < 0x80 { + break + } + } default: iNdEx = preIndex skippy, err := skipTx(dAtA[iNdEx:]) diff --git a/chain/exchange/types/wasm_maker_contract.go b/chain/exchange/types/wasm_maker_contract.go deleted file mode 100644 index 8b75eb9f..00000000 --- a/chain/exchange/types/wasm_maker_contract.go +++ /dev/null @@ -1,23 +0,0 @@ -package types - -import ( - "cosmossdk.io/math" -) - -type MintToUser struct { - SubaccountIDSender string `json:"subaccount_id_sender"` - Amount string `json:"amount"` -} - -type MintToUserMsg struct { - MintToUser MintToUser `json:"mint_to_user"` -} - -func NewMintToUserMsg(subaccountIDSender string, amount math.Int) MintToUserMsg { - return MintToUserMsg{ - MintToUser: MintToUser{ - SubaccountIDSender: subaccountIDSender, - Amount: amount.String(), - }, - } -} diff --git a/chain/helpers/common.go b/chain/helpers/common.go new file mode 100644 index 00000000..2254ea53 --- /dev/null +++ b/chain/helpers/common.go @@ -0,0 +1,27 @@ +package helpers + +import ( + sdk "github.com/cosmos/cosmos-sdk/types" +) + +func HasDuplicate[T comparable](elements []T) bool { + seen := make(map[T]struct{}) + for idx := range elements { + if _, ok := seen[elements[idx]]; ok { + return true // Duplicate found + } + seen[elements[idx]] = struct{}{} + } + return false +} + +func HasDuplicateCoins(slice []sdk.Coin) bool { + seen := make(map[string]struct{}) + for _, item := range slice { + if _, ok := seen[item.Denom]; ok { + return true + } + seen[item.Denom] = struct{}{} + } + return false +} diff --git a/chain/insurance/types/errors.go b/chain/insurance/types/errors.go deleted file mode 100644 index fb934756..00000000 --- a/chain/insurance/types/errors.go +++ /dev/null @@ -1,20 +0,0 @@ -package types - -import ( - "cosmossdk.io/errors" -) - -var ( - ErrInsuranceFundAlreadyExists = errors.Register(ModuleName, 1, "insurance fund already exists") - ErrInsuranceFundNotFound = errors.Register(ModuleName, 2, "insurance fund not found") - ErrRedemptionAlreadyExists = errors.Register(ModuleName, 3, "redemption already exists") - ErrInvalidDepositAmount = errors.Register(ModuleName, 4, "invalid deposit amount") - ErrInvalidDepositDenom = errors.Register(ModuleName, 5, "invalid deposit denom") - ErrPayoutTooLarge = errors.Register(ModuleName, 6, "insurance payout exceeds deposits") - ErrInvalidTicker = errors.Register(ModuleName, 7, "invalid ticker") - ErrInvalidQuoteDenom = errors.Register(ModuleName, 8, "invalid quote denom") - ErrInvalidOracle = errors.Register(ModuleName, 9, "invalid oracle") - ErrInvalidExpirationTime = errors.Register(ModuleName, 10, "invalid expiration time") - ErrInvalidMarketID = errors.Register(ModuleName, 11, "invalid marketID") - ErrInvalidShareDenom = errors.Register(ModuleName, 12, "invalid share denom") -) diff --git a/chain/insurance/types/events.go b/chain/insurance/types/events.go deleted file mode 100644 index ab1254f4..00000000 --- a/chain/insurance/types/events.go +++ /dev/null @@ -1 +0,0 @@ -package types diff --git a/chain/insurance/types/expected_keepers.go b/chain/insurance/types/expected_keepers.go deleted file mode 100644 index 0e5195ef..00000000 --- a/chain/insurance/types/expected_keepers.go +++ /dev/null @@ -1,20 +0,0 @@ -package types - -import ( - "context" - - sdk "github.com/cosmos/cosmos-sdk/types" - banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" -) - -// BankKeeper defines the expected bank keeper methods -type BankKeeper interface { - GetBalance(ctx context.Context, addr sdk.AccAddress, denom string) sdk.Coin - GetAllBalances(ctx context.Context, addr sdk.AccAddress) sdk.Coins - SendCoinsFromModuleToModule(ctx context.Context, senderModule, recipientModule string, amt sdk.Coins) error - SendCoinsFromModuleToAccount(ctx context.Context, senderModule string, recipientAddr sdk.AccAddress, amt sdk.Coins) error - SendCoinsFromAccountToModule(ctx context.Context, senderAddr sdk.AccAddress, recipientModule string, amt sdk.Coins) error - MintCoins(ctx context.Context, moduleName string, amt sdk.Coins) error - BurnCoins(ctx context.Context, moduleName string, amt sdk.Coins) error - SetDenomMetaData(ctx context.Context, denomMeta banktypes.Metadata) -} diff --git a/chain/insurance/types/genesis.go b/chain/insurance/types/genesis.go deleted file mode 100644 index 701f339e..00000000 --- a/chain/insurance/types/genesis.go +++ /dev/null @@ -1,33 +0,0 @@ -package types - -import ( - "errors" -) - -func NewGenesisState() GenesisState { - return GenesisState{} -} - -func (gs GenesisState) Validate() error { - if gs.NextRedemptionScheduleId == 0 { - return errors.New("NextRedemptionScheduleId should NOT be zero") - } - if gs.NextShareDenomId == 0 { - return errors.New("NextShareDenomId should NOT be zero") - } - - if err := gs.Params.Validate(); err != nil { - return err - } - return nil -} - -func DefaultGenesisState() *GenesisState { - return &GenesisState{ - Params: DefaultParams(), - NextShareDenomId: 1, - NextRedemptionScheduleId: 1, - RedemptionSchedule: []RedemptionSchedule{}, - InsuranceFunds: []InsuranceFund{}, - } -} diff --git a/chain/insurance/types/insurance.go b/chain/insurance/types/insurance.go deleted file mode 100644 index de861276..00000000 --- a/chain/insurance/types/insurance.go +++ /dev/null @@ -1,56 +0,0 @@ -package types - -import ( - "fmt" - "time" - - "cosmossdk.io/math" - "github.com/ethereum/go-ethereum/common" - - oracletypes "github.com/InjectiveLabs/sdk-go/chain/oracle/types" -) - -var ( - InsuranceFundInitialSupply = math.NewIntWithDecimal(1, 18) - InsuranceFundProtocolOwnedLiquiditySupply = math.NewIntWithDecimal(1, 16) - InsuranceFundCreatorSupply = InsuranceFundInitialSupply.Sub(InsuranceFundProtocolOwnedLiquiditySupply) -) - -func NewInsuranceFund( - marketID common.Hash, - depositDenom, poolTokenDenom string, - redemptionNoticePeriodDuration time.Duration, - ticker, oracleBase, oracleQuote string, oracleType oracletypes.OracleType, expiry int64, -) *InsuranceFund { - - return &InsuranceFund{ - DepositDenom: depositDenom, - InsurancePoolTokenDenom: poolTokenDenom, - RedemptionNoticePeriodDuration: redemptionNoticePeriodDuration, - Balance: math.ZeroInt(), - TotalShare: math.ZeroInt(), - MarketId: marketID.Hex(), - MarketTicker: ticker, - OracleBase: oracleBase, - OracleQuote: oracleQuote, - OracleType: oracleType, - Expiry: expiry, - } - -} - -func (fund InsuranceFund) ShareDenom() string { - return fund.InsurancePoolTokenDenom -} - -func (fund *InsuranceFund) AddTotalShare(shares math.Int) { - fund.TotalShare = fund.TotalShare.Add(shares) -} - -func (fund *InsuranceFund) SubTotalShare(shares math.Int) { - fund.TotalShare = fund.TotalShare.Sub(shares) -} - -func ShareDenomFromId(id uint64) string { - return fmt.Sprintf("share%d", id) -} diff --git a/chain/insurance/types/key.go b/chain/insurance/types/key.go deleted file mode 100644 index 1dd40c09..00000000 --- a/chain/insurance/types/key.go +++ /dev/null @@ -1,38 +0,0 @@ -package types - -import ( - "time" - - sdk "github.com/cosmos/cosmos-sdk/types" -) - -const ( - ModuleName = "insurance" - StoreKey = ModuleName -) - -var ( - // Key for insurance prefixes - InsuranceFundPrefixKey = []byte{0x02} - - // Key for insurance redemption prefixes - RedemptionSchedulePrefixKey = []byte{0x03} - - GlobalShareDenomIdPrefixKey = []byte{0x04, 0x00} - GlobalRedemptionScheduleIdPrefixKey = []byte{0x05, 0x00} - - ParamsKey = []byte{0x10} -) - -// GetRedemptionScheduleKey provides the key to store a single pending redemption -func GetRedemptionScheduleKey(redemptionID uint64, claimTime time.Time) []byte { - key := RedemptionSchedulePrefixKey - key = append(key, sdk.FormatTimeBytes(claimTime)...) - key = append(key, sdk.Uint64ToBigEndian(redemptionID)...) - return key -} - -// GetRedemptionScheduleKey provides the key to store a single pending redemption -func (sh RedemptionSchedule) GetRedemptionScheduleKey() []byte { - return GetRedemptionScheduleKey(sh.Id, sh.ClaimableRedemptionTime) -} diff --git a/chain/insurance/types/msgs.go b/chain/insurance/types/msgs.go deleted file mode 100644 index 689f01f8..00000000 --- a/chain/insurance/types/msgs.go +++ /dev/null @@ -1,184 +0,0 @@ -package types - -import ( - "cosmossdk.io/errors" - sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - - oracletypes "github.com/InjectiveLabs/sdk-go/chain/oracle/types" -) - -const RouterKey = ModuleName - -var ( - _ sdk.Msg = &MsgCreateInsuranceFund{} - _ sdk.Msg = &MsgUnderwrite{} - _ sdk.Msg = &MsgRequestRedemption{} - _ sdk.Msg = &MsgUpdateParams{} -) - -// Route implements the sdk.Msg interface. It should return the name of the module -func (msg MsgUpdateParams) Route() string { return RouterKey } - -// Type implements the sdk.Msg interface. It should return the action. -func (msg MsgUpdateParams) Type() string { return "updateParams" } - -// ValidateBasic implements the sdk.Msg interface. It runs stateless checks on the message -func (msg MsgUpdateParams) ValidateBasic() error { - if _, err := sdk.AccAddressFromBech32(msg.Authority); err != nil { - return errors.Wrap(err, "invalid authority address") - } - - if err := msg.Params.Validate(); err != nil { - return err - } - - return nil -} - -// GetSignBytes implements the sdk.Msg interface. It encodes the message for signing -func (msg *MsgUpdateParams) GetSignBytes() []byte { - return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(msg)) -} - -// GetSigners implements the sdk.Msg interface. It defines whose signature is required -func (msg MsgUpdateParams) GetSigners() []sdk.AccAddress { - sender, err := sdk.AccAddressFromBech32(msg.Authority) - if err != nil { - panic(err) - } - return []sdk.AccAddress{sender} -} - -// Route implements the sdk.Msg interface. It should return the name of the module -func (msg MsgCreateInsuranceFund) Route() string { return RouterKey } - -// Type implements the sdk.Msg interface. It should return the action. -func (msg MsgCreateInsuranceFund) Type() string { return "createInsuranceFund" } - -// ValidateBasic implements the sdk.Msg interface. It runs stateless checks on the message -func (msg MsgCreateInsuranceFund) ValidateBasic() error { - if msg.Sender == "" { - return errors.Wrap(sdkerrors.ErrInvalidAddress, msg.Sender) - } - if msg.Ticker == "" || len(msg.Ticker) > 40 { - return errors.Wrapf(ErrInvalidTicker, "ticker should not be empty or exceed 40 characters") - } - if msg.QuoteDenom == "" { - return errors.Wrap(ErrInvalidQuoteDenom, "quote denom should not be empty") - } - if msg.OracleBase == "" { - return errors.Wrap(ErrInvalidOracle, "oracle base should not be empty") - } - if msg.OracleQuote == "" { - return errors.Wrap(ErrInvalidOracle, "oracle quote should not be empty") - } - if msg.OracleType == oracletypes.OracleType_Unspecified { - return errors.Wrap(ErrInvalidOracle, "oracle type should not be unspecified") - } - if msg.QuoteDenom != msg.InitialDeposit.Denom { - return errors.Wrapf(ErrInvalidDepositDenom, "oracle quote denom %s does not match deposit denom %s", msg.QuoteDenom, msg.InitialDeposit.Denom) - } - - if msg.OracleType == oracletypes.OracleType_Provider && msg.Expiry != BinaryOptionsExpiryFlag && msg.Expiry != PerpetualExpiryFlag { - return errors.Wrap(ErrInvalidExpirationTime, "oracle expiration time should be -2 or -1 for OracleType_Provider") - } - - if !msg.InitialDeposit.IsValid() { - return errors.Wrap(sdkerrors.ErrInvalidCoins, msg.InitialDeposit.String()) - } - if !msg.InitialDeposit.IsPositive() || msg.InitialDeposit.Amount.GT(MaxUnderwritingAmount) { - return errors.Wrap(sdkerrors.ErrInvalidCoins, msg.InitialDeposit.String()) - } - return nil -} - -// GetSignBytes implements the sdk.Msg interface. It encodes the message for signing -func (msg *MsgCreateInsuranceFund) GetSignBytes() []byte { - return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(msg)) -} - -// GetSigners implements the sdk.Msg interface. It defines whose signature is required -func (msg MsgCreateInsuranceFund) GetSigners() []sdk.AccAddress { - sender, err := sdk.AccAddressFromBech32(msg.Sender) - if err != nil { - panic(err) - } - return []sdk.AccAddress{sender} -} - -// Route implements the sdk.Msg interface. It should return the name of the module -func (msg MsgUnderwrite) Route() string { return RouterKey } - -// Type implements the sdk.Msg interface. It should return the action. -func (msg MsgUnderwrite) Type() string { return "underwrite" } - -// ValidateBasic implements the sdk.Msg interface. It runs stateless checks on the message -func (msg MsgUnderwrite) ValidateBasic() error { - if msg.Sender == "" { - return errors.Wrap(sdkerrors.ErrInvalidAddress, msg.Sender) - } - if msg.MarketId == "" { - return errors.Wrap(ErrInvalidMarketID, msg.MarketId) - } - if !msg.Deposit.IsValid() { - return errors.Wrap(sdkerrors.ErrInvalidCoins, msg.Deposit.String()) - } - if !msg.Deposit.IsPositive() || msg.Deposit.Amount.GT(MaxUnderwritingAmount) { - return errors.Wrap(sdkerrors.ErrInvalidCoins, msg.Deposit.String()) - } - return nil -} - -// GetSignBytes implements the sdk.Msg interface. It encodes the message for signing -func (msg *MsgUnderwrite) GetSignBytes() []byte { - return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(msg)) -} - -// GetSigners implements the sdk.Msg interface. It defines whose signature is required -func (msg MsgUnderwrite) GetSigners() []sdk.AccAddress { - sender, err := sdk.AccAddressFromBech32(msg.Sender) - if err != nil { - panic(err) - } - return []sdk.AccAddress{sender} -} - -// Route implements the sdk.Msg interface. It should return the name of the module -func (msg MsgRequestRedemption) Route() string { return RouterKey } - -// Type implements the sdk.Msg interface. It should return the action. -func (msg MsgRequestRedemption) Type() string { return "requestRedemption" } - -// ValidateBasic implements the sdk.Msg interface. It runs stateless checks on the message -func (msg MsgRequestRedemption) ValidateBasic() error { - if msg.Sender == "" { - return errors.Wrap(sdkerrors.ErrInvalidAddress, msg.Sender) - } - if msg.MarketId == "" { - return errors.Wrap(ErrInvalidMarketID, msg.MarketId) - } - - if !msg.Amount.IsValid() { - return errors.Wrap(sdkerrors.ErrInvalidCoins, msg.Amount.String()) - } - - if !msg.Amount.IsPositive() { - return errors.Wrap(sdkerrors.ErrInvalidCoins, msg.Amount.String()) - } - return nil -} - -// GetSignBytes implements the sdk.Msg interface. It encodes the message for signing -func (msg *MsgRequestRedemption) GetSignBytes() []byte { - return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(msg)) -} - -// GetSigners implements the sdk.Msg interface. It defines whose signature is required -func (msg MsgRequestRedemption) GetSigners() []sdk.AccAddress { - sender, err := sdk.AccAddressFromBech32(msg.Sender) - if err != nil { - panic(err) - } - return []sdk.AccAddress{sender} -} diff --git a/chain/insurance/types/params.go b/chain/insurance/types/params.go deleted file mode 100644 index 7cd8f19a..00000000 --- a/chain/insurance/types/params.go +++ /dev/null @@ -1,78 +0,0 @@ -package types - -import ( - "fmt" - "time" - - "cosmossdk.io/math" - paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" -) - -var _ paramtypes.ParamSet = &Params{} - -// insurance params default values -const ( - // DefaultInsurancePeriodDurationSeconds represents the number of seconds in two weeks - DefaultInsurancePeriod = time.Hour * 24 * 14 - DefaultBinaryOptionsInsurancePeriod = time.Minute -) - -// MaxUnderwritingAmount equals 1 trillion * 1e18 -var MaxUnderwritingAmount, _ = math.NewIntFromString("1000000000000000000000000000") -var PerpetualExpiryFlag int64 = -1 -var BinaryOptionsExpiryFlag int64 = -2 - -// Parameter keys -var ( - KeyDefaultRedemptionNoticePeriodDuration = []byte("defaultRedemptionNoticePeriodDuration") -) - -// ParamKeyTable returns the parameter key table. -func ParamKeyTable() paramtypes.KeyTable { - return paramtypes.NewKeyTable().RegisterParamSet(&Params{}) -} - -// NewParams creates a new Params instance -func NewParams( - defaultRedemptionNoticePeriodDuration time.Duration, -) Params { - return Params{ - DefaultRedemptionNoticePeriodDuration: defaultRedemptionNoticePeriodDuration, - } -} - -// ParamSetPairs returns the parameter set pairs. -func (p *Params) ParamSetPairs() paramtypes.ParamSetPairs { - return paramtypes.ParamSetPairs{ - paramtypes.NewParamSetPair(KeyDefaultRedemptionNoticePeriodDuration, &p.DefaultRedemptionNoticePeriodDuration, validateNoticePeriodDuration), - } -} - -// DefaultParams returns a default set of parameters. -func DefaultParams() Params { - return Params{ - DefaultRedemptionNoticePeriodDuration: DefaultInsurancePeriod, - } -} - -// Validate performs basic validation on insurance parameters. -func (p Params) Validate() error { - if err := validateNoticePeriodDuration(p.DefaultRedemptionNoticePeriodDuration); err != nil { - return err - } - - return nil -} - -func validateNoticePeriodDuration(i interface{}) error { - v, ok := i.(time.Duration) - if !ok { - return fmt.Errorf("invalid parameter type: %T", i) - } - - if v == 0 { - return fmt.Errorf("DefaultRedemptionNoticePeriodDuration must be positive: %d", v) - } - - return nil -} diff --git a/chain/insurance/types/paramset.go b/chain/insurance/types/paramset.go deleted file mode 100644 index 80d0852b..00000000 --- a/chain/insurance/types/paramset.go +++ /dev/null @@ -1,26 +0,0 @@ -package types - -type ( - ValueValidatorFn func(value interface{}) error - - // ParamSetPair is used for associating paramsubspace key and field of param - // structs. - ParamSetPair struct { - Key []byte - Value interface{} - ValidatorFn ValueValidatorFn - } -) - -// NewParamSetPair creates a new ParamSetPair instance. -func NewParamSetPair(key []byte, value interface{}, vfn ValueValidatorFn) ParamSetPair { - return ParamSetPair{key, value, vfn} -} - -// ParamSetPairs Slice of KeyFieldPair -type ParamSetPairs []ParamSetPair - -// ParamSet defines an interface for structs containing parameters for a module -type ParamSet interface { - ParamSetPairs() ParamSetPairs -} diff --git a/chain/ocr/types/expected_keepers.go b/chain/ocr/types/expected_keepers.go deleted file mode 100644 index feb64c63..00000000 --- a/chain/ocr/types/expected_keepers.go +++ /dev/null @@ -1,29 +0,0 @@ -package types - -import ( - "context" - - sdk "github.com/cosmos/cosmos-sdk/types" - bank "github.com/cosmos/cosmos-sdk/x/bank/types" - params "github.com/cosmos/cosmos-sdk/x/params/types" -) - -// ParamSubspace defines the expected Subspace interfacace -type ParamSubspace interface { - WithKeyTable(table params.KeyTable) params.Subspace - Get(ctx sdk.Context, key []byte, ptr interface{}) - GetParamSet(ctx sdk.Context, ps params.ParamSet) - SetParamSet(ctx sdk.Context, ps params.ParamSet) -} - -// BankKeeper defines the expected bank keeper methods -type BankKeeper interface { - GetBalance(ctx context.Context, addr sdk.AccAddress, denom string) sdk.Coin - GetAllBalances(ctx context.Context, addr sdk.AccAddress) sdk.Coins - SendCoinsFromModuleToModule(ctx context.Context, senderModule, recipientModule string, amt sdk.Coins) error - SendCoinsFromModuleToAccount(ctx context.Context, senderModule string, recipientAddr sdk.AccAddress, amt sdk.Coins) error - SendCoinsFromAccountToModule(ctx context.Context, senderAddr sdk.AccAddress, recipientModule string, amt sdk.Coins) error - MintCoins(ctx context.Context, moduleName string, amt sdk.Coins) error - BurnCoins(ctx context.Context, moduleName string, amt sdk.Coins) error - SetDenomMetaData(ctx context.Context, denomMeta bank.Metadata) -} diff --git a/chain/ocr/types/genesis.go b/chain/ocr/types/genesis.go deleted file mode 100644 index 3739aca4..00000000 --- a/chain/ocr/types/genesis.go +++ /dev/null @@ -1,18 +0,0 @@ -package types - -func NewGenesisState() GenesisState { - return GenesisState{} -} - -func (gs GenesisState) Validate() error { - if err := gs.Params.Validate(); err != nil { - return err - } - return nil -} - -func DefaultGenesisState() *GenesisState { - return &GenesisState{ - Params: DefaultParams(), - } -} diff --git a/chain/ocr/types/hooks.go b/chain/ocr/types/hooks.go deleted file mode 100644 index 5bec4b95..00000000 --- a/chain/ocr/types/hooks.go +++ /dev/null @@ -1,38 +0,0 @@ -package types - -import ( - "cosmossdk.io/math" - sdk "github.com/cosmos/cosmos-sdk/types" -) - -type OcrHooks interface { - AfterSetFeedConfig(ctx sdk.Context, feedConfig *FeedConfig) - AfterTransmit(ctx sdk.Context, feedId string, answer math.LegacyDec, timestamp int64) - AfterFundFeedRewardPool(ctx sdk.Context, feedId string, newPoolAmount sdk.Coin) -} - -var _ OcrHooks = MultiOcrHooks{} - -type MultiOcrHooks []OcrHooks - -func NewMultiOcrHooks(hooks ...OcrHooks) MultiOcrHooks { - return hooks -} - -func (h MultiOcrHooks) AfterSetFeedConfig(ctx sdk.Context, feedConfig *FeedConfig) { - for i := range h { - h[i].AfterSetFeedConfig(ctx, feedConfig) - } -} - -func (h MultiOcrHooks) AfterTransmit(ctx sdk.Context, feedId string, answer math.LegacyDec, timestamp int64) { - for i := range h { - h[i].AfterTransmit(ctx, feedId, answer, timestamp) - } -} - -func (h MultiOcrHooks) AfterFundFeedRewardPool(ctx sdk.Context, feedId string, newPoolAmount sdk.Coin) { - for i := range h { - h[i].AfterFundFeedRewardPool(ctx, feedId, newPoolAmount) - } -} diff --git a/chain/ocr/types/msgs.go b/chain/ocr/types/msgs.go deleted file mode 100644 index 836a1c4a..00000000 --- a/chain/ocr/types/msgs.go +++ /dev/null @@ -1,470 +0,0 @@ -package types - -import ( - "cosmossdk.io/errors" - sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" -) - -const ( - TypeMsgCreateFeed = "createFeed" - TypeMsgUpdateFeed = "updateFeed" - TypeMsgTransmit = "transmit" - TypeMsgFundFeedRewardPool = "fundFeedRewardPool" - TypeMsgWithdrawFeedRewardPool = "withdrawFeedRewardPool" - TypeMsgSetPayees = "setPayees" - TypeMsgTransferPayeeship = "transferPayeeship" - TypeMsgAcceptPayeeship = "acceptPayeeship" - TypeMsgUpdateParams = "updateParams" -) - -var ( - _ sdk.Msg = &MsgCreateFeed{} - _ sdk.Msg = &MsgUpdateFeed{} - _ sdk.Msg = &MsgTransmit{} - _ sdk.Msg = &MsgFundFeedRewardPool{} - _ sdk.Msg = &MsgWithdrawFeedRewardPool{} - _ sdk.Msg = &MsgSetPayees{} - _ sdk.Msg = &MsgTransferPayeeship{} - _ sdk.Msg = &MsgAcceptPayeeship{} - _ sdk.Msg = &MsgUpdateParams{} -) - -// Route implements the sdk.Msg interface. It should return the name of the module -func (msg MsgUpdateParams) Route() string { return RouterKey } - -// Type implements the sdk.Msg interface. It should return the action. -func (msg MsgUpdateParams) Type() string { return TypeMsgUpdateParams } - -// ValidateBasic implements the sdk.Msg interface for MsgUpdateParams. -func (msg MsgUpdateParams) ValidateBasic() error { - if _, err := sdk.AccAddressFromBech32(msg.Authority); err != nil { - return errors.Wrap(err, "invalid authority address") - } - - if err := msg.Params.Validate(); err != nil { - return err - } - - return nil -} - -// GetSignBytes implements the sdk.Msg interface. It encodes the message for signing -func (msg *MsgUpdateParams) GetSignBytes() []byte { - return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(msg)) -} - -// GetSigners implements the sdk.Msg interface. It defines whose signature is required -func (msg MsgUpdateParams) GetSigners() []sdk.AccAddress { - sender, err := sdk.AccAddressFromBech32(msg.Authority) - if err != nil { - panic(err) - } - - return []sdk.AccAddress{sender} -} - -// Route implements the sdk.Msg interface. It should return the name of the module -func (msg MsgCreateFeed) Route() string { return RouterKey } - -// Type implements the sdk.Msg interface. It should return the action. -func (msg MsgCreateFeed) Type() string { return TypeMsgCreateFeed } - -// ValidateBasic implements the sdk.Msg interface for MsgCreateFeed. -func (msg MsgCreateFeed) ValidateBasic() error { - if msg.Sender == "" { - return errors.Wrap(sdkerrors.ErrInvalidAddress, msg.Sender) - } - - if err := msg.Config.ValidateBasic(); err != nil { - return err - } - - return nil -} - -// GetSignBytes implements the sdk.Msg interface. It encodes the message for signing -func (msg *MsgCreateFeed) GetSignBytes() []byte { - return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(msg)) -} - -// GetSigners implements the sdk.Msg interface. It defines whose signature is required -func (msg MsgCreateFeed) GetSigners() []sdk.AccAddress { - sender, err := sdk.AccAddressFromBech32(msg.Sender) - if err != nil { - panic(err) - } - - return []sdk.AccAddress{sender} -} - -// Route implements the sdk.Msg interface. It should return the name of the module -func (msg MsgUpdateFeed) Route() string { return RouterKey } - -// Type implements the sdk.Msg interface. It should return the action. -func (msg MsgUpdateFeed) Type() string { return TypeMsgUpdateFeed } - -// ValidateBasic implements the sdk.Msg interface for MsgUpdateFeed. -func (msg MsgUpdateFeed) ValidateBasic() error { - if msg.Sender == "" { - return errors.Wrap(sdkerrors.ErrInvalidAddress, msg.Sender) - } - - if msg.FeedId == "" || len(msg.FeedId) > FeedIDMaxLength { - return errors.Wrap(sdkerrors.ErrInvalidRequest, "feedId not valid") - } - - seenTransmitters := make(map[string]struct{}, len(msg.Transmitters)) - for _, transmitter := range msg.Transmitters { - addr, err := sdk.AccAddressFromBech32(transmitter) - if err != nil { - return err - } - - if _, ok := seenTransmitters[addr.String()]; ok { - return ErrRepeatedAddress - } else { - seenTransmitters[addr.String()] = struct{}{} - } - } - - seenSigners := make(map[string]struct{}, len(msg.Signers)) - for _, signer := range msg.Signers { - addr, err := sdk.AccAddressFromBech32(signer) - if err != nil { - return err - } - - if _, ok := seenSigners[addr.String()]; ok { - return ErrRepeatedAddress - } else { - seenSigners[addr.String()] = struct{}{} - } - } - - if msg.LinkPerTransmission != nil { - if msg.LinkPerTransmission.IsNil() || !msg.LinkPerTransmission.IsPositive() { - return errors.Wrap(ErrIncorrectConfig, "LinkPerTransmission must be positive") - } - } - - if msg.LinkPerObservation != nil { - if msg.LinkPerObservation.IsNil() || !msg.LinkPerObservation.IsPositive() { - return errors.Wrap(ErrIncorrectConfig, "LinkPerObservation must be positive") - } - } - - if msg.LinkDenom == "" { - return sdkerrors.ErrInvalidCoins - } - - if msg.FeedAdmin != "" { - if _, err := sdk.AccAddressFromBech32(msg.FeedAdmin); err != nil { - return err - } - } - - if msg.BillingAdmin != "" { - if _, err := sdk.AccAddressFromBech32(msg.BillingAdmin); err != nil { - return err - } - } - - return nil -} - -// GetSignBytes implements the sdk.Msg interface. It encodes the message for signing -func (msg *MsgUpdateFeed) GetSignBytes() []byte { - return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(msg)) -} - -// GetSigners implements the sdk.Msg interface. It defines whose signature is required -func (msg MsgUpdateFeed) GetSigners() []sdk.AccAddress { - sender, err := sdk.AccAddressFromBech32(msg.Sender) - if err != nil { - panic(err) - } - - return []sdk.AccAddress{sender} -} - -// Route implements the sdk.Msg interface. It should return the name of the module -func (msg MsgTransmit) Route() string { return RouterKey } - -// Type implements the sdk.Msg interface. It should return the action. -func (msg MsgTransmit) Type() string { return TypeMsgTransmit } - -// ValidateBasic implements the sdk.Msg interface for MsgTransmit. -func (msg MsgTransmit) ValidateBasic() error { - if msg.Transmitter == "" { - return ErrNoTransmitter - } - - switch { - case len(msg.ConfigDigest) == 0: - return errors.Wrap(ErrIncorrectTransmissionData, "missing config digest") - case msg.FeedId == "": - return errors.Wrap(ErrIncorrectTransmissionData, "missing feed hash") - case msg.Report == nil: - return errors.Wrap(ErrIncorrectTransmissionData, "missing report") - } - - if len(msg.Report.Observers) > MaxNumOracles { - return errors.Wrap(ErrIncorrectTransmissionData, "too many observers") - } else if len(msg.Report.Observations) != len(msg.Report.Observers) { - return errors.Wrap(ErrIncorrectTransmissionData, "wrong observations count") - } - - if len(msg.Report.Observations) > MaxNumOracles { - return errors.Wrap(sdkerrors.ErrInvalidRequest, "num observations out of bounds") - } - - for i := 0; i < len(msg.Report.Observations)-1; i++ { - inOrder := msg.Report.Observations[i].LTE(msg.Report.Observations[i+1]) - if !inOrder { - return errors.Wrap(sdkerrors.ErrInvalidRequest, "observations not sorted") - } - } - return nil -} - -// GetSignBytes implements the sdk.Msg interface. It encodes the message for signing -func (msg *MsgTransmit) GetSignBytes() []byte { - return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(msg)) -} - -// GetSigners implements the sdk.Msg interface. It defines whose signature is required -func (msg MsgTransmit) GetSigners() []sdk.AccAddress { - transmitter, err := sdk.AccAddressFromBech32(msg.Transmitter) - if err != nil { - panic(err) - } - - return []sdk.AccAddress{transmitter} -} - -// Route implements the sdk.Msg interface. It should return the name of the module -func (msg MsgFundFeedRewardPool) Route() string { return RouterKey } - -// Type implements the sdk.Msg interface. It should return the action. -func (msg MsgFundFeedRewardPool) Type() string { return TypeMsgFundFeedRewardPool } - -// ValidateBasic implements the sdk.Msg interface for MsgFundFeedRewardPool. -func (msg MsgFundFeedRewardPool) ValidateBasic() error { - if msg.Sender == "" { - return errors.Wrap(sdkerrors.ErrInvalidAddress, msg.Sender) - } - - if msg.FeedId == "" || len(msg.FeedId) > FeedIDMaxLength { - return errors.Wrap(sdkerrors.ErrInvalidRequest, "feedId not valid") - } - - if !msg.Amount.IsValid() { - return errors.Wrap(sdkerrors.ErrInvalidCoins, msg.Amount.String()) - } - - return nil -} - -// GetSignBytes implements the sdk.Msg interface. It encodes the message for signing -func (msg *MsgFundFeedRewardPool) GetSignBytes() []byte { - return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(msg)) -} - -// GetSigners implements the sdk.Msg interface. It defines whose signature is required -func (msg MsgFundFeedRewardPool) GetSigners() []sdk.AccAddress { - sender, err := sdk.AccAddressFromBech32(msg.Sender) - if err != nil { - panic(err) - } - - return []sdk.AccAddress{sender} -} - -// Route implements the sdk.Msg interface. It should return the name of the module -func (msg MsgWithdrawFeedRewardPool) Route() string { return RouterKey } - -// Type implements the sdk.Msg interface. It should return the action. -func (msg MsgWithdrawFeedRewardPool) Type() string { return TypeMsgWithdrawFeedRewardPool } - -// ValidateBasic implements the sdk.Msg interface for MsgWithdrawFeedRewardPool. -func (msg MsgWithdrawFeedRewardPool) ValidateBasic() error { - if msg.Sender == "" { - return errors.Wrap(sdkerrors.ErrInvalidAddress, msg.Sender) - } - - if msg.FeedId == "" || len(msg.FeedId) > FeedIDMaxLength { - return errors.Wrap(sdkerrors.ErrInvalidRequest, "feedId not valid") - } - - if !msg.Amount.IsValid() { - return errors.Wrap(sdkerrors.ErrInvalidCoins, msg.Amount.String()) - } - - return nil -} - -// GetSignBytes implements the sdk.Msg interface. It encodes the message for signing -func (msg *MsgWithdrawFeedRewardPool) GetSignBytes() []byte { - return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(msg)) -} - -// GetSigners implements the sdk.Msg interface. It defines whose signature is required -func (msg MsgWithdrawFeedRewardPool) GetSigners() []sdk.AccAddress { - sender, err := sdk.AccAddressFromBech32(msg.Sender) - if err != nil { - panic(err) - } - - return []sdk.AccAddress{sender} -} - -// Route implements the sdk.Msg interface. It should return the name of the module -func (msg MsgSetPayees) Route() string { return RouterKey } - -// Type implements the sdk.Msg interface. It should return the action. -func (msg MsgSetPayees) Type() string { return TypeMsgSetPayees } - -// ValidateBasic implements the sdk.Msg interface for MsgSetPayees. -func (msg MsgSetPayees) ValidateBasic() error { - if msg.Sender == "" { - return errors.Wrap(sdkerrors.ErrInvalidAddress, msg.Sender) - } - - if msg.FeedId == "" || len(msg.FeedId) > FeedIDMaxLength { - return errors.Wrap(sdkerrors.ErrInvalidRequest, "feedId not valid") - } - - if len(msg.Transmitters) != len(msg.Payees) || len(msg.Payees) == 0 { - return ErrInvalidPayees - } - - seenTransmitters := make(map[string]struct{}, len(msg.Transmitters)) - for _, transmitter := range msg.Transmitters { - addr, err := sdk.AccAddressFromBech32(transmitter) - if err != nil { - return err - } - - if _, ok := seenTransmitters[addr.String()]; ok { - return ErrRepeatedAddress - } else { - seenTransmitters[addr.String()] = struct{}{} - } - } - - seenPayees := make(map[string]struct{}, len(msg.Payees)) - for _, payee := range msg.Payees { - addr, err := sdk.AccAddressFromBech32(payee) - if err != nil { - return err - } - - if _, ok := seenPayees[addr.String()]; ok { - return ErrRepeatedAddress - } else { - seenPayees[addr.String()] = struct{}{} - } - } - - return nil -} - -// GetSignBytes implements the sdk.Msg interface. It encodes the message for signing -func (msg *MsgSetPayees) GetSignBytes() []byte { - return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(msg)) -} - -// GetSigners implements the sdk.Msg interface. It defines whose signature is required -func (msg MsgSetPayees) GetSigners() []sdk.AccAddress { - sender, err := sdk.AccAddressFromBech32(msg.Sender) - if err != nil { - panic(err) - } - - return []sdk.AccAddress{sender} -} - -// Route implements the sdk.Msg interface. It should return the name of the module -func (msg MsgTransferPayeeship) Route() string { return RouterKey } - -// Type implements the sdk.Msg interface. It should return the action. -func (msg MsgTransferPayeeship) Type() string { return TypeMsgTransferPayeeship } - -// ValidateBasic implements the sdk.Msg interface for MsgTransferPayeeship. -func (msg MsgTransferPayeeship) ValidateBasic() error { - if msg.Sender == "" { - return errors.Wrap(sdkerrors.ErrInvalidAddress, msg.Sender) - } - - if msg.FeedId == "" || len(msg.FeedId) > FeedIDMaxLength { - return errors.Wrap(sdkerrors.ErrInvalidRequest, "feedId not valid") - } - - if _, err := sdk.AccAddressFromBech32(msg.Transmitter); err != nil { - return errors.Wrap(sdkerrors.ErrInvalidAddress, msg.Transmitter) - } - - if _, err := sdk.AccAddressFromBech32(msg.Proposed); err != nil { - return errors.Wrap(sdkerrors.ErrInvalidAddress, msg.Proposed) - } - - if msg.Transmitter == msg.Proposed { - return errors.Wrap(sdkerrors.ErrInvalidAddress, "proposed cannot be the same as transmitter") - } - - return nil -} - -// GetSignBytes implements the sdk.Msg interface. It encodes the message for signing -func (msg *MsgTransferPayeeship) GetSignBytes() []byte { - return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(msg)) -} - -// GetSigners implements the sdk.Msg interface. It defines whose signature is required -func (msg MsgTransferPayeeship) GetSigners() []sdk.AccAddress { - sender, err := sdk.AccAddressFromBech32(msg.Sender) - if err != nil { - panic(err) - } - - return []sdk.AccAddress{sender} -} - -// Route implements the sdk.Msg interface. It should return the name of the module -func (msg MsgAcceptPayeeship) Route() string { return RouterKey } - -// Type implements the sdk.Msg interface. It should return the action. -func (msg MsgAcceptPayeeship) Type() string { return TypeMsgAcceptPayeeship } - -// ValidateBasic implements the sdk.Msg interface for MsgAcceptPayeeship. -func (msg MsgAcceptPayeeship) ValidateBasic() error { - if msg.Payee == "" { - return errors.Wrap(sdkerrors.ErrInvalidAddress, msg.Payee) - } - - if msg.FeedId == "" || len(msg.FeedId) > FeedIDMaxLength { - return errors.Wrap(sdkerrors.ErrInvalidRequest, "feedId not valid") - } - - if _, err := sdk.AccAddressFromBech32(msg.Transmitter); err != nil { - return errors.Wrap(sdkerrors.ErrInvalidAddress, msg.Transmitter) - } - - return nil -} - -// GetSignBytes implements the sdk.Msg interface. It encodes the message for signing -func (msg *MsgAcceptPayeeship) GetSignBytes() []byte { - return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(msg)) -} - -// GetSigners implements the sdk.Msg interface. It defines whose signature is required -func (msg MsgAcceptPayeeship) GetSigners() []sdk.AccAddress { - sender, err := sdk.AccAddressFromBech32(msg.Payee) - if err != nil { - panic(err) - } - - return []sdk.AccAddress{sender} -} diff --git a/chain/oracle/types/band_ibc.go b/chain/oracle/types/band_ibc.go deleted file mode 100644 index 820053db..00000000 --- a/chain/oracle/types/band_ibc.go +++ /dev/null @@ -1,129 +0,0 @@ -package types - -import ( - "fmt" - - bandobi "github.com/bandprotocol/bandchain-packet/obi" - bandPacket "github.com/bandprotocol/bandchain-packet/packet" - - bandprice "github.com/InjectiveLabs/sdk-go/chain/oracle/bandchain/hooks/price" -) - -func NewOracleRequestPacketData(clientID string, calldata []byte, r *BandOracleRequest) bandPacket.OracleRequestPacketData { - return bandPacket.OracleRequestPacketData{ - ClientID: clientID, - OracleScriptID: uint64(r.OracleScriptId), - Calldata: calldata, - AskCount: r.AskCount, - MinCount: r.MinCount, - FeeLimit: r.FeeLimit, - PrepareGas: r.PrepareGas, - ExecuteGas: r.ExecuteGas, - } -} - -// GetCalldata gets the Band IBC request call data based on the symbols and multiplier. -func (r *BandOracleRequest) GetCalldata(legacyScheme bool) []byte { - if legacyScheme { - return bandobi.MustEncode(bandprice.Input{ - Symbols: r.Symbols, - Multiplier: BandPriceMultiplier, - }) - } - - return bandobi.MustEncode(bandprice.SymbolInput{ - Symbols: r.Symbols, - MinimumSourceCount: uint8(r.MinSourceCount), - }) -} - -func DecodeOracleInput(data []byte) (OracleInput, error) { - var ( - legacyInput LegacyBandInput - newInput BandInput - err error - ) - - if err = bandobi.Decode(data, &legacyInput); err == nil { - return legacyInput, nil - } - - if err = bandobi.Decode(data, &newInput); err == nil { - return newInput, nil - } - - return nil, fmt.Errorf("failed to decode oracle input: %w", err) -} - -func DecodeOracleOutput(data []byte) (OracleOutput, error) { - var ( - legacyOutput LegacyBandOutput - newOutput BandOutput - err error - ) - - if err = bandobi.Decode(data, &legacyOutput); err == nil { - return legacyOutput, nil - } - - if err = bandobi.Decode(data, &newOutput); err == nil { - return newOutput, nil - } - - return nil, fmt.Errorf("failed to decode oracle output: %w", err) -} - -// it is assumed that the id of a symbol -// within OracleInput exists within OracleOutput - -type OracleInput interface { - PriceSymbols() []string - PriceMultiplier() uint64 -} - -type ( - LegacyBandInput bandprice.Input - BandInput bandprice.SymbolInput -) - -func (in LegacyBandInput) PriceSymbols() []string { - return in.Symbols -} - -func (in LegacyBandInput) PriceMultiplier() uint64 { - return in.Multiplier -} - -func (in BandInput) PriceSymbols() []string { - return in.Symbols -} - -func (in BandInput) PriceMultiplier() uint64 { - return BandPriceMultiplier -} - -type OracleOutput interface { - Rate(id int) uint64 - Valid(id int) bool -} - -type ( - LegacyBandOutput bandprice.Output - BandOutput bandprice.SymbolOutput -) - -func (out LegacyBandOutput) Rate(id int) uint64 { - return out.Pxs[id] -} - -func (out LegacyBandOutput) Valid(id int) bool { - return true -} - -func (out BandOutput) Rate(id int) uint64 { - return out.Responses[id].Rate -} - -func (out BandOutput) Valid(id int) bool { - return out.Responses[id].ResponseCode == 0 -} diff --git a/chain/oracle/types/coinbase_oracle.go b/chain/oracle/types/coinbase_oracle.go deleted file mode 100644 index ab02126b..00000000 --- a/chain/oracle/types/coinbase_oracle.go +++ /dev/null @@ -1,101 +0,0 @@ -package types - -import ( - "bytes" - "strings" - - "cosmossdk.io/errors" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/crypto" -) - -const ( - CoinbaseOraclePublicKey = "0xfCEAdAFab14d46e20144F48824d0C09B1a03F2BC" - preamblePrefix = "\x19Ethereum Signed Message:\n32" -) - -const CoinbaseABIJSON = `[{ - "name": "coinbase", - "stateMutability": "pure", - "type": "function", - "inputs": [ - { "internalType": "string", "name": "kind", "type": "string" }, - { "internalType": "uint64", "name": "timestamp", "type": "uint64" }, - { "internalType": "string", "name": "key", "type": "string" }, - { "internalType": "uint64", "name": "value", "type": "uint64" } - ], - "outputs": [] -}]` - -func ValidateCoinbaseSignature(message, signature []byte) error { - hash := crypto.Keccak256Hash(message) - return ValidateEthereumSignature(hash, signature, common.HexToAddress(CoinbaseOraclePublicKey)) -} - -func ParseCoinbaseMessage(message []byte) (*CoinbasePriceState, error) { - contractAbi, abiErr := abi.JSON(strings.NewReader(CoinbaseABIJSON)) - if abiErr != nil { - panic("Bad ABI constant!") - } - - // computed from web3.sha3('coinbase(string,uint64,string,uint64)').substr(0,10) - coinbaseMethod := common.FromHex("0x96f180bf") - method, err := contractAbi.MethodById(coinbaseMethod) - if err != nil { - return nil, err - } - - values, err := method.Inputs.Unpack(message) - if err != nil { - return nil, err - } - - var priceState CoinbasePriceState - if err := method.Inputs.Copy(&priceState, values); err != nil { - return nil, err - } - - if priceState.Kind != "prices" || priceState.Timestamp == 0 || priceState.Key == "" || priceState.Value == 0 { - return nil, ErrBadCoinbaseMessage - } - - return &priceState, nil -} - -// ValidateEthereumSignature takes a message, an associated signature and public key and -// returns an error if the signature isn't valid -// TODO: refactor to shared common dir, copy pasted below code from Peggy -func ValidateEthereumSignature(hash common.Hash, signature []byte, ethAddress common.Address) error { - - // convert malformed coinbase sig in oracle response to 65-byte signature - trimmedSig := signature[:65] - trimmedSig[64] = signature[95] - - if len(trimmedSig) < 65 { - return errors.Wrap(ErrInvalidEthereumSignature, "signature too short") - } - - // calculate recover id - if trimmedSig[64] == 27 || signature[64] == 28 { - trimmedSig[64] -= 27 - } - - // manually build the hash with ethereum prefix - preamblePrefix := []byte(preamblePrefix) - preambleMessage := append(preamblePrefix, hash.Bytes()...) // nolint:gocritic - preambleHash := crypto.Keccak256Hash(preambleMessage) - - // verify signature - pubkey, err := crypto.SigToPub(preambleHash.Bytes(), trimmedSig) - if err != nil { - return errors.Wrap(err, "signature to public key") - } - addr := crypto.PubkeyToAddress(*pubkey) - - if !bytes.Equal(addr.Bytes(), ethAddress.Bytes()) { - return errors.Wrapf(ErrInvalidEthereumSignature, "signature not matching, expected %s but got %s", ethAddress.Hex(), addr.Hex()) - } - - return nil -} diff --git a/chain/oracle/types/events.go b/chain/oracle/types/events.go deleted file mode 100644 index 2789dc3c..00000000 --- a/chain/oracle/types/events.go +++ /dev/null @@ -1,6 +0,0 @@ -package types - -// Auction module event types -const ( - EventTypeNewBid = "new_bid" -) diff --git a/chain/oracle/types/expected_keepers.go b/chain/oracle/types/expected_keepers.go deleted file mode 100644 index dd6e7ed2..00000000 --- a/chain/oracle/types/expected_keepers.go +++ /dev/null @@ -1,46 +0,0 @@ -package types - -import ( - "context" - - sdk "github.com/cosmos/cosmos-sdk/types" - capabilitytypes "github.com/cosmos/ibc-go/modules/capability/types" - clienttypes "github.com/cosmos/ibc-go/v8/modules/core/02-client/types" - channeltypes "github.com/cosmos/ibc-go/v8/modules/core/04-channel/types" - - ocrtypes "github.com/InjectiveLabs/sdk-go/chain/ocr/types" -) - -// BankKeeper defines the expected bank keeper methods -type BankKeeper interface { - GetAllBalances(ctx context.Context, addr sdk.AccAddress) sdk.Coins - SendCoinsFromModuleToModule(ctx context.Context, senderModule, recipientModule string, amt sdk.Coins) error - SendCoinsFromModuleToAccount(ctx context.Context, senderModule string, recipientAddr sdk.AccAddress, amt sdk.Coins) error - SendCoinsFromAccountToModule(ctx context.Context, senderAddr sdk.AccAddress, recipientModule string, amt sdk.Coins) error - BurnCoins(ctx context.Context, moduleName string, amt sdk.Coins) error -} - -// ChannelKeeper defines the expected IBC channel keeper -type ChannelKeeper interface { - GetChannel(ctx sdk.Context, srcPort, srcChan string) (channel channeltypes.Channel, found bool) - GetNextSequenceSend(ctx sdk.Context, portID, channelID string) (uint64, bool) - SendPacket( - ctx sdk.Context, - chanCap *capabilitytypes.Capability, - sourcePort string, - sourceChannel string, - timeoutHeight clienttypes.Height, - timeoutTimestamp uint64, - data []byte, - ) (sequence uint64, err error) - ChanCloseInit(ctx sdk.Context, portID, channelID string, chanCap *capabilitytypes.Capability) error -} - -// PortKeeper defines the expected IBC port keeper -type PortKeeper interface { - BindPort(ctx sdk.Context, portID string) *capabilitytypes.Capability -} - -type OcrKeeper interface { - GetTransmission(ctx sdk.Context, feedId string) *ocrtypes.Transmission -} diff --git a/chain/oracle/types/genesis.go b/chain/oracle/types/genesis.go deleted file mode 100644 index 561d04e5..00000000 --- a/chain/oracle/types/genesis.go +++ /dev/null @@ -1,23 +0,0 @@ -package types - -// DefaultIndex is the default capability global index -const DefaultIndex uint64 = 1 - -func NewGenesisState() GenesisState { - return GenesisState{} -} - -func (gs GenesisState) Validate() error { - // TODO: validate stuff in genesis - if err := gs.Params.Validate(); err != nil { - return err - } - return nil -} - -func DefaultGenesisState() *GenesisState { - return &GenesisState{ - Params: DefaultParams(), - BandIbcParams: DefaultBandIBCParams(), - } -} diff --git a/chain/oracle/types/paramset.go b/chain/oracle/types/paramset.go deleted file mode 100644 index 80d0852b..00000000 --- a/chain/oracle/types/paramset.go +++ /dev/null @@ -1,26 +0,0 @@ -package types - -type ( - ValueValidatorFn func(value interface{}) error - - // ParamSetPair is used for associating paramsubspace key and field of param - // structs. - ParamSetPair struct { - Key []byte - Value interface{} - ValidatorFn ValueValidatorFn - } -) - -// NewParamSetPair creates a new ParamSetPair instance. -func NewParamSetPair(key []byte, value interface{}, vfn ValueValidatorFn) ParamSetPair { - return ParamSetPair{key, value, vfn} -} - -// ParamSetPairs Slice of KeyFieldPair -type ParamSetPairs []ParamSetPair - -// ParamSet defines an interface for structs containing parameters for a module -type ParamSet interface { - ParamSetPairs() ParamSetPairs -} diff --git a/chain/oracle/types/pyth.go b/chain/oracle/types/pyth.go deleted file mode 100644 index 4b986b39..00000000 --- a/chain/oracle/types/pyth.go +++ /dev/null @@ -1,75 +0,0 @@ -package types - -import ( - "cosmossdk.io/math" - "github.com/ethereum/go-ethereum/common" -) - -func NewPythPriceState( - priceID common.Hash, - emaPrice, emaConf, conf math.LegacyDec, - publishTime int64, - price math.LegacyDec, - blockTime int64, -) *PythPriceState { - return &PythPriceState{ - PriceId: priceID.Hex(), - EmaPrice: emaPrice, - EmaConf: emaConf, - Conf: conf, - PublishTime: uint64(publishTime), - PriceState: *NewPriceState(price, blockTime), - } -} - -func (p *PythPriceState) Update( - emaPrice, emaConf, conf math.LegacyDec, - publishTime uint64, - price math.LegacyDec, - blockTime int64, -) { - p.EmaPrice = emaPrice - p.EmaConf = emaConf - p.Conf = conf - p.PublishTime = publishTime - p.PriceState.UpdatePrice(price, blockTime) -} - -func (p *PriceAttestation) GetPriceID() string { - return p.PriceId -} - -func (p *PriceAttestation) GetPriceIDHash() common.Hash { - return common.HexToHash(p.PriceId) -} - -func (p *PriceAttestation) Validate() error { - if len(p.GetPriceIDHash().Bytes()) != 32 { - return ErrInvalidPythPriceID - } - - if !(p.Price > 0) { - return ErrBadPrice - } - - if p.Expo > MaxPythExponent || p.Expo < MinPythExponent { - return ErrInvalidPythExponent - } - - if !(p.PublishTime > 0) { - return ErrInvalidPythPublishTime - } - - // validating EMA price/conf is omitted since it's not mission critical and we don't want to block normal price updates - return nil -} - -func GetExponentiatedDec(value, expo int64) math.LegacyDec { - // price * 10^-expo - if expo <= 0 { - return math.LegacyNewDecWithPrec(value, -expo) - } - - // price * 10^expo - return math.LegacyNewDec(value).Power(uint64(expo)) -} diff --git a/chain/oracle/types/stork.go b/chain/oracle/types/stork.go deleted file mode 100644 index 343eb8e8..00000000 --- a/chain/oracle/types/stork.go +++ /dev/null @@ -1,29 +0,0 @@ -package types - -import ( - "cosmossdk.io/math" -) - -func NewStorkPriceState( - price math.LegacyDec, - timestamp uint64, - symbol string, - blockTime int64, -) *StorkPriceState { - return &StorkPriceState{ - Timestamp: timestamp, - Symbol: symbol, - Value: price, - PriceState: *NewPriceState(price, blockTime), - } -} - -func (s *StorkPriceState) Update(price math.LegacyDec, timestamp uint64, blockTime int64) { - s.Value = price - s.Timestamp = timestamp - s.PriceState.UpdatePrice(price, blockTime) -} - -func ScaleStorkPrice(price math.LegacyDec) math.LegacyDec { - return price.QuoTruncate(EighteenDecimals) -} diff --git a/chain/peggy/types/batch.go b/chain/peggy/types/batch.go deleted file mode 100644 index dc1d77da..00000000 --- a/chain/peggy/types/batch.go +++ /dev/null @@ -1,67 +0,0 @@ -package types - -import ( - "fmt" - "math/big" - "strings" - - accountsabi "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/crypto" -) - -// GetCheckpoint gets the checkpoint signature from the given outgoing tx batch -func (b OutgoingTxBatch) GetCheckpoint(peggyIDstring string) common.Hash { - - abi, err := accountsabi.JSON(strings.NewReader(OutgoingBatchTxCheckpointABIJSON)) - if err != nil { - panic("Bad ABI constant!") - } - - // the contract argument is not a arbitrary length array but a fixed length 32 byte - // array, therefore we have to utf8 encode the string (the default in this case) and - // then copy the variable length encoded data into a fixed length array. This function - // will panic if peggyId is too long to fit in 32 bytes - peggyID, err := strToFixByteArray(peggyIDstring) - if err != nil { - panic(err) - } - - // Create the methodName argument which salts the signature - methodNameBytes := []uint8("transactionBatch") - var batchMethodName [32]uint8 - copy(batchMethodName[:], methodNameBytes) - - // Run through the elements of the batch and serialize them - txAmounts := make([]*big.Int, len(b.Transactions)) - txDestinations := make([]common.Address, len(b.Transactions)) - txFees := make([]*big.Int, len(b.Transactions)) - for i, tx := range b.Transactions { - txAmounts[i] = tx.Erc20Token.Amount.BigInt() - txDestinations[i] = common.HexToAddress(tx.DestAddress) - txFees[i] = tx.Erc20Fee.Amount.BigInt() - } - - // the methodName needs to be the same as the 'name' above in the checkpointAbiJson - // but other than that it's a constant that has no impact on the output. This is because - // it gets encoded as a function name which we must then discard. - abiEncodedBatch, err := abi.Pack("submitBatch", - peggyID, - batchMethodName, - txAmounts, - txDestinations, - txFees, - big.NewInt(int64(b.BatchNonce)), - common.HexToAddress(b.TokenContract), - big.NewInt(int64(b.BatchTimeout)), - ) - - // this should never happen outside of test since any case that could crash on encoding - // should be filtered above. - if err != nil { - panic(fmt.Sprintf("Error packing checkpoint! %s/n", err)) - } - - hash := crypto.Keccak256Hash(abiEncodedBatch[4:]) - return hash -} diff --git a/chain/peggy/types/events.go b/chain/peggy/types/events.go deleted file mode 100644 index 413735c0..00000000 --- a/chain/peggy/types/events.go +++ /dev/null @@ -1,28 +0,0 @@ -package types - -const ( - EventTypeObservation = "observation" - EventTypeOutgoingBatch = "outgoing_batch" - - EventTypeMultisigUpdateRequest = "multisig_update_request" - EventTypeOutgoingBatchCanceled = "outgoing_batch_canceled" - EventTypeBridgeWithdrawalReceived = "withdrawal_received" - EventTypeBridgeDepositReceived = "deposit_received" - EventTypeBridgeWithdrawCanceled = "withdraw_canceled" - - AttributeKeyAttestationID = "attestation_id" - AttributeKeyBatchConfirmKey = "batch_confirm_key" - AttributeKeyValsetConfirmKey = "valset_confirm_key" - AttributeKeyMultisigID = "multisig_id" - AttributeKeyOutgoingBatchID = "batch_id" - AttributeKeyOutgoingTXID = "outgoing_tx_id" - AttributeKeyAttestationType = "attestation_type" - AttributeKeyContract = "bridge_contract" - AttributeKeyNonce = "nonce" - AttributeKeyValsetNonce = "valset_nonce" - AttributeKeyBatchNonce = "batch_nonce" - AttributeKeyBridgeChainID = "bridge_chain_id" - AttributeKeySetOperatorAddr = "set_operator_address" - AttributeKeyBadEthSignature = "bad_eth_signature" - AttributeKeyBadEthSignatureSubject = "bad_eth_signature_subject" -) diff --git a/chain/peggy/types/expected_keepers.go b/chain/peggy/types/expected_keepers.go deleted file mode 100644 index a76278f5..00000000 --- a/chain/peggy/types/expected_keepers.go +++ /dev/null @@ -1,54 +0,0 @@ -package types - -import ( - "context" - "time" - - "cosmossdk.io/math" - storetypes "cosmossdk.io/store/types" - sdk "github.com/cosmos/cosmos-sdk/types" - bank "github.com/cosmos/cosmos-sdk/x/bank/types" - "github.com/cosmos/cosmos-sdk/x/distribution/types" - slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types" - stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" -) - -// StakingKeeper defines the expected staking keeper methods -type StakingKeeper interface { - GetBondedValidatorsByPower(ctx context.Context) ([]stakingtypes.Validator, error) - GetLastValidatorPower(ctx context.Context, operator sdk.ValAddress) (int64, error) - GetLastTotalPower(ctx context.Context) (power math.Int, err error) - IterateValidators(context.Context, func(index int64, validator stakingtypes.ValidatorI) (stop bool)) error - ValidatorQueueIterator(ctx context.Context, endTime time.Time, endHeight int64) (storetypes.Iterator, error) - GetParams(ctx context.Context) (stakingtypes.Params, error) - GetValidator(ctx context.Context, addr sdk.ValAddress) (validator stakingtypes.Validator, err error) - IterateBondedValidatorsByPower(context.Context, func(index int64, validator stakingtypes.ValidatorI) (stop bool)) error - IterateLastValidators(context.Context, func(index int64, validator stakingtypes.ValidatorI) (stop bool)) error - Validator(context.Context, sdk.ValAddress) (stakingtypes.ValidatorI, error) - ValidatorByConsAddr(context.Context, sdk.ConsAddress) (stakingtypes.ValidatorI, error) - Slash(context.Context, sdk.ConsAddress, int64, int64, math.LegacyDec) (math.Int, error) - Jail(context.Context, sdk.ConsAddress) error - PowerReduction(ctx context.Context) (res math.Int) -} - -// BankKeeper defines the expected bank keeper methods -type BankKeeper interface { - SendCoinsFromModuleToModule(ctx context.Context, senderModule, recipientModule string, amt sdk.Coins) error - SendCoinsFromModuleToAccount(ctx context.Context, senderModule string, recipientAddr sdk.AccAddress, amt sdk.Coins) error - SendCoinsFromAccountToModule(ctx context.Context, senderAddr sdk.AccAddress, recipientModule string, amt sdk.Coins) error - MintCoins(ctx context.Context, name string, amt sdk.Coins) error - BurnCoins(ctx context.Context, name string, amt sdk.Coins) error - GetAllBalances(ctx context.Context, addr sdk.AccAddress) sdk.Coins - GetDenomMetaData(ctx context.Context, denom string) (bank.Metadata, bool) - GetSupply(ctx context.Context, denom string) sdk.Coin -} - -type SlashingKeeper interface { - GetValidatorSigningInfo(ctx context.Context, address sdk.ConsAddress) (info slashingtypes.ValidatorSigningInfo, err error) -} - -type DistributionKeeper interface { - FundCommunityPool(ctx context.Context, amount sdk.Coins, sender sdk.AccAddress) error - GetFeePool(ctx context.Context) (feePool types.FeePool) - SetFeePool(ctx context.Context, feePool types.FeePool) -} diff --git a/chain/peggy/types/genesis.go b/chain/peggy/types/genesis.go deleted file mode 100644 index 46fd33ed..00000000 --- a/chain/peggy/types/genesis.go +++ /dev/null @@ -1,19 +0,0 @@ -package types - -import "cosmossdk.io/errors" - -// ValidateBasic validates genesis state by looping through the params and -// calling their validation functions -func (s GenesisState) ValidateBasic() error { - if err := s.Params.ValidateBasic(); err != nil { - return errors.Wrap(err, "params") - } - return nil -} - -// DefaultGenesisState returns empty genesis state -func DefaultGenesisState() *GenesisState { - return &GenesisState{ - Params: DefaultParams(), - } -} diff --git a/chain/peggy/types/params_legacy.go b/chain/peggy/types/params_legacy.go deleted file mode 100644 index f64a9856..00000000 --- a/chain/peggy/types/params_legacy.go +++ /dev/null @@ -1,108 +0,0 @@ -package types - -import paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" - -var ( - // ParamsStoreKeyPeggyID stores the peggy id - ParamsStoreKeyPeggyID = []byte("PeggyID") - - // ParamsStoreKeyContractHash stores the contract hash - ParamsStoreKeyContractHash = []byte("ContractHash") - - // ParamsStoreKeyBridgeContractAddress stores the contract address - ParamsStoreKeyBridgeContractAddress = []byte("BridgeContractAddress") - - // ParamsStoreKeyBridgeContractStartHeight stores the bridge contract deployed height - ParamsStoreKeyBridgeContractStartHeight = []byte("BridgeContractChainHeight") - - // ParamsStoreKeyBridgeContractChainID stores the bridge chain id - ParamsStoreKeyBridgeContractChainID = []byte("BridgeChainID") - - // ParamsStoreKeyCosmosCoinDenom stores native cosmos coin denom - ParamsStoreKeyCosmosCoinDenom = []byte("CosmosCoinDenom") - - // ParamsStoreKeyCosmosCoinErc20Contract store L1 erc20 contract address of cosmos native coin - ParamsStoreKeyCosmosCoinErc20Contract = []byte("CosmosCoinErc20Contract") - - // ParamsStoreKeySignedValsetsWindow stores the signed blocks window - ParamsStoreKeySignedValsetsWindow = []byte("SignedValsetsWindow") - - // ParamsStoreKeySignedBatchesWindow stores the signed blocks window - ParamsStoreKeySignedBatchesWindow = []byte("SignedBatchesWindow") - - // ParamsStoreKeySignedClaimsWindow stores the signed blocks window - ParamsStoreKeySignedClaimsWindow = []byte("SignedClaimsWindow") - - // ParamsStoreKeyTargetBatchTimeout stores - ParamsStoreKeyTargetBatchTimeout = []byte("TargetBatchTimeout") - - // ParamsStoreKeyAverageBlockTime stores the average block time of the Injective Chain in milliseconds - ParamsStoreKeyAverageBlockTime = []byte("AverageBlockTime") - - // ParamsStoreKeyAverageEthereumBlockTime stores the average block time of Ethereum in milliseconds - ParamsStoreKeyAverageEthereumBlockTime = []byte("AverageEthereumBlockTime") - - // ParamsStoreSlashFractionValset stores the slash fraction valset - ParamsStoreSlashFractionValset = []byte("SlashFractionValset") - - // ParamsStoreSlashFractionBatch stores the slash fraction Batch - ParamsStoreSlashFractionBatch = []byte("SlashFractionBatch") - - // ParamsStoreSlashFractionClaim stores the slash fraction Claim - ParamsStoreSlashFractionClaim = []byte("SlashFractionClaim") - - // ParamsStoreSlashFractionConflictingClaim stores the slash fraction ConflictingClaim - ParamsStoreSlashFractionConflictingClaim = []byte("SlashFractionConflictingClaim") - - // ParamStoreUnbondSlashingValsetsWindow stores unbond slashing valset window - ParamStoreUnbondSlashingValsetsWindow = []byte("UnbondSlashingValsetsWindow") - - // ParamStoreClaimSlashingEnabled stores ClaimSlashing is enabled or not - ParamStoreClaimSlashingEnabled = []byte("ClaimSlashingEnabled") - - // ParamStoreSlashFractionBadEthSignature stores the amount by which a validator making a fraudulent eth signature will be slashed - ParamStoreSlashFractionBadEthSignature = []byte("SlashFractionBadEthSignature") - - // ParamStoreValsetRewardAmount is the amount of the coin, both denom and amount to issue - // to a relayer when they relay a valset - ParamStoreValsetRewardAmount = []byte("ValsetReward") - - ParamStoreAdmins = []byte("Admins") - - // Ensure that params implements the proper interface - _ paramtypes.ParamSet = &Params{} -) - -// ParamKeyTable for auth module -func ParamKeyTable() paramtypes.KeyTable { - return paramtypes.NewKeyTable().RegisterParamSet(&Params{}) -} - -// ParamSetPairs implements the ParamSet interface and returns all the key/value pairs -// pairs of auth module's parameters. -func (p *Params) ParamSetPairs() paramtypes.ParamSetPairs { - return paramtypes.ParamSetPairs{ - paramtypes.NewParamSetPair(ParamsStoreKeyPeggyID, &p.PeggyId, validatePeggyID), - paramtypes.NewParamSetPair(ParamsStoreKeyContractHash, &p.ContractSourceHash, validateContractHash), - paramtypes.NewParamSetPair(ParamsStoreKeyBridgeContractAddress, &p.BridgeEthereumAddress, validateBridgeContractAddress), - paramtypes.NewParamSetPair(ParamsStoreKeyBridgeContractChainID, &p.BridgeChainId, validateBridgeChainID), - paramtypes.NewParamSetPair(ParamsStoreKeyCosmosCoinDenom, &p.CosmosCoinDenom, validateCosmosCoinDenom), - paramtypes.NewParamSetPair(ParamsStoreKeyCosmosCoinErc20Contract, &p.CosmosCoinErc20Contract, validateCosmosCoinErc20Contract), - paramtypes.NewParamSetPair(ParamsStoreKeySignedValsetsWindow, &p.SignedValsetsWindow, validateSignedValsetsWindow), - paramtypes.NewParamSetPair(ParamsStoreKeySignedBatchesWindow, &p.SignedBatchesWindow, validateSignedBatchesWindow), - paramtypes.NewParamSetPair(ParamsStoreKeySignedClaimsWindow, &p.SignedClaimsWindow, validateSignedClaimsWindow), - paramtypes.NewParamSetPair(ParamsStoreKeyAverageBlockTime, &p.AverageBlockTime, validateAverageBlockTime), - paramtypes.NewParamSetPair(ParamsStoreKeyTargetBatchTimeout, &p.TargetBatchTimeout, validateTargetBatchTimeout), - paramtypes.NewParamSetPair(ParamsStoreKeyAverageEthereumBlockTime, &p.AverageEthereumBlockTime, validateAverageEthereumBlockTime), - paramtypes.NewParamSetPair(ParamsStoreSlashFractionValset, &p.SlashFractionValset, validateSlashFractionValset), - paramtypes.NewParamSetPair(ParamsStoreSlashFractionBatch, &p.SlashFractionBatch, validateSlashFractionBatch), - paramtypes.NewParamSetPair(ParamsStoreSlashFractionClaim, &p.SlashFractionClaim, validateSlashFractionClaim), - paramtypes.NewParamSetPair(ParamsStoreSlashFractionConflictingClaim, &p.SlashFractionConflictingClaim, validateSlashFractionConflictingClaim), - paramtypes.NewParamSetPair(ParamStoreSlashFractionBadEthSignature, &p.SlashFractionBadEthSignature, validateSlashFractionBadEthSignature), - paramtypes.NewParamSetPair(ParamStoreUnbondSlashingValsetsWindow, &p.UnbondSlashingValsetsWindow, validateUnbondSlashingValsetsWindow), - paramtypes.NewParamSetPair(ParamStoreClaimSlashingEnabled, &p.ClaimSlashingEnabled, validateClaimSlashingEnabled), - paramtypes.NewParamSetPair(ParamsStoreKeyBridgeContractStartHeight, &p.BridgeContractStartHeight, validateBridgeContractStartHeight), - paramtypes.NewParamSetPair(ParamStoreValsetRewardAmount, &p.ValsetReward, validateValsetReward), - paramtypes.NewParamSetPair(ParamStoreAdmins, &p.Admins, validateAdmins), - } -} diff --git a/chain/peggy/types/proposal.go b/chain/peggy/types/proposal.go deleted file mode 100644 index 5d55dfbe..00000000 --- a/chain/peggy/types/proposal.go +++ /dev/null @@ -1,76 +0,0 @@ -package types - -import ( - govtypes "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" -) - -// constants -const ( - ProposalTypeBlacklistEthereumAddresses string = "ProposalTypeBlacklistEthereumAddresses" - ProposalTypeRevokeEthereumBlacklist string = "ProposalTypeRevokeEthereumBlacklist" -) - -func init() { - govtypes.RegisterProposalType(ProposalTypeBlacklistEthereumAddresses) - govtypes.RegisterProposalType(ProposalTypeRevokeEthereumBlacklist) -} - -// Implements Proposal Interface -var _ govtypes.Content = &BlacklistEthereumAddressesProposal{} -var _ govtypes.Content = &RevokeEthereumBlacklistProposal{} - -// GetTitle returns the title of this proposal. -func (p *BlacklistEthereumAddressesProposal) GetTitle() string { - return p.Title -} - -// GetDescription returns the description of this proposal. -func (p *BlacklistEthereumAddressesProposal) GetDescription() string { - return p.Description -} - -// ProposalRoute returns router key of this proposal. -func (p *BlacklistEthereumAddressesProposal) ProposalRoute() string { return RouterKey } - -// ProposalType returns proposal type of this proposal. -func (p *BlacklistEthereumAddressesProposal) ProposalType() string { - return ProposalTypeBlacklistEthereumAddresses -} - -// ValidateBasic returns ValidateBasic result of this proposal. -func (p *BlacklistEthereumAddressesProposal) ValidateBasic() error { - for _, blacklistAddress := range p.BlacklistAddresses { - if _, err := NewEthAddress(blacklistAddress); err != nil { - return err - } - } - return govtypes.ValidateAbstract(p) -} - -// GetTitle returns the title of this proposal. -func (p *RevokeEthereumBlacklistProposal) GetTitle() string { - return p.Title -} - -// GetDescription returns the description of this proposal. -func (p *RevokeEthereumBlacklistProposal) GetDescription() string { - return p.Description -} - -// ProposalRoute returns router key of this proposal. -func (p *RevokeEthereumBlacklistProposal) ProposalRoute() string { return RouterKey } - -// ProposalType returns proposal type of this proposal. -func (p *RevokeEthereumBlacklistProposal) ProposalType() string { - return ProposalTypeRevokeEthereumBlacklist -} - -// ValidateBasic returns ValidateBasic result of this proposal. -func (p *RevokeEthereumBlacklistProposal) ValidateBasic() error { - for _, blacklistAddress := range p.BlacklistAddresses { - if _, err := NewEthAddress(blacklistAddress); err != nil { - return err - } - } - return govtypes.ValidateAbstract(p) -} diff --git a/chain/peggy/types/proposal.pb.go b/chain/peggy/types/proposal.pb.go deleted file mode 100644 index dd9ece2a..00000000 --- a/chain/peggy/types/proposal.pb.go +++ /dev/null @@ -1,667 +0,0 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: injective/peggy/v1/proposal.proto - -package types - -import ( - fmt "fmt" - _ "github.com/cosmos/cosmos-proto" - _ "github.com/cosmos/gogoproto/gogoproto" - proto "github.com/cosmos/gogoproto/proto" - io "io" - math "math" - math_bits "math/bits" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package - -type BlacklistEthereumAddressesProposal struct { - Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"` - Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` - BlacklistAddresses []string `protobuf:"bytes,3,rep,name=blacklist_addresses,json=blacklistAddresses,proto3" json:"blacklist_addresses,omitempty"` -} - -func (m *BlacklistEthereumAddressesProposal) Reset() { *m = BlacklistEthereumAddressesProposal{} } -func (m *BlacklistEthereumAddressesProposal) String() string { return proto.CompactTextString(m) } -func (*BlacklistEthereumAddressesProposal) ProtoMessage() {} -func (*BlacklistEthereumAddressesProposal) Descriptor() ([]byte, []int) { - return fileDescriptor_e5b158ea063afb2f, []int{0} -} -func (m *BlacklistEthereumAddressesProposal) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *BlacklistEthereumAddressesProposal) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_BlacklistEthereumAddressesProposal.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *BlacklistEthereumAddressesProposal) XXX_Merge(src proto.Message) { - xxx_messageInfo_BlacklistEthereumAddressesProposal.Merge(m, src) -} -func (m *BlacklistEthereumAddressesProposal) XXX_Size() int { - return m.Size() -} -func (m *BlacklistEthereumAddressesProposal) XXX_DiscardUnknown() { - xxx_messageInfo_BlacklistEthereumAddressesProposal.DiscardUnknown(m) -} - -var xxx_messageInfo_BlacklistEthereumAddressesProposal proto.InternalMessageInfo - -type RevokeEthereumBlacklistProposal struct { - Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"` - Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` - BlacklistAddresses []string `protobuf:"bytes,3,rep,name=blacklist_addresses,json=blacklistAddresses,proto3" json:"blacklist_addresses,omitempty"` -} - -func (m *RevokeEthereumBlacklistProposal) Reset() { *m = RevokeEthereumBlacklistProposal{} } -func (m *RevokeEthereumBlacklistProposal) String() string { return proto.CompactTextString(m) } -func (*RevokeEthereumBlacklistProposal) ProtoMessage() {} -func (*RevokeEthereumBlacklistProposal) Descriptor() ([]byte, []int) { - return fileDescriptor_e5b158ea063afb2f, []int{1} -} -func (m *RevokeEthereumBlacklistProposal) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *RevokeEthereumBlacklistProposal) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_RevokeEthereumBlacklistProposal.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *RevokeEthereumBlacklistProposal) XXX_Merge(src proto.Message) { - xxx_messageInfo_RevokeEthereumBlacklistProposal.Merge(m, src) -} -func (m *RevokeEthereumBlacklistProposal) XXX_Size() int { - return m.Size() -} -func (m *RevokeEthereumBlacklistProposal) XXX_DiscardUnknown() { - xxx_messageInfo_RevokeEthereumBlacklistProposal.DiscardUnknown(m) -} - -var xxx_messageInfo_RevokeEthereumBlacklistProposal proto.InternalMessageInfo - -func init() { - proto.RegisterType((*BlacklistEthereumAddressesProposal)(nil), "injective.peggy.v1.BlacklistEthereumAddressesProposal") - proto.RegisterType((*RevokeEthereumBlacklistProposal)(nil), "injective.peggy.v1.RevokeEthereumBlacklistProposal") -} - -func init() { proto.RegisterFile("injective/peggy/v1/proposal.proto", fileDescriptor_e5b158ea063afb2f) } - -var fileDescriptor_e5b158ea063afb2f = []byte{ - // 323 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x52, 0x3b, 0x4e, 0xc3, 0x40, - 0x10, 0xf5, 0x12, 0x81, 0x14, 0xd3, 0x99, 0x14, 0x21, 0x85, 0x13, 0x52, 0xa0, 0x34, 0xf1, 0xca, - 0xa2, 0xa3, 0x23, 0x88, 0x02, 0x41, 0x81, 0x52, 0xd2, 0x44, 0xfe, 0x8c, 0x9c, 0x25, 0xb6, 0x67, - 0xb5, 0x3b, 0x59, 0x29, 0x37, 0xa0, 0xe4, 0x08, 0x39, 0x03, 0x82, 0x3b, 0x20, 0xaa, 0x94, 0x94, - 0x28, 0x69, 0x38, 0x06, 0xc2, 0x3f, 0xe5, 0x08, 0x74, 0xfb, 0xde, 0x3c, 0xcd, 0x7b, 0xab, 0x37, - 0xf6, 0x99, 0xc8, 0x9f, 0x20, 0x22, 0x61, 0x80, 0x4b, 0x48, 0x92, 0x15, 0x37, 0x3e, 0x97, 0x0a, - 0x25, 0xea, 0x20, 0xf5, 0xa4, 0x42, 0x42, 0xc7, 0x69, 0x24, 0x5e, 0x21, 0xf1, 0x8c, 0xdf, 0x3b, - 0x8d, 0x50, 0x67, 0xa8, 0x67, 0x85, 0x82, 0x97, 0xa0, 0x94, 0xf7, 0x3a, 0x09, 0x26, 0x58, 0xf2, - 0x7f, 0xaf, 0x92, 0x1d, 0xbe, 0x33, 0x7b, 0x38, 0x49, 0x83, 0x68, 0x91, 0x0a, 0x4d, 0x37, 0x34, - 0x07, 0x05, 0xcb, 0xec, 0x2a, 0x8e, 0x15, 0x68, 0x0d, 0xfa, 0xa1, 0x72, 0x74, 0x3a, 0xf6, 0x21, - 0x09, 0x4a, 0xa1, 0xcb, 0x06, 0x6c, 0xd4, 0x9e, 0x96, 0xc0, 0x19, 0xd8, 0xc7, 0x31, 0xe8, 0x48, - 0x09, 0x49, 0x02, 0xf3, 0xee, 0x41, 0x31, 0xdb, 0xa7, 0x1c, 0x6e, 0x9f, 0x84, 0xf5, 0xf6, 0x59, - 0x50, 0xaf, 0xed, 0xb6, 0x06, 0xad, 0x51, 0x7b, 0xea, 0x34, 0xa3, 0xc6, 0xf0, 0xf2, 0xfc, 0x79, - 0xdd, 0xb7, 0x7e, 0xd6, 0x7d, 0xeb, 0xf3, 0x6d, 0xdc, 0xab, 0xf2, 0x27, 0x68, 0x3c, 0xe3, 0x87, - 0x40, 0x81, 0xef, 0x5d, 0x63, 0x4e, 0x90, 0xd3, 0xf0, 0x95, 0xd9, 0xfd, 0x29, 0x18, 0x5c, 0x40, - 0x1d, 0xba, 0xf9, 0xc5, 0xbf, 0x0d, 0x3d, 0x81, 0x8f, 0xad, 0xcb, 0x36, 0x5b, 0x97, 0x7d, 0x6f, - 0x5d, 0xf6, 0xb2, 0x73, 0xad, 0xcd, 0xce, 0xb5, 0xbe, 0x76, 0xae, 0xf5, 0x78, 0x97, 0x08, 0x9a, - 0x2f, 0x43, 0x2f, 0xc2, 0x8c, 0xdf, 0xd6, 0xb5, 0xde, 0x07, 0xa1, 0xe6, 0x4d, 0xc9, 0xe3, 0x08, - 0x15, 0xec, 0xc3, 0x79, 0x20, 0x72, 0x9e, 0x61, 0xbc, 0x4c, 0x41, 0x57, 0x47, 0x42, 0x2b, 0x09, - 0x3a, 0x3c, 0x2a, 0xaa, 0xbd, 0xf8, 0x0d, 0x00, 0x00, 0xff, 0xff, 0xe1, 0x03, 0x58, 0x94, 0x44, - 0x02, 0x00, 0x00, -} - -func (m *BlacklistEthereumAddressesProposal) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *BlacklistEthereumAddressesProposal) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *BlacklistEthereumAddressesProposal) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.BlacklistAddresses) > 0 { - for iNdEx := len(m.BlacklistAddresses) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.BlacklistAddresses[iNdEx]) - copy(dAtA[i:], m.BlacklistAddresses[iNdEx]) - i = encodeVarintProposal(dAtA, i, uint64(len(m.BlacklistAddresses[iNdEx]))) - i-- - dAtA[i] = 0x1a - } - } - if len(m.Description) > 0 { - i -= len(m.Description) - copy(dAtA[i:], m.Description) - i = encodeVarintProposal(dAtA, i, uint64(len(m.Description))) - i-- - dAtA[i] = 0x12 - } - if len(m.Title) > 0 { - i -= len(m.Title) - copy(dAtA[i:], m.Title) - i = encodeVarintProposal(dAtA, i, uint64(len(m.Title))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *RevokeEthereumBlacklistProposal) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *RevokeEthereumBlacklistProposal) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *RevokeEthereumBlacklistProposal) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.BlacklistAddresses) > 0 { - for iNdEx := len(m.BlacklistAddresses) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.BlacklistAddresses[iNdEx]) - copy(dAtA[i:], m.BlacklistAddresses[iNdEx]) - i = encodeVarintProposal(dAtA, i, uint64(len(m.BlacklistAddresses[iNdEx]))) - i-- - dAtA[i] = 0x1a - } - } - if len(m.Description) > 0 { - i -= len(m.Description) - copy(dAtA[i:], m.Description) - i = encodeVarintProposal(dAtA, i, uint64(len(m.Description))) - i-- - dAtA[i] = 0x12 - } - if len(m.Title) > 0 { - i -= len(m.Title) - copy(dAtA[i:], m.Title) - i = encodeVarintProposal(dAtA, i, uint64(len(m.Title))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func encodeVarintProposal(dAtA []byte, offset int, v uint64) int { - offset -= sovProposal(v) - base := offset - for v >= 1<<7 { - dAtA[offset] = uint8(v&0x7f | 0x80) - v >>= 7 - offset++ - } - dAtA[offset] = uint8(v) - return base -} -func (m *BlacklistEthereumAddressesProposal) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Title) - if l > 0 { - n += 1 + l + sovProposal(uint64(l)) - } - l = len(m.Description) - if l > 0 { - n += 1 + l + sovProposal(uint64(l)) - } - if len(m.BlacklistAddresses) > 0 { - for _, s := range m.BlacklistAddresses { - l = len(s) - n += 1 + l + sovProposal(uint64(l)) - } - } - return n -} - -func (m *RevokeEthereumBlacklistProposal) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Title) - if l > 0 { - n += 1 + l + sovProposal(uint64(l)) - } - l = len(m.Description) - if l > 0 { - n += 1 + l + sovProposal(uint64(l)) - } - if len(m.BlacklistAddresses) > 0 { - for _, s := range m.BlacklistAddresses { - l = len(s) - n += 1 + l + sovProposal(uint64(l)) - } - } - return n -} - -func sovProposal(x uint64) (n int) { - return (math_bits.Len64(x|1) + 6) / 7 -} -func sozProposal(x uint64) (n int) { - return sovProposal(uint64((x << 1) ^ uint64((int64(x) >> 63)))) -} -func (m *BlacklistEthereumAddressesProposal) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowProposal - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: BlacklistEthereumAddressesProposal: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: BlacklistEthereumAddressesProposal: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Title", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowProposal - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthProposal - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthProposal - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Title = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Description", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowProposal - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthProposal - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthProposal - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Description = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field BlacklistAddresses", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowProposal - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthProposal - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthProposal - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.BlacklistAddresses = append(m.BlacklistAddresses, string(dAtA[iNdEx:postIndex])) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipProposal(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthProposal - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *RevokeEthereumBlacklistProposal) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowProposal - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: RevokeEthereumBlacklistProposal: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: RevokeEthereumBlacklistProposal: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Title", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowProposal - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthProposal - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthProposal - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Title = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Description", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowProposal - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthProposal - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthProposal - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Description = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field BlacklistAddresses", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowProposal - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthProposal - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthProposal - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.BlacklistAddresses = append(m.BlacklistAddresses, string(dAtA[iNdEx:postIndex])) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipProposal(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthProposal - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func skipProposal(dAtA []byte) (n int, err error) { - l := len(dAtA) - iNdEx := 0 - depth := 0 - for iNdEx < l { - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowProposal - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - wireType := int(wire & 0x7) - switch wireType { - case 0: - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowProposal - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - iNdEx++ - if dAtA[iNdEx-1] < 0x80 { - break - } - } - case 1: - iNdEx += 8 - case 2: - var length int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowProposal - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - length |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if length < 0 { - return 0, ErrInvalidLengthProposal - } - iNdEx += length - case 3: - depth++ - case 4: - if depth == 0 { - return 0, ErrUnexpectedEndOfGroupProposal - } - depth-- - case 5: - iNdEx += 4 - default: - return 0, fmt.Errorf("proto: illegal wireType %d", wireType) - } - if iNdEx < 0 { - return 0, ErrInvalidLengthProposal - } - if depth == 0 { - return iNdEx, nil - } - } - return 0, io.ErrUnexpectedEOF -} - -var ( - ErrInvalidLengthProposal = fmt.Errorf("proto: negative length found during unmarshaling") - ErrIntOverflowProposal = fmt.Errorf("proto: integer overflow") - ErrUnexpectedEndOfGroupProposal = fmt.Errorf("proto: unexpected end of group") -) diff --git a/chain/permissions/types/codec.go b/chain/permissions/types/codec.go index a5cc7fea..099707ec 100644 --- a/chain/permissions/types/codec.go +++ b/chain/permissions/types/codec.go @@ -14,10 +14,7 @@ const ModuleName = "permissions" func RegisterCodec(cdc *codec.LegacyAmino) { cdc.RegisterConcrete(&MsgUpdateParams{}, "permissions/MsgUpdateParams", nil) cdc.RegisterConcrete(&MsgCreateNamespace{}, "permissions/MsgCreateNamespace", nil) - cdc.RegisterConcrete(&MsgDeleteNamespace{}, "permissions/MsgDeleteNamespace", nil) cdc.RegisterConcrete(&MsgUpdateNamespace{}, "permissions/MsgUpdateNamespace", nil) - cdc.RegisterConcrete(&MsgUpdateNamespaceRoles{}, "permissions/MsgUpdateNamespaceRoles", nil) - cdc.RegisterConcrete(&MsgRevokeNamespaceRoles{}, "permissions/MsgRevokeNamespaceRoles", nil) cdc.RegisterConcrete(&MsgClaimVoucher{}, "permissions/MsgClaimVoucher", nil) } @@ -25,10 +22,7 @@ func RegisterInterfaces(registry cdctypes.InterfaceRegistry) { registry.RegisterImplementations((*sdk.Msg)(nil), &MsgUpdateParams{}, &MsgCreateNamespace{}, - &MsgDeleteNamespace{}, &MsgUpdateNamespace{}, - &MsgUpdateNamespaceRoles{}, - &MsgRevokeNamespaceRoles{}, &MsgClaimVoucher{}, ) diff --git a/chain/permissions/types/errors.go b/chain/permissions/types/errors.go deleted file mode 100644 index f104edaf..00000000 --- a/chain/permissions/types/errors.go +++ /dev/null @@ -1,24 +0,0 @@ -package types - -// DONTCOVER - -import ( - "cosmossdk.io/errors" -) - -// x/tokenfactory module sentinel errors -var ( - ErrDenomNamespaceExists = errors.Register(ModuleName, 2, "attempting to create a namespace for denom that already exists") - ErrUnauthorized = errors.Register(ModuleName, 3, "unauthorized account") - ErrInvalidGenesis = errors.Register(ModuleName, 4, "invalid genesis") - ErrInvalidNamespace = errors.Register(ModuleName, 5, "invalid namespace") - ErrInvalidPermission = errors.Register(ModuleName, 6, "invalid permissions") - ErrUnknownRole = errors.Register(ModuleName, 7, "unknown role") - ErrUnknownWasmHook = errors.Register(ModuleName, 8, "unknown contract address") - ErrRestrictedAction = errors.Register(ModuleName, 9, "restricted action") - ErrInvalidRole = errors.Register(ModuleName, 10, "invalid role") - ErrUnknownDenom = errors.Register(ModuleName, 11, "namespace for denom is not existing") - ErrWasmHookError = errors.Register(ModuleName, 12, "wasm hook query error") - ErrVoucherNotFound = errors.Register(ModuleName, 13, "voucher was not found") - ErrInvalidWasmHook = errors.Register(ModuleName, 14, "invalid wasm hook") -) diff --git a/chain/permissions/types/expected_keepers.go b/chain/permissions/types/expected_keepers.go deleted file mode 100644 index 3fdbb230..00000000 --- a/chain/permissions/types/expected_keepers.go +++ /dev/null @@ -1,26 +0,0 @@ -package types - -import ( - "context" - - sdk "github.com/cosmos/cosmos-sdk/types" - banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" - - tftypes "github.com/InjectiveLabs/sdk-go/chain/tokenfactory/types" -) - -type BankKeeper interface { - AppendSendRestriction(restriction banktypes.SendRestrictionFn) - PrependSendRestriction(restriction banktypes.SendRestrictionFn) - ClearSendRestriction() - SendCoinsFromModuleToAccount(ctx context.Context, senderModule string, recipientAddr sdk.AccAddress, amt sdk.Coins) error -} - -type TokenFactoryKeeper interface { - GetAuthorityMetadata(ctx sdk.Context, denom string) (tftypes.DenomAuthorityMetadata, error) -} - -type WasmKeeper interface { - HasContractInfo(ctx context.Context, contractAddress sdk.AccAddress) bool - QuerySmart(ctx context.Context, contractAddr sdk.AccAddress, req []byte) ([]byte, error) -} diff --git a/chain/permissions/types/genesis.go b/chain/permissions/types/genesis.go deleted file mode 100644 index 4eff5bb7..00000000 --- a/chain/permissions/types/genesis.go +++ /dev/null @@ -1,38 +0,0 @@ -package types - -import ( - "cosmossdk.io/errors" -) - -// this line is used by starport scaffolding # genesis/types/import - -// DefaultIndex is the default capability global index -const DefaultIndex uint64 = 1 - -// DefaultGenesis returns the default Capability genesis state -func DefaultGenesis() *GenesisState { - return &GenesisState{ - Params: DefaultParams(), - Namespaces: []Namespace{}, - } -} - -// Validate performs basic genesis state validation returning an error upon any -// failure. -func (gs GenesisState) Validate() error { - err := gs.Params.Validate() - if err != nil { - return err - } - - seenDenoms := map[string]struct{}{} - - for _, ns := range gs.GetNamespaces() { - if _, ok := seenDenoms[ns.GetDenom()]; ok { - return errors.Wrapf(ErrInvalidGenesis, "duplicate denom: %s", ns.GetDenom()) - } - seenDenoms[ns.GetDenom()] = struct{}{} - } - - return nil -} diff --git a/chain/permissions/types/genesis.pb.go b/chain/permissions/types/genesis.pb.go index f4b7b7d6..580fd4db 100644 --- a/chain/permissions/types/genesis.pb.go +++ b/chain/permissions/types/genesis.pb.go @@ -26,8 +26,9 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package // GenesisState defines the permissions module's genesis state. type GenesisState struct { // params defines the parameters of the module. - Params Params `protobuf:"bytes,1,opt,name=params,proto3" json:"params"` - Namespaces []Namespace `protobuf:"bytes,2,rep,name=namespaces,proto3" json:"namespaces"` + Params Params `protobuf:"bytes,1,opt,name=params,proto3" json:"params"` + Namespaces []Namespace `protobuf:"bytes,2,rep,name=namespaces,proto3" json:"namespaces"` + Vouchers []*AddressVoucher `protobuf:"bytes,3,rep,name=vouchers,proto3" json:"vouchers,omitempty"` } func (m *GenesisState) Reset() { *m = GenesisState{} } @@ -77,6 +78,13 @@ func (m *GenesisState) GetNamespaces() []Namespace { return nil } +func (m *GenesisState) GetVouchers() []*AddressVoucher { + if m != nil { + return m.Vouchers + } + return nil +} + func init() { proto.RegisterType((*GenesisState)(nil), "injective.permissions.v1beta1.GenesisState") } @@ -86,24 +94,26 @@ func init() { } var fileDescriptor_5ff1982ce1793022 = []byte{ - // 270 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xd2, 0xce, 0xcc, 0xcb, 0x4a, - 0x4d, 0x2e, 0xc9, 0x2c, 0x4b, 0xd5, 0x2f, 0x48, 0x2d, 0xca, 0xcd, 0x2c, 0x2e, 0xce, 0xcc, 0xcf, - 0x2b, 0xd6, 0x2f, 0x33, 0x4c, 0x4a, 0x2d, 0x49, 0x34, 0xd4, 0x4f, 0x4f, 0xcd, 0x4b, 0x2d, 0xce, - 0x2c, 0xd6, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x92, 0x85, 0x2b, 0xd6, 0x43, 0x52, 0xac, 0x07, - 0x55, 0x2c, 0x25, 0x92, 0x9e, 0x9f, 0x9e, 0x0f, 0x56, 0xa9, 0x0f, 0x62, 0x41, 0x34, 0x49, 0x69, - 0xe1, 0xb7, 0xa1, 0x20, 0xb1, 0x28, 0x31, 0x17, 0x6a, 0x81, 0x94, 0x3e, 0x01, 0xb5, 0x48, 0x96, - 0x82, 0x35, 0x28, 0x2d, 0x66, 0xe4, 0xe2, 0x71, 0x87, 0xb8, 0x31, 0xb8, 0x24, 0xb1, 0x24, 0x55, - 0xc8, 0x99, 0x8b, 0x0d, 0x62, 0xa2, 0x04, 0xa3, 0x02, 0xa3, 0x06, 0xb7, 0x91, 0xaa, 0x1e, 0x5e, - 0x37, 0xeb, 0x05, 0x80, 0x15, 0x3b, 0xb1, 0x9c, 0xb8, 0x27, 0xcf, 0x10, 0x04, 0xd5, 0x2a, 0xe4, - 0xc7, 0xc5, 0x95, 0x97, 0x98, 0x9b, 0x5a, 0x5c, 0x90, 0x98, 0x9c, 0x5a, 0x2c, 0xc1, 0xa4, 0xc0, - 0xac, 0xc1, 0x6d, 0xa4, 0x41, 0xc0, 0x20, 0x3f, 0x98, 0x06, 0xa8, 0x59, 0x48, 0x26, 0x38, 0x65, - 0x9f, 0x78, 0x24, 0xc7, 0x78, 0xe1, 0x91, 0x1c, 0xe3, 0x83, 0x47, 0x72, 0x8c, 0x13, 0x1e, 0xcb, - 0x31, 0x5c, 0x78, 0x2c, 0xc7, 0x70, 0xe3, 0xb1, 0x1c, 0x43, 0x54, 0x60, 0x7a, 0x66, 0x49, 0x46, - 0x69, 0x92, 0x5e, 0x72, 0x7e, 0xae, 0xbe, 0x27, 0xcc, 0x7c, 0x9f, 0xc4, 0xa4, 0x62, 0x44, 0x48, - 0xe8, 0x26, 0xe7, 0x17, 0xa5, 0x22, 0x73, 0x33, 0x12, 0x33, 0xf3, 0xf4, 0x73, 0xf3, 0x53, 0x4a, - 0x73, 0x52, 0x8b, 0x51, 0x82, 0xa9, 0xa4, 0xb2, 0x20, 0xb5, 0x38, 0x89, 0x0d, 0x1c, 0x32, 0xc6, - 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0xb9, 0x0c, 0xe9, 0xc0, 0xda, 0x01, 0x00, 0x00, + // 299 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x90, 0x41, 0x4b, 0xc3, 0x30, + 0x14, 0x80, 0x1b, 0x27, 0x43, 0x32, 0x4f, 0xc5, 0xc3, 0x18, 0x18, 0x87, 0x20, 0x0c, 0x65, 0x09, + 0x9b, 0xbf, 0xc0, 0x79, 0x90, 0x81, 0x0c, 0x9d, 0xe0, 0xc1, 0x5b, 0xda, 0x3d, 0xba, 0xa8, 0x6d, + 0x4a, 0x5e, 0x5a, 0xf0, 0x5f, 0xf8, 0xb3, 0x76, 0xdc, 0xd1, 0x93, 0x48, 0x7b, 0xf7, 0x37, 0x88, + 0x6d, 0x37, 0xeb, 0x65, 0xbd, 0x25, 0xf0, 0x7d, 0xdf, 0x7b, 0x3c, 0x7a, 0xa1, 0xa2, 0x67, 0xf0, + 0xad, 0x4a, 0x41, 0xc4, 0x60, 0x42, 0x85, 0xa8, 0x74, 0x84, 0x22, 0x1d, 0x79, 0x60, 0xe5, 0x48, + 0x04, 0x10, 0x01, 0x2a, 0xe4, 0xb1, 0xd1, 0x56, 0xbb, 0xc7, 0x5b, 0x98, 0xd7, 0x60, 0x5e, 0xc1, + 0xbd, 0xa3, 0x40, 0x07, 0xba, 0x20, 0xc5, 0xef, 0xab, 0x94, 0x7a, 0xe7, 0xbb, 0x27, 0xc4, 0xd2, + 0xc8, 0xb0, 0x1a, 0xd0, 0x13, 0x0d, 0x6c, 0x6d, 0x68, 0x21, 0x9c, 0x7e, 0x13, 0x7a, 0x78, 0x53, + 0xee, 0xf8, 0x60, 0xa5, 0x05, 0xf7, 0x9a, 0xb6, 0xcb, 0x62, 0x97, 0xf4, 0xc9, 0xa0, 0x33, 0x3e, + 0xe3, 0x3b, 0x77, 0xe6, 0x77, 0x05, 0x3c, 0xd9, 0x5f, 0x7d, 0x9e, 0x38, 0xf3, 0x4a, 0x75, 0x67, + 0x94, 0x46, 0x32, 0x04, 0x8c, 0xa5, 0x0f, 0xd8, 0xdd, 0xeb, 0xb7, 0x06, 0x9d, 0xf1, 0xa0, 0x21, + 0x34, 0xdb, 0x08, 0x55, 0xab, 0x56, 0x70, 0xa7, 0xf4, 0x20, 0xd5, 0x89, 0xbf, 0x04, 0x83, 0xdd, + 0x56, 0x51, 0x1b, 0x36, 0xd4, 0xae, 0x16, 0x0b, 0x03, 0x88, 0x8f, 0xa5, 0x35, 0xdf, 0xea, 0x93, + 0x97, 0x55, 0xc6, 0xc8, 0x3a, 0x63, 0xe4, 0x2b, 0x63, 0xe4, 0x3d, 0x67, 0xce, 0x3a, 0x67, 0xce, + 0x47, 0xce, 0x9c, 0xa7, 0xfb, 0x40, 0xd9, 0x65, 0xe2, 0x71, 0x5f, 0x87, 0x62, 0xba, 0x89, 0xdf, + 0x4a, 0x0f, 0xff, 0x8e, 0x3a, 0xf4, 0xb5, 0x81, 0xfa, 0x77, 0x29, 0x55, 0x24, 0x42, 0xbd, 0x48, + 0x5e, 0x01, 0xff, 0x5d, 0xdc, 0xbe, 0xc5, 0x80, 0x5e, 0xbb, 0x38, 0xf2, 0xe5, 0x4f, 0x00, 0x00, + 0x00, 0xff, 0xff, 0x83, 0x97, 0x25, 0xeb, 0x25, 0x02, 0x00, 0x00, } func (m *GenesisState) Marshal() (dAtA []byte, err error) { @@ -126,6 +136,20 @@ func (m *GenesisState) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if len(m.Vouchers) > 0 { + for iNdEx := len(m.Vouchers) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Vouchers[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + } if len(m.Namespaces) > 0 { for iNdEx := len(m.Namespaces) - 1; iNdEx >= 0; iNdEx-- { { @@ -178,6 +202,12 @@ func (m *GenesisState) Size() (n int) { n += 1 + l + sovGenesis(uint64(l)) } } + if len(m.Vouchers) > 0 { + for _, e := range m.Vouchers { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + } return n } @@ -283,6 +313,40 @@ func (m *GenesisState) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Vouchers", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Vouchers = append(m.Vouchers, &AddressVoucher{}) + if err := m.Vouchers[len(m.Vouchers)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenesis(dAtA[iNdEx:]) diff --git a/chain/permissions/types/msgs.go b/chain/permissions/types/msgs.go deleted file mode 100644 index e9b762b1..00000000 --- a/chain/permissions/types/msgs.go +++ /dev/null @@ -1,227 +0,0 @@ -package types - -import ( - "fmt" - - "cosmossdk.io/errors" - sdk "github.com/cosmos/cosmos-sdk/types" - - tftypes "github.com/InjectiveLabs/sdk-go/chain/tokenfactory/types" -) - -// constants -const ( - // RouterKey is the message route for slashing - routerKey = ModuleName - - TypeMsgUpdateParams = "update_params" - TypeMsgCreateNamespace = "create_namespace" - TypeMsgDeleteNamespace = "delete_namespace" - TypeUpdateNamespace = "update_namespace" - TypeMsgUpdateNamespaceRoles = "update_namespace_roles" - TypeMsgRevokeNamespaceRoles = "revoke_namespace_roles" - TypeMsgClaimVoucher = "claim_voucher" -) - -var ( - _ sdk.Msg = &MsgUpdateParams{} - _ sdk.Msg = &MsgCreateNamespace{} - _ sdk.Msg = &MsgDeleteNamespace{} - _ sdk.Msg = &MsgUpdateNamespace{} - _ sdk.Msg = &MsgUpdateNamespaceRoles{} - _ sdk.Msg = &MsgRevokeNamespaceRoles{} - _ sdk.Msg = &MsgClaimVoucher{} -) - -func (m MsgUpdateParams) Route() string { return routerKey } - -func (m MsgUpdateParams) Type() string { return TypeMsgUpdateParams } - -func (m MsgUpdateParams) ValidateBasic() error { - if _, err := sdk.AccAddressFromBech32(m.Authority); err != nil { - return err - } - - if err := m.Params.Validate(); err != nil { - return err - } - return nil -} - -func (m *MsgUpdateParams) GetSignBytes() []byte { - return sdk.MustSortJSON(ModuleCdc.MustMarshal(m)) -} - -func (m MsgUpdateParams) GetSigners() []sdk.AccAddress { - addr, _ := sdk.AccAddressFromBech32(m.Authority) - return []sdk.AccAddress{addr} -} - -func (m MsgCreateNamespace) Route() string { return routerKey } - -func (m MsgCreateNamespace) Type() string { return TypeMsgCreateNamespace } - -func (msg MsgCreateNamespace) ValidateBasic() error { - if _, err := sdk.AccAddressFromBech32(msg.Sender); err != nil { - return err - } - - if err := msg.Namespace.Validate(); err != nil { - return err - } - return nil -} - -func (m *MsgCreateNamespace) GetSignBytes() []byte { - return sdk.MustSortJSON(ModuleCdc.MustMarshal(m)) -} - -func (m MsgCreateNamespace) GetSigners() []sdk.AccAddress { - addr, _ := sdk.AccAddressFromBech32(m.Sender) - return []sdk.AccAddress{addr} -} - -func (m MsgDeleteNamespace) Route() string { return routerKey } - -func (m MsgDeleteNamespace) Type() string { return TypeMsgDeleteNamespace } - -func (m MsgDeleteNamespace) ValidateBasic() error { - if _, err := sdk.AccAddressFromBech32(m.Sender); err != nil { - return err - } - - if _, _, err := tftypes.DeconstructDenom(m.NamespaceDenom); err != nil { - return errors.Wrap(err, "permissions namespace can only be applied to tokenfactory denoms") - } - return nil -} - -func (m *MsgDeleteNamespace) GetSignBytes() []byte { - return sdk.MustSortJSON(ModuleCdc.MustMarshal(m)) -} - -func (m MsgDeleteNamespace) GetSigners() []sdk.AccAddress { - addr, _ := sdk.AccAddressFromBech32(m.Sender) - return []sdk.AccAddress{addr} -} - -func (m MsgUpdateNamespace) Route() string { return routerKey } - -func (m MsgUpdateNamespace) Type() string { return TypeUpdateNamespace } - -func (m MsgUpdateNamespace) ValidateBasic() error { - if _, err := sdk.AccAddressFromBech32(m.Sender); err != nil { - return err - } - - if m.WasmHook != nil { - if _, err := sdk.AccAddressFromBech32(m.WasmHook.NewValue); err != nil { - return ErrInvalidWasmHook - } - } - return nil -} - -func (m *MsgUpdateNamespace) GetSignBytes() []byte { - return sdk.MustSortJSON(ModuleCdc.MustMarshal(m)) -} - -func (m MsgUpdateNamespace) GetSigners() []sdk.AccAddress { - addr, _ := sdk.AccAddressFromBech32(m.Sender) - return []sdk.AccAddress{addr} -} - -func (m MsgUpdateNamespaceRoles) Route() string { return routerKey } - -func (m MsgUpdateNamespaceRoles) Type() string { return TypeMsgUpdateNamespaceRoles } - -func (msg MsgUpdateNamespaceRoles) ValidateBasic() error { - if _, err := sdk.AccAddressFromBech32(msg.Sender); err != nil { - return err - } - if _, _, err := tftypes.DeconstructDenom(msg.NamespaceDenom); err != nil { - return errors.Wrap(err, "permissions namespace can only be applied to tokenfactory denoms") - } - - for _, role := range msg.AddressRoles { - if _, err := sdk.AccAddressFromBech32(role.Address); err != nil { - return errors.Wrapf(err, "invalid address %s", role.Address) - } - } - - return nil -} - -func (m *MsgUpdateNamespaceRoles) GetSignBytes() []byte { - return sdk.MustSortJSON(ModuleCdc.MustMarshal(m)) -} - -func (m MsgUpdateNamespaceRoles) GetSigners() []sdk.AccAddress { - addr, _ := sdk.AccAddressFromBech32(m.Sender) - return []sdk.AccAddress{addr} -} - -func (m MsgRevokeNamespaceRoles) Route() string { return routerKey } - -func (m MsgRevokeNamespaceRoles) Type() string { return TypeMsgRevokeNamespaceRoles } - -func (msg MsgRevokeNamespaceRoles) ValidateBasic() error { - if _, err := sdk.AccAddressFromBech32(msg.Sender); err != nil { - return err - } - - if _, _, err := tftypes.DeconstructDenom(msg.NamespaceDenom); err != nil { - return errors.Wrap(err, "permissions namespace can only be applied to tokenfactory denoms") - } - - // address_roles - foundAddresses := make(map[string]struct{}, len(msg.AddressRolesToRevoke)) - for _, addrRoles := range msg.AddressRolesToRevoke { - if _, err := sdk.AccAddressFromBech32(addrRoles.Address); err != nil { - return errors.Wrapf(err, "invalid address %s", addrRoles.Address) - } - if _, ok := foundAddresses[addrRoles.Address]; ok { - return errors.Wrapf(ErrInvalidRole, "address %s - revoking roles multiple times?", addrRoles.Address) - } - for _, role := range addrRoles.Roles { - if role == EVERYONE { - return errors.Wrapf(ErrInvalidRole, "role %s can not be set / revoked", EVERYONE) - } - } - foundAddresses[addrRoles.Address] = struct{}{} - } - return nil -} - -func (m *MsgRevokeNamespaceRoles) GetSignBytes() []byte { - return sdk.MustSortJSON(ModuleCdc.MustMarshal(m)) -} - -func (m MsgRevokeNamespaceRoles) GetSigners() []sdk.AccAddress { - addr, _ := sdk.AccAddressFromBech32(m.Sender) - return []sdk.AccAddress{addr} -} - -func (m MsgClaimVoucher) Route() string { return routerKey } - -func (m MsgClaimVoucher) Type() string { return TypeMsgClaimVoucher } - -func (msg MsgClaimVoucher) ValidateBasic() error { - if _, err := sdk.AccAddressFromBech32(msg.Sender); err != nil { - return err - } - - if msg.Denom == "" { - return fmt.Errorf("invalid denom") - } - return nil -} - -func (m *MsgClaimVoucher) GetSignBytes() []byte { - return sdk.MustSortJSON(ModuleCdc.MustMarshal(m)) -} - -func (m MsgClaimVoucher) GetSigners() []sdk.AccAddress { - addr, _ := sdk.AccAddressFromBech32(m.Sender) - return []sdk.AccAddress{addr} -} diff --git a/chain/permissions/types/params.go b/chain/permissions/types/params.go deleted file mode 100644 index c8ff643e..00000000 --- a/chain/permissions/types/params.go +++ /dev/null @@ -1,33 +0,0 @@ -package types - -import ( - paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" -) - -// ParamTable -func ParamKeyTable() paramtypes.KeyTable { - return paramtypes.NewKeyTable().RegisterParamSet(&Params{}) -} - -func NewParams(wasmHookQueryMaxGas uint64) Params { - return Params{ - WasmHookQueryMaxGas: wasmHookQueryMaxGas, - } -} - -// default module parameters. -func DefaultParams() Params { - return Params{ - WasmHookQueryMaxGas: 200_000, - } -} - -// validate params. -func (p Params) Validate() error { - return nil -} - -// Implements params.ParamSet. -func (p *Params) ParamSetPairs() paramtypes.ParamSetPairs { - return paramtypes.ParamSetPairs{} -} diff --git a/chain/permissions/types/permissions.pb.go b/chain/permissions/types/permissions.pb.go index 8dac3cbb..c642dda9 100644 --- a/chain/permissions/types/permissions.pb.go +++ b/chain/permissions/types/permissions.pb.go @@ -29,24 +29,52 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package type Action int32 const ( + // 0 is reserved for ACTION_UNSPECIFIED Action_UNSPECIFIED Action = 0 - Action_MINT Action = 1 - Action_RECEIVE Action = 2 - Action_BURN Action = 4 + // 1 is reserved for MINT + Action_MINT Action = 1 + // 2 is reserved for RECEIVE + Action_RECEIVE Action = 2 + // 4 is reserved for BURN + Action_BURN Action = 4 + // 8 is reserved for SEND + Action_SEND Action = 8 + // 16 is reserved for SUPER_BURN + Action_SUPER_BURN Action = 16 + // 134217728 is reserved for MODIFY_POLICY_MANAGERS + Action_MODIFY_POLICY_MANAGERS Action = 134217728 + // 268435456 is reserved for MODIFY_CONTRACT_HOOK + Action_MODIFY_CONTRACT_HOOK Action = 268435456 + // 536870912 is reserved for MODIFY_ROLE_PERMISSIONS + Action_MODIFY_ROLE_PERMISSIONS Action = 536870912 + // 1073741824 is reserved for MODIFY_ROLE_MANAGERS + Action_MODIFY_ROLE_MANAGERS Action = 1073741824 ) var Action_name = map[int32]string{ - 0: "UNSPECIFIED", - 1: "MINT", - 2: "RECEIVE", - 4: "BURN", + 0: "UNSPECIFIED", + 1: "MINT", + 2: "RECEIVE", + 4: "BURN", + 8: "SEND", + 16: "SUPER_BURN", + 134217728: "MODIFY_POLICY_MANAGERS", + 268435456: "MODIFY_CONTRACT_HOOK", + 536870912: "MODIFY_ROLE_PERMISSIONS", + 1073741824: "MODIFY_ROLE_MANAGERS", } var Action_value = map[string]int32{ - "UNSPECIFIED": 0, - "MINT": 1, - "RECEIVE": 2, - "BURN": 4, + "UNSPECIFIED": 0, + "MINT": 1, + "RECEIVE": 2, + "BURN": 4, + "SEND": 8, + "SUPER_BURN": 16, + "MODIFY_POLICY_MANAGERS": 134217728, + "MODIFY_CONTRACT_HOOK": 268435456, + "MODIFY_ROLE_PERMISSIONS": 536870912, + "MODIFY_ROLE_MANAGERS": 1073741824, } func (x Action) String() string { @@ -59,13 +87,13 @@ func (Action) EnumDescriptor() ([]byte, []int) { // Namespace defines a permissions namespace type Namespace struct { - Denom string `protobuf:"bytes,1,opt,name=denom,proto3" json:"denom,omitempty"` - WasmHook string `protobuf:"bytes,2,opt,name=wasm_hook,json=wasmHook,proto3" json:"wasm_hook,omitempty"` - MintsPaused bool `protobuf:"varint,3,opt,name=mints_paused,json=mintsPaused,proto3" json:"mints_paused,omitempty"` - SendsPaused bool `protobuf:"varint,4,opt,name=sends_paused,json=sendsPaused,proto3" json:"sends_paused,omitempty"` - BurnsPaused bool `protobuf:"varint,5,opt,name=burns_paused,json=burnsPaused,proto3" json:"burns_paused,omitempty"` - RolePermissions []*Role `protobuf:"bytes,6,rep,name=role_permissions,json=rolePermissions,proto3" json:"role_permissions,omitempty"` - AddressRoles []*AddressRoles `protobuf:"bytes,7,rep,name=address_roles,json=addressRoles,proto3" json:"address_roles,omitempty"` + Denom string `protobuf:"bytes,1,opt,name=denom,proto3" json:"denom,omitempty"` + ContractHook string `protobuf:"bytes,2,opt,name=contract_hook,json=contractHook,proto3" json:"contract_hook,omitempty"` + RolePermissions []*Role `protobuf:"bytes,3,rep,name=role_permissions,json=rolePermissions,proto3" json:"role_permissions,omitempty"` + ActorRoles []*ActorRoles `protobuf:"bytes,4,rep,name=actor_roles,json=actorRoles,proto3" json:"actor_roles,omitempty"` + RoleManagers []*RoleManager `protobuf:"bytes,5,rep,name=role_managers,json=roleManagers,proto3" json:"role_managers,omitempty"` + PolicyStatuses []*PolicyStatus `protobuf:"bytes,6,rep,name=policy_statuses,json=policyStatuses,proto3" json:"policy_statuses,omitempty"` + PolicyManagerCapabilities []*PolicyManagerCapability `protobuf:"bytes,7,rep,name=policy_manager_capabilities,json=policyManagerCapabilities,proto3" json:"policy_manager_capabilities,omitempty"` } func (m *Namespace) Reset() { *m = Namespace{} } @@ -108,65 +136,66 @@ func (m *Namespace) GetDenom() string { return "" } -func (m *Namespace) GetWasmHook() string { +func (m *Namespace) GetContractHook() string { if m != nil { - return m.WasmHook + return m.ContractHook } return "" } -func (m *Namespace) GetMintsPaused() bool { +func (m *Namespace) GetRolePermissions() []*Role { if m != nil { - return m.MintsPaused + return m.RolePermissions } - return false + return nil } -func (m *Namespace) GetSendsPaused() bool { +func (m *Namespace) GetActorRoles() []*ActorRoles { if m != nil { - return m.SendsPaused + return m.ActorRoles } - return false + return nil } -func (m *Namespace) GetBurnsPaused() bool { +func (m *Namespace) GetRoleManagers() []*RoleManager { if m != nil { - return m.BurnsPaused + return m.RoleManagers } - return false + return nil } -func (m *Namespace) GetRolePermissions() []*Role { +func (m *Namespace) GetPolicyStatuses() []*PolicyStatus { if m != nil { - return m.RolePermissions + return m.PolicyStatuses } return nil } -func (m *Namespace) GetAddressRoles() []*AddressRoles { +func (m *Namespace) GetPolicyManagerCapabilities() []*PolicyManagerCapability { if m != nil { - return m.AddressRoles + return m.PolicyManagerCapabilities } return nil } -type AddressRoles struct { - Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` - Roles []string `protobuf:"bytes,2,rep,name=roles,proto3" json:"roles,omitempty"` +// AddressRoles defines roles for an actor +type ActorRoles struct { + Actor string `protobuf:"bytes,1,opt,name=actor,proto3" json:"actor,omitempty"` + Roles []string `protobuf:"bytes,2,rep,name=roles,proto3" json:"roles,omitempty"` } -func (m *AddressRoles) Reset() { *m = AddressRoles{} } -func (m *AddressRoles) String() string { return proto.CompactTextString(m) } -func (*AddressRoles) ProtoMessage() {} -func (*AddressRoles) Descriptor() ([]byte, []int) { +func (m *ActorRoles) Reset() { *m = ActorRoles{} } +func (m *ActorRoles) String() string { return proto.CompactTextString(m) } +func (*ActorRoles) ProtoMessage() {} +func (*ActorRoles) Descriptor() ([]byte, []int) { return fileDescriptor_6d25f3ecf3806c6c, []int{1} } -func (m *AddressRoles) XXX_Unmarshal(b []byte) error { +func (m *ActorRoles) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *AddressRoles) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *ActorRoles) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_AddressRoles.Marshal(b, m, deterministic) + return xxx_messageInfo_ActorRoles.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -176,43 +205,211 @@ func (m *AddressRoles) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) return b[:n], nil } } -func (m *AddressRoles) XXX_Merge(src proto.Message) { - xxx_messageInfo_AddressRoles.Merge(m, src) +func (m *ActorRoles) XXX_Merge(src proto.Message) { + xxx_messageInfo_ActorRoles.Merge(m, src) } -func (m *AddressRoles) XXX_Size() int { +func (m *ActorRoles) XXX_Size() int { return m.Size() } -func (m *AddressRoles) XXX_DiscardUnknown() { - xxx_messageInfo_AddressRoles.DiscardUnknown(m) +func (m *ActorRoles) XXX_DiscardUnknown() { + xxx_messageInfo_ActorRoles.DiscardUnknown(m) } -var xxx_messageInfo_AddressRoles proto.InternalMessageInfo +var xxx_messageInfo_ActorRoles proto.InternalMessageInfo -func (m *AddressRoles) GetAddress() string { +func (m *ActorRoles) GetActor() string { if m != nil { - return m.Address + return m.Actor + } + return "" +} + +func (m *ActorRoles) GetRoles() []string { + if m != nil { + return m.Roles + } + return nil +} + +// RoleActors defines actors for a role +type RoleActors struct { + Role string `protobuf:"bytes,1,opt,name=role,proto3" json:"role,omitempty"` + Actors []string `protobuf:"bytes,2,rep,name=actors,proto3" json:"actors,omitempty"` +} + +func (m *RoleActors) Reset() { *m = RoleActors{} } +func (m *RoleActors) String() string { return proto.CompactTextString(m) } +func (*RoleActors) ProtoMessage() {} +func (*RoleActors) Descriptor() ([]byte, []int) { + return fileDescriptor_6d25f3ecf3806c6c, []int{2} +} +func (m *RoleActors) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RoleActors) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RoleActors.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RoleActors) XXX_Merge(src proto.Message) { + xxx_messageInfo_RoleActors.Merge(m, src) +} +func (m *RoleActors) XXX_Size() int { + return m.Size() +} +func (m *RoleActors) XXX_DiscardUnknown() { + xxx_messageInfo_RoleActors.DiscardUnknown(m) +} + +var xxx_messageInfo_RoleActors proto.InternalMessageInfo + +func (m *RoleActors) GetRole() string { + if m != nil { + return m.Role + } + return "" +} + +func (m *RoleActors) GetActors() []string { + if m != nil { + return m.Actors + } + return nil +} + +// RoleManager defines roles for a manager address +type RoleManager struct { + Manager string `protobuf:"bytes,1,opt,name=manager,proto3" json:"manager,omitempty"` + Roles []string `protobuf:"bytes,2,rep,name=roles,proto3" json:"roles,omitempty"` +} + +func (m *RoleManager) Reset() { *m = RoleManager{} } +func (m *RoleManager) String() string { return proto.CompactTextString(m) } +func (*RoleManager) ProtoMessage() {} +func (*RoleManager) Descriptor() ([]byte, []int) { + return fileDescriptor_6d25f3ecf3806c6c, []int{3} +} +func (m *RoleManager) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RoleManager) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RoleManager.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RoleManager) XXX_Merge(src proto.Message) { + xxx_messageInfo_RoleManager.Merge(m, src) +} +func (m *RoleManager) XXX_Size() int { + return m.Size() +} +func (m *RoleManager) XXX_DiscardUnknown() { + xxx_messageInfo_RoleManager.DiscardUnknown(m) +} + +var xxx_messageInfo_RoleManager proto.InternalMessageInfo + +func (m *RoleManager) GetManager() string { + if m != nil { + return m.Manager } return "" } -func (m *AddressRoles) GetRoles() []string { +func (m *RoleManager) GetRoles() []string { if m != nil { return m.Roles } return nil } +// PolicyStatus defines the status of a policy +type PolicyStatus struct { + Action Action `protobuf:"varint,1,opt,name=action,proto3,enum=injective.permissions.v1beta1.Action" json:"action,omitempty"` + IsDisabled bool `protobuf:"varint,2,opt,name=is_disabled,json=isDisabled,proto3" json:"is_disabled,omitempty"` + IsSealed bool `protobuf:"varint,3,opt,name=is_sealed,json=isSealed,proto3" json:"is_sealed,omitempty"` +} + +func (m *PolicyStatus) Reset() { *m = PolicyStatus{} } +func (m *PolicyStatus) String() string { return proto.CompactTextString(m) } +func (*PolicyStatus) ProtoMessage() {} +func (*PolicyStatus) Descriptor() ([]byte, []int) { + return fileDescriptor_6d25f3ecf3806c6c, []int{4} +} +func (m *PolicyStatus) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *PolicyStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_PolicyStatus.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *PolicyStatus) XXX_Merge(src proto.Message) { + xxx_messageInfo_PolicyStatus.Merge(m, src) +} +func (m *PolicyStatus) XXX_Size() int { + return m.Size() +} +func (m *PolicyStatus) XXX_DiscardUnknown() { + xxx_messageInfo_PolicyStatus.DiscardUnknown(m) +} + +var xxx_messageInfo_PolicyStatus proto.InternalMessageInfo + +func (m *PolicyStatus) GetAction() Action { + if m != nil { + return m.Action + } + return Action_UNSPECIFIED +} + +func (m *PolicyStatus) GetIsDisabled() bool { + if m != nil { + return m.IsDisabled + } + return false +} + +func (m *PolicyStatus) GetIsSealed() bool { + if m != nil { + return m.IsSealed + } + return false +} + // Role is only used for storage type Role struct { - Role string `protobuf:"bytes,1,opt,name=role,proto3" json:"role,omitempty"` - Permissions uint32 `protobuf:"varint,2,opt,name=permissions,proto3" json:"permissions,omitempty"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + RoleId uint32 `protobuf:"varint,2,opt,name=role_id,json=roleId,proto3" json:"role_id,omitempty"` + Permissions uint32 `protobuf:"varint,3,opt,name=permissions,proto3" json:"permissions,omitempty"` } func (m *Role) Reset() { *m = Role{} } func (m *Role) String() string { return proto.CompactTextString(m) } func (*Role) ProtoMessage() {} func (*Role) Descriptor() ([]byte, []int) { - return fileDescriptor_6d25f3ecf3806c6c, []int{2} + return fileDescriptor_6d25f3ecf3806c6c, []int{5} } func (m *Role) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -241,13 +438,20 @@ func (m *Role) XXX_DiscardUnknown() { var xxx_messageInfo_Role proto.InternalMessageInfo -func (m *Role) GetRole() string { +func (m *Role) GetName() string { if m != nil { - return m.Role + return m.Name } return "" } +func (m *Role) GetRoleId() uint32 { + if m != nil { + return m.RoleId + } + return 0 +} + func (m *Role) GetPermissions() uint32 { if m != nil { return m.Permissions @@ -255,6 +459,75 @@ func (m *Role) GetPermissions() uint32 { return 0 } +// PolicyManagerCapability defines the capabilities of a manager for a policy +type PolicyManagerCapability struct { + Manager string `protobuf:"bytes,1,opt,name=manager,proto3" json:"manager,omitempty"` + Action Action `protobuf:"varint,2,opt,name=action,proto3,enum=injective.permissions.v1beta1.Action" json:"action,omitempty"` + CanDisable bool `protobuf:"varint,3,opt,name=can_disable,json=canDisable,proto3" json:"can_disable,omitempty"` + CanSeal bool `protobuf:"varint,4,opt,name=can_seal,json=canSeal,proto3" json:"can_seal,omitempty"` +} + +func (m *PolicyManagerCapability) Reset() { *m = PolicyManagerCapability{} } +func (m *PolicyManagerCapability) String() string { return proto.CompactTextString(m) } +func (*PolicyManagerCapability) ProtoMessage() {} +func (*PolicyManagerCapability) Descriptor() ([]byte, []int) { + return fileDescriptor_6d25f3ecf3806c6c, []int{6} +} +func (m *PolicyManagerCapability) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *PolicyManagerCapability) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_PolicyManagerCapability.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *PolicyManagerCapability) XXX_Merge(src proto.Message) { + xxx_messageInfo_PolicyManagerCapability.Merge(m, src) +} +func (m *PolicyManagerCapability) XXX_Size() int { + return m.Size() +} +func (m *PolicyManagerCapability) XXX_DiscardUnknown() { + xxx_messageInfo_PolicyManagerCapability.DiscardUnknown(m) +} + +var xxx_messageInfo_PolicyManagerCapability proto.InternalMessageInfo + +func (m *PolicyManagerCapability) GetManager() string { + if m != nil { + return m.Manager + } + return "" +} + +func (m *PolicyManagerCapability) GetAction() Action { + if m != nil { + return m.Action + } + return Action_UNSPECIFIED +} + +func (m *PolicyManagerCapability) GetCanDisable() bool { + if m != nil { + return m.CanDisable + } + return false +} + +func (m *PolicyManagerCapability) GetCanSeal() bool { + if m != nil { + return m.CanSeal + } + return false +} + // used in storage type RoleIDs struct { RoleIds []uint32 `protobuf:"varint,1,rep,packed,name=role_ids,json=roleIds,proto3" json:"role_ids,omitempty"` @@ -264,7 +537,7 @@ func (m *RoleIDs) Reset() { *m = RoleIDs{} } func (m *RoleIDs) String() string { return proto.CompactTextString(m) } func (*RoleIDs) ProtoMessage() {} func (*RoleIDs) Descriptor() ([]byte, []int) { - return fileDescriptor_6d25f3ecf3806c6c, []int{3} + return fileDescriptor_6d25f3ecf3806c6c, []int{7} } func (m *RoleIDs) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -300,6 +573,7 @@ func (m *RoleIDs) GetRoleIds() []uint32 { return nil } +// Voucher is used to represent a voucher type Voucher struct { Coins github_com_cosmos_cosmos_sdk_types.Coins `protobuf:"bytes,1,rep,name=coins,proto3,castrepeated=github.com/cosmos/cosmos-sdk/types.Coins" json:"coins"` } @@ -308,7 +582,7 @@ func (m *Voucher) Reset() { *m = Voucher{} } func (m *Voucher) String() string { return proto.CompactTextString(m) } func (*Voucher) ProtoMessage() {} func (*Voucher) Descriptor() ([]byte, []int) { - return fileDescriptor_6d25f3ecf3806c6c, []int{4} + return fileDescriptor_6d25f3ecf3806c6c, []int{8} } func (m *Voucher) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -344,16 +618,17 @@ func (m *Voucher) GetCoins() github_com_cosmos_cosmos_sdk_types.Coins { return nil } +// AddressVoucher is used to represent a voucher for a specific address type AddressVoucher struct { - Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` - Voucher *Voucher `protobuf:"bytes,2,opt,name=voucher,proto3" json:"voucher,omitempty"` + Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` + Voucher github_com_cosmos_cosmos_sdk_types.Coin `protobuf:"bytes,2,opt,name=voucher,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Coin" json:"voucher,omitempty"` } func (m *AddressVoucher) Reset() { *m = AddressVoucher{} } func (m *AddressVoucher) String() string { return proto.CompactTextString(m) } func (*AddressVoucher) ProtoMessage() {} func (*AddressVoucher) Descriptor() ([]byte, []int) { - return fileDescriptor_6d25f3ecf3806c6c, []int{5} + return fileDescriptor_6d25f3ecf3806c6c, []int{9} } func (m *AddressVoucher) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -389,18 +664,15 @@ func (m *AddressVoucher) GetAddress() string { return "" } -func (m *AddressVoucher) GetVoucher() *Voucher { - if m != nil { - return m.Voucher - } - return nil -} - func init() { proto.RegisterEnum("injective.permissions.v1beta1.Action", Action_name, Action_value) proto.RegisterType((*Namespace)(nil), "injective.permissions.v1beta1.Namespace") - proto.RegisterType((*AddressRoles)(nil), "injective.permissions.v1beta1.AddressRoles") + proto.RegisterType((*ActorRoles)(nil), "injective.permissions.v1beta1.ActorRoles") + proto.RegisterType((*RoleActors)(nil), "injective.permissions.v1beta1.RoleActors") + proto.RegisterType((*RoleManager)(nil), "injective.permissions.v1beta1.RoleManager") + proto.RegisterType((*PolicyStatus)(nil), "injective.permissions.v1beta1.PolicyStatus") proto.RegisterType((*Role)(nil), "injective.permissions.v1beta1.Role") + proto.RegisterType((*PolicyManagerCapability)(nil), "injective.permissions.v1beta1.PolicyManagerCapability") proto.RegisterType((*RoleIDs)(nil), "injective.permissions.v1beta1.RoleIDs") proto.RegisterType((*Voucher)(nil), "injective.permissions.v1beta1.Voucher") proto.RegisterType((*AddressVoucher)(nil), "injective.permissions.v1beta1.AddressVoucher") @@ -411,43 +683,64 @@ func init() { } var fileDescriptor_6d25f3ecf3806c6c = []byte{ - // 567 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x53, 0x4d, 0x8f, 0xd2, 0x4e, - 0x18, 0xa7, 0xbc, 0x15, 0xa6, 0xf0, 0x5f, 0x32, 0xd9, 0x43, 0x77, 0xff, 0xb1, 0x8b, 0xd5, 0x18, - 0xa2, 0xd9, 0xd6, 0xc5, 0x9b, 0x31, 0xc6, 0x85, 0xc5, 0xd8, 0x44, 0x09, 0x56, 0x77, 0x0f, 0x5e, - 0x48, 0x5f, 0x26, 0x30, 0x42, 0x3b, 0xa4, 0x4f, 0xc1, 0xf8, 0x2d, 0xfc, 0x1c, 0x7e, 0x92, 0xf5, - 0xb6, 0x47, 0x4f, 0x6a, 0xe0, 0x8b, 0x98, 0x99, 0x29, 0x50, 0x0f, 0xba, 0x27, 0xfa, 0xfc, 0x5e, - 0x9e, 0xe1, 0xf9, 0xcd, 0x33, 0xc8, 0xa6, 0xf1, 0x47, 0x12, 0xa4, 0x74, 0x45, 0xec, 0x05, 0x49, - 0x22, 0x0a, 0x40, 0x59, 0x0c, 0xf6, 0xea, 0xcc, 0x27, 0xa9, 0x77, 0x96, 0xc7, 0xac, 0x45, 0xc2, - 0x52, 0x86, 0xef, 0xec, 0x0c, 0x56, 0x9e, 0xcc, 0x0c, 0xc7, 0x87, 0x13, 0x36, 0x61, 0x42, 0x69, - 0xf3, 0x2f, 0x69, 0x3a, 0x36, 0x02, 0x06, 0x11, 0x03, 0xdb, 0xf7, 0x80, 0xec, 0x7a, 0x07, 0x8c, - 0xc6, 0x92, 0x37, 0xbf, 0x15, 0x51, 0x7d, 0xe8, 0x45, 0x04, 0x16, 0x5e, 0x40, 0xf0, 0x21, 0xaa, - 0x84, 0x24, 0x66, 0x91, 0xae, 0xb4, 0x95, 0x4e, 0xdd, 0x95, 0x05, 0xfe, 0x1f, 0xd5, 0x3f, 0x79, - 0x10, 0x8d, 0xa7, 0x8c, 0xcd, 0xf4, 0xa2, 0x60, 0x6a, 0x1c, 0x78, 0xc5, 0xd8, 0x0c, 0xdf, 0x45, - 0x8d, 0x88, 0xc6, 0x29, 0x8c, 0x17, 0xde, 0x12, 0x48, 0xa8, 0x97, 0xda, 0x4a, 0xa7, 0xe6, 0x6a, - 0x02, 0x1b, 0x09, 0x88, 0x4b, 0x80, 0xc4, 0xe1, 0x4e, 0x52, 0x96, 0x12, 0x81, 0xed, 0x25, 0xfe, - 0x32, 0x89, 0x77, 0x92, 0x8a, 0x94, 0x08, 0x2c, 0x93, 0x0c, 0x51, 0x2b, 0x61, 0x73, 0x32, 0xce, - 0xcd, 0xae, 0x57, 0xdb, 0xa5, 0x8e, 0xd6, 0xbd, 0x67, 0xfd, 0x33, 0x19, 0xcb, 0x65, 0x73, 0xe2, - 0x1e, 0x70, 0xf3, 0x68, 0xcf, 0xe2, 0x11, 0x6a, 0x7a, 0x61, 0x98, 0x10, 0x80, 0x31, 0xa7, 0x40, - 0x57, 0x45, 0xb3, 0x47, 0xb7, 0x34, 0x3b, 0x97, 0x1e, 0xde, 0x13, 0xdc, 0x86, 0x97, 0xab, 0xcc, - 0xe7, 0xa8, 0x91, 0x67, 0xb1, 0x8e, 0xd4, 0x8c, 0xcf, 0xf2, 0xdc, 0x96, 0x3c, 0x67, 0x79, 0x66, - 0xb1, 0x5d, 0xe2, 0x39, 0x8b, 0xc2, 0x7c, 0x86, 0xca, 0xdc, 0x88, 0x31, 0x2a, 0x73, 0x20, 0x33, - 0x89, 0x6f, 0xdc, 0x46, 0x5a, 0x7e, 0x70, 0x7e, 0x0b, 0x4d, 0x37, 0x0f, 0x99, 0xf7, 0x91, 0xca, - 0xdd, 0xce, 0x05, 0xe0, 0x23, 0x54, 0x13, 0x51, 0xd1, 0x90, 0x9f, 0x5c, 0xea, 0x34, 0x5d, 0x95, - 0xd7, 0x4e, 0x08, 0xe6, 0x1c, 0xa9, 0x57, 0x6c, 0x19, 0x4c, 0x49, 0x82, 0x3d, 0x54, 0xe1, 0x8b, - 0x20, 0x25, 0x5a, 0xf7, 0xc8, 0x92, 0xab, 0x62, 0xf1, 0x55, 0xd9, 0x8d, 0xdb, 0x67, 0x34, 0xee, - 0x3d, 0xbe, 0xfe, 0x71, 0x52, 0xf8, 0xfa, 0xf3, 0xa4, 0x33, 0xa1, 0xe9, 0x74, 0xe9, 0x5b, 0x01, - 0x8b, 0xec, 0x6c, 0xaf, 0xe4, 0xcf, 0x29, 0x84, 0x33, 0x3b, 0xfd, 0xbc, 0x20, 0x20, 0x0c, 0xe0, - 0xca, 0xce, 0xe6, 0x1c, 0xfd, 0x97, 0x25, 0xb2, 0x3d, 0xf4, 0xef, 0x99, 0xbc, 0x40, 0xea, 0x4a, - 0x8a, 0xc4, 0x74, 0x5a, 0xf7, 0xc1, 0x2d, 0x37, 0x91, 0xb5, 0x74, 0xb7, 0xb6, 0x87, 0x4f, 0x51, - 0xf5, 0x3c, 0x48, 0x29, 0x8b, 0xf1, 0x01, 0xd2, 0x2e, 0x87, 0xef, 0x46, 0x83, 0xbe, 0xf3, 0xd2, - 0x19, 0x5c, 0xb4, 0x0a, 0xb8, 0x86, 0xca, 0x6f, 0x9c, 0xe1, 0xfb, 0x96, 0x82, 0x35, 0xa4, 0xba, - 0x83, 0xfe, 0xc0, 0xb9, 0x1a, 0xb4, 0x8a, 0x1c, 0xee, 0x5d, 0xba, 0xc3, 0x56, 0xb9, 0x37, 0xbb, - 0x5e, 0x1b, 0xca, 0xcd, 0xda, 0x50, 0x7e, 0xad, 0x0d, 0xe5, 0xcb, 0xc6, 0x28, 0xdc, 0x6c, 0x8c, - 0xc2, 0xf7, 0x8d, 0x51, 0xf8, 0xf0, 0x36, 0x37, 0xb4, 0xb3, 0xfd, 0x43, 0xaf, 0x3d, 0x1f, 0xf6, - 0x0f, 0xf8, 0x34, 0x60, 0x09, 0xc9, 0x97, 0x53, 0x8f, 0xc6, 0x76, 0xc4, 0xc2, 0xe5, 0x9c, 0xc0, - 0x1f, 0xaf, 0x5b, 0x64, 0xe4, 0x57, 0xc5, 0xdb, 0x7b, 0xf2, 0x3b, 0x00, 0x00, 0xff, 0xff, 0xf3, - 0xf2, 0xce, 0xa8, 0x03, 0x04, 0x00, 0x00, + // 901 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x55, 0xcf, 0x6f, 0x1b, 0x45, + 0x14, 0xf6, 0xda, 0x8e, 0xd7, 0x79, 0xce, 0x0f, 0x33, 0x8a, 0x9a, 0x4d, 0x4b, 0x6d, 0xcb, 0x05, + 0x11, 0x0a, 0xb5, 0x69, 0x90, 0x10, 0x97, 0x4a, 0x38, 0xf6, 0x96, 0x2e, 0xc4, 0x3f, 0x18, 0x27, + 0x95, 0xca, 0x65, 0x35, 0x5e, 0x8f, 0x92, 0x21, 0xde, 0x1d, 0x6b, 0x67, 0x13, 0xc9, 0x37, 0x73, + 0xe6, 0xc2, 0x3f, 0xc1, 0x85, 0x03, 0x7f, 0x47, 0x8f, 0x39, 0x22, 0x0e, 0x01, 0x25, 0x37, 0xfe, + 0x0a, 0x34, 0xb3, 0xb3, 0xf6, 0x56, 0x22, 0x3f, 0xd4, 0x93, 0xe7, 0xbd, 0x6f, 0xbe, 0xef, 0xbd, + 0xf9, 0xf6, 0x79, 0x06, 0x9a, 0x2c, 0xf8, 0x89, 0x7a, 0x11, 0x3b, 0xa7, 0xcd, 0x29, 0x0d, 0x7d, + 0x26, 0x04, 0xe3, 0x81, 0x68, 0x9e, 0x3f, 0x1f, 0xd1, 0x88, 0x3c, 0x4f, 0xe7, 0x1a, 0xd3, 0x90, + 0x47, 0x1c, 0x3d, 0x5e, 0x10, 0x1a, 0x69, 0x50, 0x13, 0x1e, 0x56, 0x3c, 0x2e, 0x7c, 0x2e, 0x9a, + 0x23, 0x22, 0xe8, 0x42, 0xc5, 0xe3, 0x2c, 0x88, 0xe9, 0x0f, 0xb7, 0x8e, 0xf9, 0x31, 0x57, 0xcb, + 0xa6, 0x5c, 0xc5, 0xd9, 0xfa, 0xcf, 0x79, 0x58, 0xed, 0x11, 0x9f, 0x8a, 0x29, 0xf1, 0x28, 0xda, + 0x82, 0x95, 0x31, 0x0d, 0xb8, 0x6f, 0x19, 0x35, 0x63, 0x77, 0x15, 0xc7, 0x01, 0x7a, 0x02, 0xeb, + 0x1e, 0x0f, 0xa2, 0x90, 0x78, 0x91, 0x7b, 0xc2, 0xf9, 0xa9, 0x95, 0x55, 0xe8, 0x5a, 0x92, 0x7c, + 0xc5, 0xf9, 0x29, 0xea, 0x41, 0x39, 0xe4, 0x13, 0xea, 0xa6, 0x5a, 0xb3, 0x72, 0xb5, 0xdc, 0x6e, + 0x69, 0xef, 0x49, 0xe3, 0xd6, 0xc6, 0x1b, 0x98, 0x4f, 0x28, 0xde, 0x94, 0xe4, 0xc1, 0x12, 0x45, + 0xdf, 0x41, 0x89, 0x78, 0x11, 0x0f, 0x5d, 0x09, 0x08, 0x2b, 0xaf, 0xa4, 0x3e, 0xbd, 0x43, 0xaa, + 0x25, 0x19, 0x52, 0x4f, 0x60, 0x20, 0x8b, 0x35, 0xea, 0xc3, 0xba, 0xea, 0xcd, 0x27, 0x01, 0x39, + 0xa6, 0xa1, 0xb0, 0x56, 0x94, 0xda, 0xd3, 0x7b, 0x34, 0xd6, 0x8d, 0x29, 0x78, 0x2d, 0x5c, 0x06, + 0x02, 0x1d, 0xc2, 0xe6, 0x94, 0x4f, 0x98, 0x37, 0x73, 0x45, 0x44, 0xa2, 0x33, 0x41, 0x85, 0x55, + 0x50, 0x92, 0x9f, 0xdd, 0x21, 0x39, 0x50, 0xac, 0xa1, 0x22, 0xe1, 0x8d, 0x69, 0x2a, 0xa2, 0x02, + 0x9d, 0xc3, 0x23, 0xad, 0xaa, 0x1b, 0x75, 0x3d, 0x32, 0x25, 0x23, 0x36, 0x61, 0x11, 0xa3, 0xc2, + 0x32, 0x55, 0x85, 0xaf, 0xee, 0x55, 0x41, 0x77, 0xda, 0x4e, 0xf8, 0x33, 0xbc, 0x33, 0xfd, 0x5f, + 0x80, 0x51, 0x51, 0xff, 0x1a, 0x60, 0x69, 0x9c, 0x9c, 0x01, 0x65, 0x5d, 0x32, 0x03, 0x2a, 0x90, + 0xd9, 0xf8, 0x43, 0x64, 0x6b, 0x39, 0x99, 0x55, 0x81, 0x64, 0x4a, 0x92, 0x62, 0x0b, 0x84, 0x20, + 0x2f, 0xd3, 0x9a, 0xa8, 0xd6, 0xe8, 0x01, 0x14, 0x94, 0x40, 0x42, 0xd4, 0x51, 0xfd, 0x05, 0x94, + 0x52, 0xf6, 0x22, 0x0b, 0x4c, 0x7d, 0x66, 0xcd, 0x4e, 0xc2, 0x1b, 0x0a, 0xff, 0x62, 0xc0, 0x5a, + 0xda, 0x4b, 0xf4, 0x42, 0xd5, 0x61, 0x3c, 0x50, 0xfc, 0x8d, 0xbd, 0x8f, 0xef, 0x9e, 0x14, 0xc6, + 0x03, 0xac, 0x49, 0xa8, 0x0a, 0x25, 0x26, 0xdc, 0x31, 0x13, 0x64, 0x34, 0xa1, 0x63, 0x35, 0xe0, + 0x45, 0x0c, 0x4c, 0x74, 0x74, 0x06, 0x3d, 0x82, 0x55, 0x26, 0x5c, 0x41, 0x89, 0x84, 0x73, 0x0a, + 0x2e, 0x32, 0x31, 0x54, 0x71, 0xfd, 0x08, 0xf2, 0xf2, 0x30, 0xd2, 0x80, 0x80, 0xf8, 0x0b, 0x03, + 0xe4, 0x1a, 0x6d, 0x83, 0xa9, 0x66, 0x8f, 0xc5, 0xaa, 0xeb, 0xb8, 0x20, 0x43, 0x67, 0x8c, 0x6a, + 0x50, 0x7a, 0xf7, 0xbf, 0x22, 0xc1, 0x74, 0xaa, 0xfe, 0x87, 0x01, 0xdb, 0x37, 0x7c, 0xce, 0x5b, + 0x0c, 0x5b, 0x3a, 0x91, 0x7d, 0x4f, 0x27, 0x3c, 0x12, 0x24, 0x56, 0xe8, 0xa3, 0x82, 0x47, 0x02, + 0x6d, 0x05, 0xda, 0x81, 0xa2, 0xdc, 0x20, 0xad, 0xb0, 0xf2, 0x0a, 0x35, 0x3d, 0x12, 0x48, 0x27, + 0xea, 0x1f, 0x81, 0x29, 0x7d, 0x70, 0x3a, 0x42, 0xee, 0xd2, 0xc7, 0x16, 0x96, 0x51, 0xcb, 0xed, + 0xae, 0x63, 0x33, 0x3e, 0xb7, 0xa8, 0x4f, 0xc0, 0x7c, 0xcd, 0xcf, 0xbc, 0x13, 0x1a, 0x22, 0x02, + 0x2b, 0xf2, 0x86, 0x8a, 0xb7, 0x94, 0xf6, 0x76, 0x1a, 0xf1, 0x1d, 0xd6, 0x90, 0x77, 0xd8, 0xa2, + 0xc1, 0x36, 0x67, 0xc1, 0xfe, 0x17, 0x6f, 0x2f, 0xab, 0x99, 0xdf, 0xff, 0xae, 0xee, 0x1e, 0xb3, + 0xe8, 0xe4, 0x6c, 0xd4, 0xf0, 0xb8, 0xdf, 0xd4, 0x17, 0x5e, 0xfc, 0xf3, 0x4c, 0x8c, 0x4f, 0x9b, + 0xd1, 0x6c, 0x4a, 0x85, 0x22, 0x08, 0x1c, 0x2b, 0xd7, 0x7f, 0x33, 0x60, 0xa3, 0x35, 0x1e, 0x87, + 0x54, 0x88, 0xa4, 0xaa, 0x05, 0x26, 0x89, 0x33, 0x89, 0x77, 0x3a, 0x44, 0x33, 0x30, 0xcf, 0xe3, + 0x4d, 0xca, 0xbc, 0x5b, 0x3b, 0xea, 0xc8, 0x8e, 0xfe, 0xba, 0xac, 0x7e, 0x72, 0xcf, 0x8e, 0xfe, + 0xbd, 0xac, 0x7e, 0xa0, 0xc5, 0x3f, 0xe7, 0x3e, 0x8b, 0xa8, 0x3f, 0x8d, 0x66, 0x38, 0xa9, 0xf7, + 0xf4, 0xc2, 0x80, 0x42, 0xfc, 0x29, 0xd0, 0x26, 0x94, 0x8e, 0x7a, 0xc3, 0x81, 0xdd, 0x76, 0x5e, + 0x3a, 0x76, 0xa7, 0x9c, 0x41, 0x45, 0xc8, 0x77, 0x9d, 0xde, 0x61, 0xd9, 0x40, 0x25, 0x30, 0xb1, + 0xdd, 0xb6, 0x9d, 0xd7, 0x76, 0x39, 0x2b, 0xd3, 0xfb, 0x47, 0xb8, 0x57, 0xce, 0xcb, 0xd5, 0xd0, + 0xee, 0x75, 0xca, 0x45, 0xb4, 0x01, 0x30, 0x3c, 0x1a, 0xd8, 0xd8, 0x55, 0x48, 0x19, 0x3d, 0x86, + 0x07, 0xdd, 0x7e, 0xc7, 0x79, 0xf9, 0xc6, 0x1d, 0xf4, 0x0f, 0x9c, 0xf6, 0x1b, 0xb7, 0xdb, 0xea, + 0xb5, 0xbe, 0xb5, 0xf1, 0xb0, 0x3c, 0x9f, 0xcf, 0xbf, 0x41, 0x1f, 0xc2, 0x96, 0x86, 0xdb, 0xfd, + 0xde, 0x21, 0x6e, 0xb5, 0x0f, 0xdd, 0x57, 0xfd, 0xfe, 0xf7, 0x12, 0x9c, 0x1b, 0xa8, 0x0a, 0xdb, + 0x1a, 0xc5, 0xfd, 0x03, 0xdb, 0x1d, 0xd8, 0xb8, 0xeb, 0x0c, 0x87, 0x4e, 0xbf, 0xa7, 0xd8, 0xf3, + 0x6c, 0x8a, 0xae, 0x36, 0xa4, 0xb5, 0xe7, 0xf9, 0xfd, 0xd3, 0xb7, 0x57, 0x15, 0xe3, 0xe2, 0xaa, + 0x62, 0xfc, 0x73, 0x55, 0x31, 0x7e, 0xbd, 0xae, 0x64, 0x2e, 0xae, 0x2b, 0x99, 0x3f, 0xaf, 0x2b, + 0x99, 0x1f, 0x7f, 0x48, 0x79, 0xe6, 0x24, 0xd3, 0x79, 0x40, 0x46, 0x62, 0xf9, 0x28, 0x3e, 0xf3, + 0x78, 0x48, 0xd3, 0xe1, 0x09, 0x61, 0x41, 0xd3, 0xe7, 0xe3, 0xb3, 0x09, 0x15, 0xef, 0xbc, 0x98, + 0xca, 0xe2, 0x51, 0x41, 0xbd, 0x67, 0x5f, 0xfe, 0x17, 0x00, 0x00, 0xff, 0xff, 0x9b, 0xcd, 0x22, + 0x33, 0x57, 0x07, 0x00, 0x00, } func (m *Namespace) Marshal() (dAtA []byte, err error) { @@ -470,10 +763,10 @@ func (m *Namespace) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l - if len(m.AddressRoles) > 0 { - for iNdEx := len(m.AddressRoles) - 1; iNdEx >= 0; iNdEx-- { + if len(m.PolicyManagerCapabilities) > 0 { + for iNdEx := len(m.PolicyManagerCapabilities) - 1; iNdEx >= 0; iNdEx-- { { - size, err := m.AddressRoles[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + size, err := m.PolicyManagerCapabilities[iNdEx].MarshalToSizedBuffer(dAtA[:i]) if err != nil { return 0, err } @@ -484,10 +777,10 @@ func (m *Namespace) MarshalToSizedBuffer(dAtA []byte) (int, error) { dAtA[i] = 0x3a } } - if len(m.RolePermissions) > 0 { - for iNdEx := len(m.RolePermissions) - 1; iNdEx >= 0; iNdEx-- { + if len(m.PolicyStatuses) > 0 { + for iNdEx := len(m.PolicyStatuses) - 1; iNdEx >= 0; iNdEx-- { { - size, err := m.RolePermissions[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + size, err := m.PolicyStatuses[iNdEx].MarshalToSizedBuffer(dAtA[:i]) if err != nil { return 0, err } @@ -498,40 +791,52 @@ func (m *Namespace) MarshalToSizedBuffer(dAtA []byte) (int, error) { dAtA[i] = 0x32 } } - if m.BurnsPaused { - i-- - if m.BurnsPaused { - dAtA[i] = 1 - } else { - dAtA[i] = 0 + if len(m.RoleManagers) > 0 { + for iNdEx := len(m.RoleManagers) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.RoleManagers[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintPermissions(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2a } - i-- - dAtA[i] = 0x28 } - if m.SendsPaused { - i-- - if m.SendsPaused { - dAtA[i] = 1 - } else { - dAtA[i] = 0 + if len(m.ActorRoles) > 0 { + for iNdEx := len(m.ActorRoles) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.ActorRoles[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintPermissions(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 } - i-- - dAtA[i] = 0x20 } - if m.MintsPaused { - i-- - if m.MintsPaused { - dAtA[i] = 1 - } else { - dAtA[i] = 0 + if len(m.RolePermissions) > 0 { + for iNdEx := len(m.RolePermissions) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.RolePermissions[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintPermissions(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a } - i-- - dAtA[i] = 0x18 } - if len(m.WasmHook) > 0 { - i -= len(m.WasmHook) - copy(dAtA[i:], m.WasmHook) - i = encodeVarintPermissions(dAtA, i, uint64(len(m.WasmHook))) + if len(m.ContractHook) > 0 { + i -= len(m.ContractHook) + copy(dAtA[i:], m.ContractHook) + i = encodeVarintPermissions(dAtA, i, uint64(len(m.ContractHook))) i-- dAtA[i] = 0x12 } @@ -545,7 +850,7 @@ func (m *Namespace) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func (m *AddressRoles) Marshal() (dAtA []byte, err error) { +func (m *ActorRoles) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -555,12 +860,12 @@ func (m *AddressRoles) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *AddressRoles) MarshalTo(dAtA []byte) (int, error) { +func (m *ActorRoles) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *AddressRoles) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *ActorRoles) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -574,17 +879,17 @@ func (m *AddressRoles) MarshalToSizedBuffer(dAtA []byte) (int, error) { dAtA[i] = 0x12 } } - if len(m.Address) > 0 { - i -= len(m.Address) - copy(dAtA[i:], m.Address) - i = encodeVarintPermissions(dAtA, i, uint64(len(m.Address))) + if len(m.Actor) > 0 { + i -= len(m.Actor) + copy(dAtA[i:], m.Actor) + i = encodeVarintPermissions(dAtA, i, uint64(len(m.Actor))) i-- dAtA[i] = 0xa } return len(dAtA) - i, nil } -func (m *Role) Marshal() (dAtA []byte, err error) { +func (m *RoleActors) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -594,20 +899,24 @@ func (m *Role) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *Role) MarshalTo(dAtA []byte) (int, error) { +func (m *RoleActors) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *Role) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *RoleActors) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l - if m.Permissions != 0 { - i = encodeVarintPermissions(dAtA, i, uint64(m.Permissions)) - i-- - dAtA[i] = 0x10 + if len(m.Actors) > 0 { + for iNdEx := len(m.Actors) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.Actors[iNdEx]) + copy(dAtA[i:], m.Actors[iNdEx]) + i = encodeVarintPermissions(dAtA, i, uint64(len(m.Actors[iNdEx]))) + i-- + dAtA[i] = 0x12 + } } if len(m.Role) > 0 { i -= len(m.Role) @@ -619,7 +928,7 @@ func (m *Role) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func (m *RoleIDs) Marshal() (dAtA []byte, err error) { +func (m *RoleManager) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -629,31 +938,213 @@ func (m *RoleIDs) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *RoleIDs) MarshalTo(dAtA []byte) (int, error) { +func (m *RoleManager) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *RoleIDs) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *RoleManager) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l - if len(m.RoleIds) > 0 { - dAtA2 := make([]byte, len(m.RoleIds)*10) - var j1 int - for _, num := range m.RoleIds { - for num >= 1<<7 { - dAtA2[j1] = uint8(uint64(num)&0x7f | 0x80) - num >>= 7 - j1++ - } - dAtA2[j1] = uint8(num) - j1++ + if len(m.Roles) > 0 { + for iNdEx := len(m.Roles) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.Roles[iNdEx]) + copy(dAtA[i:], m.Roles[iNdEx]) + i = encodeVarintPermissions(dAtA, i, uint64(len(m.Roles[iNdEx]))) + i-- + dAtA[i] = 0x12 } - i -= j1 - copy(dAtA[i:], dAtA2[:j1]) - i = encodeVarintPermissions(dAtA, i, uint64(j1)) + } + if len(m.Manager) > 0 { + i -= len(m.Manager) + copy(dAtA[i:], m.Manager) + i = encodeVarintPermissions(dAtA, i, uint64(len(m.Manager))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *PolicyStatus) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PolicyStatus) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *PolicyStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.IsSealed { + i-- + if m.IsSealed { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x18 + } + if m.IsDisabled { + i-- + if m.IsDisabled { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x10 + } + if m.Action != 0 { + i = encodeVarintPermissions(dAtA, i, uint64(m.Action)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *Role) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Role) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *Role) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Permissions != 0 { + i = encodeVarintPermissions(dAtA, i, uint64(m.Permissions)) + i-- + dAtA[i] = 0x18 + } + if m.RoleId != 0 { + i = encodeVarintPermissions(dAtA, i, uint64(m.RoleId)) + i-- + dAtA[i] = 0x10 + } + if len(m.Name) > 0 { + i -= len(m.Name) + copy(dAtA[i:], m.Name) + i = encodeVarintPermissions(dAtA, i, uint64(len(m.Name))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *PolicyManagerCapability) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PolicyManagerCapability) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *PolicyManagerCapability) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.CanSeal { + i-- + if m.CanSeal { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x20 + } + if m.CanDisable { + i-- + if m.CanDisable { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x18 + } + if m.Action != 0 { + i = encodeVarintPermissions(dAtA, i, uint64(m.Action)) + i-- + dAtA[i] = 0x10 + } + if len(m.Manager) > 0 { + i -= len(m.Manager) + copy(dAtA[i:], m.Manager) + i = encodeVarintPermissions(dAtA, i, uint64(len(m.Manager))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *RoleIDs) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RoleIDs) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RoleIDs) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.RoleIds) > 0 { + dAtA2 := make([]byte, len(m.RoleIds)*10) + var j1 int + for _, num := range m.RoleIds { + for num >= 1<<7 { + dAtA2[j1] = uint8(uint64(num)&0x7f | 0x80) + num >>= 7 + j1++ + } + dAtA2[j1] = uint8(num) + j1++ + } + i -= j1 + copy(dAtA[i:], dAtA2[:j1]) + i = encodeVarintPermissions(dAtA, i, uint64(j1)) i-- dAtA[i] = 0xa } @@ -717,18 +1208,16 @@ func (m *AddressVoucher) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l - if m.Voucher != nil { - { - size, err := m.Voucher.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintPermissions(dAtA, i, uint64(size)) + { + size := m.Voucher.Size() + i -= size + if _, err := m.Voucher.MarshalTo(dAtA[i:]); err != nil { + return 0, err } - i-- - dAtA[i] = 0x12 + i = encodeVarintPermissions(dAtA, i, uint64(size)) } + i-- + dAtA[i] = 0x12 if len(m.Address) > 0 { i -= len(m.Address) copy(dAtA[i:], m.Address) @@ -760,27 +1249,36 @@ func (m *Namespace) Size() (n int) { if l > 0 { n += 1 + l + sovPermissions(uint64(l)) } - l = len(m.WasmHook) + l = len(m.ContractHook) if l > 0 { n += 1 + l + sovPermissions(uint64(l)) } - if m.MintsPaused { - n += 2 + if len(m.RolePermissions) > 0 { + for _, e := range m.RolePermissions { + l = e.Size() + n += 1 + l + sovPermissions(uint64(l)) + } } - if m.SendsPaused { - n += 2 + if len(m.ActorRoles) > 0 { + for _, e := range m.ActorRoles { + l = e.Size() + n += 1 + l + sovPermissions(uint64(l)) + } } - if m.BurnsPaused { - n += 2 + if len(m.RoleManagers) > 0 { + for _, e := range m.RoleManagers { + l = e.Size() + n += 1 + l + sovPermissions(uint64(l)) + } } - if len(m.RolePermissions) > 0 { - for _, e := range m.RolePermissions { + if len(m.PolicyStatuses) > 0 { + for _, e := range m.PolicyStatuses { l = e.Size() n += 1 + l + sovPermissions(uint64(l)) } } - if len(m.AddressRoles) > 0 { - for _, e := range m.AddressRoles { + if len(m.PolicyManagerCapabilities) > 0 { + for _, e := range m.PolicyManagerCapabilities { l = e.Size() n += 1 + l + sovPermissions(uint64(l)) } @@ -788,13 +1286,13 @@ func (m *Namespace) Size() (n int) { return n } -func (m *AddressRoles) Size() (n int) { +func (m *ActorRoles) Size() (n int) { if m == nil { return 0 } var l int _ = l - l = len(m.Address) + l = len(m.Actor) if l > 0 { n += 1 + l + sovPermissions(uint64(l)) } @@ -807,7 +1305,7 @@ func (m *AddressRoles) Size() (n int) { return n } -func (m *Role) Size() (n int) { +func (m *RoleActors) Size() (n int) { if m == nil { return 0 } @@ -817,12 +1315,93 @@ func (m *Role) Size() (n int) { if l > 0 { n += 1 + l + sovPermissions(uint64(l)) } + if len(m.Actors) > 0 { + for _, s := range m.Actors { + l = len(s) + n += 1 + l + sovPermissions(uint64(l)) + } + } + return n +} + +func (m *RoleManager) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Manager) + if l > 0 { + n += 1 + l + sovPermissions(uint64(l)) + } + if len(m.Roles) > 0 { + for _, s := range m.Roles { + l = len(s) + n += 1 + l + sovPermissions(uint64(l)) + } + } + return n +} + +func (m *PolicyStatus) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Action != 0 { + n += 1 + sovPermissions(uint64(m.Action)) + } + if m.IsDisabled { + n += 2 + } + if m.IsSealed { + n += 2 + } + return n +} + +func (m *Role) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Name) + if l > 0 { + n += 1 + l + sovPermissions(uint64(l)) + } + if m.RoleId != 0 { + n += 1 + sovPermissions(uint64(m.RoleId)) + } if m.Permissions != 0 { n += 1 + sovPermissions(uint64(m.Permissions)) } return n } +func (m *PolicyManagerCapability) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Manager) + if l > 0 { + n += 1 + l + sovPermissions(uint64(l)) + } + if m.Action != 0 { + n += 1 + sovPermissions(uint64(m.Action)) + } + if m.CanDisable { + n += 2 + } + if m.CanSeal { + n += 2 + } + return n +} + func (m *RoleIDs) Size() (n int) { if m == nil { return 0 @@ -851,33 +1430,543 @@ func (m *Voucher) Size() (n int) { n += 1 + l + sovPermissions(uint64(l)) } } - return n -} + return n +} + +func (m *AddressVoucher) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Address) + if l > 0 { + n += 1 + l + sovPermissions(uint64(l)) + } + l = m.Voucher.Size() + n += 1 + l + sovPermissions(uint64(l)) + return n +} + +func sovPermissions(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozPermissions(x uint64) (n int) { + return sovPermissions(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *Namespace) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Namespace: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Namespace: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Denom", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthPermissions + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthPermissions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Denom = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ContractHook", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthPermissions + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthPermissions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ContractHook = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RolePermissions", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthPermissions + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthPermissions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.RolePermissions = append(m.RolePermissions, &Role{}) + if err := m.RolePermissions[len(m.RolePermissions)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ActorRoles", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthPermissions + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthPermissions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ActorRoles = append(m.ActorRoles, &ActorRoles{}) + if err := m.ActorRoles[len(m.ActorRoles)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RoleManagers", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthPermissions + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthPermissions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.RoleManagers = append(m.RoleManagers, &RoleManager{}) + if err := m.RoleManagers[len(m.RoleManagers)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PolicyStatuses", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthPermissions + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthPermissions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.PolicyStatuses = append(m.PolicyStatuses, &PolicyStatus{}) + if err := m.PolicyStatuses[len(m.PolicyStatuses)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PolicyManagerCapabilities", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthPermissions + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthPermissions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.PolicyManagerCapabilities = append(m.PolicyManagerCapabilities, &PolicyManagerCapability{}) + if err := m.PolicyManagerCapabilities[len(m.PolicyManagerCapabilities)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipPermissions(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthPermissions + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ActorRoles) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ActorRoles: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ActorRoles: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Actor", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthPermissions + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthPermissions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Actor = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Roles", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthPermissions + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthPermissions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Roles = append(m.Roles, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipPermissions(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthPermissions + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RoleActors) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: RoleActors: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: RoleActors: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Role", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthPermissions + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthPermissions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Role = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Actors", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthPermissions + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthPermissions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Actors = append(m.Actors, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipPermissions(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthPermissions + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } -func (m *AddressVoucher) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Address) - if l > 0 { - n += 1 + l + sovPermissions(uint64(l)) - } - if m.Voucher != nil { - l = m.Voucher.Size() - n += 1 + l + sovPermissions(uint64(l)) + if iNdEx > l { + return io.ErrUnexpectedEOF } - return n -} - -func sovPermissions(x uint64) (n int) { - return (math_bits.Len64(x|1) + 6) / 7 -} -func sozPermissions(x uint64) (n int) { - return sovPermissions(uint64((x << 1) ^ uint64((int64(x) >> 63)))) + return nil } -func (m *Namespace) Unmarshal(dAtA []byte) error { +func (m *RoleManager) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -900,15 +1989,15 @@ func (m *Namespace) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: Namespace: wiretype end group for non-group") + return fmt.Errorf("proto: RoleManager: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: Namespace: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: RoleManager: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Denom", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Manager", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -936,11 +2025,11 @@ func (m *Namespace) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Denom = string(dAtA[iNdEx:postIndex]) + m.Manager = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field WasmHook", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Roles", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -968,13 +2057,63 @@ func (m *Namespace) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.WasmHook = string(dAtA[iNdEx:postIndex]) + m.Roles = append(m.Roles, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex - case 3: + default: + iNdEx = preIndex + skippy, err := skipPermissions(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthPermissions + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PolicyStatus) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PolicyStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PolicyStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field MintsPaused", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Action", wireType) } - var v int + m.Action = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowPermissions @@ -984,15 +2123,14 @@ func (m *Namespace) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - v |= int(b&0x7F) << shift + m.Action |= Action(b&0x7F) << shift if b < 0x80 { break } } - m.MintsPaused = bool(v != 0) - case 4: + case 2: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field SendsPaused", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field IsDisabled", wireType) } var v int for shift := uint(0); ; shift += 7 { @@ -1009,10 +2147,10 @@ func (m *Namespace) Unmarshal(dAtA []byte) error { break } } - m.SendsPaused = bool(v != 0) - case 5: + m.IsDisabled = bool(v != 0) + case 3: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field BurnsPaused", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field IsSealed", wireType) } var v int for shift := uint(0); ; shift += 7 { @@ -1029,75 +2167,7 @@ func (m *Namespace) Unmarshal(dAtA []byte) error { break } } - m.BurnsPaused = bool(v != 0) - case 6: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field RolePermissions", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowPermissions - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthPermissions - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthPermissions - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.RolePermissions = append(m.RolePermissions, &Role{}) - if err := m.RolePermissions[len(m.RolePermissions)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 7: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AddressRoles", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowPermissions - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthPermissions - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthPermissions - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.AddressRoles = append(m.AddressRoles, &AddressRoles{}) - if err := m.AddressRoles[len(m.AddressRoles)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex + m.IsSealed = bool(v != 0) default: iNdEx = preIndex skippy, err := skipPermissions(dAtA[iNdEx:]) @@ -1119,7 +2189,7 @@ func (m *Namespace) Unmarshal(dAtA []byte) error { } return nil } -func (m *AddressRoles) Unmarshal(dAtA []byte) error { +func (m *Role) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -1142,15 +2212,15 @@ func (m *AddressRoles) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: AddressRoles: wiretype end group for non-group") + return fmt.Errorf("proto: Role: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: AddressRoles: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: Role: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Address", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -1178,13 +2248,13 @@ func (m *AddressRoles) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Address = string(dAtA[iNdEx:postIndex]) + m.Name = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Roles", wireType) + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field RoleId", wireType) } - var stringLen uint64 + m.RoleId = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowPermissions @@ -1194,24 +2264,30 @@ func (m *AddressRoles) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + m.RoleId |= uint32(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthPermissions - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthPermissions + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Permissions", wireType) } - if postIndex > l { - return io.ErrUnexpectedEOF + m.Permissions = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Permissions |= uint32(b&0x7F) << shift + if b < 0x80 { + break + } } - m.Roles = append(m.Roles, string(dAtA[iNdEx:postIndex])) - iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipPermissions(dAtA[iNdEx:]) @@ -1233,7 +2309,7 @@ func (m *AddressRoles) Unmarshal(dAtA []byte) error { } return nil } -func (m *Role) Unmarshal(dAtA []byte) error { +func (m *PolicyManagerCapability) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -1256,15 +2332,15 @@ func (m *Role) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: Role: wiretype end group for non-group") + return fmt.Errorf("proto: PolicyManagerCapability: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: Role: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: PolicyManagerCapability: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Role", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Manager", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -1292,13 +2368,13 @@ func (m *Role) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Role = string(dAtA[iNdEx:postIndex]) + m.Manager = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Permissions", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Action", wireType) } - m.Permissions = 0 + m.Action = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowPermissions @@ -1308,11 +2384,51 @@ func (m *Role) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Permissions |= uint32(b&0x7F) << shift + m.Action |= Action(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field CanDisable", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.CanDisable = bool(v != 0) + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field CanSeal", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift if b < 0x80 { break } } + m.CanSeal = bool(v != 0) default: iNdEx = preIndex skippy, err := skipPermissions(dAtA[iNdEx:]) @@ -1634,9 +2750,6 @@ func (m *AddressVoucher) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Voucher == nil { - m.Voucher = &Voucher{} - } if err := m.Voucher.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } diff --git a/chain/permissions/types/query.pb.go b/chain/permissions/types/query.pb.go index 78206717..6fe5e1e4 100644 --- a/chain/permissions/types/query.pb.go +++ b/chain/permissions/types/query.pb.go @@ -6,8 +6,8 @@ package types import ( context "context" fmt "fmt" + _ "github.com/cosmos/cosmos-sdk/types" github_com_cosmos_cosmos_sdk_types "github.com/cosmos/cosmos-sdk/types" - types "github.com/cosmos/cosmos-sdk/types" _ "github.com/cosmos/cosmos-sdk/types/query" _ "github.com/cosmos/gogoproto/gogoproto" grpc1 "github.com/cosmos/gogoproto/grpc" @@ -115,23 +115,23 @@ func (m *QueryParamsResponse) GetParams() Params { return Params{} } -// QueryAllNamespacesRequest is the request type for the Query/AllNamespaces RPC +// QueryNamespaceDenomsRequest is the request type for the Query/NamespaceDenoms RPC // method. -type QueryAllNamespacesRequest struct { +type QueryNamespaceDenomsRequest struct { } -func (m *QueryAllNamespacesRequest) Reset() { *m = QueryAllNamespacesRequest{} } -func (m *QueryAllNamespacesRequest) String() string { return proto.CompactTextString(m) } -func (*QueryAllNamespacesRequest) ProtoMessage() {} -func (*QueryAllNamespacesRequest) Descriptor() ([]byte, []int) { +func (m *QueryNamespaceDenomsRequest) Reset() { *m = QueryNamespaceDenomsRequest{} } +func (m *QueryNamespaceDenomsRequest) String() string { return proto.CompactTextString(m) } +func (*QueryNamespaceDenomsRequest) ProtoMessage() {} +func (*QueryNamespaceDenomsRequest) Descriptor() ([]byte, []int) { return fileDescriptor_e0ae50f1018498b3, []int{2} } -func (m *QueryAllNamespacesRequest) XXX_Unmarshal(b []byte) error { +func (m *QueryNamespaceDenomsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *QueryAllNamespacesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *QueryNamespaceDenomsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_QueryAllNamespacesRequest.Marshal(b, m, deterministic) + return xxx_messageInfo_QueryNamespaceDenomsRequest.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -141,36 +141,36 @@ func (m *QueryAllNamespacesRequest) XXX_Marshal(b []byte, deterministic bool) ([ return b[:n], nil } } -func (m *QueryAllNamespacesRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryAllNamespacesRequest.Merge(m, src) +func (m *QueryNamespaceDenomsRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryNamespaceDenomsRequest.Merge(m, src) } -func (m *QueryAllNamespacesRequest) XXX_Size() int { +func (m *QueryNamespaceDenomsRequest) XXX_Size() int { return m.Size() } -func (m *QueryAllNamespacesRequest) XXX_DiscardUnknown() { - xxx_messageInfo_QueryAllNamespacesRequest.DiscardUnknown(m) +func (m *QueryNamespaceDenomsRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryNamespaceDenomsRequest.DiscardUnknown(m) } -var xxx_messageInfo_QueryAllNamespacesRequest proto.InternalMessageInfo +var xxx_messageInfo_QueryNamespaceDenomsRequest proto.InternalMessageInfo -// QueryAllNamespacesResponse is the response type for the Query/AllNamespaces +// QueryNamespaceDenomsResponse is the response type for the Query/NamespaceDenoms // RPC method. -type QueryAllNamespacesResponse struct { - Namespaces []*Namespace `protobuf:"bytes,1,rep,name=namespaces,proto3" json:"namespaces,omitempty"` +type QueryNamespaceDenomsResponse struct { + Denoms []string `protobuf:"bytes,1,rep,name=denoms,proto3" json:"denoms,omitempty"` } -func (m *QueryAllNamespacesResponse) Reset() { *m = QueryAllNamespacesResponse{} } -func (m *QueryAllNamespacesResponse) String() string { return proto.CompactTextString(m) } -func (*QueryAllNamespacesResponse) ProtoMessage() {} -func (*QueryAllNamespacesResponse) Descriptor() ([]byte, []int) { +func (m *QueryNamespaceDenomsResponse) Reset() { *m = QueryNamespaceDenomsResponse{} } +func (m *QueryNamespaceDenomsResponse) String() string { return proto.CompactTextString(m) } +func (*QueryNamespaceDenomsResponse) ProtoMessage() {} +func (*QueryNamespaceDenomsResponse) Descriptor() ([]byte, []int) { return fileDescriptor_e0ae50f1018498b3, []int{3} } -func (m *QueryAllNamespacesResponse) XXX_Unmarshal(b []byte) error { +func (m *QueryNamespaceDenomsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *QueryAllNamespacesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *QueryNamespaceDenomsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_QueryAllNamespacesResponse.Marshal(b, m, deterministic) + return xxx_messageInfo_QueryNamespaceDenomsResponse.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -180,44 +180,81 @@ func (m *QueryAllNamespacesResponse) XXX_Marshal(b []byte, deterministic bool) ( return b[:n], nil } } -func (m *QueryAllNamespacesResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryAllNamespacesResponse.Merge(m, src) +func (m *QueryNamespaceDenomsResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryNamespaceDenomsResponse.Merge(m, src) } -func (m *QueryAllNamespacesResponse) XXX_Size() int { +func (m *QueryNamespaceDenomsResponse) XXX_Size() int { return m.Size() } -func (m *QueryAllNamespacesResponse) XXX_DiscardUnknown() { - xxx_messageInfo_QueryAllNamespacesResponse.DiscardUnknown(m) +func (m *QueryNamespaceDenomsResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryNamespaceDenomsResponse.DiscardUnknown(m) } -var xxx_messageInfo_QueryAllNamespacesResponse proto.InternalMessageInfo +var xxx_messageInfo_QueryNamespaceDenomsResponse proto.InternalMessageInfo -func (m *QueryAllNamespacesResponse) GetNamespaces() []*Namespace { +func (m *QueryNamespaceDenomsResponse) GetDenoms() []string { if m != nil { - return m.Namespaces + return m.Denoms } return nil } -// QueryNamespaceByDenomRequest is the request type for the -// Query/NamespaceByDenom RPC method. -type QueryNamespaceByDenomRequest struct { - Denom string `protobuf:"bytes,1,opt,name=denom,proto3" json:"denom,omitempty"` - IncludeRoles bool `protobuf:"varint,2,opt,name=include_roles,json=includeRoles,proto3" json:"include_roles,omitempty"` +// QueryNamespacesRequest is the request type for the Query/Namespaces RPC +// method. +type QueryNamespacesRequest struct { } -func (m *QueryNamespaceByDenomRequest) Reset() { *m = QueryNamespaceByDenomRequest{} } -func (m *QueryNamespaceByDenomRequest) String() string { return proto.CompactTextString(m) } -func (*QueryNamespaceByDenomRequest) ProtoMessage() {} -func (*QueryNamespaceByDenomRequest) Descriptor() ([]byte, []int) { +func (m *QueryNamespacesRequest) Reset() { *m = QueryNamespacesRequest{} } +func (m *QueryNamespacesRequest) String() string { return proto.CompactTextString(m) } +func (*QueryNamespacesRequest) ProtoMessage() {} +func (*QueryNamespacesRequest) Descriptor() ([]byte, []int) { return fileDescriptor_e0ae50f1018498b3, []int{4} } -func (m *QueryNamespaceByDenomRequest) XXX_Unmarshal(b []byte) error { +func (m *QueryNamespacesRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryNamespacesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryNamespacesRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryNamespacesRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryNamespacesRequest.Merge(m, src) +} +func (m *QueryNamespacesRequest) XXX_Size() int { + return m.Size() +} +func (m *QueryNamespacesRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryNamespacesRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryNamespacesRequest proto.InternalMessageInfo + +// QueryNamespacesResponse is the response type for the Query/Namespaces +// RPC method. +type QueryNamespacesResponse struct { + Namespaces []*Namespace `protobuf:"bytes,1,rep,name=namespaces,proto3" json:"namespaces,omitempty"` +} + +func (m *QueryNamespacesResponse) Reset() { *m = QueryNamespacesResponse{} } +func (m *QueryNamespacesResponse) String() string { return proto.CompactTextString(m) } +func (*QueryNamespacesResponse) ProtoMessage() {} +func (*QueryNamespacesResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_e0ae50f1018498b3, []int{5} +} +func (m *QueryNamespacesResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *QueryNamespaceByDenomRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *QueryNamespacesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_QueryNamespaceByDenomRequest.Marshal(b, m, deterministic) + return xxx_messageInfo_QueryNamespacesResponse.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -227,50 +264,89 @@ func (m *QueryNamespaceByDenomRequest) XXX_Marshal(b []byte, deterministic bool) return b[:n], nil } } -func (m *QueryNamespaceByDenomRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryNamespaceByDenomRequest.Merge(m, src) +func (m *QueryNamespacesResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryNamespacesResponse.Merge(m, src) } -func (m *QueryNamespaceByDenomRequest) XXX_Size() int { +func (m *QueryNamespacesResponse) XXX_Size() int { return m.Size() } -func (m *QueryNamespaceByDenomRequest) XXX_DiscardUnknown() { - xxx_messageInfo_QueryNamespaceByDenomRequest.DiscardUnknown(m) +func (m *QueryNamespacesResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryNamespacesResponse.DiscardUnknown(m) } -var xxx_messageInfo_QueryNamespaceByDenomRequest proto.InternalMessageInfo +var xxx_messageInfo_QueryNamespacesResponse proto.InternalMessageInfo -func (m *QueryNamespaceByDenomRequest) GetDenom() string { +func (m *QueryNamespacesResponse) GetNamespaces() []*Namespace { if m != nil { - return m.Denom + return m.Namespaces } - return "" + return nil } -func (m *QueryNamespaceByDenomRequest) GetIncludeRoles() bool { +// QueryNamespaceRequest is the request type for the +// Query/Namespace RPC method. +type QueryNamespaceRequest struct { + Denom string `protobuf:"bytes,1,opt,name=denom,proto3" json:"denom,omitempty"` +} + +func (m *QueryNamespaceRequest) Reset() { *m = QueryNamespaceRequest{} } +func (m *QueryNamespaceRequest) String() string { return proto.CompactTextString(m) } +func (*QueryNamespaceRequest) ProtoMessage() {} +func (*QueryNamespaceRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_e0ae50f1018498b3, []int{6} +} +func (m *QueryNamespaceRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryNamespaceRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryNamespaceRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryNamespaceRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryNamespaceRequest.Merge(m, src) +} +func (m *QueryNamespaceRequest) XXX_Size() int { + return m.Size() +} +func (m *QueryNamespaceRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryNamespaceRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryNamespaceRequest proto.InternalMessageInfo + +func (m *QueryNamespaceRequest) GetDenom() string { if m != nil { - return m.IncludeRoles + return m.Denom } - return false + return "" } -// QueryNamespaceByDenomResponse is the response type for the +// QueryNamespaceResponse is the response type for the // Query/NamespaceByDenom RPC method. -type QueryNamespaceByDenomResponse struct { +type QueryNamespaceResponse struct { Namespace *Namespace `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"` } -func (m *QueryNamespaceByDenomResponse) Reset() { *m = QueryNamespaceByDenomResponse{} } -func (m *QueryNamespaceByDenomResponse) String() string { return proto.CompactTextString(m) } -func (*QueryNamespaceByDenomResponse) ProtoMessage() {} -func (*QueryNamespaceByDenomResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_e0ae50f1018498b3, []int{5} +func (m *QueryNamespaceResponse) Reset() { *m = QueryNamespaceResponse{} } +func (m *QueryNamespaceResponse) String() string { return proto.CompactTextString(m) } +func (*QueryNamespaceResponse) ProtoMessage() {} +func (*QueryNamespaceResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_e0ae50f1018498b3, []int{7} } -func (m *QueryNamespaceByDenomResponse) XXX_Unmarshal(b []byte) error { +func (m *QueryNamespaceResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *QueryNamespaceByDenomResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *QueryNamespaceResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_QueryNamespaceByDenomResponse.Marshal(b, m, deterministic) + return xxx_messageInfo_QueryNamespaceResponse.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -280,19 +356,19 @@ func (m *QueryNamespaceByDenomResponse) XXX_Marshal(b []byte, deterministic bool return b[:n], nil } } -func (m *QueryNamespaceByDenomResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryNamespaceByDenomResponse.Merge(m, src) +func (m *QueryNamespaceResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryNamespaceResponse.Merge(m, src) } -func (m *QueryNamespaceByDenomResponse) XXX_Size() int { +func (m *QueryNamespaceResponse) XXX_Size() int { return m.Size() } -func (m *QueryNamespaceByDenomResponse) XXX_DiscardUnknown() { - xxx_messageInfo_QueryNamespaceByDenomResponse.DiscardUnknown(m) +func (m *QueryNamespaceResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryNamespaceResponse.DiscardUnknown(m) } -var xxx_messageInfo_QueryNamespaceByDenomResponse proto.InternalMessageInfo +var xxx_messageInfo_QueryNamespaceResponse proto.InternalMessageInfo -func (m *QueryNamespaceByDenomResponse) GetNamespace() *Namespace { +func (m *QueryNamespaceResponse) GetNamespace() *Namespace { if m != nil { return m.Namespace } @@ -301,23 +377,23 @@ func (m *QueryNamespaceByDenomResponse) GetNamespace() *Namespace { // QueryAddressesByRoleRequest is the request type for the Query/AddressesByRole // RPC method. -type QueryAddressesByRoleRequest struct { +type QueryActorsByRoleRequest struct { Denom string `protobuf:"bytes,1,opt,name=denom,proto3" json:"denom,omitempty"` Role string `protobuf:"bytes,2,opt,name=role,proto3" json:"role,omitempty"` } -func (m *QueryAddressesByRoleRequest) Reset() { *m = QueryAddressesByRoleRequest{} } -func (m *QueryAddressesByRoleRequest) String() string { return proto.CompactTextString(m) } -func (*QueryAddressesByRoleRequest) ProtoMessage() {} -func (*QueryAddressesByRoleRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_e0ae50f1018498b3, []int{6} +func (m *QueryActorsByRoleRequest) Reset() { *m = QueryActorsByRoleRequest{} } +func (m *QueryActorsByRoleRequest) String() string { return proto.CompactTextString(m) } +func (*QueryActorsByRoleRequest) ProtoMessage() {} +func (*QueryActorsByRoleRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_e0ae50f1018498b3, []int{8} } -func (m *QueryAddressesByRoleRequest) XXX_Unmarshal(b []byte) error { +func (m *QueryActorsByRoleRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *QueryAddressesByRoleRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *QueryActorsByRoleRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_QueryAddressesByRoleRequest.Marshal(b, m, deterministic) + return xxx_messageInfo_QueryActorsByRoleRequest.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -327,26 +403,26 @@ func (m *QueryAddressesByRoleRequest) XXX_Marshal(b []byte, deterministic bool) return b[:n], nil } } -func (m *QueryAddressesByRoleRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryAddressesByRoleRequest.Merge(m, src) +func (m *QueryActorsByRoleRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryActorsByRoleRequest.Merge(m, src) } -func (m *QueryAddressesByRoleRequest) XXX_Size() int { +func (m *QueryActorsByRoleRequest) XXX_Size() int { return m.Size() } -func (m *QueryAddressesByRoleRequest) XXX_DiscardUnknown() { - xxx_messageInfo_QueryAddressesByRoleRequest.DiscardUnknown(m) +func (m *QueryActorsByRoleRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryActorsByRoleRequest.DiscardUnknown(m) } -var xxx_messageInfo_QueryAddressesByRoleRequest proto.InternalMessageInfo +var xxx_messageInfo_QueryActorsByRoleRequest proto.InternalMessageInfo -func (m *QueryAddressesByRoleRequest) GetDenom() string { +func (m *QueryActorsByRoleRequest) GetDenom() string { if m != nil { return m.Denom } return "" } -func (m *QueryAddressesByRoleRequest) GetRole() string { +func (m *QueryActorsByRoleRequest) GetRole() string { if m != nil { return m.Role } @@ -355,22 +431,22 @@ func (m *QueryAddressesByRoleRequest) GetRole() string { // QueryAddressesByRoleResponse is the response type for the // Query/AddressesByRole RPC method. -type QueryAddressesByRoleResponse struct { - Addresses []string `protobuf:"bytes,1,rep,name=addresses,proto3" json:"addresses,omitempty"` +type QueryActorsByRoleResponse struct { + Actors []string `protobuf:"bytes,1,rep,name=actors,proto3" json:"actors,omitempty"` } -func (m *QueryAddressesByRoleResponse) Reset() { *m = QueryAddressesByRoleResponse{} } -func (m *QueryAddressesByRoleResponse) String() string { return proto.CompactTextString(m) } -func (*QueryAddressesByRoleResponse) ProtoMessage() {} -func (*QueryAddressesByRoleResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_e0ae50f1018498b3, []int{7} +func (m *QueryActorsByRoleResponse) Reset() { *m = QueryActorsByRoleResponse{} } +func (m *QueryActorsByRoleResponse) String() string { return proto.CompactTextString(m) } +func (*QueryActorsByRoleResponse) ProtoMessage() {} +func (*QueryActorsByRoleResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_e0ae50f1018498b3, []int{9} } -func (m *QueryAddressesByRoleResponse) XXX_Unmarshal(b []byte) error { +func (m *QueryActorsByRoleResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *QueryAddressesByRoleResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *QueryActorsByRoleResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_QueryAddressesByRoleResponse.Marshal(b, m, deterministic) + return xxx_messageInfo_QueryActorsByRoleResponse.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -380,42 +456,44 @@ func (m *QueryAddressesByRoleResponse) XXX_Marshal(b []byte, deterministic bool) return b[:n], nil } } -func (m *QueryAddressesByRoleResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryAddressesByRoleResponse.Merge(m, src) +func (m *QueryActorsByRoleResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryActorsByRoleResponse.Merge(m, src) } -func (m *QueryAddressesByRoleResponse) XXX_Size() int { +func (m *QueryActorsByRoleResponse) XXX_Size() int { return m.Size() } -func (m *QueryAddressesByRoleResponse) XXX_DiscardUnknown() { - xxx_messageInfo_QueryAddressesByRoleResponse.DiscardUnknown(m) +func (m *QueryActorsByRoleResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryActorsByRoleResponse.DiscardUnknown(m) } -var xxx_messageInfo_QueryAddressesByRoleResponse proto.InternalMessageInfo +var xxx_messageInfo_QueryActorsByRoleResponse proto.InternalMessageInfo -func (m *QueryAddressesByRoleResponse) GetAddresses() []string { +func (m *QueryActorsByRoleResponse) GetActors() []string { if m != nil { - return m.Addresses + return m.Actors } return nil } -type QueryAddressRolesRequest struct { - Denom string `protobuf:"bytes,1,opt,name=denom,proto3" json:"denom,omitempty"` - Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"` +// QueryRolesByActorRequest is the request type for the +// Query/RolesByActor RPC method. +type QueryRolesByActorRequest struct { + Denom string `protobuf:"bytes,1,opt,name=denom,proto3" json:"denom,omitempty"` + Actor string `protobuf:"bytes,2,opt,name=actor,proto3" json:"actor,omitempty"` } -func (m *QueryAddressRolesRequest) Reset() { *m = QueryAddressRolesRequest{} } -func (m *QueryAddressRolesRequest) String() string { return proto.CompactTextString(m) } -func (*QueryAddressRolesRequest) ProtoMessage() {} -func (*QueryAddressRolesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_e0ae50f1018498b3, []int{8} +func (m *QueryRolesByActorRequest) Reset() { *m = QueryRolesByActorRequest{} } +func (m *QueryRolesByActorRequest) String() string { return proto.CompactTextString(m) } +func (*QueryRolesByActorRequest) ProtoMessage() {} +func (*QueryRolesByActorRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_e0ae50f1018498b3, []int{10} } -func (m *QueryAddressRolesRequest) XXX_Unmarshal(b []byte) error { +func (m *QueryRolesByActorRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *QueryAddressRolesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *QueryRolesByActorRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_QueryAddressRolesRequest.Marshal(b, m, deterministic) + return xxx_messageInfo_QueryRolesByActorRequest.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -425,48 +503,50 @@ func (m *QueryAddressRolesRequest) XXX_Marshal(b []byte, deterministic bool) ([] return b[:n], nil } } -func (m *QueryAddressRolesRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryAddressRolesRequest.Merge(m, src) +func (m *QueryRolesByActorRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryRolesByActorRequest.Merge(m, src) } -func (m *QueryAddressRolesRequest) XXX_Size() int { +func (m *QueryRolesByActorRequest) XXX_Size() int { return m.Size() } -func (m *QueryAddressRolesRequest) XXX_DiscardUnknown() { - xxx_messageInfo_QueryAddressRolesRequest.DiscardUnknown(m) +func (m *QueryRolesByActorRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryRolesByActorRequest.DiscardUnknown(m) } -var xxx_messageInfo_QueryAddressRolesRequest proto.InternalMessageInfo +var xxx_messageInfo_QueryRolesByActorRequest proto.InternalMessageInfo -func (m *QueryAddressRolesRequest) GetDenom() string { +func (m *QueryRolesByActorRequest) GetDenom() string { if m != nil { return m.Denom } return "" } -func (m *QueryAddressRolesRequest) GetAddress() string { +func (m *QueryRolesByActorRequest) GetActor() string { if m != nil { - return m.Address + return m.Actor } return "" } -type QueryAddressRolesResponse struct { +// QueryRolesByActorResponse is the response type for the +// Query/RolesByActor RPC method. +type QueryRolesByActorResponse struct { Roles []string `protobuf:"bytes,1,rep,name=roles,proto3" json:"roles,omitempty"` } -func (m *QueryAddressRolesResponse) Reset() { *m = QueryAddressRolesResponse{} } -func (m *QueryAddressRolesResponse) String() string { return proto.CompactTextString(m) } -func (*QueryAddressRolesResponse) ProtoMessage() {} -func (*QueryAddressRolesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_e0ae50f1018498b3, []int{9} +func (m *QueryRolesByActorResponse) Reset() { *m = QueryRolesByActorResponse{} } +func (m *QueryRolesByActorResponse) String() string { return proto.CompactTextString(m) } +func (*QueryRolesByActorResponse) ProtoMessage() {} +func (*QueryRolesByActorResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_e0ae50f1018498b3, []int{11} } -func (m *QueryAddressRolesResponse) XXX_Unmarshal(b []byte) error { +func (m *QueryRolesByActorResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *QueryAddressRolesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *QueryRolesByActorResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_QueryAddressRolesResponse.Marshal(b, m, deterministic) + return xxx_messageInfo_QueryRolesByActorResponse.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -476,41 +556,43 @@ func (m *QueryAddressRolesResponse) XXX_Marshal(b []byte, deterministic bool) ([ return b[:n], nil } } -func (m *QueryAddressRolesResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryAddressRolesResponse.Merge(m, src) +func (m *QueryRolesByActorResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryRolesByActorResponse.Merge(m, src) } -func (m *QueryAddressRolesResponse) XXX_Size() int { +func (m *QueryRolesByActorResponse) XXX_Size() int { return m.Size() } -func (m *QueryAddressRolesResponse) XXX_DiscardUnknown() { - xxx_messageInfo_QueryAddressRolesResponse.DiscardUnknown(m) +func (m *QueryRolesByActorResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryRolesByActorResponse.DiscardUnknown(m) } -var xxx_messageInfo_QueryAddressRolesResponse proto.InternalMessageInfo +var xxx_messageInfo_QueryRolesByActorResponse proto.InternalMessageInfo -func (m *QueryAddressRolesResponse) GetRoles() []string { +func (m *QueryRolesByActorResponse) GetRoles() []string { if m != nil { return m.Roles } return nil } -type QueryVouchersForAddressRequest struct { - Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` +// QueryRoleManagersRequest is the request type for the Query/RoleManagers +// RPC method. +type QueryRoleManagersRequest struct { + Denom string `protobuf:"bytes,1,opt,name=denom,proto3" json:"denom,omitempty"` } -func (m *QueryVouchersForAddressRequest) Reset() { *m = QueryVouchersForAddressRequest{} } -func (m *QueryVouchersForAddressRequest) String() string { return proto.CompactTextString(m) } -func (*QueryVouchersForAddressRequest) ProtoMessage() {} -func (*QueryVouchersForAddressRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_e0ae50f1018498b3, []int{10} +func (m *QueryRoleManagersRequest) Reset() { *m = QueryRoleManagersRequest{} } +func (m *QueryRoleManagersRequest) String() string { return proto.CompactTextString(m) } +func (*QueryRoleManagersRequest) ProtoMessage() {} +func (*QueryRoleManagersRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_e0ae50f1018498b3, []int{12} } -func (m *QueryVouchersForAddressRequest) XXX_Unmarshal(b []byte) error { +func (m *QueryRoleManagersRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *QueryVouchersForAddressRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *QueryRoleManagersRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_QueryVouchersForAddressRequest.Marshal(b, m, deterministic) + return xxx_messageInfo_QueryRoleManagersRequest.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -520,41 +602,43 @@ func (m *QueryVouchersForAddressRequest) XXX_Marshal(b []byte, deterministic boo return b[:n], nil } } -func (m *QueryVouchersForAddressRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryVouchersForAddressRequest.Merge(m, src) +func (m *QueryRoleManagersRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryRoleManagersRequest.Merge(m, src) } -func (m *QueryVouchersForAddressRequest) XXX_Size() int { +func (m *QueryRoleManagersRequest) XXX_Size() int { return m.Size() } -func (m *QueryVouchersForAddressRequest) XXX_DiscardUnknown() { - xxx_messageInfo_QueryVouchersForAddressRequest.DiscardUnknown(m) +func (m *QueryRoleManagersRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryRoleManagersRequest.DiscardUnknown(m) } -var xxx_messageInfo_QueryVouchersForAddressRequest proto.InternalMessageInfo +var xxx_messageInfo_QueryRoleManagersRequest proto.InternalMessageInfo -func (m *QueryVouchersForAddressRequest) GetAddress() string { +func (m *QueryRoleManagersRequest) GetDenom() string { if m != nil { - return m.Address + return m.Denom } return "" } -type QueryVouchersForAddressResponse struct { - Vouchers github_com_cosmos_cosmos_sdk_types.Coins `protobuf:"bytes,1,rep,name=vouchers,proto3,castrepeated=github.com/cosmos/cosmos-sdk/types.Coins" json:"vouchers,omitempty"` +// QueryRoleManagersResponse is the response type for the +// Query/RoleManagers RPC method. +type QueryRoleManagersResponse struct { + RoleManagers []*RoleManager `protobuf:"bytes,1,rep,name=role_managers,json=roleManagers,proto3" json:"role_managers,omitempty"` } -func (m *QueryVouchersForAddressResponse) Reset() { *m = QueryVouchersForAddressResponse{} } -func (m *QueryVouchersForAddressResponse) String() string { return proto.CompactTextString(m) } -func (*QueryVouchersForAddressResponse) ProtoMessage() {} -func (*QueryVouchersForAddressResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_e0ae50f1018498b3, []int{11} +func (m *QueryRoleManagersResponse) Reset() { *m = QueryRoleManagersResponse{} } +func (m *QueryRoleManagersResponse) String() string { return proto.CompactTextString(m) } +func (*QueryRoleManagersResponse) ProtoMessage() {} +func (*QueryRoleManagersResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_e0ae50f1018498b3, []int{13} } -func (m *QueryVouchersForAddressResponse) XXX_Unmarshal(b []byte) error { +func (m *QueryRoleManagersResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *QueryVouchersForAddressResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *QueryRoleManagersResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_QueryVouchersForAddressResponse.Marshal(b, m, deterministic) + return xxx_messageInfo_QueryRoleManagersResponse.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -564,964 +648,3567 @@ func (m *QueryVouchersForAddressResponse) XXX_Marshal(b []byte, deterministic bo return b[:n], nil } } -func (m *QueryVouchersForAddressResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryVouchersForAddressResponse.Merge(m, src) +func (m *QueryRoleManagersResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryRoleManagersResponse.Merge(m, src) } -func (m *QueryVouchersForAddressResponse) XXX_Size() int { +func (m *QueryRoleManagersResponse) XXX_Size() int { return m.Size() } -func (m *QueryVouchersForAddressResponse) XXX_DiscardUnknown() { - xxx_messageInfo_QueryVouchersForAddressResponse.DiscardUnknown(m) +func (m *QueryRoleManagersResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryRoleManagersResponse.DiscardUnknown(m) } -var xxx_messageInfo_QueryVouchersForAddressResponse proto.InternalMessageInfo +var xxx_messageInfo_QueryRoleManagersResponse proto.InternalMessageInfo -func (m *QueryVouchersForAddressResponse) GetVouchers() github_com_cosmos_cosmos_sdk_types.Coins { +func (m *QueryRoleManagersResponse) GetRoleManagers() []*RoleManager { if m != nil { - return m.Vouchers + return m.RoleManagers } return nil } -func init() { - proto.RegisterType((*QueryParamsRequest)(nil), "injective.permissions.v1beta1.QueryParamsRequest") - proto.RegisterType((*QueryParamsResponse)(nil), "injective.permissions.v1beta1.QueryParamsResponse") - proto.RegisterType((*QueryAllNamespacesRequest)(nil), "injective.permissions.v1beta1.QueryAllNamespacesRequest") - proto.RegisterType((*QueryAllNamespacesResponse)(nil), "injective.permissions.v1beta1.QueryAllNamespacesResponse") - proto.RegisterType((*QueryNamespaceByDenomRequest)(nil), "injective.permissions.v1beta1.QueryNamespaceByDenomRequest") - proto.RegisterType((*QueryNamespaceByDenomResponse)(nil), "injective.permissions.v1beta1.QueryNamespaceByDenomResponse") - proto.RegisterType((*QueryAddressesByRoleRequest)(nil), "injective.permissions.v1beta1.QueryAddressesByRoleRequest") - proto.RegisterType((*QueryAddressesByRoleResponse)(nil), "injective.permissions.v1beta1.QueryAddressesByRoleResponse") - proto.RegisterType((*QueryAddressRolesRequest)(nil), "injective.permissions.v1beta1.QueryAddressRolesRequest") - proto.RegisterType((*QueryAddressRolesResponse)(nil), "injective.permissions.v1beta1.QueryAddressRolesResponse") - proto.RegisterType((*QueryVouchersForAddressRequest)(nil), "injective.permissions.v1beta1.QueryVouchersForAddressRequest") - proto.RegisterType((*QueryVouchersForAddressResponse)(nil), "injective.permissions.v1beta1.QueryVouchersForAddressResponse") +// QueryRoleManagerRequest is the request type for the Query/RoleManager +// RPC method. +type QueryRoleManagerRequest struct { + Denom string `protobuf:"bytes,1,opt,name=denom,proto3" json:"denom,omitempty"` + Manager string `protobuf:"bytes,2,opt,name=manager,proto3" json:"manager,omitempty"` } -func init() { - proto.RegisterFile("injective/permissions/v1beta1/query.proto", fileDescriptor_e0ae50f1018498b3) +func (m *QueryRoleManagerRequest) Reset() { *m = QueryRoleManagerRequest{} } +func (m *QueryRoleManagerRequest) String() string { return proto.CompactTextString(m) } +func (*QueryRoleManagerRequest) ProtoMessage() {} +func (*QueryRoleManagerRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_e0ae50f1018498b3, []int{14} } - -var fileDescriptor_e0ae50f1018498b3 = []byte{ - // 816 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x56, 0x4d, 0x4f, 0xdb, 0x4a, - 0x14, 0xcd, 0xf0, 0x80, 0x47, 0x06, 0xd0, 0x7b, 0x9a, 0x66, 0x11, 0x0c, 0x38, 0xc8, 0x15, 0x6a, - 0xfa, 0x11, 0xbb, 0x09, 0x42, 0xe5, 0xab, 0x95, 0x1a, 0x2a, 0xfa, 0xa1, 0xaa, 0x2a, 0x5e, 0x54, - 0x2a, 0x9b, 0xc8, 0x71, 0x06, 0xe3, 0x62, 0x7b, 0x8c, 0xc7, 0x41, 0xca, 0xa2, 0x9b, 0xee, 0xba, - 0xab, 0xd4, 0x7d, 0xd5, 0x75, 0xff, 0x02, 0xdb, 0x2e, 0x58, 0x22, 0x75, 0xd3, 0x15, 0xad, 0xa0, - 0xab, 0xfe, 0x8a, 0xca, 0xe3, 0xb1, 0xe3, 0x10, 0x12, 0x87, 0x74, 0x45, 0x66, 0xee, 0x3d, 0xf7, - 0x9e, 0x73, 0x3d, 0xf7, 0x08, 0x78, 0xd3, 0x74, 0xde, 0x60, 0xdd, 0x37, 0x0f, 0xb1, 0xe2, 0x62, - 0xcf, 0x36, 0x29, 0x35, 0x89, 0x43, 0x95, 0xc3, 0x72, 0x1d, 0xfb, 0x5a, 0x59, 0x39, 0x68, 0x62, - 0xaf, 0x25, 0xbb, 0x1e, 0xf1, 0x09, 0x9a, 0x8f, 0x53, 0xe5, 0x44, 0xaa, 0xcc, 0x53, 0x85, 0x9c, - 0x41, 0x0c, 0xc2, 0x32, 0x95, 0xe0, 0x57, 0x08, 0x12, 0xe6, 0x0c, 0x42, 0x0c, 0x0b, 0x2b, 0x9a, - 0x6b, 0x2a, 0x9a, 0xe3, 0x10, 0x5f, 0xf3, 0x19, 0x2a, 0x8c, 0x8a, 0x3a, 0xa1, 0x36, 0xa1, 0x4a, - 0x5d, 0xa3, 0x38, 0xee, 0xa9, 0x13, 0xd3, 0xe1, 0xf1, 0x5b, 0xc9, 0x38, 0xe3, 0x12, 0x67, 0xb9, - 0x9a, 0x61, 0x3a, 0xac, 0x58, 0x94, 0xdb, 0x5f, 0x89, 0xab, 0x79, 0x9a, 0x1d, 0xf5, 0xbd, 0xdd, - 0x3f, 0xd7, 0xc0, 0x0e, 0xa6, 0x66, 0x94, 0xac, 0xa4, 0x14, 0x4e, 0xcc, 0x82, 0x01, 0xa4, 0x1c, - 0x44, 0xdb, 0x01, 0xd7, 0x97, 0xac, 0xa5, 0x8a, 0x0f, 0x9a, 0x98, 0xfa, 0xd2, 0x0e, 0xbc, 0xd6, - 0x71, 0x4b, 0x5d, 0xe2, 0x50, 0x8c, 0x36, 0xe1, 0x78, 0x48, 0x2d, 0x0f, 0x16, 0x40, 0x71, 0xb2, - 0xb2, 0x28, 0xf7, 0x1d, 0xb3, 0x1c, 0xc2, 0xab, 0xa3, 0xc7, 0xa7, 0x85, 0x8c, 0xca, 0xa1, 0xd2, - 0x2c, 0x9c, 0x61, 0xb5, 0x1f, 0x5a, 0xd6, 0x0b, 0xcd, 0xc6, 0xd4, 0xd5, 0x74, 0x1c, 0x37, 0xde, - 0x85, 0xc2, 0x65, 0x41, 0xde, 0xff, 0x09, 0x84, 0x4e, 0x7c, 0x9b, 0x07, 0x0b, 0xff, 0x14, 0x27, - 0x2b, 0xc5, 0x14, 0x0e, 0x71, 0x19, 0x35, 0x81, 0x95, 0x5e, 0xc3, 0x39, 0xd6, 0x27, 0x8e, 0x56, - 0x5b, 0x8f, 0xb0, 0x43, 0x6c, 0xce, 0x03, 0xe5, 0xe0, 0x58, 0x23, 0x38, 0x33, 0xa1, 0x59, 0x35, - 0x3c, 0xa0, 0xeb, 0x70, 0xda, 0x74, 0x74, 0xab, 0xd9, 0xc0, 0x35, 0x8f, 0x58, 0x98, 0xe6, 0x47, - 0x16, 0x40, 0x71, 0x42, 0x9d, 0xe2, 0x97, 0x6a, 0x70, 0x27, 0x19, 0x70, 0xbe, 0x47, 0x69, 0xae, - 0x62, 0x0b, 0x66, 0x63, 0x26, 0x7c, 0x90, 0x83, 0x8b, 0x68, 0x43, 0xa5, 0xc7, 0x70, 0x36, 0x9c, - 0x55, 0xa3, 0xe1, 0x61, 0x4a, 0x31, 0xad, 0xb6, 0x02, 0x06, 0xfd, 0x25, 0x20, 0x38, 0x1a, 0x50, - 0x67, 0xcc, 0xb3, 0x2a, 0xfb, 0x2d, 0x6d, 0xf0, 0x61, 0x74, 0x15, 0xe2, 0x84, 0xe7, 0x60, 0x56, - 0x8b, 0x42, 0x6c, 0xea, 0x59, 0xb5, 0x7d, 0x21, 0x3d, 0x83, 0xf9, 0x24, 0x9a, 0x0d, 0xa1, 0x3f, - 0x87, 0x3c, 0xfc, 0x97, 0xc3, 0x39, 0x8d, 0xe8, 0x28, 0x95, 0xa3, 0xb7, 0xd1, 0x51, 0x8b, 0xd3, - 0xc8, 0xc1, 0xb1, 0x70, 0xea, 0x21, 0x85, 0xf0, 0x20, 0xad, 0x41, 0x91, 0x41, 0x5e, 0x91, 0xa6, - 0xbe, 0x87, 0x3d, 0xba, 0x45, 0xbc, 0x08, 0xcd, 0x49, 0x24, 0xda, 0x81, 0xce, 0x76, 0x9f, 0x01, - 0x2c, 0xf4, 0x04, 0xf3, 0xae, 0x6f, 0xe1, 0xc4, 0x21, 0x8f, 0xf2, 0x17, 0x37, 0x23, 0x87, 0x9b, - 0x2e, 0x07, 0x9b, 0x1e, 0x7f, 0xa2, 0x4d, 0x62, 0x3a, 0xd5, 0xad, 0xe0, 0xa5, 0xff, 0x3e, 0x2d, - 0xa0, 0x08, 0x72, 0x87, 0xd8, 0xa6, 0x8f, 0x6d, 0xd7, 0x6f, 0x7d, 0xf9, 0x51, 0x28, 0x1a, 0xa6, - 0xbf, 0xd7, 0xac, 0xcb, 0x3a, 0xb1, 0x15, 0x6e, 0x16, 0xe1, 0x9f, 0x12, 0x6d, 0xec, 0x2b, 0x7e, - 0xcb, 0xc5, 0x94, 0x95, 0xa1, 0x6a, 0xdc, 0xb2, 0xf2, 0x3e, 0x0b, 0xc7, 0x18, 0x45, 0xf4, 0x09, - 0xc0, 0xf1, 0x70, 0xa1, 0x50, 0x39, 0xe5, 0xb9, 0x74, 0x6f, 0xb4, 0x50, 0xb9, 0x0a, 0x24, 0x94, - 0x2e, 0x95, 0xde, 0x7d, 0xfb, 0xf5, 0x71, 0xe4, 0x06, 0x5a, 0x54, 0x06, 0xb1, 0x2b, 0x74, 0x04, - 0xe0, 0x74, 0xc7, 0xde, 0xa2, 0x95, 0x41, 0x9a, 0x5e, 0xe6, 0x03, 0xc2, 0xea, 0x10, 0x48, 0xce, - 0x7a, 0x99, 0xb1, 0x56, 0x50, 0x29, 0x85, 0xb5, 0x66, 0x59, 0xb5, 0xb6, 0x23, 0xa0, 0x63, 0x00, - 0xff, 0xbf, 0xb8, 0xb2, 0x68, 0x7d, 0x10, 0x1a, 0x3d, 0x3c, 0x44, 0xd8, 0x18, 0x0e, 0xcc, 0x65, - 0xac, 0x32, 0x19, 0x4b, 0xa8, 0x9c, 0x22, 0x23, 0x96, 0x50, 0xab, 0xb7, 0x6a, 0xe1, 0x7e, 0x1d, - 0x01, 0x38, 0x95, 0xdc, 0x20, 0x74, 0x6f, 0xa0, 0x69, 0x76, 0xef, 0xaf, 0xb0, 0x72, 0x75, 0x20, - 0xa7, 0xbf, 0xc2, 0xe8, 0x57, 0xd0, 0xdd, 0xb4, 0xaf, 0x10, 0xf9, 0x48, 0x40, 0x3f, 0xd8, 0x68, - 0xf4, 0x15, 0xc0, 0xff, 0x2e, 0x38, 0x11, 0x5a, 0xbb, 0x02, 0x8f, 0x0b, 0x3e, 0x28, 0xac, 0x0f, - 0x85, 0xfd, 0x6b, 0x19, 0x27, 0x00, 0xa2, 0x6e, 0x5b, 0x41, 0xf7, 0x07, 0x61, 0xd3, 0xd3, 0xcb, - 0x84, 0x07, 0xc3, 0xc2, 0xb9, 0x9e, 0x75, 0xa6, 0x67, 0x19, 0x2d, 0xa5, 0xe8, 0x89, 0xfc, 0xa7, - 0xb6, 0x4b, 0xbc, 0x1a, 0x17, 0x57, 0xdd, 0x3f, 0x3e, 0x13, 0xc1, 0xc9, 0x99, 0x08, 0x7e, 0x9e, - 0x89, 0xe0, 0xc3, 0xb9, 0x98, 0x39, 0x39, 0x17, 0x33, 0xdf, 0xcf, 0xc5, 0xcc, 0xce, 0x76, 0xc2, - 0xd9, 0x9e, 0x46, 0x85, 0x9f, 0x6b, 0x75, 0xda, 0x6e, 0x53, 0xd2, 0x89, 0x87, 0x93, 0xc7, 0x3d, - 0xcd, 0x74, 0x14, 0x9b, 0x34, 0x9a, 0x16, 0xa6, 0x1d, 0x1c, 0x98, 0x11, 0xd6, 0xc7, 0xd9, 0xff, - 0x27, 0x4b, 0x7f, 0x02, 0x00, 0x00, 0xff, 0xff, 0x50, 0xbf, 0x64, 0x1e, 0xf5, 0x09, 0x00, 0x00, +func (m *QueryRoleManagerRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryRoleManagerRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryRoleManagerRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryRoleManagerRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryRoleManagerRequest.Merge(m, src) +} +func (m *QueryRoleManagerRequest) XXX_Size() int { + return m.Size() +} +func (m *QueryRoleManagerRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryRoleManagerRequest.DiscardUnknown(m) } -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 +var xxx_messageInfo_QueryRoleManagerRequest proto.InternalMessageInfo -// QueryClient is the client API for Query service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type QueryClient interface { - // Params defines a gRPC query method that returns the permissions module's - // parameters. - Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) - // AllNamespaces defines a gRPC query method that returns the permissions - // module's created namespaces. - AllNamespaces(ctx context.Context, in *QueryAllNamespacesRequest, opts ...grpc.CallOption) (*QueryAllNamespacesResponse, error) - // NamespaceByDenom defines a gRPC query method that returns the permissions - // module's namespace associated with the provided denom. - NamespaceByDenom(ctx context.Context, in *QueryNamespaceByDenomRequest, opts ...grpc.CallOption) (*QueryNamespaceByDenomResponse, error) - // AddressRoles defines a gRPC query method that returns address roles in the - // namespace - AddressRoles(ctx context.Context, in *QueryAddressRolesRequest, opts ...grpc.CallOption) (*QueryAddressRolesResponse, error) - // AddressesByRole defines a gRPC query method that returns a namespace's - // roles associated with the provided address. - AddressesByRole(ctx context.Context, in *QueryAddressesByRoleRequest, opts ...grpc.CallOption) (*QueryAddressesByRoleResponse, error) - // VouchersForAddress defines a gRPC query method that returns a map of - // vouchers that are held by permissions module for this address, keyed by the - // originator address - VouchersForAddress(ctx context.Context, in *QueryVouchersForAddressRequest, opts ...grpc.CallOption) (*QueryVouchersForAddressResponse, error) +func (m *QueryRoleManagerRequest) GetDenom() string { + if m != nil { + return m.Denom + } + return "" } -type queryClient struct { - cc grpc1.ClientConn +func (m *QueryRoleManagerRequest) GetManager() string { + if m != nil { + return m.Manager + } + return "" } -func NewQueryClient(cc grpc1.ClientConn) QueryClient { - return &queryClient{cc} +// QueryRoleManagerResponse is the response type for the +// Query/RoleManager RPC method. +type QueryRoleManagerResponse struct { + RoleManager *RoleManager `protobuf:"bytes,1,opt,name=role_manager,json=roleManager,proto3" json:"role_manager,omitempty"` } -func (c *queryClient) Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) { - out := new(QueryParamsResponse) - err := c.cc.Invoke(ctx, "/injective.permissions.v1beta1.Query/Params", in, out, opts...) - if err != nil { - return nil, err +func (m *QueryRoleManagerResponse) Reset() { *m = QueryRoleManagerResponse{} } +func (m *QueryRoleManagerResponse) String() string { return proto.CompactTextString(m) } +func (*QueryRoleManagerResponse) ProtoMessage() {} +func (*QueryRoleManagerResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_e0ae50f1018498b3, []int{15} +} +func (m *QueryRoleManagerResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryRoleManagerResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryRoleManagerResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil } - return out, nil +} +func (m *QueryRoleManagerResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryRoleManagerResponse.Merge(m, src) +} +func (m *QueryRoleManagerResponse) XXX_Size() int { + return m.Size() +} +func (m *QueryRoleManagerResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryRoleManagerResponse.DiscardUnknown(m) } -func (c *queryClient) AllNamespaces(ctx context.Context, in *QueryAllNamespacesRequest, opts ...grpc.CallOption) (*QueryAllNamespacesResponse, error) { - out := new(QueryAllNamespacesResponse) - err := c.cc.Invoke(ctx, "/injective.permissions.v1beta1.Query/AllNamespaces", in, out, opts...) - if err != nil { - return nil, err +var xxx_messageInfo_QueryRoleManagerResponse proto.InternalMessageInfo + +func (m *QueryRoleManagerResponse) GetRoleManager() *RoleManager { + if m != nil { + return m.RoleManager } - return out, nil + return nil } -func (c *queryClient) NamespaceByDenom(ctx context.Context, in *QueryNamespaceByDenomRequest, opts ...grpc.CallOption) (*QueryNamespaceByDenomResponse, error) { - out := new(QueryNamespaceByDenomResponse) - err := c.cc.Invoke(ctx, "/injective.permissions.v1beta1.Query/NamespaceByDenom", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil +// QueryPolicyStatusesRequest is the request type for the Query/PolicyStatuses +// RPC method. +type QueryPolicyStatusesRequest struct { + Denom string `protobuf:"bytes,1,opt,name=denom,proto3" json:"denom,omitempty"` } -func (c *queryClient) AddressRoles(ctx context.Context, in *QueryAddressRolesRequest, opts ...grpc.CallOption) (*QueryAddressRolesResponse, error) { - out := new(QueryAddressRolesResponse) - err := c.cc.Invoke(ctx, "/injective.permissions.v1beta1.Query/AddressRoles", in, out, opts...) - if err != nil { - return nil, err +func (m *QueryPolicyStatusesRequest) Reset() { *m = QueryPolicyStatusesRequest{} } +func (m *QueryPolicyStatusesRequest) String() string { return proto.CompactTextString(m) } +func (*QueryPolicyStatusesRequest) ProtoMessage() {} +func (*QueryPolicyStatusesRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_e0ae50f1018498b3, []int{16} +} +func (m *QueryPolicyStatusesRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryPolicyStatusesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryPolicyStatusesRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil } - return out, nil +} +func (m *QueryPolicyStatusesRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryPolicyStatusesRequest.Merge(m, src) +} +func (m *QueryPolicyStatusesRequest) XXX_Size() int { + return m.Size() +} +func (m *QueryPolicyStatusesRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryPolicyStatusesRequest.DiscardUnknown(m) } -func (c *queryClient) AddressesByRole(ctx context.Context, in *QueryAddressesByRoleRequest, opts ...grpc.CallOption) (*QueryAddressesByRoleResponse, error) { - out := new(QueryAddressesByRoleResponse) - err := c.cc.Invoke(ctx, "/injective.permissions.v1beta1.Query/AddressesByRole", in, out, opts...) - if err != nil { - return nil, err +var xxx_messageInfo_QueryPolicyStatusesRequest proto.InternalMessageInfo + +func (m *QueryPolicyStatusesRequest) GetDenom() string { + if m != nil { + return m.Denom } - return out, nil + return "" } -func (c *queryClient) VouchersForAddress(ctx context.Context, in *QueryVouchersForAddressRequest, opts ...grpc.CallOption) (*QueryVouchersForAddressResponse, error) { - out := new(QueryVouchersForAddressResponse) - err := c.cc.Invoke(ctx, "/injective.permissions.v1beta1.Query/VouchersForAddress", in, out, opts...) - if err != nil { - return nil, err +// QueryRoleManagerResponse is the response type for the +// Query/RoleManager RPC method. +type QueryPolicyStatusesResponse struct { + PolicyStatuses []*PolicyStatus `protobuf:"bytes,1,rep,name=policy_statuses,json=policyStatuses,proto3" json:"policy_statuses,omitempty"` +} + +func (m *QueryPolicyStatusesResponse) Reset() { *m = QueryPolicyStatusesResponse{} } +func (m *QueryPolicyStatusesResponse) String() string { return proto.CompactTextString(m) } +func (*QueryPolicyStatusesResponse) ProtoMessage() {} +func (*QueryPolicyStatusesResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_e0ae50f1018498b3, []int{17} +} +func (m *QueryPolicyStatusesResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryPolicyStatusesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryPolicyStatusesResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil } - return out, nil +} +func (m *QueryPolicyStatusesResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryPolicyStatusesResponse.Merge(m, src) +} +func (m *QueryPolicyStatusesResponse) XXX_Size() int { + return m.Size() +} +func (m *QueryPolicyStatusesResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryPolicyStatusesResponse.DiscardUnknown(m) } -// QueryServer is the server API for Query service. -type QueryServer interface { - // Params defines a gRPC query method that returns the permissions module's - // parameters. - Params(context.Context, *QueryParamsRequest) (*QueryParamsResponse, error) - // AllNamespaces defines a gRPC query method that returns the permissions - // module's created namespaces. - AllNamespaces(context.Context, *QueryAllNamespacesRequest) (*QueryAllNamespacesResponse, error) - // NamespaceByDenom defines a gRPC query method that returns the permissions - // module's namespace associated with the provided denom. - NamespaceByDenom(context.Context, *QueryNamespaceByDenomRequest) (*QueryNamespaceByDenomResponse, error) - // AddressRoles defines a gRPC query method that returns address roles in the - // namespace - AddressRoles(context.Context, *QueryAddressRolesRequest) (*QueryAddressRolesResponse, error) - // AddressesByRole defines a gRPC query method that returns a namespace's - // roles associated with the provided address. - AddressesByRole(context.Context, *QueryAddressesByRoleRequest) (*QueryAddressesByRoleResponse, error) - // VouchersForAddress defines a gRPC query method that returns a map of - // vouchers that are held by permissions module for this address, keyed by the - // originator address - VouchersForAddress(context.Context, *QueryVouchersForAddressRequest) (*QueryVouchersForAddressResponse, error) +var xxx_messageInfo_QueryPolicyStatusesResponse proto.InternalMessageInfo + +func (m *QueryPolicyStatusesResponse) GetPolicyStatuses() []*PolicyStatus { + if m != nil { + return m.PolicyStatuses + } + return nil } -// UnimplementedQueryServer can be embedded to have forward compatible implementations. -type UnimplementedQueryServer struct { +// QueryPolicyManagerCapabilitiesRequest is the request type for the Query/PolicyManagerCapabilities +// RPC method. +type QueryPolicyManagerCapabilitiesRequest struct { + Denom string `protobuf:"bytes,1,opt,name=denom,proto3" json:"denom,omitempty"` } -func (*UnimplementedQueryServer) Params(ctx context.Context, req *QueryParamsRequest) (*QueryParamsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Params not implemented") +func (m *QueryPolicyManagerCapabilitiesRequest) Reset() { *m = QueryPolicyManagerCapabilitiesRequest{} } +func (m *QueryPolicyManagerCapabilitiesRequest) String() string { return proto.CompactTextString(m) } +func (*QueryPolicyManagerCapabilitiesRequest) ProtoMessage() {} +func (*QueryPolicyManagerCapabilitiesRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_e0ae50f1018498b3, []int{18} } -func (*UnimplementedQueryServer) AllNamespaces(ctx context.Context, req *QueryAllNamespacesRequest) (*QueryAllNamespacesResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method AllNamespaces not implemented") +func (m *QueryPolicyManagerCapabilitiesRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) } -func (*UnimplementedQueryServer) NamespaceByDenom(ctx context.Context, req *QueryNamespaceByDenomRequest) (*QueryNamespaceByDenomResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method NamespaceByDenom not implemented") +func (m *QueryPolicyManagerCapabilitiesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryPolicyManagerCapabilitiesRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } } -func (*UnimplementedQueryServer) AddressRoles(ctx context.Context, req *QueryAddressRolesRequest) (*QueryAddressRolesResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method AddressRoles not implemented") +func (m *QueryPolicyManagerCapabilitiesRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryPolicyManagerCapabilitiesRequest.Merge(m, src) } -func (*UnimplementedQueryServer) AddressesByRole(ctx context.Context, req *QueryAddressesByRoleRequest) (*QueryAddressesByRoleResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method AddressesByRole not implemented") +func (m *QueryPolicyManagerCapabilitiesRequest) XXX_Size() int { + return m.Size() } -func (*UnimplementedQueryServer) VouchersForAddress(ctx context.Context, req *QueryVouchersForAddressRequest) (*QueryVouchersForAddressResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method VouchersForAddress not implemented") +func (m *QueryPolicyManagerCapabilitiesRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryPolicyManagerCapabilitiesRequest.DiscardUnknown(m) } -func RegisterQueryServer(s grpc1.Server, srv QueryServer) { - s.RegisterService(&_Query_serviceDesc, srv) -} +var xxx_messageInfo_QueryPolicyManagerCapabilitiesRequest proto.InternalMessageInfo -func _Query_Params_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(QueryParamsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(QueryServer).Params(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/injective.permissions.v1beta1.Query/Params", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(QueryServer).Params(ctx, req.(*QueryParamsRequest)) +func (m *QueryPolicyManagerCapabilitiesRequest) GetDenom() string { + if m != nil { + return m.Denom } - return interceptor(ctx, in, info, handler) + return "" } -func _Query_AllNamespaces_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(QueryAllNamespacesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(QueryServer).AllNamespaces(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/injective.permissions.v1beta1.Query/AllNamespaces", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(QueryServer).AllNamespaces(ctx, req.(*QueryAllNamespacesRequest)) - } - return interceptor(ctx, in, info, handler) +// QueryPolicyManagerCapabilitiesResponse is the response type for the +// Query/PolicyManagerCapabilities RPC method. +type QueryPolicyManagerCapabilitiesResponse struct { + PolicyManagerCapabilities []*PolicyManagerCapability `protobuf:"bytes,1,rep,name=policy_manager_capabilities,json=policyManagerCapabilities,proto3" json:"policy_manager_capabilities,omitempty"` } -func _Query_NamespaceByDenom_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(QueryNamespaceByDenomRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(QueryServer).NamespaceByDenom(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/injective.permissions.v1beta1.Query/NamespaceByDenom", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(QueryServer).NamespaceByDenom(ctx, req.(*QueryNamespaceByDenomRequest)) - } - return interceptor(ctx, in, info, handler) +func (m *QueryPolicyManagerCapabilitiesResponse) Reset() { + *m = QueryPolicyManagerCapabilitiesResponse{} } - -func _Query_AddressRoles_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(QueryAddressRolesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(QueryServer).AddressRoles(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/injective.permissions.v1beta1.Query/AddressRoles", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(QueryServer).AddressRoles(ctx, req.(*QueryAddressRolesRequest)) - } - return interceptor(ctx, in, info, handler) +func (m *QueryPolicyManagerCapabilitiesResponse) String() string { return proto.CompactTextString(m) } +func (*QueryPolicyManagerCapabilitiesResponse) ProtoMessage() {} +func (*QueryPolicyManagerCapabilitiesResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_e0ae50f1018498b3, []int{19} } - -func _Query_AddressesByRole_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(QueryAddressesByRoleRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(QueryServer).AddressesByRole(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/injective.permissions.v1beta1.Query/AddressesByRole", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(QueryServer).AddressesByRole(ctx, req.(*QueryAddressesByRoleRequest)) +func (m *QueryPolicyManagerCapabilitiesResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryPolicyManagerCapabilitiesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryPolicyManagerCapabilitiesResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil } - return interceptor(ctx, in, info, handler) +} +func (m *QueryPolicyManagerCapabilitiesResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryPolicyManagerCapabilitiesResponse.Merge(m, src) +} +func (m *QueryPolicyManagerCapabilitiesResponse) XXX_Size() int { + return m.Size() +} +func (m *QueryPolicyManagerCapabilitiesResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryPolicyManagerCapabilitiesResponse.DiscardUnknown(m) } -func _Query_VouchersForAddress_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(QueryVouchersForAddressRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(QueryServer).VouchersForAddress(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/injective.permissions.v1beta1.Query/VouchersForAddress", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(QueryServer).VouchersForAddress(ctx, req.(*QueryVouchersForAddressRequest)) +var xxx_messageInfo_QueryPolicyManagerCapabilitiesResponse proto.InternalMessageInfo + +func (m *QueryPolicyManagerCapabilitiesResponse) GetPolicyManagerCapabilities() []*PolicyManagerCapability { + if m != nil { + return m.PolicyManagerCapabilities } - return interceptor(ctx, in, info, handler) + return nil } -var _Query_serviceDesc = grpc.ServiceDesc{ - ServiceName: "injective.permissions.v1beta1.Query", - HandlerType: (*QueryServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "Params", - Handler: _Query_Params_Handler, - }, - { - MethodName: "AllNamespaces", - Handler: _Query_AllNamespaces_Handler, - }, - { - MethodName: "NamespaceByDenom", - Handler: _Query_NamespaceByDenom_Handler, - }, - { - MethodName: "AddressRoles", - Handler: _Query_AddressRoles_Handler, - }, - { - MethodName: "AddressesByRole", - Handler: _Query_AddressesByRole_Handler, - }, - { - MethodName: "VouchersForAddress", - Handler: _Query_VouchersForAddress_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "injective/permissions/v1beta1/query.proto", +type QueryVouchersRequest struct { + Denom string `protobuf:"bytes,1,opt,name=denom,proto3" json:"denom,omitempty"` } -func (m *QueryParamsRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err +func (m *QueryVouchersRequest) Reset() { *m = QueryVouchersRequest{} } +func (m *QueryVouchersRequest) String() string { return proto.CompactTextString(m) } +func (*QueryVouchersRequest) ProtoMessage() {} +func (*QueryVouchersRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_e0ae50f1018498b3, []int{20} +} +func (m *QueryVouchersRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryVouchersRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryVouchersRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil } - return dAtA[:n], nil } - -func (m *QueryParamsRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) +func (m *QueryVouchersRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryVouchersRequest.Merge(m, src) } - -func (m *QueryParamsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - return len(dAtA) - i, nil +func (m *QueryVouchersRequest) XXX_Size() int { + return m.Size() +} +func (m *QueryVouchersRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryVouchersRequest.DiscardUnknown(m) } -func (m *QueryParamsResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err +var xxx_messageInfo_QueryVouchersRequest proto.InternalMessageInfo + +func (m *QueryVouchersRequest) GetDenom() string { + if m != nil { + return m.Denom } - return dAtA[:n], nil + return "" } -func (m *QueryParamsResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) +type QueryVouchersResponse struct { + Vouchers []*AddressVoucher `protobuf:"bytes,1,rep,name=vouchers,proto3" json:"vouchers,omitempty"` } -func (m *QueryParamsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - { - size, err := m.Params.MarshalToSizedBuffer(dAtA[:i]) +func (m *QueryVouchersResponse) Reset() { *m = QueryVouchersResponse{} } +func (m *QueryVouchersResponse) String() string { return proto.CompactTextString(m) } +func (*QueryVouchersResponse) ProtoMessage() {} +func (*QueryVouchersResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_e0ae50f1018498b3, []int{21} +} +func (m *QueryVouchersResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryVouchersResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryVouchersResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) if err != nil { - return 0, err + return nil, err } - i -= size - i = encodeVarintQuery(dAtA, i, uint64(size)) + return b[:n], nil } - i-- - dAtA[i] = 0xa - return len(dAtA) - i, nil +} +func (m *QueryVouchersResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryVouchersResponse.Merge(m, src) +} +func (m *QueryVouchersResponse) XXX_Size() int { + return m.Size() +} +func (m *QueryVouchersResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryVouchersResponse.DiscardUnknown(m) } -func (m *QueryAllNamespacesRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err +var xxx_messageInfo_QueryVouchersResponse proto.InternalMessageInfo + +func (m *QueryVouchersResponse) GetVouchers() []*AddressVoucher { + if m != nil { + return m.Vouchers } - return dAtA[:n], nil + return nil } -func (m *QueryAllNamespacesRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) +type QueryVoucherRequest struct { + Denom string `protobuf:"bytes,1,opt,name=denom,proto3" json:"denom,omitempty"` + Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"` } -func (m *QueryAllNamespacesRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - return len(dAtA) - i, nil +func (m *QueryVoucherRequest) Reset() { *m = QueryVoucherRequest{} } +func (m *QueryVoucherRequest) String() string { return proto.CompactTextString(m) } +func (*QueryVoucherRequest) ProtoMessage() {} +func (*QueryVoucherRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_e0ae50f1018498b3, []int{22} } - -func (m *QueryAllNamespacesResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err +func (m *QueryVoucherRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryVoucherRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryVoucherRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil } - return dAtA[:n], nil } - -func (m *QueryAllNamespacesResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) +func (m *QueryVoucherRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryVoucherRequest.Merge(m, src) +} +func (m *QueryVoucherRequest) XXX_Size() int { + return m.Size() +} +func (m *QueryVoucherRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryVoucherRequest.DiscardUnknown(m) } -func (m *QueryAllNamespacesResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Namespaces) > 0 { - for iNdEx := len(m.Namespaces) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.Namespaces[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintQuery(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } +var xxx_messageInfo_QueryVoucherRequest proto.InternalMessageInfo + +func (m *QueryVoucherRequest) GetDenom() string { + if m != nil { + return m.Denom } - return len(dAtA) - i, nil + return "" } -func (m *QueryNamespaceByDenomRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err +func (m *QueryVoucherRequest) GetAddress() string { + if m != nil { + return m.Address } - return dAtA[:n], nil + return "" } -func (m *QueryNamespaceByDenomRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) +type QueryVoucherResponse struct { + Voucher github_com_cosmos_cosmos_sdk_types.Coin `protobuf:"bytes,1,opt,name=voucher,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Coin" json:"voucher,omitempty"` } -func (m *QueryNamespaceByDenomRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.IncludeRoles { - i-- - if m.IncludeRoles { - dAtA[i] = 1 - } else { - dAtA[i] = 0 +func (m *QueryVoucherResponse) Reset() { *m = QueryVoucherResponse{} } +func (m *QueryVoucherResponse) String() string { return proto.CompactTextString(m) } +func (*QueryVoucherResponse) ProtoMessage() {} +func (*QueryVoucherResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_e0ae50f1018498b3, []int{23} +} +func (m *QueryVoucherResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryVoucherResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryVoucherResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err } - i-- - dAtA[i] = 0x10 + return b[:n], nil } - if len(m.Denom) > 0 { - i -= len(m.Denom) - copy(dAtA[i:], m.Denom) - i = encodeVarintQuery(dAtA, i, uint64(len(m.Denom))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil +} +func (m *QueryVoucherResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryVoucherResponse.Merge(m, src) +} +func (m *QueryVoucherResponse) XXX_Size() int { + return m.Size() +} +func (m *QueryVoucherResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryVoucherResponse.DiscardUnknown(m) } -func (m *QueryNamespaceByDenomResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err +var xxx_messageInfo_QueryVoucherResponse proto.InternalMessageInfo + +// QueryModuleStateRequest is the request type for the Query/PermissionsModuleState +// RPC method. +type QueryModuleStateRequest struct { +} + +func (m *QueryModuleStateRequest) Reset() { *m = QueryModuleStateRequest{} } +func (m *QueryModuleStateRequest) String() string { return proto.CompactTextString(m) } +func (*QueryModuleStateRequest) ProtoMessage() {} +func (*QueryModuleStateRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_e0ae50f1018498b3, []int{24} +} +func (m *QueryModuleStateRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryModuleStateRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryModuleStateRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil } - return dAtA[:n], nil +} +func (m *QueryModuleStateRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryModuleStateRequest.Merge(m, src) +} +func (m *QueryModuleStateRequest) XXX_Size() int { + return m.Size() +} +func (m *QueryModuleStateRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryModuleStateRequest.DiscardUnknown(m) } -func (m *QueryNamespaceByDenomResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) +var xxx_messageInfo_QueryModuleStateRequest proto.InternalMessageInfo + +// QueryModuleStateResponse is the response type for the Query/PermissionsModuleState +// RPC method. +type QueryModuleStateResponse struct { + State *GenesisState `protobuf:"bytes,1,opt,name=state,proto3" json:"state,omitempty"` } -func (m *QueryNamespaceByDenomResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.Namespace != nil { - { - size, err := m.Namespace.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintQuery(dAtA, i, uint64(size)) +func (m *QueryModuleStateResponse) Reset() { *m = QueryModuleStateResponse{} } +func (m *QueryModuleStateResponse) String() string { return proto.CompactTextString(m) } +func (*QueryModuleStateResponse) ProtoMessage() {} +func (*QueryModuleStateResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_e0ae50f1018498b3, []int{25} +} +func (m *QueryModuleStateResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryModuleStateResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryModuleStateResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err } - i-- - dAtA[i] = 0xa + return b[:n], nil } - return len(dAtA) - i, nil +} +func (m *QueryModuleStateResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryModuleStateResponse.Merge(m, src) +} +func (m *QueryModuleStateResponse) XXX_Size() int { + return m.Size() +} +func (m *QueryModuleStateResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryModuleStateResponse.DiscardUnknown(m) } -func (m *QueryAddressesByRoleRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err +var xxx_messageInfo_QueryModuleStateResponse proto.InternalMessageInfo + +func (m *QueryModuleStateResponse) GetState() *GenesisState { + if m != nil { + return m.State } - return dAtA[:n], nil + return nil } -func (m *QueryAddressesByRoleRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) +func init() { + proto.RegisterType((*QueryParamsRequest)(nil), "injective.permissions.v1beta1.QueryParamsRequest") + proto.RegisterType((*QueryParamsResponse)(nil), "injective.permissions.v1beta1.QueryParamsResponse") + proto.RegisterType((*QueryNamespaceDenomsRequest)(nil), "injective.permissions.v1beta1.QueryNamespaceDenomsRequest") + proto.RegisterType((*QueryNamespaceDenomsResponse)(nil), "injective.permissions.v1beta1.QueryNamespaceDenomsResponse") + proto.RegisterType((*QueryNamespacesRequest)(nil), "injective.permissions.v1beta1.QueryNamespacesRequest") + proto.RegisterType((*QueryNamespacesResponse)(nil), "injective.permissions.v1beta1.QueryNamespacesResponse") + proto.RegisterType((*QueryNamespaceRequest)(nil), "injective.permissions.v1beta1.QueryNamespaceRequest") + proto.RegisterType((*QueryNamespaceResponse)(nil), "injective.permissions.v1beta1.QueryNamespaceResponse") + proto.RegisterType((*QueryActorsByRoleRequest)(nil), "injective.permissions.v1beta1.QueryActorsByRoleRequest") + proto.RegisterType((*QueryActorsByRoleResponse)(nil), "injective.permissions.v1beta1.QueryActorsByRoleResponse") + proto.RegisterType((*QueryRolesByActorRequest)(nil), "injective.permissions.v1beta1.QueryRolesByActorRequest") + proto.RegisterType((*QueryRolesByActorResponse)(nil), "injective.permissions.v1beta1.QueryRolesByActorResponse") + proto.RegisterType((*QueryRoleManagersRequest)(nil), "injective.permissions.v1beta1.QueryRoleManagersRequest") + proto.RegisterType((*QueryRoleManagersResponse)(nil), "injective.permissions.v1beta1.QueryRoleManagersResponse") + proto.RegisterType((*QueryRoleManagerRequest)(nil), "injective.permissions.v1beta1.QueryRoleManagerRequest") + proto.RegisterType((*QueryRoleManagerResponse)(nil), "injective.permissions.v1beta1.QueryRoleManagerResponse") + proto.RegisterType((*QueryPolicyStatusesRequest)(nil), "injective.permissions.v1beta1.QueryPolicyStatusesRequest") + proto.RegisterType((*QueryPolicyStatusesResponse)(nil), "injective.permissions.v1beta1.QueryPolicyStatusesResponse") + proto.RegisterType((*QueryPolicyManagerCapabilitiesRequest)(nil), "injective.permissions.v1beta1.QueryPolicyManagerCapabilitiesRequest") + proto.RegisterType((*QueryPolicyManagerCapabilitiesResponse)(nil), "injective.permissions.v1beta1.QueryPolicyManagerCapabilitiesResponse") + proto.RegisterType((*QueryVouchersRequest)(nil), "injective.permissions.v1beta1.QueryVouchersRequest") + proto.RegisterType((*QueryVouchersResponse)(nil), "injective.permissions.v1beta1.QueryVouchersResponse") + proto.RegisterType((*QueryVoucherRequest)(nil), "injective.permissions.v1beta1.QueryVoucherRequest") + proto.RegisterType((*QueryVoucherResponse)(nil), "injective.permissions.v1beta1.QueryVoucherResponse") + proto.RegisterType((*QueryModuleStateRequest)(nil), "injective.permissions.v1beta1.QueryModuleStateRequest") + proto.RegisterType((*QueryModuleStateResponse)(nil), "injective.permissions.v1beta1.QueryModuleStateResponse") } -func (m *QueryAddressesByRoleRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Role) > 0 { - i -= len(m.Role) - copy(dAtA[i:], m.Role) - i = encodeVarintQuery(dAtA, i, uint64(len(m.Role))) - i-- - dAtA[i] = 0x12 - } - if len(m.Denom) > 0 { - i -= len(m.Denom) - copy(dAtA[i:], m.Denom) - i = encodeVarintQuery(dAtA, i, uint64(len(m.Denom))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil +func init() { + proto.RegisterFile("injective/permissions/v1beta1/query.proto", fileDescriptor_e0ae50f1018498b3) } -func (m *QueryAddressesByRoleResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil +var fileDescriptor_e0ae50f1018498b3 = []byte{ + // 1263 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x98, 0x4f, 0x6f, 0x1b, 0xc5, + 0x1b, 0xc7, 0xb3, 0xfd, 0x35, 0x49, 0xf3, 0x24, 0xbf, 0x56, 0x4c, 0x4d, 0x70, 0xdc, 0xd6, 0xa9, + 0x46, 0x0a, 0x4d, 0x9b, 0xda, 0x5b, 0x3b, 0xa9, 0x13, 0x42, 0x5b, 0x88, 0xe3, 0x14, 0x82, 0x08, + 0xb4, 0x0b, 0xe2, 0x50, 0x09, 0x99, 0xf5, 0x7a, 0xe4, 0x2c, 0xb5, 0x77, 0xb6, 0x9e, 0x75, 0x24, + 0xab, 0xca, 0x85, 0x57, 0x00, 0xe2, 0x8e, 0x78, 0x05, 0x3d, 0x20, 0xce, 0x70, 0x40, 0x88, 0x1c, + 0x2b, 0x71, 0x41, 0x48, 0x44, 0x28, 0xe1, 0xc4, 0x99, 0x17, 0x80, 0x76, 0xf6, 0xd9, 0xf5, 0xda, + 0x71, 0xbc, 0xbb, 0xe1, 0x14, 0xcf, 0x9f, 0xe7, 0xfb, 0x7c, 0x9e, 0x99, 0xd9, 0x99, 0xaf, 0x02, + 0x37, 0x4d, 0xeb, 0x73, 0x66, 0x38, 0xe6, 0x1e, 0x53, 0x6d, 0xd6, 0x6e, 0x99, 0x42, 0x98, 0xdc, + 0x12, 0xea, 0x5e, 0xa1, 0xc6, 0x1c, 0xbd, 0xa0, 0x3e, 0xeb, 0xb0, 0x76, 0x37, 0x6f, 0xb7, 0xb9, + 0xc3, 0xc9, 0xb5, 0x60, 0x6a, 0x3e, 0x34, 0x35, 0x8f, 0x53, 0x33, 0xa9, 0x06, 0x6f, 0x70, 0x39, + 0x53, 0x75, 0x7f, 0x79, 0x41, 0x99, 0xab, 0x0d, 0xce, 0x1b, 0x4d, 0xa6, 0xea, 0xb6, 0xa9, 0xea, + 0x96, 0xc5, 0x1d, 0xdd, 0x91, 0x51, 0xde, 0x68, 0xd6, 0xe0, 0xa2, 0xc5, 0x85, 0x5a, 0xd3, 0x05, + 0x0b, 0x72, 0x1a, 0xdc, 0xb4, 0x70, 0xfc, 0x56, 0x78, 0x5c, 0xb2, 0x04, 0xb3, 0x6c, 0xbd, 0x61, + 0x5a, 0x52, 0xcc, 0x9f, 0x3b, 0xba, 0x12, 0x5b, 0x6f, 0xeb, 0x2d, 0x3f, 0xef, 0xd2, 0xe8, 0xb9, + 0x0d, 0x66, 0x31, 0x61, 0xfa, 0x93, 0xd5, 0x08, 0xe1, 0xd0, 0x5a, 0xc8, 0x00, 0x9a, 0x02, 0xf2, + 0xd8, 0x65, 0x7d, 0x24, 0x53, 0x6a, 0xec, 0x59, 0x87, 0x09, 0x87, 0x3e, 0x81, 0xcb, 0x7d, 0xbd, + 0xc2, 0xe6, 0x96, 0x60, 0x64, 0x13, 0x26, 0x3c, 0xb4, 0xb4, 0x72, 0x5d, 0x59, 0x9c, 0x2e, 0x2e, + 0xe4, 0x47, 0x2e, 0x73, 0xde, 0x0b, 0x2f, 0x9f, 0x3f, 0x38, 0x9c, 0x1f, 0xd3, 0x30, 0x94, 0x5e, + 0x83, 0x2b, 0x52, 0xfb, 0x03, 0xbd, 0xc5, 0x84, 0xad, 0x1b, 0xac, 0xc2, 0x2c, 0xde, 0x4b, 0x5d, + 0x82, 0xab, 0xc3, 0x87, 0x91, 0x61, 0x16, 0x26, 0xea, 0xb2, 0x27, 0xad, 0x5c, 0xff, 0xdf, 0xe2, + 0x94, 0x86, 0x2d, 0x9a, 0x86, 0xd9, 0xfe, 0xb8, 0x40, 0xd1, 0x80, 0xd7, 0x4e, 0x8c, 0xa0, 0xd8, + 0xbb, 0x00, 0x56, 0xd0, 0x2b, 0x05, 0xa7, 0x8b, 0x8b, 0x11, 0x45, 0x05, 0x32, 0x5a, 0x28, 0x96, + 0xe6, 0xe0, 0xd5, 0xfe, 0x24, 0x98, 0x9d, 0xa4, 0x60, 0x5c, 0x12, 0xca, 0x25, 0x9b, 0xd2, 0xbc, + 0x06, 0xfd, 0x6c, 0x90, 0x36, 0x40, 0x7a, 0x08, 0x53, 0x81, 0x2c, 0x2e, 0x73, 0x7c, 0xa2, 0x5e, + 0x28, 0xad, 0x40, 0x5a, 0x66, 0xd8, 0x30, 0x1c, 0xde, 0x16, 0xe5, 0xae, 0xc6, 0x9b, 0xa3, 0x99, + 0x08, 0x81, 0xf3, 0x6d, 0xde, 0x64, 0xe9, 0x73, 0xb2, 0x53, 0xfe, 0xa6, 0xcb, 0x30, 0x37, 0x44, + 0xa5, 0xb7, 0x15, 0xba, 0xec, 0xf7, 0xb7, 0xc2, 0x6b, 0xd1, 0x87, 0x98, 0xda, 0x9d, 0x2c, 0xca, + 0x5e, 0xec, 0xe8, 0xd4, 0x29, 0x18, 0x97, 0xb1, 0x98, 0xdb, 0x6b, 0xd0, 0x02, 0x26, 0xef, 0xd7, + 0xc1, 0xe4, 0x29, 0x18, 0x77, 0x09, 0xfd, 0xdc, 0x5e, 0x83, 0xde, 0x09, 0xa5, 0xde, 0xd1, 0x2d, + 0xbd, 0xc1, 0xda, 0x62, 0xf4, 0x4e, 0x34, 0x43, 0x49, 0x7a, 0x11, 0x98, 0xe4, 0x43, 0xf8, 0xbf, + 0xab, 0x5b, 0x6d, 0xe1, 0x00, 0x1e, 0x91, 0x5b, 0x11, 0x1b, 0x12, 0xd2, 0xd2, 0x66, 0xda, 0x21, + 0x61, 0xba, 0x8d, 0x67, 0x31, 0x3c, 0x63, 0xe4, 0xca, 0xa4, 0x61, 0x12, 0x93, 0xe3, 0xda, 0xf8, + 0x4d, 0x6a, 0x9e, 0x2c, 0x35, 0xe0, 0xde, 0x81, 0x99, 0x30, 0x37, 0x9e, 0xa3, 0x24, 0xd8, 0xd3, + 0x21, 0x6c, 0x5a, 0x84, 0x8c, 0x77, 0x1d, 0xf0, 0xa6, 0x69, 0x74, 0x3f, 0x72, 0x74, 0xa7, 0x23, + 0x58, 0xc4, 0xba, 0x0a, 0xfc, 0xcc, 0x07, 0x63, 0x90, 0xf0, 0x63, 0xb8, 0x64, 0xcb, 0x91, 0xaa, + 0xc0, 0x21, 0x5c, 0xdb, 0xa5, 0xa8, 0x3b, 0x25, 0xa4, 0xa7, 0x5d, 0xb4, 0xfb, 0xd4, 0xe9, 0x7d, + 0x58, 0x08, 0x25, 0x45, 0xfc, 0x4d, 0xdd, 0xd6, 0x6b, 0x66, 0xd3, 0x74, 0xcc, 0x28, 0xe6, 0x6f, + 0x15, 0x78, 0x3d, 0x2a, 0x1e, 0xf9, 0xf7, 0xe0, 0x0a, 0xf2, 0xe3, 0x1a, 0x57, 0x8d, 0xd0, 0x34, + 0xac, 0xa5, 0x14, 0xab, 0x96, 0xc1, 0x34, 0x5d, 0x6d, 0xce, 0x3e, 0x2d, 0x3f, 0xbd, 0x0d, 0x29, + 0x49, 0xf8, 0x09, 0xef, 0x18, 0xbb, 0x91, 0x87, 0xbb, 0x86, 0xb7, 0x52, 0x6f, 0x36, 0xe2, 0x6f, + 0xc3, 0x85, 0x3d, 0xec, 0x43, 0xd6, 0x5c, 0x04, 0xeb, 0x46, 0xbd, 0xde, 0x66, 0x42, 0xa0, 0x92, + 0x16, 0x84, 0xd3, 0x2d, 0x7c, 0x2b, 0xfc, 0x91, 0xa8, 0xe3, 0xac, 0x7b, 0x42, 0xfe, 0x71, 0xc6, + 0x26, 0xfd, 0x4a, 0xe9, 0xaf, 0x2c, 0x40, 0xed, 0xc2, 0x24, 0xe6, 0xc2, 0x63, 0x3c, 0x97, 0xf7, + 0x5e, 0xda, 0xbc, 0xfb, 0xd2, 0x06, 0x7c, 0x9b, 0xdc, 0xb4, 0xca, 0x15, 0xf7, 0xa5, 0xf9, 0xfd, + 0x70, 0xfe, 0x46, 0xc3, 0x74, 0x76, 0x3b, 0xb5, 0xbc, 0xc1, 0x5b, 0x2a, 0x3e, 0xcb, 0xde, 0x9f, + 0x9c, 0xa8, 0x3f, 0x55, 0x9d, 0xae, 0xcd, 0x84, 0x0c, 0xf8, 0xfb, 0x70, 0xfe, 0x15, 0x14, 0xbf, + 0xcd, 0x5b, 0xa6, 0xc3, 0x5a, 0xb6, 0xd3, 0xd5, 0xfc, 0x7c, 0x74, 0x0e, 0xbf, 0xd6, 0x1d, 0x5e, + 0xef, 0x34, 0x99, 0x7b, 0xca, 0xfc, 0x2b, 0x94, 0x7e, 0x8a, 0x5f, 0x5f, 0xdf, 0x10, 0x12, 0x6f, + 0xc0, 0xb8, 0x7b, 0xa8, 0xfd, 0xeb, 0x3b, 0xea, 0x44, 0xbf, 0xe3, 0xbd, 0xe0, 0x9e, 0x86, 0x17, + 0x59, 0xfc, 0xe3, 0x32, 0x8c, 0x4b, 0x7d, 0xf2, 0x8d, 0x02, 0x13, 0xde, 0x3b, 0x4a, 0x0a, 0x11, + 0x42, 0x27, 0x1f, 0xf2, 0x4c, 0x31, 0x49, 0x88, 0x87, 0x4f, 0x73, 0x5f, 0xfc, 0xfa, 0xd7, 0xd7, + 0xe7, 0x6e, 0x90, 0x05, 0x35, 0x8e, 0x4b, 0x21, 0x3f, 0x29, 0x70, 0x69, 0xe0, 0xb1, 0x26, 0xeb, + 0x71, 0xd2, 0x0e, 0x37, 0x00, 0x99, 0x37, 0xcf, 0x14, 0x8b, 0xec, 0xab, 0x92, 0xbd, 0x40, 0xd4, + 0x08, 0xf6, 0xe0, 0x9d, 0xac, 0x7a, 0xf6, 0x81, 0xbc, 0x50, 0x00, 0x7a, 0x06, 0x81, 0xdc, 0x4d, + 0x04, 0x11, 0xb0, 0x97, 0x92, 0x86, 0x21, 0x76, 0x41, 0x62, 0x2f, 0x91, 0x9b, 0x71, 0xb1, 0x05, + 0xf9, 0x4e, 0x81, 0xa9, 0x40, 0x89, 0xac, 0x24, 0x4a, 0xec, 0xe3, 0xde, 0x4d, 0x18, 0x85, 0xb4, + 0x6b, 0x92, 0xb6, 0x48, 0xee, 0xc4, 0xa5, 0x55, 0x9f, 0xcb, 0x55, 0xde, 0x27, 0x07, 0x0a, 0xcc, + 0x84, 0x5f, 0x73, 0xb2, 0x1a, 0x87, 0x60, 0x88, 0x8f, 0xc8, 0xac, 0x25, 0x0f, 0x44, 0xfa, 0x2d, + 0x49, 0xff, 0x16, 0xb9, 0x1f, 0x41, 0x2f, 0x0d, 0x45, 0xb5, 0xd6, 0xad, 0x4a, 0x33, 0xe2, 0x97, + 0xa0, 0x3e, 0x97, 0xcd, 0x7d, 0xf2, 0x8b, 0x02, 0x33, 0x61, 0x57, 0x14, 0xaf, 0x94, 0x21, 0x6e, + 0x2c, 0x5e, 0x29, 0xc3, 0x0c, 0x18, 0xad, 0xc8, 0x52, 0x1e, 0x90, 0x7b, 0x11, 0xa5, 0x78, 0xbe, + 0xcc, 0xad, 0xc5, 0x2d, 0xaa, 0x57, 0x8a, 0xdb, 0xda, 0x27, 0x3f, 0xe2, 0xa6, 0xf8, 0x26, 0x25, + 0xfe, 0xa6, 0x0c, 0x38, 0xac, 0xf8, 0x9b, 0x32, 0x68, 0xb4, 0xe8, 0x3d, 0x59, 0x49, 0x89, 0xac, + 0xc4, 0xd8, 0x94, 0xc0, 0x8d, 0x05, 0xc7, 0xea, 0x67, 0x05, 0xa6, 0x43, 0xb2, 0xa4, 0x94, 0x90, + 0xc3, 0xe7, 0x5f, 0x4d, 0x1c, 0x77, 0x86, 0x33, 0xe5, 0xe3, 0xf7, 0xb6, 0x01, 0x3b, 0xe4, 0x99, + 0xba, 0xd8, 0xef, 0x97, 0xc8, 0x1b, 0xb1, 0x2e, 0xf0, 0x61, 0xbe, 0x2c, 0xb3, 0x7e, 0x96, 0x50, + 0x2c, 0xe8, 0x81, 0x2c, 0x68, 0x8d, 0x94, 0xa2, 0xde, 0x80, 0x7e, 0x0f, 0x17, 0xec, 0xc8, 0x3f, + 0x0a, 0xcc, 0x9d, 0x6a, 0xa2, 0x48, 0x25, 0x3e, 0xd9, 0xe9, 0x1e, 0x2e, 0xb3, 0xf5, 0x1f, 0x55, + 0xb0, 0xd4, 0xf7, 0x64, 0xa9, 0x15, 0x52, 0x8e, 0x57, 0xea, 0x30, 0xbb, 0x17, 0x94, 0xfd, 0x42, + 0x81, 0x0b, 0xbe, 0xd7, 0x22, 0xcb, 0x71, 0xf8, 0x06, 0x7c, 0x5c, 0x66, 0x25, 0x59, 0x50, 0xc2, + 0x67, 0xcf, 0x37, 0x6d, 0x01, 0xf0, 0xf7, 0x0a, 0x4c, 0xa2, 0x1a, 0x29, 0x26, 0x48, 0xed, 0xe3, + 0x2e, 0x27, 0x8a, 0x41, 0xda, 0xb7, 0x25, 0xed, 0x3a, 0x59, 0x8b, 0x47, 0x1b, 0xba, 0x7a, 0x3d, + 0xaf, 0xb8, 0x4f, 0x7e, 0x50, 0x60, 0xf6, 0x51, 0x2f, 0x22, 0x64, 0xc2, 0xe2, 0x7d, 0xfb, 0x27, + 0x0d, 0x5d, 0xbc, 0x6f, 0x7f, 0x88, 0xdb, 0xa3, 0xcb, 0xb2, 0x9a, 0x1c, 0x59, 0x8a, 0xa8, 0xa6, + 0x25, 0x63, 0xe5, 0xa7, 0xc2, 0xca, 0x4f, 0x0f, 0x8e, 0xb2, 0xca, 0xcb, 0xa3, 0xac, 0xf2, 0xe7, + 0x51, 0x56, 0xf9, 0xf2, 0x38, 0x3b, 0xf6, 0xf2, 0x38, 0x3b, 0xf6, 0xdb, 0x71, 0x76, 0xec, 0xc9, + 0xe3, 0x90, 0x75, 0xdd, 0xf6, 0x05, 0xdf, 0xd7, 0x6b, 0xa2, 0x27, 0x9f, 0x33, 0x78, 0x9b, 0x85, + 0x9b, 0xbb, 0xba, 0x69, 0xa1, 0xbe, 0xe8, 0xcb, 0x2d, 0x9d, 0x6e, 0x6d, 0x42, 0xfe, 0xab, 0x67, + 0xf9, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x36, 0x6c, 0x4e, 0x0d, 0x40, 0x13, 0x00, 0x00, } -func (m *QueryAddressesByRoleResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) +// Reference imports to suppress errors if they are not otherwise used. +var _ context.Context +var _ grpc.ClientConn + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +const _ = grpc.SupportPackageIsVersion4 + +// QueryClient is the client API for Query service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +type QueryClient interface { + // Params defines a gRPC query method that returns the permissions module's + // parameters. + Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) + // NamespaceDenoms defines a gRPC query method that returns the denoms for which a namespace exists + NamespaceDenoms(ctx context.Context, in *QueryNamespaceDenomsRequest, opts ...grpc.CallOption) (*QueryNamespaceDenomsResponse, error) + // Namespaces defines a gRPC query method that returns the permissions + // module's created namespaces. + Namespaces(ctx context.Context, in *QueryNamespacesRequest, opts ...grpc.CallOption) (*QueryNamespacesResponse, error) + // Namespace defines a gRPC query method that returns the permissions + // module's namespace associated with the provided denom. + Namespace(ctx context.Context, in *QueryNamespaceRequest, opts ...grpc.CallOption) (*QueryNamespaceResponse, error) + // RolesByActor defines a gRPC query method that returns roles for the actor in the namespace + RolesByActor(ctx context.Context, in *QueryRolesByActorRequest, opts ...grpc.CallOption) (*QueryRolesByActorResponse, error) + // ActorsByRole defines a gRPC query method that returns a namespace's roles associated with the provided actor. + ActorsByRole(ctx context.Context, in *QueryActorsByRoleRequest, opts ...grpc.CallOption) (*QueryActorsByRoleResponse, error) + // RoleManagers defines a gRPC query method that returns a namespace's role managers + RoleManagers(ctx context.Context, in *QueryRoleManagersRequest, opts ...grpc.CallOption) (*QueryRoleManagersResponse, error) + // RoleManager defines a gRPC query method that returns the roles a given role manager manages for a given namespace + RoleManager(ctx context.Context, in *QueryRoleManagerRequest, opts ...grpc.CallOption) (*QueryRoleManagerResponse, error) + // PolicyStatuses defines a gRPC query method that returns a namespace's policy statuses + PolicyStatuses(ctx context.Context, in *QueryPolicyStatusesRequest, opts ...grpc.CallOption) (*QueryPolicyStatusesResponse, error) + // PolicyManagerCapabilities defines a gRPC query method that returns a namespace's policy manager capabilities + PolicyManagerCapabilities(ctx context.Context, in *QueryPolicyManagerCapabilitiesRequest, opts ...grpc.CallOption) (*QueryPolicyManagerCapabilitiesResponse, error) + // Vouchers defines a gRPC query method for the vouchers for a given denom + Vouchers(ctx context.Context, in *QueryVouchersRequest, opts ...grpc.CallOption) (*QueryVouchersResponse, error) + // Voucher defines a gRPC query method for the vouchers for a given denom and address + Voucher(ctx context.Context, in *QueryVoucherRequest, opts ...grpc.CallOption) (*QueryVoucherResponse, error) + // Retrieves the entire permissions module's state + PermissionsModuleState(ctx context.Context, in *QueryModuleStateRequest, opts ...grpc.CallOption) (*QueryModuleStateResponse, error) } -func (m *QueryAddressesByRoleResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Addresses) > 0 { - for iNdEx := len(m.Addresses) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.Addresses[iNdEx]) - copy(dAtA[i:], m.Addresses[iNdEx]) - i = encodeVarintQuery(dAtA, i, uint64(len(m.Addresses[iNdEx]))) - i-- - dAtA[i] = 0xa - } +type queryClient struct { + cc grpc1.ClientConn +} + +func NewQueryClient(cc grpc1.ClientConn) QueryClient { + return &queryClient{cc} +} + +func (c *queryClient) Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) { + out := new(QueryParamsResponse) + err := c.cc.Invoke(ctx, "/injective.permissions.v1beta1.Query/Params", in, out, opts...) + if err != nil { + return nil, err } - return len(dAtA) - i, nil + return out, nil } -func (m *QueryAddressRolesRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) +func (c *queryClient) NamespaceDenoms(ctx context.Context, in *QueryNamespaceDenomsRequest, opts ...grpc.CallOption) (*QueryNamespaceDenomsResponse, error) { + out := new(QueryNamespaceDenomsResponse) + err := c.cc.Invoke(ctx, "/injective.permissions.v1beta1.Query/NamespaceDenoms", in, out, opts...) if err != nil { return nil, err } - return dAtA[:n], nil + return out, nil } -func (m *QueryAddressRolesRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) +func (c *queryClient) Namespaces(ctx context.Context, in *QueryNamespacesRequest, opts ...grpc.CallOption) (*QueryNamespacesResponse, error) { + out := new(QueryNamespacesResponse) + err := c.cc.Invoke(ctx, "/injective.permissions.v1beta1.Query/Namespaces", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil } -func (m *QueryAddressRolesRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Address) > 0 { - i -= len(m.Address) - copy(dAtA[i:], m.Address) - i = encodeVarintQuery(dAtA, i, uint64(len(m.Address))) - i-- - dAtA[i] = 0x12 +func (c *queryClient) Namespace(ctx context.Context, in *QueryNamespaceRequest, opts ...grpc.CallOption) (*QueryNamespaceResponse, error) { + out := new(QueryNamespaceResponse) + err := c.cc.Invoke(ctx, "/injective.permissions.v1beta1.Query/Namespace", in, out, opts...) + if err != nil { + return nil, err } - if len(m.Denom) > 0 { - i -= len(m.Denom) - copy(dAtA[i:], m.Denom) - i = encodeVarintQuery(dAtA, i, uint64(len(m.Denom))) - i-- - dAtA[i] = 0xa + return out, nil +} + +func (c *queryClient) RolesByActor(ctx context.Context, in *QueryRolesByActorRequest, opts ...grpc.CallOption) (*QueryRolesByActorResponse, error) { + out := new(QueryRolesByActorResponse) + err := c.cc.Invoke(ctx, "/injective.permissions.v1beta1.Query/RolesByActor", in, out, opts...) + if err != nil { + return nil, err } - return len(dAtA) - i, nil + return out, nil } -func (m *QueryAddressRolesResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) +func (c *queryClient) ActorsByRole(ctx context.Context, in *QueryActorsByRoleRequest, opts ...grpc.CallOption) (*QueryActorsByRoleResponse, error) { + out := new(QueryActorsByRoleResponse) + err := c.cc.Invoke(ctx, "/injective.permissions.v1beta1.Query/ActorsByRole", in, out, opts...) if err != nil { return nil, err } - return dAtA[:n], nil + return out, nil } -func (m *QueryAddressRolesResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) +func (c *queryClient) RoleManagers(ctx context.Context, in *QueryRoleManagersRequest, opts ...grpc.CallOption) (*QueryRoleManagersResponse, error) { + out := new(QueryRoleManagersResponse) + err := c.cc.Invoke(ctx, "/injective.permissions.v1beta1.Query/RoleManagers", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil } -func (m *QueryAddressRolesResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Roles) > 0 { - for iNdEx := len(m.Roles) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.Roles[iNdEx]) - copy(dAtA[i:], m.Roles[iNdEx]) - i = encodeVarintQuery(dAtA, i, uint64(len(m.Roles[iNdEx]))) - i-- - dAtA[i] = 0xa - } +func (c *queryClient) RoleManager(ctx context.Context, in *QueryRoleManagerRequest, opts ...grpc.CallOption) (*QueryRoleManagerResponse, error) { + out := new(QueryRoleManagerResponse) + err := c.cc.Invoke(ctx, "/injective.permissions.v1beta1.Query/RoleManager", in, out, opts...) + if err != nil { + return nil, err } - return len(dAtA) - i, nil + return out, nil } -func (m *QueryVouchersForAddressRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) +func (c *queryClient) PolicyStatuses(ctx context.Context, in *QueryPolicyStatusesRequest, opts ...grpc.CallOption) (*QueryPolicyStatusesResponse, error) { + out := new(QueryPolicyStatusesResponse) + err := c.cc.Invoke(ctx, "/injective.permissions.v1beta1.Query/PolicyStatuses", in, out, opts...) if err != nil { return nil, err } - return dAtA[:n], nil + return out, nil } -func (m *QueryVouchersForAddressRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) +func (c *queryClient) PolicyManagerCapabilities(ctx context.Context, in *QueryPolicyManagerCapabilitiesRequest, opts ...grpc.CallOption) (*QueryPolicyManagerCapabilitiesResponse, error) { + out := new(QueryPolicyManagerCapabilitiesResponse) + err := c.cc.Invoke(ctx, "/injective.permissions.v1beta1.Query/PolicyManagerCapabilities", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil } -func (m *QueryVouchersForAddressRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Address) > 0 { - i -= len(m.Address) - copy(dAtA[i:], m.Address) - i = encodeVarintQuery(dAtA, i, uint64(len(m.Address))) - i-- - dAtA[i] = 0xa +func (c *queryClient) Vouchers(ctx context.Context, in *QueryVouchersRequest, opts ...grpc.CallOption) (*QueryVouchersResponse, error) { + out := new(QueryVouchersResponse) + err := c.cc.Invoke(ctx, "/injective.permissions.v1beta1.Query/Vouchers", in, out, opts...) + if err != nil { + return nil, err } - return len(dAtA) - i, nil + return out, nil } -func (m *QueryVouchersForAddressResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) +func (c *queryClient) Voucher(ctx context.Context, in *QueryVoucherRequest, opts ...grpc.CallOption) (*QueryVoucherResponse, error) { + out := new(QueryVoucherResponse) + err := c.cc.Invoke(ctx, "/injective.permissions.v1beta1.Query/Voucher", in, out, opts...) if err != nil { return nil, err } - return dAtA[:n], nil + return out, nil } -func (m *QueryVouchersForAddressResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) +func (c *queryClient) PermissionsModuleState(ctx context.Context, in *QueryModuleStateRequest, opts ...grpc.CallOption) (*QueryModuleStateResponse, error) { + out := new(QueryModuleStateResponse) + err := c.cc.Invoke(ctx, "/injective.permissions.v1beta1.Query/PermissionsModuleState", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil } -func (m *QueryVouchersForAddressResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Vouchers) > 0 { - for iNdEx := len(m.Vouchers) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.Vouchers[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintQuery(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } +// QueryServer is the server API for Query service. +type QueryServer interface { + // Params defines a gRPC query method that returns the permissions module's + // parameters. + Params(context.Context, *QueryParamsRequest) (*QueryParamsResponse, error) + // NamespaceDenoms defines a gRPC query method that returns the denoms for which a namespace exists + NamespaceDenoms(context.Context, *QueryNamespaceDenomsRequest) (*QueryNamespaceDenomsResponse, error) + // Namespaces defines a gRPC query method that returns the permissions + // module's created namespaces. + Namespaces(context.Context, *QueryNamespacesRequest) (*QueryNamespacesResponse, error) + // Namespace defines a gRPC query method that returns the permissions + // module's namespace associated with the provided denom. + Namespace(context.Context, *QueryNamespaceRequest) (*QueryNamespaceResponse, error) + // RolesByActor defines a gRPC query method that returns roles for the actor in the namespace + RolesByActor(context.Context, *QueryRolesByActorRequest) (*QueryRolesByActorResponse, error) + // ActorsByRole defines a gRPC query method that returns a namespace's roles associated with the provided actor. + ActorsByRole(context.Context, *QueryActorsByRoleRequest) (*QueryActorsByRoleResponse, error) + // RoleManagers defines a gRPC query method that returns a namespace's role managers + RoleManagers(context.Context, *QueryRoleManagersRequest) (*QueryRoleManagersResponse, error) + // RoleManager defines a gRPC query method that returns the roles a given role manager manages for a given namespace + RoleManager(context.Context, *QueryRoleManagerRequest) (*QueryRoleManagerResponse, error) + // PolicyStatuses defines a gRPC query method that returns a namespace's policy statuses + PolicyStatuses(context.Context, *QueryPolicyStatusesRequest) (*QueryPolicyStatusesResponse, error) + // PolicyManagerCapabilities defines a gRPC query method that returns a namespace's policy manager capabilities + PolicyManagerCapabilities(context.Context, *QueryPolicyManagerCapabilitiesRequest) (*QueryPolicyManagerCapabilitiesResponse, error) + // Vouchers defines a gRPC query method for the vouchers for a given denom + Vouchers(context.Context, *QueryVouchersRequest) (*QueryVouchersResponse, error) + // Voucher defines a gRPC query method for the vouchers for a given denom and address + Voucher(context.Context, *QueryVoucherRequest) (*QueryVoucherResponse, error) + // Retrieves the entire permissions module's state + PermissionsModuleState(context.Context, *QueryModuleStateRequest) (*QueryModuleStateResponse, error) +} + +// UnimplementedQueryServer can be embedded to have forward compatible implementations. +type UnimplementedQueryServer struct { +} + +func (*UnimplementedQueryServer) Params(ctx context.Context, req *QueryParamsRequest) (*QueryParamsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Params not implemented") +} +func (*UnimplementedQueryServer) NamespaceDenoms(ctx context.Context, req *QueryNamespaceDenomsRequest) (*QueryNamespaceDenomsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method NamespaceDenoms not implemented") +} +func (*UnimplementedQueryServer) Namespaces(ctx context.Context, req *QueryNamespacesRequest) (*QueryNamespacesResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Namespaces not implemented") +} +func (*UnimplementedQueryServer) Namespace(ctx context.Context, req *QueryNamespaceRequest) (*QueryNamespaceResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Namespace not implemented") +} +func (*UnimplementedQueryServer) RolesByActor(ctx context.Context, req *QueryRolesByActorRequest) (*QueryRolesByActorResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method RolesByActor not implemented") +} +func (*UnimplementedQueryServer) ActorsByRole(ctx context.Context, req *QueryActorsByRoleRequest) (*QueryActorsByRoleResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ActorsByRole not implemented") +} +func (*UnimplementedQueryServer) RoleManagers(ctx context.Context, req *QueryRoleManagersRequest) (*QueryRoleManagersResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method RoleManagers not implemented") +} +func (*UnimplementedQueryServer) RoleManager(ctx context.Context, req *QueryRoleManagerRequest) (*QueryRoleManagerResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method RoleManager not implemented") +} +func (*UnimplementedQueryServer) PolicyStatuses(ctx context.Context, req *QueryPolicyStatusesRequest) (*QueryPolicyStatusesResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method PolicyStatuses not implemented") +} +func (*UnimplementedQueryServer) PolicyManagerCapabilities(ctx context.Context, req *QueryPolicyManagerCapabilitiesRequest) (*QueryPolicyManagerCapabilitiesResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method PolicyManagerCapabilities not implemented") +} +func (*UnimplementedQueryServer) Vouchers(ctx context.Context, req *QueryVouchersRequest) (*QueryVouchersResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Vouchers not implemented") +} +func (*UnimplementedQueryServer) Voucher(ctx context.Context, req *QueryVoucherRequest) (*QueryVoucherResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Voucher not implemented") +} +func (*UnimplementedQueryServer) PermissionsModuleState(ctx context.Context, req *QueryModuleStateRequest) (*QueryModuleStateResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method PermissionsModuleState not implemented") +} + +func RegisterQueryServer(s grpc1.Server, srv QueryServer) { + s.RegisterService(&_Query_serviceDesc, srv) +} + +func _Query_Params_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryParamsRequest) + if err := dec(in); err != nil { + return nil, err } - return len(dAtA) - i, nil + if interceptor == nil { + return srv.(QueryServer).Params(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/injective.permissions.v1beta1.Query/Params", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).Params(ctx, req.(*QueryParamsRequest)) + } + return interceptor(ctx, in, info, handler) } -func encodeVarintQuery(dAtA []byte, offset int, v uint64) int { - offset -= sovQuery(v) - base := offset - for v >= 1<<7 { - dAtA[offset] = uint8(v&0x7f | 0x80) - v >>= 7 - offset++ +func _Query_NamespaceDenoms_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryNamespaceDenomsRequest) + if err := dec(in); err != nil { + return nil, err } - dAtA[offset] = uint8(v) - return base + if interceptor == nil { + return srv.(QueryServer).NamespaceDenoms(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/injective.permissions.v1beta1.Query/NamespaceDenoms", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).NamespaceDenoms(ctx, req.(*QueryNamespaceDenomsRequest)) + } + return interceptor(ctx, in, info, handler) } -func (m *QueryParamsRequest) Size() (n int) { - if m == nil { - return 0 + +func _Query_Namespaces_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryNamespacesRequest) + if err := dec(in); err != nil { + return nil, err } - var l int - _ = l - return n + if interceptor == nil { + return srv.(QueryServer).Namespaces(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/injective.permissions.v1beta1.Query/Namespaces", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).Namespaces(ctx, req.(*QueryNamespacesRequest)) + } + return interceptor(ctx, in, info, handler) } -func (m *QueryParamsResponse) Size() (n int) { - if m == nil { - return 0 +func _Query_Namespace_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryNamespaceRequest) + if err := dec(in); err != nil { + return nil, err } - var l int - _ = l - l = m.Params.Size() - n += 1 + l + sovQuery(uint64(l)) - return n + if interceptor == nil { + return srv.(QueryServer).Namespace(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/injective.permissions.v1beta1.Query/Namespace", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).Namespace(ctx, req.(*QueryNamespaceRequest)) + } + return interceptor(ctx, in, info, handler) } -func (m *QueryAllNamespacesRequest) Size() (n int) { - if m == nil { - return 0 +func _Query_RolesByActor_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryRolesByActorRequest) + if err := dec(in); err != nil { + return nil, err } - var l int - _ = l - return n + if interceptor == nil { + return srv.(QueryServer).RolesByActor(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/injective.permissions.v1beta1.Query/RolesByActor", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).RolesByActor(ctx, req.(*QueryRolesByActorRequest)) + } + return interceptor(ctx, in, info, handler) } -func (m *QueryAllNamespacesResponse) Size() (n int) { - if m == nil { - return 0 +func _Query_ActorsByRole_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryActorsByRoleRequest) + if err := dec(in); err != nil { + return nil, err } - var l int - _ = l - if len(m.Namespaces) > 0 { - for _, e := range m.Namespaces { - l = e.Size() - n += 1 + l + sovQuery(uint64(l)) - } + if interceptor == nil { + return srv.(QueryServer).ActorsByRole(ctx, in) } - return n + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/injective.permissions.v1beta1.Query/ActorsByRole", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).ActorsByRole(ctx, req.(*QueryActorsByRoleRequest)) + } + return interceptor(ctx, in, info, handler) } -func (m *QueryNamespaceByDenomRequest) Size() (n int) { - if m == nil { - return 0 +func _Query_RoleManagers_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryRoleManagersRequest) + if err := dec(in); err != nil { + return nil, err } - var l int - _ = l - l = len(m.Denom) - if l > 0 { - n += 1 + l + sovQuery(uint64(l)) + if interceptor == nil { + return srv.(QueryServer).RoleManagers(ctx, in) } - if m.IncludeRoles { - n += 2 + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/injective.permissions.v1beta1.Query/RoleManagers", } - return n + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).RoleManagers(ctx, req.(*QueryRoleManagersRequest)) + } + return interceptor(ctx, in, info, handler) } -func (m *QueryNamespaceByDenomResponse) Size() (n int) { - if m == nil { - return 0 +func _Query_RoleManager_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryRoleManagerRequest) + if err := dec(in); err != nil { + return nil, err } - var l int - _ = l - if m.Namespace != nil { - l = m.Namespace.Size() - n += 1 + l + sovQuery(uint64(l)) + if interceptor == nil { + return srv.(QueryServer).RoleManager(ctx, in) } - return n + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/injective.permissions.v1beta1.Query/RoleManager", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).RoleManager(ctx, req.(*QueryRoleManagerRequest)) + } + return interceptor(ctx, in, info, handler) } -func (m *QueryAddressesByRoleRequest) Size() (n int) { - if m == nil { - return 0 +func _Query_PolicyStatuses_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryPolicyStatusesRequest) + if err := dec(in); err != nil { + return nil, err } - var l int - _ = l - l = len(m.Denom) - if l > 0 { - n += 1 + l + sovQuery(uint64(l)) + if interceptor == nil { + return srv.(QueryServer).PolicyStatuses(ctx, in) } - l = len(m.Role) - if l > 0 { - n += 1 + l + sovQuery(uint64(l)) + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/injective.permissions.v1beta1.Query/PolicyStatuses", } - return n + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).PolicyStatuses(ctx, req.(*QueryPolicyStatusesRequest)) + } + return interceptor(ctx, in, info, handler) } -func (m *QueryAddressesByRoleResponse) Size() (n int) { - if m == nil { - return 0 +func _Query_PolicyManagerCapabilities_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryPolicyManagerCapabilitiesRequest) + if err := dec(in); err != nil { + return nil, err } - var l int - _ = l - if len(m.Addresses) > 0 { - for _, s := range m.Addresses { - l = len(s) - n += 1 + l + sovQuery(uint64(l)) - } + if interceptor == nil { + return srv.(QueryServer).PolicyManagerCapabilities(ctx, in) } - return n + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/injective.permissions.v1beta1.Query/PolicyManagerCapabilities", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).PolicyManagerCapabilities(ctx, req.(*QueryPolicyManagerCapabilitiesRequest)) + } + return interceptor(ctx, in, info, handler) } -func (m *QueryAddressRolesRequest) Size() (n int) { - if m == nil { - return 0 +func _Query_Vouchers_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryVouchersRequest) + if err := dec(in); err != nil { + return nil, err } - var l int - _ = l - l = len(m.Denom) - if l > 0 { - n += 1 + l + sovQuery(uint64(l)) + if interceptor == nil { + return srv.(QueryServer).Vouchers(ctx, in) } - l = len(m.Address) - if l > 0 { - n += 1 + l + sovQuery(uint64(l)) + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/injective.permissions.v1beta1.Query/Vouchers", } - return n + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).Vouchers(ctx, req.(*QueryVouchersRequest)) + } + return interceptor(ctx, in, info, handler) } -func (m *QueryAddressRolesResponse) Size() (n int) { - if m == nil { - return 0 +func _Query_Voucher_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryVoucherRequest) + if err := dec(in); err != nil { + return nil, err } - var l int - _ = l - if len(m.Roles) > 0 { - for _, s := range m.Roles { - l = len(s) - n += 1 + l + sovQuery(uint64(l)) + if interceptor == nil { + return srv.(QueryServer).Voucher(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/injective.permissions.v1beta1.Query/Voucher", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).Voucher(ctx, req.(*QueryVoucherRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Query_PermissionsModuleState_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryModuleStateRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).PermissionsModuleState(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/injective.permissions.v1beta1.Query/PermissionsModuleState", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).PermissionsModuleState(ctx, req.(*QueryModuleStateRequest)) + } + return interceptor(ctx, in, info, handler) +} + +var _Query_serviceDesc = grpc.ServiceDesc{ + ServiceName: "injective.permissions.v1beta1.Query", + HandlerType: (*QueryServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "Params", + Handler: _Query_Params_Handler, + }, + { + MethodName: "NamespaceDenoms", + Handler: _Query_NamespaceDenoms_Handler, + }, + { + MethodName: "Namespaces", + Handler: _Query_Namespaces_Handler, + }, + { + MethodName: "Namespace", + Handler: _Query_Namespace_Handler, + }, + { + MethodName: "RolesByActor", + Handler: _Query_RolesByActor_Handler, + }, + { + MethodName: "ActorsByRole", + Handler: _Query_ActorsByRole_Handler, + }, + { + MethodName: "RoleManagers", + Handler: _Query_RoleManagers_Handler, + }, + { + MethodName: "RoleManager", + Handler: _Query_RoleManager_Handler, + }, + { + MethodName: "PolicyStatuses", + Handler: _Query_PolicyStatuses_Handler, + }, + { + MethodName: "PolicyManagerCapabilities", + Handler: _Query_PolicyManagerCapabilities_Handler, + }, + { + MethodName: "Vouchers", + Handler: _Query_Vouchers_Handler, + }, + { + MethodName: "Voucher", + Handler: _Query_Voucher_Handler, + }, + { + MethodName: "PermissionsModuleState", + Handler: _Query_PermissionsModuleState_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "injective/permissions/v1beta1/query.proto", +} + +func (m *QueryParamsRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryParamsRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryParamsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *QueryParamsResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryParamsResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryParamsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size, err := m.Params.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func (m *QueryNamespaceDenomsRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryNamespaceDenomsRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryNamespaceDenomsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *QueryNamespaceDenomsResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryNamespaceDenomsResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryNamespaceDenomsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Denoms) > 0 { + for iNdEx := len(m.Denoms) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.Denoms[iNdEx]) + copy(dAtA[i:], m.Denoms[iNdEx]) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Denoms[iNdEx]))) + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func (m *QueryNamespacesRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryNamespacesRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryNamespacesRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *QueryNamespacesResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryNamespacesResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryNamespacesResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Namespaces) > 0 { + for iNdEx := len(m.Namespaces) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Namespaces[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func (m *QueryNamespaceRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryNamespaceRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryNamespaceRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Denom) > 0 { + i -= len(m.Denom) + copy(dAtA[i:], m.Denom) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Denom))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *QueryNamespaceResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryNamespaceResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryNamespaceResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Namespace != nil { + { + size, err := m.Namespace.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *QueryActorsByRoleRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryActorsByRoleRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryActorsByRoleRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Role) > 0 { + i -= len(m.Role) + copy(dAtA[i:], m.Role) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Role))) + i-- + dAtA[i] = 0x12 + } + if len(m.Denom) > 0 { + i -= len(m.Denom) + copy(dAtA[i:], m.Denom) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Denom))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *QueryActorsByRoleResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryActorsByRoleResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryActorsByRoleResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Actors) > 0 { + for iNdEx := len(m.Actors) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.Actors[iNdEx]) + copy(dAtA[i:], m.Actors[iNdEx]) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Actors[iNdEx]))) + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func (m *QueryRolesByActorRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryRolesByActorRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryRolesByActorRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Actor) > 0 { + i -= len(m.Actor) + copy(dAtA[i:], m.Actor) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Actor))) + i-- + dAtA[i] = 0x12 + } + if len(m.Denom) > 0 { + i -= len(m.Denom) + copy(dAtA[i:], m.Denom) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Denom))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *QueryRolesByActorResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryRolesByActorResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryRolesByActorResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Roles) > 0 { + for iNdEx := len(m.Roles) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.Roles[iNdEx]) + copy(dAtA[i:], m.Roles[iNdEx]) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Roles[iNdEx]))) + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func (m *QueryRoleManagersRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryRoleManagersRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryRoleManagersRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Denom) > 0 { + i -= len(m.Denom) + copy(dAtA[i:], m.Denom) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Denom))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *QueryRoleManagersResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryRoleManagersResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryRoleManagersResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.RoleManagers) > 0 { + for iNdEx := len(m.RoleManagers) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.RoleManagers[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func (m *QueryRoleManagerRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryRoleManagerRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryRoleManagerRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Manager) > 0 { + i -= len(m.Manager) + copy(dAtA[i:], m.Manager) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Manager))) + i-- + dAtA[i] = 0x12 + } + if len(m.Denom) > 0 { + i -= len(m.Denom) + copy(dAtA[i:], m.Denom) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Denom))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *QueryRoleManagerResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryRoleManagerResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryRoleManagerResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.RoleManager != nil { + { + size, err := m.RoleManager.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *QueryPolicyStatusesRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryPolicyStatusesRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryPolicyStatusesRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Denom) > 0 { + i -= len(m.Denom) + copy(dAtA[i:], m.Denom) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Denom))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *QueryPolicyStatusesResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryPolicyStatusesResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryPolicyStatusesResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.PolicyStatuses) > 0 { + for iNdEx := len(m.PolicyStatuses) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.PolicyStatuses[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func (m *QueryPolicyManagerCapabilitiesRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryPolicyManagerCapabilitiesRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryPolicyManagerCapabilitiesRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Denom) > 0 { + i -= len(m.Denom) + copy(dAtA[i:], m.Denom) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Denom))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *QueryPolicyManagerCapabilitiesResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryPolicyManagerCapabilitiesResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryPolicyManagerCapabilitiesResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.PolicyManagerCapabilities) > 0 { + for iNdEx := len(m.PolicyManagerCapabilities) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.PolicyManagerCapabilities[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func (m *QueryVouchersRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryVouchersRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryVouchersRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Denom) > 0 { + i -= len(m.Denom) + copy(dAtA[i:], m.Denom) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Denom))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *QueryVouchersResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryVouchersResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryVouchersResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Vouchers) > 0 { + for iNdEx := len(m.Vouchers) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Vouchers[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func (m *QueryVoucherRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryVoucherRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryVoucherRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Address) > 0 { + i -= len(m.Address) + copy(dAtA[i:], m.Address) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Address))) + i-- + dAtA[i] = 0x12 + } + if len(m.Denom) > 0 { + i -= len(m.Denom) + copy(dAtA[i:], m.Denom) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Denom))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *QueryVoucherResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryVoucherResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryVoucherResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size := m.Voucher.Size() + i -= size + if _, err := m.Voucher.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func (m *QueryModuleStateRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryModuleStateRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryModuleStateRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *QueryModuleStateResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryModuleStateResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryModuleStateResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.State != nil { + { + size, err := m.State.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func encodeVarintQuery(dAtA []byte, offset int, v uint64) int { + offset -= sovQuery(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *QueryParamsRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *QueryParamsResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.Params.Size() + n += 1 + l + sovQuery(uint64(l)) + return n +} + +func (m *QueryNamespaceDenomsRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *QueryNamespaceDenomsResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.Denoms) > 0 { + for _, s := range m.Denoms { + l = len(s) + n += 1 + l + sovQuery(uint64(l)) + } + } + return n +} + +func (m *QueryNamespacesRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *QueryNamespacesResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.Namespaces) > 0 { + for _, e := range m.Namespaces { + l = e.Size() + n += 1 + l + sovQuery(uint64(l)) + } + } + return n +} + +func (m *QueryNamespaceRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Denom) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryNamespaceResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Namespace != nil { + l = m.Namespace.Size() + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryActorsByRoleRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Denom) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + l = len(m.Role) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryActorsByRoleResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.Actors) > 0 { + for _, s := range m.Actors { + l = len(s) + n += 1 + l + sovQuery(uint64(l)) + } + } + return n +} + +func (m *QueryRolesByActorRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Denom) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + l = len(m.Actor) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryRolesByActorResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.Roles) > 0 { + for _, s := range m.Roles { + l = len(s) + n += 1 + l + sovQuery(uint64(l)) + } + } + return n +} + +func (m *QueryRoleManagersRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Denom) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryRoleManagersResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.RoleManagers) > 0 { + for _, e := range m.RoleManagers { + l = e.Size() + n += 1 + l + sovQuery(uint64(l)) + } + } + return n +} + +func (m *QueryRoleManagerRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Denom) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + l = len(m.Manager) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryRoleManagerResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.RoleManager != nil { + l = m.RoleManager.Size() + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryPolicyStatusesRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Denom) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryPolicyStatusesResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.PolicyStatuses) > 0 { + for _, e := range m.PolicyStatuses { + l = e.Size() + n += 1 + l + sovQuery(uint64(l)) + } + } + return n +} + +func (m *QueryPolicyManagerCapabilitiesRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Denom) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryPolicyManagerCapabilitiesResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.PolicyManagerCapabilities) > 0 { + for _, e := range m.PolicyManagerCapabilities { + l = e.Size() + n += 1 + l + sovQuery(uint64(l)) + } + } + return n +} + +func (m *QueryVouchersRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Denom) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryVouchersResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.Vouchers) > 0 { + for _, e := range m.Vouchers { + l = e.Size() + n += 1 + l + sovQuery(uint64(l)) + } + } + return n +} + +func (m *QueryVoucherRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Denom) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + l = len(m.Address) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryVoucherResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.Voucher.Size() + n += 1 + l + sovQuery(uint64(l)) + return n +} + +func (m *QueryModuleStateRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *QueryModuleStateResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.State != nil { + l = m.State.Size() + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func sovQuery(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozQuery(x uint64) (n int) { + return sovQuery(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *QueryParamsRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryParamsRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryParamsRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryParamsResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryParamsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryParamsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Params.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryNamespaceDenomsRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryNamespaceDenomsRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryNamespaceDenomsRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryNamespaceDenomsResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryNamespaceDenomsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryNamespaceDenomsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Denoms", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Denoms = append(m.Denoms, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryNamespacesRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryNamespacesRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryNamespacesRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryNamespacesResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryNamespacesResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryNamespacesResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Namespaces", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Namespaces = append(m.Namespaces, &Namespace{}) + if err := m.Namespaces[len(m.Namespaces)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryNamespaceRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryNamespaceRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryNamespaceRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Denom", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Denom = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryNamespaceResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryNamespaceResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryNamespaceResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Namespace", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Namespace == nil { + m.Namespace = &Namespace{} + } + if err := m.Namespace.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryActorsByRoleRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryActorsByRoleRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryActorsByRoleRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Denom", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Denom = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Role", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Role = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryActorsByRoleResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryActorsByRoleResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryActorsByRoleResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Actors", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Actors = append(m.Actors, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryRolesByActorRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryRolesByActorRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryRolesByActorRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Denom", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Denom = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Actor", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Actor = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryRolesByActorResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryRolesByActorResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryRolesByActorResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Roles", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Roles = append(m.Roles, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryRoleManagersRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryRoleManagersRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryRoleManagersRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Denom", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Denom = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryRoleManagersResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryRoleManagersResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryRoleManagersResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RoleManagers", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.RoleManagers = append(m.RoleManagers, &RoleManager{}) + if err := m.RoleManagers[len(m.RoleManagers)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy } } - return n -} - -func (m *QueryVouchersForAddressRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Address) - if l > 0 { - n += 1 + l + sovQuery(uint64(l)) - } - return n -} -func (m *QueryVouchersForAddressResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if len(m.Vouchers) > 0 { - for _, e := range m.Vouchers { - l = e.Size() - n += 1 + l + sovQuery(uint64(l)) - } + if iNdEx > l { + return io.ErrUnexpectedEOF } - return n -} - -func sovQuery(x uint64) (n int) { - return (math_bits.Len64(x|1) + 6) / 7 -} -func sozQuery(x uint64) (n int) { - return sovQuery(uint64((x << 1) ^ uint64((int64(x) >> 63)))) + return nil } -func (m *QueryParamsRequest) Unmarshal(dAtA []byte) error { +func (m *QueryRoleManagerRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -1544,12 +4231,76 @@ func (m *QueryParamsRequest) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryParamsRequest: wiretype end group for non-group") + return fmt.Errorf("proto: QueryRoleManagerRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryParamsRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryRoleManagerRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Denom", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Denom = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Manager", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Manager = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipQuery(dAtA[iNdEx:]) @@ -1571,7 +4322,7 @@ func (m *QueryParamsRequest) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryParamsResponse) Unmarshal(dAtA []byte) error { +func (m *QueryRoleManagerResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -1594,15 +4345,15 @@ func (m *QueryParamsResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryParamsResponse: wiretype end group for non-group") + return fmt.Errorf("proto: QueryRoleManagerResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryParamsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryRoleManagerResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field RoleManager", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -1629,7 +4380,10 @@ func (m *QueryParamsResponse) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.Params.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if m.RoleManager == nil { + m.RoleManager = &RoleManager{} + } + if err := m.RoleManager.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -1654,7 +4408,7 @@ func (m *QueryParamsResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryAllNamespacesRequest) Unmarshal(dAtA []byte) error { +func (m *QueryPolicyStatusesRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -1677,12 +4431,44 @@ func (m *QueryAllNamespacesRequest) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryAllNamespacesRequest: wiretype end group for non-group") + return fmt.Errorf("proto: QueryPolicyStatusesRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryAllNamespacesRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryPolicyStatusesRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Denom", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Denom = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipQuery(dAtA[iNdEx:]) @@ -1704,7 +4490,7 @@ func (m *QueryAllNamespacesRequest) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryAllNamespacesResponse) Unmarshal(dAtA []byte) error { +func (m *QueryPolicyStatusesResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -1727,15 +4513,15 @@ func (m *QueryAllNamespacesResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryAllNamespacesResponse: wiretype end group for non-group") + return fmt.Errorf("proto: QueryPolicyStatusesResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryAllNamespacesResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryPolicyStatusesResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Namespaces", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field PolicyStatuses", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -1762,8 +4548,8 @@ func (m *QueryAllNamespacesResponse) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Namespaces = append(m.Namespaces, &Namespace{}) - if err := m.Namespaces[len(m.Namespaces)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + m.PolicyStatuses = append(m.PolicyStatuses, &PolicyStatus{}) + if err := m.PolicyStatuses[len(m.PolicyStatuses)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -1788,7 +4574,7 @@ func (m *QueryAllNamespacesResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryNamespaceByDenomRequest) Unmarshal(dAtA []byte) error { +func (m *QueryPolicyManagerCapabilitiesRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -1811,10 +4597,10 @@ func (m *QueryNamespaceByDenomRequest) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryNamespaceByDenomRequest: wiretype end group for non-group") + return fmt.Errorf("proto: QueryPolicyManagerCapabilitiesRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryNamespaceByDenomRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryPolicyManagerCapabilitiesRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -1849,26 +4635,6 @@ func (m *QueryNamespaceByDenomRequest) Unmarshal(dAtA []byte) error { } m.Denom = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field IncludeRoles", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.IncludeRoles = bool(v != 0) default: iNdEx = preIndex skippy, err := skipQuery(dAtA[iNdEx:]) @@ -1890,7 +4656,7 @@ func (m *QueryNamespaceByDenomRequest) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryNamespaceByDenomResponse) Unmarshal(dAtA []byte) error { +func (m *QueryPolicyManagerCapabilitiesResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -1913,15 +4679,15 @@ func (m *QueryNamespaceByDenomResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryNamespaceByDenomResponse: wiretype end group for non-group") + return fmt.Errorf("proto: QueryPolicyManagerCapabilitiesResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryNamespaceByDenomResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryPolicyManagerCapabilitiesResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Namespace", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field PolicyManagerCapabilities", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -1948,10 +4714,8 @@ func (m *QueryNamespaceByDenomResponse) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Namespace == nil { - m.Namespace = &Namespace{} - } - if err := m.Namespace.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + m.PolicyManagerCapabilities = append(m.PolicyManagerCapabilities, &PolicyManagerCapability{}) + if err := m.PolicyManagerCapabilities[len(m.PolicyManagerCapabilities)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -1976,7 +4740,7 @@ func (m *QueryNamespaceByDenomResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryAddressesByRoleRequest) Unmarshal(dAtA []byte) error { +func (m *QueryVouchersRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -1999,10 +4763,10 @@ func (m *QueryAddressesByRoleRequest) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryAddressesByRoleRequest: wiretype end group for non-group") + return fmt.Errorf("proto: QueryVouchersRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryAddressesByRoleRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryVouchersRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -2037,38 +4801,6 @@ func (m *QueryAddressesByRoleRequest) Unmarshal(dAtA []byte) error { } m.Denom = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Role", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthQuery - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthQuery - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Role = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipQuery(dAtA[iNdEx:]) @@ -2090,7 +4822,7 @@ func (m *QueryAddressesByRoleRequest) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryAddressesByRoleResponse) Unmarshal(dAtA []byte) error { +func (m *QueryVouchersResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -2113,17 +4845,17 @@ func (m *QueryAddressesByRoleResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryAddressesByRoleResponse: wiretype end group for non-group") + return fmt.Errorf("proto: QueryVouchersResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryAddressesByRoleResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryVouchersResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Addresses", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Vouchers", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowQuery @@ -2133,23 +4865,25 @@ func (m *QueryAddressesByRoleResponse) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthQuery } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthQuery } if postIndex > l { return io.ErrUnexpectedEOF } - m.Addresses = append(m.Addresses, string(dAtA[iNdEx:postIndex])) + m.Vouchers = append(m.Vouchers, &AddressVoucher{}) + if err := m.Vouchers[len(m.Vouchers)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex default: iNdEx = preIndex @@ -2172,7 +4906,7 @@ func (m *QueryAddressesByRoleResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryAddressRolesRequest) Unmarshal(dAtA []byte) error { +func (m *QueryVoucherRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -2195,10 +4929,10 @@ func (m *QueryAddressRolesRequest) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryAddressRolesRequest: wiretype end group for non-group") + return fmt.Errorf("proto: QueryVoucherRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryAddressRolesRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryVoucherRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -2286,7 +5020,7 @@ func (m *QueryAddressRolesRequest) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryAddressRolesResponse) Unmarshal(dAtA []byte) error { +func (m *QueryVoucherResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -2309,17 +5043,17 @@ func (m *QueryAddressRolesResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryAddressRolesResponse: wiretype end group for non-group") + return fmt.Errorf("proto: QueryVoucherResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryAddressRolesResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryVoucherResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Roles", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Voucher", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowQuery @@ -2329,23 +5063,24 @@ func (m *QueryAddressRolesResponse) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthQuery } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthQuery } if postIndex > l { return io.ErrUnexpectedEOF } - m.Roles = append(m.Roles, string(dAtA[iNdEx:postIndex])) + if err := m.Voucher.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex default: iNdEx = preIndex @@ -2368,7 +5103,7 @@ func (m *QueryAddressRolesResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryVouchersForAddressRequest) Unmarshal(dAtA []byte) error { +func (m *QueryModuleStateRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -2391,44 +5126,12 @@ func (m *QueryVouchersForAddressRequest) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryVouchersForAddressRequest: wiretype end group for non-group") + return fmt.Errorf("proto: QueryModuleStateRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryVouchersForAddressRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryModuleStateRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Address", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthQuery - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthQuery - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Address = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipQuery(dAtA[iNdEx:]) @@ -2450,7 +5153,7 @@ func (m *QueryVouchersForAddressRequest) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryVouchersForAddressResponse) Unmarshal(dAtA []byte) error { +func (m *QueryModuleStateResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -2473,15 +5176,15 @@ func (m *QueryVouchersForAddressResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryVouchersForAddressResponse: wiretype end group for non-group") + return fmt.Errorf("proto: QueryModuleStateResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryVouchersForAddressResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryModuleStateResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Vouchers", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field State", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -2508,8 +5211,10 @@ func (m *QueryVouchersForAddressResponse) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Vouchers = append(m.Vouchers, types.Coin{}) - if err := m.Vouchers[len(m.Vouchers)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if m.State == nil { + m.State = &GenesisState{} + } + if err := m.State.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex diff --git a/chain/permissions/types/tx.pb.go b/chain/permissions/types/tx.pb.go index 7516812d..cdeff028 100644 --- a/chain/permissions/types/tx.pb.go +++ b/chain/permissions/types/tx.pb.go @@ -213,108 +213,21 @@ func (m *MsgCreateNamespaceResponse) XXX_DiscardUnknown() { var xxx_messageInfo_MsgCreateNamespaceResponse proto.InternalMessageInfo -type MsgDeleteNamespace struct { - Sender string `protobuf:"bytes,1,opt,name=sender,proto3" json:"sender,omitempty" yaml:"sender"` - NamespaceDenom string `protobuf:"bytes,2,opt,name=namespace_denom,json=namespaceDenom,proto3" json:"namespace_denom,omitempty"` -} - -func (m *MsgDeleteNamespace) Reset() { *m = MsgDeleteNamespace{} } -func (m *MsgDeleteNamespace) String() string { return proto.CompactTextString(m) } -func (*MsgDeleteNamespace) ProtoMessage() {} -func (*MsgDeleteNamespace) Descriptor() ([]byte, []int) { - return fileDescriptor_ab9bfdcab1d9b6fa, []int{4} -} -func (m *MsgDeleteNamespace) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MsgDeleteNamespace) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MsgDeleteNamespace.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MsgDeleteNamespace) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgDeleteNamespace.Merge(m, src) -} -func (m *MsgDeleteNamespace) XXX_Size() int { - return m.Size() -} -func (m *MsgDeleteNamespace) XXX_DiscardUnknown() { - xxx_messageInfo_MsgDeleteNamespace.DiscardUnknown(m) -} - -var xxx_messageInfo_MsgDeleteNamespace proto.InternalMessageInfo - -func (m *MsgDeleteNamespace) GetSender() string { - if m != nil { - return m.Sender - } - return "" -} - -func (m *MsgDeleteNamespace) GetNamespaceDenom() string { - if m != nil { - return m.NamespaceDenom - } - return "" -} - -type MsgDeleteNamespaceResponse struct { -} - -func (m *MsgDeleteNamespaceResponse) Reset() { *m = MsgDeleteNamespaceResponse{} } -func (m *MsgDeleteNamespaceResponse) String() string { return proto.CompactTextString(m) } -func (*MsgDeleteNamespaceResponse) ProtoMessage() {} -func (*MsgDeleteNamespaceResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_ab9bfdcab1d9b6fa, []int{5} -} -func (m *MsgDeleteNamespaceResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MsgDeleteNamespaceResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MsgDeleteNamespaceResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MsgDeleteNamespaceResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgDeleteNamespaceResponse.Merge(m, src) -} -func (m *MsgDeleteNamespaceResponse) XXX_Size() int { - return m.Size() -} -func (m *MsgDeleteNamespaceResponse) XXX_DiscardUnknown() { - xxx_messageInfo_MsgDeleteNamespaceResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_MsgDeleteNamespaceResponse proto.InternalMessageInfo - type MsgUpdateNamespace struct { - Sender string `protobuf:"bytes,1,opt,name=sender,proto3" json:"sender,omitempty" yaml:"sender"` - NamespaceDenom string `protobuf:"bytes,2,opt,name=namespace_denom,json=namespaceDenom,proto3" json:"namespace_denom,omitempty"` - WasmHook *MsgUpdateNamespace_MsgSetWasmHook `protobuf:"bytes,3,opt,name=wasm_hook,json=wasmHook,proto3" json:"wasm_hook,omitempty"` - MintsPaused *MsgUpdateNamespace_MsgSetMintsPaused `protobuf:"bytes,4,opt,name=mints_paused,json=mintsPaused,proto3" json:"mints_paused,omitempty"` - SendsPaused *MsgUpdateNamespace_MsgSetSendsPaused `protobuf:"bytes,5,opt,name=sends_paused,json=sendsPaused,proto3" json:"sends_paused,omitempty"` - BurnsPaused *MsgUpdateNamespace_MsgSetBurnsPaused `protobuf:"bytes,6,opt,name=burns_paused,json=burnsPaused,proto3" json:"burns_paused,omitempty"` + Sender string `protobuf:"bytes,1,opt,name=sender,proto3" json:"sender,omitempty" yaml:"sender"` + Denom string `protobuf:"bytes,2,opt,name=denom,proto3" json:"denom,omitempty"` + ContractHook *MsgUpdateNamespace_SetContractHook `protobuf:"bytes,3,opt,name=contract_hook,json=contractHook,proto3" json:"contract_hook,omitempty"` + RolePermissions []*Role `protobuf:"bytes,4,rep,name=role_permissions,json=rolePermissions,proto3" json:"role_permissions,omitempty"` + RoleManagers []*RoleManager `protobuf:"bytes,5,rep,name=role_managers,json=roleManagers,proto3" json:"role_managers,omitempty"` + PolicyStatuses []*PolicyStatus `protobuf:"bytes,6,rep,name=policy_statuses,json=policyStatuses,proto3" json:"policy_statuses,omitempty"` + PolicyManagerCapabilities []*PolicyManagerCapability `protobuf:"bytes,7,rep,name=policy_manager_capabilities,json=policyManagerCapabilities,proto3" json:"policy_manager_capabilities,omitempty"` } func (m *MsgUpdateNamespace) Reset() { *m = MsgUpdateNamespace{} } func (m *MsgUpdateNamespace) String() string { return proto.CompactTextString(m) } func (*MsgUpdateNamespace) ProtoMessage() {} func (*MsgUpdateNamespace) Descriptor() ([]byte, []int) { - return fileDescriptor_ab9bfdcab1d9b6fa, []int{6} + return fileDescriptor_ab9bfdcab1d9b6fa, []int{4} } func (m *MsgUpdateNamespace) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -350,189 +263,64 @@ func (m *MsgUpdateNamespace) GetSender() string { return "" } -func (m *MsgUpdateNamespace) GetNamespaceDenom() string { +func (m *MsgUpdateNamespace) GetDenom() string { if m != nil { - return m.NamespaceDenom + return m.Denom } return "" } -func (m *MsgUpdateNamespace) GetWasmHook() *MsgUpdateNamespace_MsgSetWasmHook { +func (m *MsgUpdateNamespace) GetContractHook() *MsgUpdateNamespace_SetContractHook { if m != nil { - return m.WasmHook + return m.ContractHook } return nil } -func (m *MsgUpdateNamespace) GetMintsPaused() *MsgUpdateNamespace_MsgSetMintsPaused { +func (m *MsgUpdateNamespace) GetRolePermissions() []*Role { if m != nil { - return m.MintsPaused + return m.RolePermissions } return nil } -func (m *MsgUpdateNamespace) GetSendsPaused() *MsgUpdateNamespace_MsgSetSendsPaused { +func (m *MsgUpdateNamespace) GetRoleManagers() []*RoleManager { if m != nil { - return m.SendsPaused + return m.RoleManagers } return nil } -func (m *MsgUpdateNamespace) GetBurnsPaused() *MsgUpdateNamespace_MsgSetBurnsPaused { +func (m *MsgUpdateNamespace) GetPolicyStatuses() []*PolicyStatus { if m != nil { - return m.BurnsPaused + return m.PolicyStatuses } return nil } -type MsgUpdateNamespace_MsgSetWasmHook struct { - NewValue string `protobuf:"bytes,1,opt,name=new_value,json=newValue,proto3" json:"new_value,omitempty"` -} - -func (m *MsgUpdateNamespace_MsgSetWasmHook) Reset() { *m = MsgUpdateNamespace_MsgSetWasmHook{} } -func (m *MsgUpdateNamespace_MsgSetWasmHook) String() string { return proto.CompactTextString(m) } -func (*MsgUpdateNamespace_MsgSetWasmHook) ProtoMessage() {} -func (*MsgUpdateNamespace_MsgSetWasmHook) Descriptor() ([]byte, []int) { - return fileDescriptor_ab9bfdcab1d9b6fa, []int{6, 0} -} -func (m *MsgUpdateNamespace_MsgSetWasmHook) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MsgUpdateNamespace_MsgSetWasmHook) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MsgUpdateNamespace_MsgSetWasmHook.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MsgUpdateNamespace_MsgSetWasmHook) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgUpdateNamespace_MsgSetWasmHook.Merge(m, src) -} -func (m *MsgUpdateNamespace_MsgSetWasmHook) XXX_Size() int { - return m.Size() -} -func (m *MsgUpdateNamespace_MsgSetWasmHook) XXX_DiscardUnknown() { - xxx_messageInfo_MsgUpdateNamespace_MsgSetWasmHook.DiscardUnknown(m) -} - -var xxx_messageInfo_MsgUpdateNamespace_MsgSetWasmHook proto.InternalMessageInfo - -func (m *MsgUpdateNamespace_MsgSetWasmHook) GetNewValue() string { - if m != nil { - return m.NewValue - } - return "" -} - -type MsgUpdateNamespace_MsgSetMintsPaused struct { - NewValue bool `protobuf:"varint,1,opt,name=new_value,json=newValue,proto3" json:"new_value,omitempty"` -} - -func (m *MsgUpdateNamespace_MsgSetMintsPaused) Reset() { *m = MsgUpdateNamespace_MsgSetMintsPaused{} } -func (m *MsgUpdateNamespace_MsgSetMintsPaused) String() string { return proto.CompactTextString(m) } -func (*MsgUpdateNamespace_MsgSetMintsPaused) ProtoMessage() {} -func (*MsgUpdateNamespace_MsgSetMintsPaused) Descriptor() ([]byte, []int) { - return fileDescriptor_ab9bfdcab1d9b6fa, []int{6, 1} -} -func (m *MsgUpdateNamespace_MsgSetMintsPaused) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MsgUpdateNamespace_MsgSetMintsPaused) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MsgUpdateNamespace_MsgSetMintsPaused.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MsgUpdateNamespace_MsgSetMintsPaused) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgUpdateNamespace_MsgSetMintsPaused.Merge(m, src) -} -func (m *MsgUpdateNamespace_MsgSetMintsPaused) XXX_Size() int { - return m.Size() -} -func (m *MsgUpdateNamespace_MsgSetMintsPaused) XXX_DiscardUnknown() { - xxx_messageInfo_MsgUpdateNamespace_MsgSetMintsPaused.DiscardUnknown(m) -} - -var xxx_messageInfo_MsgUpdateNamespace_MsgSetMintsPaused proto.InternalMessageInfo - -func (m *MsgUpdateNamespace_MsgSetMintsPaused) GetNewValue() bool { - if m != nil { - return m.NewValue - } - return false -} - -type MsgUpdateNamespace_MsgSetSendsPaused struct { - NewValue bool `protobuf:"varint,1,opt,name=new_value,json=newValue,proto3" json:"new_value,omitempty"` -} - -func (m *MsgUpdateNamespace_MsgSetSendsPaused) Reset() { *m = MsgUpdateNamespace_MsgSetSendsPaused{} } -func (m *MsgUpdateNamespace_MsgSetSendsPaused) String() string { return proto.CompactTextString(m) } -func (*MsgUpdateNamespace_MsgSetSendsPaused) ProtoMessage() {} -func (*MsgUpdateNamespace_MsgSetSendsPaused) Descriptor() ([]byte, []int) { - return fileDescriptor_ab9bfdcab1d9b6fa, []int{6, 2} -} -func (m *MsgUpdateNamespace_MsgSetSendsPaused) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MsgUpdateNamespace_MsgSetSendsPaused) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MsgUpdateNamespace_MsgSetSendsPaused.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MsgUpdateNamespace_MsgSetSendsPaused) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgUpdateNamespace_MsgSetSendsPaused.Merge(m, src) -} -func (m *MsgUpdateNamespace_MsgSetSendsPaused) XXX_Size() int { - return m.Size() -} -func (m *MsgUpdateNamespace_MsgSetSendsPaused) XXX_DiscardUnknown() { - xxx_messageInfo_MsgUpdateNamespace_MsgSetSendsPaused.DiscardUnknown(m) -} - -var xxx_messageInfo_MsgUpdateNamespace_MsgSetSendsPaused proto.InternalMessageInfo - -func (m *MsgUpdateNamespace_MsgSetSendsPaused) GetNewValue() bool { +func (m *MsgUpdateNamespace) GetPolicyManagerCapabilities() []*PolicyManagerCapability { if m != nil { - return m.NewValue + return m.PolicyManagerCapabilities } - return false + return nil } -type MsgUpdateNamespace_MsgSetBurnsPaused struct { - NewValue bool `protobuf:"varint,1,opt,name=new_value,json=newValue,proto3" json:"new_value,omitempty"` +type MsgUpdateNamespace_SetContractHook struct { + NewValue string `protobuf:"bytes,1,opt,name=new_value,json=newValue,proto3" json:"new_value,omitempty"` } -func (m *MsgUpdateNamespace_MsgSetBurnsPaused) Reset() { *m = MsgUpdateNamespace_MsgSetBurnsPaused{} } -func (m *MsgUpdateNamespace_MsgSetBurnsPaused) String() string { return proto.CompactTextString(m) } -func (*MsgUpdateNamespace_MsgSetBurnsPaused) ProtoMessage() {} -func (*MsgUpdateNamespace_MsgSetBurnsPaused) Descriptor() ([]byte, []int) { - return fileDescriptor_ab9bfdcab1d9b6fa, []int{6, 3} +func (m *MsgUpdateNamespace_SetContractHook) Reset() { *m = MsgUpdateNamespace_SetContractHook{} } +func (m *MsgUpdateNamespace_SetContractHook) String() string { return proto.CompactTextString(m) } +func (*MsgUpdateNamespace_SetContractHook) ProtoMessage() {} +func (*MsgUpdateNamespace_SetContractHook) Descriptor() ([]byte, []int) { + return fileDescriptor_ab9bfdcab1d9b6fa, []int{4, 0} } -func (m *MsgUpdateNamespace_MsgSetBurnsPaused) XXX_Unmarshal(b []byte) error { +func (m *MsgUpdateNamespace_SetContractHook) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *MsgUpdateNamespace_MsgSetBurnsPaused) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *MsgUpdateNamespace_SetContractHook) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_MsgUpdateNamespace_MsgSetBurnsPaused.Marshal(b, m, deterministic) + return xxx_messageInfo_MsgUpdateNamespace_SetContractHook.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -542,23 +330,23 @@ func (m *MsgUpdateNamespace_MsgSetBurnsPaused) XXX_Marshal(b []byte, determinist return b[:n], nil } } -func (m *MsgUpdateNamespace_MsgSetBurnsPaused) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgUpdateNamespace_MsgSetBurnsPaused.Merge(m, src) +func (m *MsgUpdateNamespace_SetContractHook) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgUpdateNamespace_SetContractHook.Merge(m, src) } -func (m *MsgUpdateNamespace_MsgSetBurnsPaused) XXX_Size() int { +func (m *MsgUpdateNamespace_SetContractHook) XXX_Size() int { return m.Size() } -func (m *MsgUpdateNamespace_MsgSetBurnsPaused) XXX_DiscardUnknown() { - xxx_messageInfo_MsgUpdateNamespace_MsgSetBurnsPaused.DiscardUnknown(m) +func (m *MsgUpdateNamespace_SetContractHook) XXX_DiscardUnknown() { + xxx_messageInfo_MsgUpdateNamespace_SetContractHook.DiscardUnknown(m) } -var xxx_messageInfo_MsgUpdateNamespace_MsgSetBurnsPaused proto.InternalMessageInfo +var xxx_messageInfo_MsgUpdateNamespace_SetContractHook proto.InternalMessageInfo -func (m *MsgUpdateNamespace_MsgSetBurnsPaused) GetNewValue() bool { +func (m *MsgUpdateNamespace_SetContractHook) GetNewValue() string { if m != nil { return m.NewValue } - return false + return "" } type MsgUpdateNamespaceResponse struct { @@ -568,7 +356,7 @@ func (m *MsgUpdateNamespaceResponse) Reset() { *m = MsgUpdateNamespaceRe func (m *MsgUpdateNamespaceResponse) String() string { return proto.CompactTextString(m) } func (*MsgUpdateNamespaceResponse) ProtoMessage() {} func (*MsgUpdateNamespaceResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_ab9bfdcab1d9b6fa, []int{7} + return fileDescriptor_ab9bfdcab1d9b6fa, []int{5} } func (m *MsgUpdateNamespaceResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -597,25 +385,25 @@ func (m *MsgUpdateNamespaceResponse) XXX_DiscardUnknown() { var xxx_messageInfo_MsgUpdateNamespaceResponse proto.InternalMessageInfo -type MsgUpdateNamespaceRoles struct { - Sender string `protobuf:"bytes,1,opt,name=sender,proto3" json:"sender,omitempty" yaml:"sender"` - NamespaceDenom string `protobuf:"bytes,2,opt,name=namespace_denom,json=namespaceDenom,proto3" json:"namespace_denom,omitempty"` - RolePermissions []*Role `protobuf:"bytes,3,rep,name=role_permissions,json=rolePermissions,proto3" json:"role_permissions,omitempty"` - AddressRoles []*AddressRoles `protobuf:"bytes,4,rep,name=address_roles,json=addressRoles,proto3" json:"address_roles,omitempty"` +type MsgUpdateActorRoles struct { + Sender string `protobuf:"bytes,1,opt,name=sender,proto3" json:"sender,omitempty" yaml:"sender"` + Denom string `protobuf:"bytes,2,opt,name=denom,proto3" json:"denom,omitempty"` + RoleActorsToAdd []*RoleActors `protobuf:"bytes,3,rep,name=role_actors_to_add,json=roleActorsToAdd,proto3" json:"role_actors_to_add,omitempty"` + RoleActorsToRevoke []*RoleActors `protobuf:"bytes,5,rep,name=role_actors_to_revoke,json=roleActorsToRevoke,proto3" json:"role_actors_to_revoke,omitempty"` } -func (m *MsgUpdateNamespaceRoles) Reset() { *m = MsgUpdateNamespaceRoles{} } -func (m *MsgUpdateNamespaceRoles) String() string { return proto.CompactTextString(m) } -func (*MsgUpdateNamespaceRoles) ProtoMessage() {} -func (*MsgUpdateNamespaceRoles) Descriptor() ([]byte, []int) { - return fileDescriptor_ab9bfdcab1d9b6fa, []int{8} +func (m *MsgUpdateActorRoles) Reset() { *m = MsgUpdateActorRoles{} } +func (m *MsgUpdateActorRoles) String() string { return proto.CompactTextString(m) } +func (*MsgUpdateActorRoles) ProtoMessage() {} +func (*MsgUpdateActorRoles) Descriptor() ([]byte, []int) { + return fileDescriptor_ab9bfdcab1d9b6fa, []int{6} } -func (m *MsgUpdateNamespaceRoles) XXX_Unmarshal(b []byte) error { +func (m *MsgUpdateActorRoles) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *MsgUpdateNamespaceRoles) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *MsgUpdateActorRoles) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_MsgUpdateNamespaceRoles.Marshal(b, m, deterministic) + return xxx_messageInfo_MsgUpdateActorRoles.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -625,157 +413,61 @@ func (m *MsgUpdateNamespaceRoles) XXX_Marshal(b []byte, deterministic bool) ([]b return b[:n], nil } } -func (m *MsgUpdateNamespaceRoles) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgUpdateNamespaceRoles.Merge(m, src) +func (m *MsgUpdateActorRoles) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgUpdateActorRoles.Merge(m, src) } -func (m *MsgUpdateNamespaceRoles) XXX_Size() int { +func (m *MsgUpdateActorRoles) XXX_Size() int { return m.Size() } -func (m *MsgUpdateNamespaceRoles) XXX_DiscardUnknown() { - xxx_messageInfo_MsgUpdateNamespaceRoles.DiscardUnknown(m) +func (m *MsgUpdateActorRoles) XXX_DiscardUnknown() { + xxx_messageInfo_MsgUpdateActorRoles.DiscardUnknown(m) } -var xxx_messageInfo_MsgUpdateNamespaceRoles proto.InternalMessageInfo +var xxx_messageInfo_MsgUpdateActorRoles proto.InternalMessageInfo -func (m *MsgUpdateNamespaceRoles) GetSender() string { +func (m *MsgUpdateActorRoles) GetSender() string { if m != nil { return m.Sender } return "" } -func (m *MsgUpdateNamespaceRoles) GetNamespaceDenom() string { +func (m *MsgUpdateActorRoles) GetDenom() string { if m != nil { - return m.NamespaceDenom + return m.Denom } return "" } -func (m *MsgUpdateNamespaceRoles) GetRolePermissions() []*Role { - if m != nil { - return m.RolePermissions - } - return nil -} - -func (m *MsgUpdateNamespaceRoles) GetAddressRoles() []*AddressRoles { +func (m *MsgUpdateActorRoles) GetRoleActorsToAdd() []*RoleActors { if m != nil { - return m.AddressRoles + return m.RoleActorsToAdd } return nil } -type MsgUpdateNamespaceRolesResponse struct { -} - -func (m *MsgUpdateNamespaceRolesResponse) Reset() { *m = MsgUpdateNamespaceRolesResponse{} } -func (m *MsgUpdateNamespaceRolesResponse) String() string { return proto.CompactTextString(m) } -func (*MsgUpdateNamespaceRolesResponse) ProtoMessage() {} -func (*MsgUpdateNamespaceRolesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_ab9bfdcab1d9b6fa, []int{9} -} -func (m *MsgUpdateNamespaceRolesResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MsgUpdateNamespaceRolesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MsgUpdateNamespaceRolesResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MsgUpdateNamespaceRolesResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgUpdateNamespaceRolesResponse.Merge(m, src) -} -func (m *MsgUpdateNamespaceRolesResponse) XXX_Size() int { - return m.Size() -} -func (m *MsgUpdateNamespaceRolesResponse) XXX_DiscardUnknown() { - xxx_messageInfo_MsgUpdateNamespaceRolesResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_MsgUpdateNamespaceRolesResponse proto.InternalMessageInfo - -type MsgRevokeNamespaceRoles struct { - Sender string `protobuf:"bytes,1,opt,name=sender,proto3" json:"sender,omitempty" yaml:"sender"` - NamespaceDenom string `protobuf:"bytes,2,opt,name=namespace_denom,json=namespaceDenom,proto3" json:"namespace_denom,omitempty"` - AddressRolesToRevoke []*AddressRoles `protobuf:"bytes,3,rep,name=address_roles_to_revoke,json=addressRolesToRevoke,proto3" json:"address_roles_to_revoke,omitempty"` -} - -func (m *MsgRevokeNamespaceRoles) Reset() { *m = MsgRevokeNamespaceRoles{} } -func (m *MsgRevokeNamespaceRoles) String() string { return proto.CompactTextString(m) } -func (*MsgRevokeNamespaceRoles) ProtoMessage() {} -func (*MsgRevokeNamespaceRoles) Descriptor() ([]byte, []int) { - return fileDescriptor_ab9bfdcab1d9b6fa, []int{10} -} -func (m *MsgRevokeNamespaceRoles) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MsgRevokeNamespaceRoles) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MsgRevokeNamespaceRoles.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MsgRevokeNamespaceRoles) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgRevokeNamespaceRoles.Merge(m, src) -} -func (m *MsgRevokeNamespaceRoles) XXX_Size() int { - return m.Size() -} -func (m *MsgRevokeNamespaceRoles) XXX_DiscardUnknown() { - xxx_messageInfo_MsgRevokeNamespaceRoles.DiscardUnknown(m) -} - -var xxx_messageInfo_MsgRevokeNamespaceRoles proto.InternalMessageInfo - -func (m *MsgRevokeNamespaceRoles) GetSender() string { - if m != nil { - return m.Sender - } - return "" -} - -func (m *MsgRevokeNamespaceRoles) GetNamespaceDenom() string { - if m != nil { - return m.NamespaceDenom - } - return "" -} - -func (m *MsgRevokeNamespaceRoles) GetAddressRolesToRevoke() []*AddressRoles { +func (m *MsgUpdateActorRoles) GetRoleActorsToRevoke() []*RoleActors { if m != nil { - return m.AddressRolesToRevoke + return m.RoleActorsToRevoke } return nil } -type MsgRevokeNamespaceRolesResponse struct { +type MsgUpdateActorRolesResponse struct { } -func (m *MsgRevokeNamespaceRolesResponse) Reset() { *m = MsgRevokeNamespaceRolesResponse{} } -func (m *MsgRevokeNamespaceRolesResponse) String() string { return proto.CompactTextString(m) } -func (*MsgRevokeNamespaceRolesResponse) ProtoMessage() {} -func (*MsgRevokeNamespaceRolesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_ab9bfdcab1d9b6fa, []int{11} +func (m *MsgUpdateActorRolesResponse) Reset() { *m = MsgUpdateActorRolesResponse{} } +func (m *MsgUpdateActorRolesResponse) String() string { return proto.CompactTextString(m) } +func (*MsgUpdateActorRolesResponse) ProtoMessage() {} +func (*MsgUpdateActorRolesResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_ab9bfdcab1d9b6fa, []int{7} } -func (m *MsgRevokeNamespaceRolesResponse) XXX_Unmarshal(b []byte) error { +func (m *MsgUpdateActorRolesResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *MsgRevokeNamespaceRolesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *MsgUpdateActorRolesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_MsgRevokeNamespaceRolesResponse.Marshal(b, m, deterministic) + return xxx_messageInfo_MsgUpdateActorRolesResponse.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -785,17 +477,17 @@ func (m *MsgRevokeNamespaceRolesResponse) XXX_Marshal(b []byte, deterministic bo return b[:n], nil } } -func (m *MsgRevokeNamespaceRolesResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgRevokeNamespaceRolesResponse.Merge(m, src) +func (m *MsgUpdateActorRolesResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgUpdateActorRolesResponse.Merge(m, src) } -func (m *MsgRevokeNamespaceRolesResponse) XXX_Size() int { +func (m *MsgUpdateActorRolesResponse) XXX_Size() int { return m.Size() } -func (m *MsgRevokeNamespaceRolesResponse) XXX_DiscardUnknown() { - xxx_messageInfo_MsgRevokeNamespaceRolesResponse.DiscardUnknown(m) +func (m *MsgUpdateActorRolesResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgUpdateActorRolesResponse.DiscardUnknown(m) } -var xxx_messageInfo_MsgRevokeNamespaceRolesResponse proto.InternalMessageInfo +var xxx_messageInfo_MsgUpdateActorRolesResponse proto.InternalMessageInfo type MsgClaimVoucher struct { Sender string `protobuf:"bytes,1,opt,name=sender,proto3" json:"sender,omitempty" yaml:"sender"` @@ -806,7 +498,7 @@ func (m *MsgClaimVoucher) Reset() { *m = MsgClaimVoucher{} } func (m *MsgClaimVoucher) String() string { return proto.CompactTextString(m) } func (*MsgClaimVoucher) ProtoMessage() {} func (*MsgClaimVoucher) Descriptor() ([]byte, []int) { - return fileDescriptor_ab9bfdcab1d9b6fa, []int{12} + return fileDescriptor_ab9bfdcab1d9b6fa, []int{8} } func (m *MsgClaimVoucher) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -856,7 +548,7 @@ func (m *MsgClaimVoucherResponse) Reset() { *m = MsgClaimVoucherResponse func (m *MsgClaimVoucherResponse) String() string { return proto.CompactTextString(m) } func (*MsgClaimVoucherResponse) ProtoMessage() {} func (*MsgClaimVoucherResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_ab9bfdcab1d9b6fa, []int{13} + return fileDescriptor_ab9bfdcab1d9b6fa, []int{9} } func (m *MsgClaimVoucherResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -890,18 +582,11 @@ func init() { proto.RegisterType((*MsgUpdateParamsResponse)(nil), "injective.permissions.v1beta1.MsgUpdateParamsResponse") proto.RegisterType((*MsgCreateNamespace)(nil), "injective.permissions.v1beta1.MsgCreateNamespace") proto.RegisterType((*MsgCreateNamespaceResponse)(nil), "injective.permissions.v1beta1.MsgCreateNamespaceResponse") - proto.RegisterType((*MsgDeleteNamespace)(nil), "injective.permissions.v1beta1.MsgDeleteNamespace") - proto.RegisterType((*MsgDeleteNamespaceResponse)(nil), "injective.permissions.v1beta1.MsgDeleteNamespaceResponse") proto.RegisterType((*MsgUpdateNamespace)(nil), "injective.permissions.v1beta1.MsgUpdateNamespace") - proto.RegisterType((*MsgUpdateNamespace_MsgSetWasmHook)(nil), "injective.permissions.v1beta1.MsgUpdateNamespace.MsgSetWasmHook") - proto.RegisterType((*MsgUpdateNamespace_MsgSetMintsPaused)(nil), "injective.permissions.v1beta1.MsgUpdateNamespace.MsgSetMintsPaused") - proto.RegisterType((*MsgUpdateNamespace_MsgSetSendsPaused)(nil), "injective.permissions.v1beta1.MsgUpdateNamespace.MsgSetSendsPaused") - proto.RegisterType((*MsgUpdateNamespace_MsgSetBurnsPaused)(nil), "injective.permissions.v1beta1.MsgUpdateNamespace.MsgSetBurnsPaused") + proto.RegisterType((*MsgUpdateNamespace_SetContractHook)(nil), "injective.permissions.v1beta1.MsgUpdateNamespace.SetContractHook") proto.RegisterType((*MsgUpdateNamespaceResponse)(nil), "injective.permissions.v1beta1.MsgUpdateNamespaceResponse") - proto.RegisterType((*MsgUpdateNamespaceRoles)(nil), "injective.permissions.v1beta1.MsgUpdateNamespaceRoles") - proto.RegisterType((*MsgUpdateNamespaceRolesResponse)(nil), "injective.permissions.v1beta1.MsgUpdateNamespaceRolesResponse") - proto.RegisterType((*MsgRevokeNamespaceRoles)(nil), "injective.permissions.v1beta1.MsgRevokeNamespaceRoles") - proto.RegisterType((*MsgRevokeNamespaceRolesResponse)(nil), "injective.permissions.v1beta1.MsgRevokeNamespaceRolesResponse") + proto.RegisterType((*MsgUpdateActorRoles)(nil), "injective.permissions.v1beta1.MsgUpdateActorRoles") + proto.RegisterType((*MsgUpdateActorRolesResponse)(nil), "injective.permissions.v1beta1.MsgUpdateActorRolesResponse") proto.RegisterType((*MsgClaimVoucher)(nil), "injective.permissions.v1beta1.MsgClaimVoucher") proto.RegisterType((*MsgClaimVoucherResponse)(nil), "injective.permissions.v1beta1.MsgClaimVoucherResponse") } @@ -911,68 +596,63 @@ func init() { } var fileDescriptor_ab9bfdcab1d9b6fa = []byte{ - // 961 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x57, 0x4d, 0x6f, 0xe3, 0x44, - 0x18, 0xae, 0xb7, 0x1f, 0x34, 0xd3, 0xee, 0x96, 0x5a, 0x91, 0x9a, 0xf5, 0x82, 0x5b, 0xb2, 0x02, - 0x42, 0x56, 0xb5, 0x49, 0x57, 0xaa, 0x44, 0x0e, 0x08, 0x92, 0x3d, 0x80, 0xb4, 0x59, 0x05, 0x17, - 0x16, 0x09, 0x09, 0x59, 0xe3, 0x64, 0x70, 0x4c, 0x62, 0x8f, 0xe5, 0x71, 0x12, 0x7a, 0x5a, 0xc4, - 0x81, 0x03, 0x07, 0xc4, 0x91, 0x2b, 0xff, 0xa0, 0x07, 0xae, 0x70, 0xe2, 0xb0, 0xc7, 0x15, 0x27, - 0x4e, 0x2b, 0xd4, 0x1e, 0x7a, 0x47, 0xfc, 0x00, 0x34, 0x9e, 0x89, 0xed, 0x4c, 0xd2, 0xd8, 0xe9, - 0x6a, 0xb9, 0xb4, 0x79, 0xbf, 0x9f, 0xe7, 0xb1, 0xde, 0x19, 0x1b, 0xbc, 0xe5, 0x78, 0x5f, 0xa3, - 0x4e, 0xe8, 0x8c, 0x90, 0xee, 0xa3, 0xc0, 0x75, 0x08, 0x71, 0xb0, 0x47, 0xf4, 0x51, 0xcd, 0x42, - 0x21, 0xac, 0xe9, 0xe1, 0x37, 0x9a, 0x1f, 0xe0, 0x10, 0xcb, 0xaf, 0xc7, 0x79, 0x5a, 0x2a, 0x4f, - 0xe3, 0x79, 0x4a, 0xd1, 0xc6, 0x36, 0x8e, 0x32, 0x75, 0xfa, 0x8b, 0x15, 0x29, 0x6a, 0x07, 0x13, - 0x17, 0x13, 0xdd, 0x82, 0x04, 0xc5, 0x2d, 0x3b, 0xd8, 0xf1, 0x66, 0xe2, 0x5e, 0x3f, 0x8e, 0x53, - 0x83, 0xc7, 0xf7, 0x78, 0xdc, 0x25, 0xb6, 0x3e, 0xaa, 0xd1, 0x7f, 0x3c, 0x70, 0x9b, 0x05, 0x4c, - 0x36, 0x91, 0x19, 0x3c, 0x54, 0x5d, 0x4c, 0xc8, 0x87, 0x01, 0x74, 0x27, 0xb9, 0x7a, 0x46, 0x6e, - 0x8a, 0x28, 0x2b, 0xd8, 0x85, 0xae, 0xe3, 0x61, 0x3d, 0xfa, 0xcb, 0x5c, 0xe5, 0xdf, 0x25, 0xb0, - 0xd3, 0x22, 0xf6, 0x67, 0x7e, 0x17, 0x86, 0xa8, 0x1d, 0x75, 0x97, 0x8f, 0x41, 0x01, 0x0e, 0xc3, - 0x1e, 0x0e, 0x9c, 0xf0, 0xb4, 0x24, 0x1d, 0x48, 0x95, 0x42, 0xa3, 0xf4, 0xe7, 0xaf, 0x87, 0x45, - 0x0e, 0xf4, 0xc3, 0x6e, 0x37, 0x40, 0x84, 0x9c, 0x84, 0x81, 0xe3, 0xd9, 0x46, 0x92, 0x2a, 0x37, - 0xc1, 0x06, 0xc3, 0x57, 0xba, 0x71, 0x20, 0x55, 0xb6, 0x8e, 0xde, 0xd4, 0x16, 0xaa, 0xae, 0xb1, - 0x71, 0x8d, 0xb5, 0xa7, 0xcf, 0xf7, 0x57, 0x0c, 0x5e, 0x5a, 0xd7, 0xbe, 0xbb, 0x3c, 0xab, 0x26, - 0x4d, 0x7f, 0xb8, 0x3c, 0xab, 0xde, 0x49, 0xb3, 0x13, 0xc0, 0x96, 0x6f, 0x83, 0x3d, 0xc1, 0x65, - 0x20, 0xe2, 0x63, 0x8f, 0xa0, 0xf2, 0x6f, 0x12, 0x90, 0x5b, 0xc4, 0x6e, 0x06, 0x08, 0x86, 0xe8, - 0x11, 0x74, 0x11, 0xf1, 0x61, 0x07, 0xc9, 0xef, 0x80, 0x0d, 0x82, 0xbc, 0x2e, 0x0a, 0x38, 0xb7, - 0xdd, 0x7f, 0x9e, 0xef, 0xdf, 0x3c, 0x85, 0xee, 0xa0, 0x5e, 0x66, 0xfe, 0xb2, 0xc1, 0x13, 0xe4, - 0x87, 0xa0, 0xe0, 0x4d, 0xea, 0x38, 0xa9, 0x4a, 0x06, 0xa9, 0x78, 0x0e, 0xe7, 0x95, 0x34, 0x60, - 0xd4, 0x78, 0x6b, 0xca, 0x4b, 0x15, 0x78, 0x09, 0x40, 0xcb, 0xaf, 0x01, 0x65, 0xd6, 0x1b, 0xb3, - 0xfb, 0x99, 0xb1, 0x7b, 0x80, 0x06, 0xe8, 0x9a, 0xec, 0xde, 0x06, 0x3b, 0x31, 0x38, 0xb3, 0x8b, - 0x3c, 0xec, 0x46, 0x1c, 0x0b, 0xc6, 0xad, 0xd8, 0xfd, 0x80, 0x7a, 0x33, 0x81, 0x0b, 0x18, 0x38, - 0x70, 0xc1, 0x1b, 0x03, 0xff, 0x77, 0x3d, 0x02, 0xce, 0x1e, 0xd9, 0x4b, 0x05, 0x2e, 0x7f, 0x09, - 0x0a, 0x63, 0x48, 0x5c, 0xb3, 0x87, 0x71, 0xbf, 0xb4, 0x1a, 0x3d, 0xbf, 0x0f, 0x32, 0x9e, 0xdf, - 0x2c, 0x32, 0xea, 0x3a, 0x41, 0xe1, 0xe7, 0x90, 0xb8, 0x1f, 0x61, 0xdc, 0x37, 0x36, 0xc7, 0xfc, - 0x97, 0xfc, 0x15, 0xd8, 0x76, 0x1d, 0x2f, 0x24, 0xa6, 0x0f, 0x87, 0x04, 0x75, 0x4b, 0x6b, 0xd1, - 0x84, 0xe6, 0x75, 0x27, 0xb4, 0x68, 0xaf, 0x76, 0xd4, 0xca, 0xd8, 0x72, 0x13, 0x83, 0xce, 0xa1, - 0xcc, 0xe3, 0x39, 0xeb, 0x2f, 0x36, 0xe7, 0x84, 0xf6, 0x9a, 0xcc, 0x21, 0x89, 0x41, 0xe7, 0x58, - 0xc3, 0xc0, 0x8b, 0xe7, 0x6c, 0xbc, 0xd8, 0x9c, 0x06, 0xed, 0x35, 0x99, 0x63, 0x25, 0x86, 0x72, - 0x08, 0x6e, 0x4d, 0x6b, 0x2a, 0xdf, 0x01, 0x05, 0x0f, 0x8d, 0xcd, 0x11, 0x1c, 0x0c, 0x11, 0x7b, - 0xfe, 0xc6, 0xa6, 0x87, 0xc6, 0x8f, 0xa9, 0xad, 0xbc, 0x0b, 0x76, 0x67, 0x04, 0x9a, 0xad, 0xd8, - 0x9c, 0x57, 0x91, 0xa2, 0x9a, 0xb3, 0x22, 0x05, 0x7a, 0x61, 0x45, 0xe6, 0x52, 0x08, 0x9a, 0xf0, - 0xa5, 0x10, 0xbc, 0xf1, 0x52, 0xfc, 0x71, 0x23, 0x75, 0x8e, 0x25, 0x61, 0x3c, 0x40, 0xe4, 0xa5, - 0x6c, 0xc6, 0x23, 0xf0, 0x6a, 0x80, 0x07, 0xc8, 0x4c, 0x81, 0x2e, 0xad, 0x1e, 0xac, 0x56, 0xb6, - 0x8e, 0xee, 0x66, 0x3c, 0x6e, 0x8a, 0xc9, 0xd8, 0xa1, 0xc5, 0xed, 0x24, 0x2a, 0xb7, 0xc1, 0x4d, - 0xc8, 0xee, 0x05, 0x93, 0x86, 0x48, 0x69, 0x2d, 0x6a, 0x76, 0x2f, 0xa3, 0x19, 0xbf, 0x4b, 0x22, - 0x9e, 0xc6, 0x36, 0x4c, 0x59, 0xf5, 0xfb, 0x82, 0xbe, 0x77, 0x17, 0xeb, 0x1b, 0x15, 0x95, 0xdf, - 0x00, 0xfb, 0x57, 0x84, 0x62, 0xa5, 0xbf, 0x67, 0x4a, 0x1b, 0x68, 0x84, 0xfb, 0xff, 0x87, 0xd2, - 0x16, 0xd8, 0x9b, 0x52, 0xc6, 0x0c, 0xb1, 0x19, 0x44, 0xc3, 0xb9, 0xe0, 0x4b, 0x69, 0x54, 0x4c, - 0x6b, 0xf4, 0x29, 0x66, 0x2c, 0x32, 0xb5, 0x9a, 0x47, 0x96, 0x6b, 0x35, 0x2f, 0x14, 0x6b, 0xf5, - 0x24, 0x7a, 0x39, 0x68, 0x0e, 0xa0, 0xe3, 0x3e, 0xc6, 0xc3, 0x4e, 0x0f, 0x05, 0xcb, 0x48, 0x54, - 0x04, 0xeb, 0x69, 0x61, 0x98, 0x51, 0xbf, 0x27, 0x60, 0x15, 0x6f, 0xf7, 0xf4, 0x34, 0x7e, 0xbb, - 0xa7, 0x5d, 0x13, 0x6c, 0x47, 0xbf, 0xbc, 0x02, 0x56, 0x5b, 0xc4, 0x96, 0x47, 0x60, 0x7b, 0xea, - 0xed, 0x45, 0xcb, 0x7b, 0x5c, 0xb1, 0x7c, 0xe5, 0x78, 0xb9, 0xfc, 0xc9, 0x7c, 0xf9, 0x09, 0xd8, - 0x11, 0xdf, 0x2c, 0x6a, 0xd9, 0xad, 0x84, 0x12, 0xe5, 0xbd, 0xa5, 0x4b, 0xd2, 0x00, 0xc4, 0xcb, - 0x3f, 0x07, 0x00, 0xa1, 0x24, 0x0f, 0x80, 0x2b, 0x2e, 0x72, 0x0a, 0x40, 0xbc, 0xc4, 0x6b, 0x4b, - 0xdf, 0x15, 0x79, 0x00, 0x5c, 0x71, 0x68, 0xca, 0x3f, 0x4a, 0xa0, 0x38, 0xf7, 0xc4, 0x3c, 0x5e, - 0xbe, 0x27, 0xad, 0x53, 0xde, 0xbf, 0x5e, 0xdd, 0x14, 0xa0, 0xb9, 0x07, 0x4b, 0x0e, 0x40, 0xf3, - 0xea, 0xf2, 0x00, 0x5a, 0xb4, 0xc0, 0x74, 0x39, 0xa6, 0xb6, 0x37, 0xc7, 0x72, 0xa4, 0xf3, 0xf3, - 0x2c, 0xc7, 0xbc, 0xe5, 0x54, 0xd6, 0xbf, 0xbd, 0x3c, 0xab, 0x4a, 0x8d, 0xfe, 0xd3, 0x73, 0x55, - 0x7a, 0x76, 0xae, 0x4a, 0x7f, 0x9f, 0xab, 0xd2, 0x4f, 0x17, 0xea, 0xca, 0xb3, 0x0b, 0x75, 0xe5, - 0xaf, 0x0b, 0x75, 0xe5, 0x8b, 0x4f, 0x6c, 0x27, 0xec, 0x0d, 0x2d, 0xad, 0x83, 0x5d, 0xfd, 0xe3, - 0xc9, 0x88, 0x87, 0xd0, 0x22, 0xc9, 0x47, 0xcd, 0x61, 0x07, 0x07, 0x28, 0x6d, 0xf6, 0xa0, 0xe3, - 0xe9, 0x2e, 0xee, 0x0e, 0x07, 0x88, 0x4c, 0x7d, 0xf1, 0x84, 0xa7, 0x3e, 0x22, 0xd6, 0x46, 0xf4, - 0x45, 0x73, 0xff, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x72, 0x97, 0x38, 0xd1, 0x14, 0x0e, 0x00, - 0x00, + // 889 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x56, 0xcf, 0x6f, 0x1b, 0x45, + 0x14, 0xce, 0x36, 0x75, 0xc0, 0xd3, 0x04, 0xb7, 0x43, 0x50, 0x37, 0x0e, 0x75, 0x22, 0x23, 0x50, + 0xea, 0xaa, 0xbb, 0x72, 0x90, 0x22, 0xe1, 0x5b, 0xe2, 0x0b, 0x48, 0x4d, 0x29, 0x9b, 0x92, 0x03, + 0x42, 0xb2, 0xc6, 0xbb, 0x8f, 0xf5, 0x60, 0xef, 0xce, 0x6a, 0x66, 0xec, 0xe2, 0x53, 0x51, 0xb9, + 0x21, 0x0e, 0xfc, 0x29, 0x39, 0x70, 0x85, 0x73, 0x8f, 0x15, 0x27, 0x4e, 0x15, 0x4a, 0x0e, 0xb9, + 0xf3, 0x17, 0x20, 0xcf, 0x8c, 0xbd, 0x9b, 0x8d, 0xa9, 0xd7, 0xf4, 0x92, 0xf8, 0xfd, 0xfa, 0xde, + 0xf7, 0xbd, 0x79, 0x3b, 0xbb, 0xe8, 0x13, 0x1a, 0x7f, 0x0f, 0xbe, 0xa4, 0x23, 0x70, 0x13, 0xe0, + 0x11, 0x15, 0x82, 0xb2, 0x58, 0xb8, 0xa3, 0x66, 0x17, 0x24, 0x69, 0xba, 0xf2, 0x07, 0x27, 0xe1, + 0x4c, 0x32, 0x7c, 0x6f, 0x96, 0xe7, 0x64, 0xf2, 0x1c, 0x93, 0x57, 0xdd, 0x0c, 0x59, 0xc8, 0x54, + 0xa6, 0x3b, 0xf9, 0xa5, 0x8b, 0xaa, 0x35, 0x9f, 0x89, 0x88, 0x09, 0xb7, 0x4b, 0x04, 0xcc, 0x20, + 0x7d, 0x46, 0xe3, 0x6b, 0xf1, 0xb8, 0x3f, 0x8b, 0x4f, 0x0c, 0x13, 0xbf, 0x6b, 0xe2, 0x91, 0x08, + 0xdd, 0x51, 0x73, 0xf2, 0xcf, 0x04, 0xb6, 0x74, 0xa0, 0xa3, 0x3b, 0x6a, 0xc3, 0x84, 0x1a, 0x6f, + 0x16, 0x94, 0x10, 0x4e, 0xa2, 0x69, 0xae, 0xbb, 0x20, 0x37, 0x23, 0x54, 0x17, 0xdc, 0x21, 0x11, + 0x8d, 0x99, 0xab, 0xfe, 0x6a, 0x57, 0xfd, 0x0f, 0x0b, 0x55, 0x8e, 0x45, 0xf8, 0x75, 0x12, 0x10, + 0x09, 0x4f, 0x14, 0x3a, 0x3e, 0x40, 0x65, 0x32, 0x94, 0x3d, 0xc6, 0xa9, 0x1c, 0xdb, 0xd6, 0xae, + 0xb5, 0x57, 0x3e, 0xb2, 0xff, 0xfc, 0xed, 0xe1, 0xa6, 0x21, 0x7a, 0x18, 0x04, 0x1c, 0x84, 0x38, + 0x91, 0x9c, 0xc6, 0xa1, 0x97, 0xa6, 0xe2, 0x36, 0x5a, 0xd3, 0xfc, 0xec, 0x1b, 0xbb, 0xd6, 0xde, + 0xad, 0xfd, 0x8f, 0x9d, 0x37, 0x4e, 0xdd, 0xd1, 0xed, 0x8e, 0x6e, 0xbe, 0x7c, 0xbd, 0xb3, 0xe2, + 0x99, 0xd2, 0x96, 0xf3, 0xe2, 0xf2, 0xac, 0x91, 0x82, 0xfe, 0x7c, 0x79, 0xd6, 0xd8, 0xce, 0xaa, + 0xcb, 0x91, 0xad, 0x6f, 0xa1, 0xbb, 0x39, 0x97, 0x07, 0x22, 0x61, 0xb1, 0x80, 0xfa, 0xef, 0x16, + 0xc2, 0xc7, 0x22, 0x6c, 0x73, 0x20, 0x12, 0x1e, 0x93, 0x08, 0x44, 0x42, 0x7c, 0xc0, 0xf7, 0xd1, + 0x9a, 0x80, 0x38, 0x00, 0x6e, 0xb4, 0xdd, 0xf9, 0xe7, 0xf5, 0xce, 0xc6, 0x98, 0x44, 0x83, 0x56, + 0x5d, 0xfb, 0xeb, 0x9e, 0x49, 0xc0, 0x8f, 0x50, 0x39, 0x9e, 0xd6, 0x19, 0x51, 0x7b, 0x0b, 0x44, + 0xcd, 0xfa, 0x18, 0x5d, 0x29, 0x80, 0x96, 0x66, 0xa0, 0x27, 0xba, 0x6a, 0x39, 0x5d, 0x39, 0xa2, + 0xf5, 0x0f, 0x51, 0xf5, 0xba, 0x77, 0xa6, 0xee, 0x97, 0x92, 0x52, 0xa7, 0x95, 0xff, 0x2f, 0x75, + 0x9b, 0xa8, 0x14, 0x40, 0xcc, 0x22, 0xa5, 0xac, 0xec, 0x69, 0x03, 0x7f, 0x87, 0x36, 0x7c, 0x16, + 0x4b, 0x4e, 0x7c, 0xd9, 0xe9, 0x31, 0xd6, 0xb7, 0x57, 0x95, 0xee, 0xc3, 0x05, 0xba, 0xaf, 0x53, + 0x71, 0x4e, 0x40, 0xb6, 0x0d, 0xd2, 0xe7, 0x8c, 0xf5, 0xbd, 0x75, 0x3f, 0x63, 0xe1, 0xc7, 0xe8, + 0x36, 0x67, 0x03, 0xe8, 0x64, 0xc0, 0xec, 0x9b, 0xbb, 0xab, 0x7b, 0xb7, 0xf6, 0x3f, 0x5a, 0xd0, + 0xca, 0x63, 0x03, 0xf0, 0x2a, 0x93, 0xe2, 0x27, 0x69, 0x14, 0x7f, 0x89, 0x36, 0x14, 0x5e, 0x44, + 0x62, 0x12, 0x02, 0x17, 0x76, 0x49, 0x81, 0x35, 0x0a, 0x80, 0x1d, 0xeb, 0x12, 0x6f, 0x9d, 0xa7, + 0x86, 0xc0, 0x4f, 0x51, 0x25, 0x61, 0x03, 0xea, 0x8f, 0x3b, 0x42, 0x12, 0x39, 0x14, 0x20, 0xec, + 0x35, 0x05, 0xf9, 0x60, 0xd1, 0x5e, 0xab, 0xaa, 0x13, 0x55, 0xe4, 0xbd, 0x97, 0x64, 0x2c, 0x10, + 0x78, 0x84, 0xb6, 0x0d, 0xaa, 0x21, 0xda, 0xf1, 0x49, 0x42, 0xba, 0x74, 0x40, 0x25, 0x05, 0x61, + 0xbf, 0xa3, 0x3a, 0x1c, 0x14, 0xea, 0x60, 0x98, 0xb6, 0xa7, 0xf5, 0x63, 0x6f, 0x2b, 0x99, 0x1b, + 0xa0, 0x20, 0xaa, 0x0e, 0xaa, 0xe4, 0xce, 0x03, 0x6f, 0xa3, 0x72, 0x0c, 0xcf, 0x3a, 0x23, 0x32, + 0x18, 0x82, 0xde, 0x16, 0xef, 0xdd, 0x18, 0x9e, 0x9d, 0x4e, 0xec, 0x85, 0xcb, 0x9a, 0x3b, 0x6c, + 0xb3, 0xac, 0x39, 0x6f, 0xfa, 0x28, 0xde, 0x40, 0xef, 0xcf, 0xc2, 0x87, 0xbe, 0x64, 0x7c, 0x32, + 0x77, 0xf1, 0xf6, 0xdb, 0x7a, 0x8a, 0xb0, 0x3a, 0x75, 0x32, 0xc1, 0x14, 0x1d, 0xc9, 0x3a, 0x24, + 0x08, 0xec, 0x55, 0x35, 0xc5, 0xfb, 0x05, 0x8e, 0x5e, 0x71, 0x11, 0x7a, 0x9b, 0xf4, 0xef, 0xa7, + 0xec, 0x30, 0x08, 0xf0, 0xb7, 0xe8, 0x83, 0x1c, 0x2e, 0x87, 0x11, 0xeb, 0x83, 0xd9, 0xaa, 0x25, + 0xa0, 0x71, 0x16, 0xda, 0x53, 0x20, 0x2d, 0x37, 0x37, 0xdc, 0x9d, 0xb9, 0xc3, 0x4d, 0xe7, 0x54, + 0xbf, 0x87, 0xb6, 0xe7, 0xb8, 0x67, 0xe3, 0x7d, 0xae, 0x2e, 0xf1, 0xf6, 0x80, 0xd0, 0xe8, 0x94, + 0x0d, 0xfd, 0x1e, 0xf0, 0xb7, 0x9e, 0x6c, 0xeb, 0x41, 0x8e, 0x63, 0xfe, 0x16, 0xce, 0x76, 0x33, + 0xb7, 0x70, 0xd6, 0x35, 0xe5, 0xb6, 0xff, 0x53, 0x09, 0xad, 0x1e, 0x8b, 0x10, 0x8f, 0xd0, 0xfa, + 0x95, 0xb7, 0x8c, 0x53, 0xf4, 0x42, 0xd1, 0xf9, 0xd5, 0x83, 0xe5, 0xf2, 0xa7, 0xfd, 0xf1, 0x73, + 0x54, 0xc9, 0xbf, 0x01, 0x9a, 0x8b, 0xa1, 0x72, 0x25, 0xd5, 0xcf, 0x96, 0x2e, 0xc9, 0x12, 0xc8, + 0x5f, 0xd2, 0xcd, 0xa5, 0x2f, 0xd3, 0x22, 0x04, 0xfe, 0xe3, 0xe1, 0xc3, 0x2f, 0x2c, 0x74, 0xfb, + 0xda, 0x93, 0xb7, 0x5f, 0x14, 0x2f, 0xad, 0xa9, 0xb6, 0x96, 0xaf, 0x99, 0x91, 0x18, 0xa1, 0xf5, + 0x2b, 0xfb, 0x59, 0xe0, 0xf8, 0xb3, 0xf9, 0x45, 0x8e, 0x7f, 0xde, 0xfa, 0x55, 0x4b, 0x3f, 0x5e, + 0x9e, 0x35, 0xac, 0xa3, 0xfe, 0xcb, 0xf3, 0x9a, 0xf5, 0xea, 0xbc, 0x66, 0xfd, 0x7d, 0x5e, 0xb3, + 0x7e, 0xbd, 0xa8, 0xad, 0xbc, 0xba, 0xa8, 0xad, 0xfc, 0x75, 0x51, 0x5b, 0xf9, 0xe6, 0xab, 0x90, + 0xca, 0xde, 0xb0, 0xeb, 0xf8, 0x2c, 0x72, 0xbf, 0x98, 0xb6, 0x78, 0x44, 0xba, 0x22, 0xfd, 0xbc, + 0x7a, 0xe8, 0x33, 0x0e, 0x59, 0xb3, 0x47, 0x68, 0xec, 0x46, 0x2c, 0x18, 0x0e, 0x40, 0x5c, 0xf9, + 0xf6, 0x92, 0xe3, 0x04, 0x44, 0x77, 0x4d, 0x7d, 0x5b, 0x7d, 0xfa, 0x6f, 0x00, 0x00, 0x00, 0xff, + 0xff, 0x89, 0x70, 0x57, 0xeb, 0x9e, 0x0a, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -989,10 +669,8 @@ const _ = grpc.SupportPackageIsVersion4 type MsgClient interface { UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error) CreateNamespace(ctx context.Context, in *MsgCreateNamespace, opts ...grpc.CallOption) (*MsgCreateNamespaceResponse, error) - DeleteNamespace(ctx context.Context, in *MsgDeleteNamespace, opts ...grpc.CallOption) (*MsgDeleteNamespaceResponse, error) UpdateNamespace(ctx context.Context, in *MsgUpdateNamespace, opts ...grpc.CallOption) (*MsgUpdateNamespaceResponse, error) - UpdateNamespaceRoles(ctx context.Context, in *MsgUpdateNamespaceRoles, opts ...grpc.CallOption) (*MsgUpdateNamespaceRolesResponse, error) - RevokeNamespaceRoles(ctx context.Context, in *MsgRevokeNamespaceRoles, opts ...grpc.CallOption) (*MsgRevokeNamespaceRolesResponse, error) + UpdateActorRoles(ctx context.Context, in *MsgUpdateActorRoles, opts ...grpc.CallOption) (*MsgUpdateActorRolesResponse, error) ClaimVoucher(ctx context.Context, in *MsgClaimVoucher, opts ...grpc.CallOption) (*MsgClaimVoucherResponse, error) } @@ -1022,15 +700,6 @@ func (c *msgClient) CreateNamespace(ctx context.Context, in *MsgCreateNamespace, return out, nil } -func (c *msgClient) DeleteNamespace(ctx context.Context, in *MsgDeleteNamespace, opts ...grpc.CallOption) (*MsgDeleteNamespaceResponse, error) { - out := new(MsgDeleteNamespaceResponse) - err := c.cc.Invoke(ctx, "/injective.permissions.v1beta1.Msg/DeleteNamespace", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - func (c *msgClient) UpdateNamespace(ctx context.Context, in *MsgUpdateNamespace, opts ...grpc.CallOption) (*MsgUpdateNamespaceResponse, error) { out := new(MsgUpdateNamespaceResponse) err := c.cc.Invoke(ctx, "/injective.permissions.v1beta1.Msg/UpdateNamespace", in, out, opts...) @@ -1040,18 +709,9 @@ func (c *msgClient) UpdateNamespace(ctx context.Context, in *MsgUpdateNamespace, return out, nil } -func (c *msgClient) UpdateNamespaceRoles(ctx context.Context, in *MsgUpdateNamespaceRoles, opts ...grpc.CallOption) (*MsgUpdateNamespaceRolesResponse, error) { - out := new(MsgUpdateNamespaceRolesResponse) - err := c.cc.Invoke(ctx, "/injective.permissions.v1beta1.Msg/UpdateNamespaceRoles", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *msgClient) RevokeNamespaceRoles(ctx context.Context, in *MsgRevokeNamespaceRoles, opts ...grpc.CallOption) (*MsgRevokeNamespaceRolesResponse, error) { - out := new(MsgRevokeNamespaceRolesResponse) - err := c.cc.Invoke(ctx, "/injective.permissions.v1beta1.Msg/RevokeNamespaceRoles", in, out, opts...) +func (c *msgClient) UpdateActorRoles(ctx context.Context, in *MsgUpdateActorRoles, opts ...grpc.CallOption) (*MsgUpdateActorRolesResponse, error) { + out := new(MsgUpdateActorRolesResponse) + err := c.cc.Invoke(ctx, "/injective.permissions.v1beta1.Msg/UpdateActorRoles", in, out, opts...) if err != nil { return nil, err } @@ -1071,10 +731,8 @@ func (c *msgClient) ClaimVoucher(ctx context.Context, in *MsgClaimVoucher, opts type MsgServer interface { UpdateParams(context.Context, *MsgUpdateParams) (*MsgUpdateParamsResponse, error) CreateNamespace(context.Context, *MsgCreateNamespace) (*MsgCreateNamespaceResponse, error) - DeleteNamespace(context.Context, *MsgDeleteNamespace) (*MsgDeleteNamespaceResponse, error) UpdateNamespace(context.Context, *MsgUpdateNamespace) (*MsgUpdateNamespaceResponse, error) - UpdateNamespaceRoles(context.Context, *MsgUpdateNamespaceRoles) (*MsgUpdateNamespaceRolesResponse, error) - RevokeNamespaceRoles(context.Context, *MsgRevokeNamespaceRoles) (*MsgRevokeNamespaceRolesResponse, error) + UpdateActorRoles(context.Context, *MsgUpdateActorRoles) (*MsgUpdateActorRolesResponse, error) ClaimVoucher(context.Context, *MsgClaimVoucher) (*MsgClaimVoucherResponse, error) } @@ -1088,17 +746,11 @@ func (*UnimplementedMsgServer) UpdateParams(ctx context.Context, req *MsgUpdateP func (*UnimplementedMsgServer) CreateNamespace(ctx context.Context, req *MsgCreateNamespace) (*MsgCreateNamespaceResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method CreateNamespace not implemented") } -func (*UnimplementedMsgServer) DeleteNamespace(ctx context.Context, req *MsgDeleteNamespace) (*MsgDeleteNamespaceResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method DeleteNamespace not implemented") -} func (*UnimplementedMsgServer) UpdateNamespace(ctx context.Context, req *MsgUpdateNamespace) (*MsgUpdateNamespaceResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method UpdateNamespace not implemented") } -func (*UnimplementedMsgServer) UpdateNamespaceRoles(ctx context.Context, req *MsgUpdateNamespaceRoles) (*MsgUpdateNamespaceRolesResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method UpdateNamespaceRoles not implemented") -} -func (*UnimplementedMsgServer) RevokeNamespaceRoles(ctx context.Context, req *MsgRevokeNamespaceRoles) (*MsgRevokeNamespaceRolesResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method RevokeNamespaceRoles not implemented") +func (*UnimplementedMsgServer) UpdateActorRoles(ctx context.Context, req *MsgUpdateActorRoles) (*MsgUpdateActorRolesResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateActorRoles not implemented") } func (*UnimplementedMsgServer) ClaimVoucher(ctx context.Context, req *MsgClaimVoucher) (*MsgClaimVoucherResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ClaimVoucher not implemented") @@ -1144,24 +796,6 @@ func _Msg_CreateNamespace_Handler(srv interface{}, ctx context.Context, dec func return interceptor(ctx, in, info, handler) } -func _Msg_DeleteNamespace_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MsgDeleteNamespace) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(MsgServer).DeleteNamespace(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/injective.permissions.v1beta1.Msg/DeleteNamespace", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).DeleteNamespace(ctx, req.(*MsgDeleteNamespace)) - } - return interceptor(ctx, in, info, handler) -} - func _Msg_UpdateNamespace_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(MsgUpdateNamespace) if err := dec(in); err != nil { @@ -1180,38 +814,20 @@ func _Msg_UpdateNamespace_Handler(srv interface{}, ctx context.Context, dec func return interceptor(ctx, in, info, handler) } -func _Msg_UpdateNamespaceRoles_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MsgUpdateNamespaceRoles) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(MsgServer).UpdateNamespaceRoles(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/injective.permissions.v1beta1.Msg/UpdateNamespaceRoles", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).UpdateNamespaceRoles(ctx, req.(*MsgUpdateNamespaceRoles)) - } - return interceptor(ctx, in, info, handler) -} - -func _Msg_RevokeNamespaceRoles_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MsgRevokeNamespaceRoles) +func _Msg_UpdateActorRoles_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgUpdateActorRoles) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(MsgServer).RevokeNamespaceRoles(ctx, in) + return srv.(MsgServer).UpdateActorRoles(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/injective.permissions.v1beta1.Msg/RevokeNamespaceRoles", + FullMethod: "/injective.permissions.v1beta1.Msg/UpdateActorRoles", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).RevokeNamespaceRoles(ctx, req.(*MsgRevokeNamespaceRoles)) + return srv.(MsgServer).UpdateActorRoles(ctx, req.(*MsgUpdateActorRoles)) } return interceptor(ctx, in, info, handler) } @@ -1246,21 +862,13 @@ var _Msg_serviceDesc = grpc.ServiceDesc{ MethodName: "CreateNamespace", Handler: _Msg_CreateNamespace_Handler, }, - { - MethodName: "DeleteNamespace", - Handler: _Msg_DeleteNamespace_Handler, - }, { MethodName: "UpdateNamespace", Handler: _Msg_UpdateNamespace_Handler, }, { - MethodName: "UpdateNamespaceRoles", - Handler: _Msg_UpdateNamespaceRoles_Handler, - }, - { - MethodName: "RevokeNamespaceRoles", - Handler: _Msg_RevokeNamespaceRoles_Handler, + MethodName: "UpdateActorRoles", + Handler: _Msg_UpdateActorRoles_Handler, }, { MethodName: "ClaimVoucher", @@ -1397,7 +1005,7 @@ func (m *MsgCreateNamespaceResponse) MarshalToSizedBuffer(dAtA []byte) (int, err return len(dAtA) - i, nil } -func (m *MsgDeleteNamespace) Marshal() (dAtA []byte, err error) { +func (m *MsgUpdateNamespace) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -1407,115 +1015,75 @@ func (m *MsgDeleteNamespace) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *MsgDeleteNamespace) MarshalTo(dAtA []byte) (int, error) { +func (m *MsgUpdateNamespace) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *MsgDeleteNamespace) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *MsgUpdateNamespace) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l - if len(m.NamespaceDenom) > 0 { - i -= len(m.NamespaceDenom) - copy(dAtA[i:], m.NamespaceDenom) - i = encodeVarintTx(dAtA, i, uint64(len(m.NamespaceDenom))) - i-- - dAtA[i] = 0x12 - } - if len(m.Sender) > 0 { - i -= len(m.Sender) - copy(dAtA[i:], m.Sender) - i = encodeVarintTx(dAtA, i, uint64(len(m.Sender))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *MsgDeleteNamespaceResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MsgDeleteNamespaceResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgDeleteNamespaceResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - return len(dAtA) - i, nil -} - -func (m *MsgUpdateNamespace) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err + if len(m.PolicyManagerCapabilities) > 0 { + for iNdEx := len(m.PolicyManagerCapabilities) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.PolicyManagerCapabilities[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x3a + } } - return dAtA[:n], nil -} - -func (m *MsgUpdateNamespace) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgUpdateNamespace) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.BurnsPaused != nil { - { - size, err := m.BurnsPaused.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err + if len(m.PolicyStatuses) > 0 { + for iNdEx := len(m.PolicyStatuses) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.PolicyStatuses[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) } - i -= size - i = encodeVarintTx(dAtA, i, uint64(size)) + i-- + dAtA[i] = 0x32 } - i-- - dAtA[i] = 0x32 } - if m.SendsPaused != nil { - { - size, err := m.SendsPaused.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err + if len(m.RoleManagers) > 0 { + for iNdEx := len(m.RoleManagers) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.RoleManagers[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) } - i -= size - i = encodeVarintTx(dAtA, i, uint64(size)) + i-- + dAtA[i] = 0x2a } - i-- - dAtA[i] = 0x2a } - if m.MintsPaused != nil { - { - size, err := m.MintsPaused.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err + if len(m.RolePermissions) > 0 { + for iNdEx := len(m.RolePermissions) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.RolePermissions[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) } - i -= size - i = encodeVarintTx(dAtA, i, uint64(size)) + i-- + dAtA[i] = 0x22 } - i-- - dAtA[i] = 0x22 } - if m.WasmHook != nil { + if m.ContractHook != nil { { - size, err := m.WasmHook.MarshalToSizedBuffer(dAtA[:i]) + size, err := m.ContractHook.MarshalToSizedBuffer(dAtA[:i]) if err != nil { return 0, err } @@ -1525,10 +1093,10 @@ func (m *MsgUpdateNamespace) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x1a } - if len(m.NamespaceDenom) > 0 { - i -= len(m.NamespaceDenom) - copy(dAtA[i:], m.NamespaceDenom) - i = encodeVarintTx(dAtA, i, uint64(len(m.NamespaceDenom))) + if len(m.Denom) > 0 { + i -= len(m.Denom) + copy(dAtA[i:], m.Denom) + i = encodeVarintTx(dAtA, i, uint64(len(m.Denom))) i-- dAtA[i] = 0x12 } @@ -1542,7 +1110,7 @@ func (m *MsgUpdateNamespace) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func (m *MsgUpdateNamespace_MsgSetWasmHook) Marshal() (dAtA []byte, err error) { +func (m *MsgUpdateNamespace_SetContractHook) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -1552,12 +1120,12 @@ func (m *MsgUpdateNamespace_MsgSetWasmHook) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *MsgUpdateNamespace_MsgSetWasmHook) MarshalTo(dAtA []byte) (int, error) { +func (m *MsgUpdateNamespace_SetContractHook) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *MsgUpdateNamespace_MsgSetWasmHook) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *MsgUpdateNamespace_SetContractHook) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -1572,105 +1140,6 @@ func (m *MsgUpdateNamespace_MsgSetWasmHook) MarshalToSizedBuffer(dAtA []byte) (i return len(dAtA) - i, nil } -func (m *MsgUpdateNamespace_MsgSetMintsPaused) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MsgUpdateNamespace_MsgSetMintsPaused) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgUpdateNamespace_MsgSetMintsPaused) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.NewValue { - i-- - if m.NewValue { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } - i-- - dAtA[i] = 0x8 - } - return len(dAtA) - i, nil -} - -func (m *MsgUpdateNamespace_MsgSetSendsPaused) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MsgUpdateNamespace_MsgSetSendsPaused) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgUpdateNamespace_MsgSetSendsPaused) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.NewValue { - i-- - if m.NewValue { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } - i-- - dAtA[i] = 0x8 - } - return len(dAtA) - i, nil -} - -func (m *MsgUpdateNamespace_MsgSetBurnsPaused) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MsgUpdateNamespace_MsgSetBurnsPaused) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgUpdateNamespace_MsgSetBurnsPaused) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.NewValue { - i-- - if m.NewValue { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } - i-- - dAtA[i] = 0x8 - } - return len(dAtA) - i, nil -} - func (m *MsgUpdateNamespaceResponse) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -1694,7 +1163,7 @@ func (m *MsgUpdateNamespaceResponse) MarshalToSizedBuffer(dAtA []byte) (int, err return len(dAtA) - i, nil } -func (m *MsgUpdateNamespaceRoles) Marshal() (dAtA []byte, err error) { +func (m *MsgUpdateActorRoles) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -1704,34 +1173,20 @@ func (m *MsgUpdateNamespaceRoles) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *MsgUpdateNamespaceRoles) MarshalTo(dAtA []byte) (int, error) { +func (m *MsgUpdateActorRoles) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *MsgUpdateNamespaceRoles) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *MsgUpdateActorRoles) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l - if len(m.AddressRoles) > 0 { - for iNdEx := len(m.AddressRoles) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.AddressRoles[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintTx(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x22 - } - } - if len(m.RolePermissions) > 0 { - for iNdEx := len(m.RolePermissions) - 1; iNdEx >= 0; iNdEx-- { + if len(m.RoleActorsToRevoke) > 0 { + for iNdEx := len(m.RoleActorsToRevoke) - 1; iNdEx >= 0; iNdEx-- { { - size, err := m.RolePermissions[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + size, err := m.RoleActorsToRevoke[iNdEx].MarshalToSizedBuffer(dAtA[:i]) if err != nil { return 0, err } @@ -1739,73 +1194,13 @@ func (m *MsgUpdateNamespaceRoles) MarshalToSizedBuffer(dAtA []byte) (int, error) i = encodeVarintTx(dAtA, i, uint64(size)) } i-- - dAtA[i] = 0x1a + dAtA[i] = 0x2a } } - if len(m.NamespaceDenom) > 0 { - i -= len(m.NamespaceDenom) - copy(dAtA[i:], m.NamespaceDenom) - i = encodeVarintTx(dAtA, i, uint64(len(m.NamespaceDenom))) - i-- - dAtA[i] = 0x12 - } - if len(m.Sender) > 0 { - i -= len(m.Sender) - copy(dAtA[i:], m.Sender) - i = encodeVarintTx(dAtA, i, uint64(len(m.Sender))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *MsgUpdateNamespaceRolesResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MsgUpdateNamespaceRolesResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgUpdateNamespaceRolesResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - return len(dAtA) - i, nil -} - -func (m *MsgRevokeNamespaceRoles) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MsgRevokeNamespaceRoles) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgRevokeNamespaceRoles) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.AddressRolesToRevoke) > 0 { - for iNdEx := len(m.AddressRolesToRevoke) - 1; iNdEx >= 0; iNdEx-- { + if len(m.RoleActorsToAdd) > 0 { + for iNdEx := len(m.RoleActorsToAdd) - 1; iNdEx >= 0; iNdEx-- { { - size, err := m.AddressRolesToRevoke[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + size, err := m.RoleActorsToAdd[iNdEx].MarshalToSizedBuffer(dAtA[:i]) if err != nil { return 0, err } @@ -1816,10 +1211,10 @@ func (m *MsgRevokeNamespaceRoles) MarshalToSizedBuffer(dAtA []byte) (int, error) dAtA[i] = 0x1a } } - if len(m.NamespaceDenom) > 0 { - i -= len(m.NamespaceDenom) - copy(dAtA[i:], m.NamespaceDenom) - i = encodeVarintTx(dAtA, i, uint64(len(m.NamespaceDenom))) + if len(m.Denom) > 0 { + i -= len(m.Denom) + copy(dAtA[i:], m.Denom) + i = encodeVarintTx(dAtA, i, uint64(len(m.Denom))) i-- dAtA[i] = 0x12 } @@ -1833,7 +1228,7 @@ func (m *MsgRevokeNamespaceRoles) MarshalToSizedBuffer(dAtA []byte) (int, error) return len(dAtA) - i, nil } -func (m *MsgRevokeNamespaceRolesResponse) Marshal() (dAtA []byte, err error) { +func (m *MsgUpdateActorRolesResponse) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -1843,12 +1238,12 @@ func (m *MsgRevokeNamespaceRolesResponse) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *MsgRevokeNamespaceRolesResponse) MarshalTo(dAtA []byte) (int, error) { +func (m *MsgUpdateActorRolesResponse) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *MsgRevokeNamespaceRolesResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *MsgUpdateActorRolesResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -1975,7 +1370,7 @@ func (m *MsgCreateNamespaceResponse) Size() (n int) { return n } -func (m *MsgDeleteNamespace) Size() (n int) { +func (m *MsgUpdateNamespace) Size() (n int) { if m == nil { return 0 } @@ -1985,56 +1380,42 @@ func (m *MsgDeleteNamespace) Size() (n int) { if l > 0 { n += 1 + l + sovTx(uint64(l)) } - l = len(m.NamespaceDenom) + l = len(m.Denom) if l > 0 { n += 1 + l + sovTx(uint64(l)) } - return n -} - -func (m *MsgDeleteNamespaceResponse) Size() (n int) { - if m == nil { - return 0 + if m.ContractHook != nil { + l = m.ContractHook.Size() + n += 1 + l + sovTx(uint64(l)) } - var l int - _ = l - return n -} - -func (m *MsgUpdateNamespace) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Sender) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - l = len(m.NamespaceDenom) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - if m.WasmHook != nil { - l = m.WasmHook.Size() - n += 1 + l + sovTx(uint64(l)) + if len(m.RolePermissions) > 0 { + for _, e := range m.RolePermissions { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) + } } - if m.MintsPaused != nil { - l = m.MintsPaused.Size() - n += 1 + l + sovTx(uint64(l)) + if len(m.RoleManagers) > 0 { + for _, e := range m.RoleManagers { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) + } } - if m.SendsPaused != nil { - l = m.SendsPaused.Size() - n += 1 + l + sovTx(uint64(l)) + if len(m.PolicyStatuses) > 0 { + for _, e := range m.PolicyStatuses { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) + } } - if m.BurnsPaused != nil { - l = m.BurnsPaused.Size() - n += 1 + l + sovTx(uint64(l)) + if len(m.PolicyManagerCapabilities) > 0 { + for _, e := range m.PolicyManagerCapabilities { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) + } } return n } -func (m *MsgUpdateNamespace_MsgSetWasmHook) Size() (n int) { +func (m *MsgUpdateNamespace_SetContractHook) Size() (n int) { if m == nil { return 0 } @@ -2047,42 +1428,6 @@ func (m *MsgUpdateNamespace_MsgSetWasmHook) Size() (n int) { return n } -func (m *MsgUpdateNamespace_MsgSetMintsPaused) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.NewValue { - n += 2 - } - return n -} - -func (m *MsgUpdateNamespace_MsgSetSendsPaused) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.NewValue { - n += 2 - } - return n -} - -func (m *MsgUpdateNamespace_MsgSetBurnsPaused) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.NewValue { - n += 2 - } - return n -} - func (m *MsgUpdateNamespaceResponse) Size() (n int) { if m == nil { return 0 @@ -2092,7 +1437,7 @@ func (m *MsgUpdateNamespaceResponse) Size() (n int) { return n } -func (m *MsgUpdateNamespaceRoles) Size() (n int) { +func (m *MsgUpdateActorRoles) Size() (n int) { if m == nil { return 0 } @@ -2102,50 +1447,18 @@ func (m *MsgUpdateNamespaceRoles) Size() (n int) { if l > 0 { n += 1 + l + sovTx(uint64(l)) } - l = len(m.NamespaceDenom) + l = len(m.Denom) if l > 0 { n += 1 + l + sovTx(uint64(l)) } - if len(m.RolePermissions) > 0 { - for _, e := range m.RolePermissions { - l = e.Size() - n += 1 + l + sovTx(uint64(l)) - } - } - if len(m.AddressRoles) > 0 { - for _, e := range m.AddressRoles { + if len(m.RoleActorsToAdd) > 0 { + for _, e := range m.RoleActorsToAdd { l = e.Size() n += 1 + l + sovTx(uint64(l)) } } - return n -} - -func (m *MsgUpdateNamespaceRolesResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - return n -} - -func (m *MsgRevokeNamespaceRoles) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Sender) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - l = len(m.NamespaceDenom) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - if len(m.AddressRolesToRevoke) > 0 { - for _, e := range m.AddressRolesToRevoke { + if len(m.RoleActorsToRevoke) > 0 { + for _, e := range m.RoleActorsToRevoke { l = e.Size() n += 1 + l + sovTx(uint64(l)) } @@ -2153,7 +1466,7 @@ func (m *MsgRevokeNamespaceRoles) Size() (n int) { return n } -func (m *MsgRevokeNamespaceRolesResponse) Size() (n int) { +func (m *MsgUpdateActorRolesResponse) Size() (n int) { if m == nil { return 0 } @@ -2413,795 +1726,18 @@ func (m *MsgCreateNamespace) Unmarshal(dAtA []byte) error { } postIndex := iNdEx + intStringLen if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Sender = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Namespace", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.Namespace.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MsgCreateNamespaceResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MsgCreateNamespaceResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgCreateNamespaceResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - default: - iNdEx = preIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MsgDeleteNamespace) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MsgDeleteNamespace: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgDeleteNamespace: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Sender", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Sender = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field NamespaceDenom", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.NamespaceDenom = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MsgDeleteNamespaceResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MsgDeleteNamespaceResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgDeleteNamespaceResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - default: - iNdEx = preIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MsgUpdateNamespace) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MsgUpdateNamespace: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgUpdateNamespace: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Sender", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Sender = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field NamespaceDenom", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.NamespaceDenom = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field WasmHook", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.WasmHook == nil { - m.WasmHook = &MsgUpdateNamespace_MsgSetWasmHook{} - } - if err := m.WasmHook.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field MintsPaused", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.MintsPaused == nil { - m.MintsPaused = &MsgUpdateNamespace_MsgSetMintsPaused{} - } - if err := m.MintsPaused.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 5: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SendsPaused", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.SendsPaused == nil { - m.SendsPaused = &MsgUpdateNamespace_MsgSetSendsPaused{} - } - if err := m.SendsPaused.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 6: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field BurnsPaused", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.BurnsPaused == nil { - m.BurnsPaused = &MsgUpdateNamespace_MsgSetBurnsPaused{} - } - if err := m.BurnsPaused.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MsgUpdateNamespace_MsgSetWasmHook) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MsgSetWasmHook: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgSetWasmHook: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field NewValue", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.NewValue = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MsgUpdateNamespace_MsgSetMintsPaused) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MsgSetMintsPaused: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgSetMintsPaused: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field NewValue", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.NewValue = bool(v != 0) - default: - iNdEx = preIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MsgUpdateNamespace_MsgSetSendsPaused) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MsgSetSendsPaused: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgSetSendsPaused: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field NewValue", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.NewValue = bool(v != 0) - default: - iNdEx = preIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MsgUpdateNamespace_MsgSetBurnsPaused) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break + return ErrInvalidLengthTx } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MsgSetBurnsPaused: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgSetBurnsPaused: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field NewValue", wireType) + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Sender = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Namespace", wireType) } - var v int + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTx @@ -3211,12 +1747,25 @@ func (m *MsgUpdateNamespace_MsgSetBurnsPaused) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - v |= int(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - m.NewValue = bool(v != 0) + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Namespace.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipTx(dAtA[iNdEx:]) @@ -3238,7 +1787,7 @@ func (m *MsgUpdateNamespace_MsgSetBurnsPaused) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgUpdateNamespaceResponse) Unmarshal(dAtA []byte) error { +func (m *MsgCreateNamespaceResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -3261,10 +1810,10 @@ func (m *MsgUpdateNamespaceResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgUpdateNamespaceResponse: wiretype end group for non-group") + return fmt.Errorf("proto: MsgCreateNamespaceResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgUpdateNamespaceResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgCreateNamespaceResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { default: @@ -3288,7 +1837,7 @@ func (m *MsgUpdateNamespaceResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgUpdateNamespaceRoles) Unmarshal(dAtA []byte) error { +func (m *MsgUpdateNamespace) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -3311,10 +1860,10 @@ func (m *MsgUpdateNamespaceRoles) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgUpdateNamespaceRoles: wiretype end group for non-group") + return fmt.Errorf("proto: MsgUpdateNamespace: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgUpdateNamespaceRoles: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgUpdateNamespace: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -3351,7 +1900,7 @@ func (m *MsgUpdateNamespaceRoles) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field NamespaceDenom", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Denom", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -3379,9 +1928,45 @@ func (m *MsgUpdateNamespaceRoles) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.NamespaceDenom = string(dAtA[iNdEx:postIndex]) + m.Denom = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ContractHook", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.ContractHook == nil { + m.ContractHook = &MsgUpdateNamespace_SetContractHook{} + } + if err := m.ContractHook.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field RolePermissions", wireType) } @@ -3415,9 +2000,77 @@ func (m *MsgUpdateNamespaceRoles) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex - case 4: + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RoleManagers", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.RoleManagers = append(m.RoleManagers, &RoleManager{}) + if err := m.RoleManagers[len(m.RoleManagers)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PolicyStatuses", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.PolicyStatuses = append(m.PolicyStatuses, &PolicyStatus{}) + if err := m.PolicyStatuses[len(m.PolicyStatuses)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 7: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AddressRoles", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field PolicyManagerCapabilities", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -3444,10 +2097,92 @@ func (m *MsgUpdateNamespaceRoles) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.AddressRoles = append(m.AddressRoles, &AddressRoles{}) - if err := m.AddressRoles[len(m.AddressRoles)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + m.PolicyManagerCapabilities = append(m.PolicyManagerCapabilities, &PolicyManagerCapability{}) + if err := m.PolicyManagerCapabilities[len(m.PolicyManagerCapabilities)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { return err } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgUpdateNamespace_SetContractHook) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: SetContractHook: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SetContractHook: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field NewValue", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.NewValue = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex @@ -3470,7 +2205,7 @@ func (m *MsgUpdateNamespaceRoles) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgUpdateNamespaceRolesResponse) Unmarshal(dAtA []byte) error { +func (m *MsgUpdateNamespaceResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -3493,10 +2228,10 @@ func (m *MsgUpdateNamespaceRolesResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgUpdateNamespaceRolesResponse: wiretype end group for non-group") + return fmt.Errorf("proto: MsgUpdateNamespaceResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgUpdateNamespaceRolesResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgUpdateNamespaceResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { default: @@ -3520,7 +2255,7 @@ func (m *MsgUpdateNamespaceRolesResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgRevokeNamespaceRoles) Unmarshal(dAtA []byte) error { +func (m *MsgUpdateActorRoles) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -3543,10 +2278,10 @@ func (m *MsgRevokeNamespaceRoles) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgRevokeNamespaceRoles: wiretype end group for non-group") + return fmt.Errorf("proto: MsgUpdateActorRoles: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgRevokeNamespaceRoles: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgUpdateActorRoles: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -3583,7 +2318,7 @@ func (m *MsgRevokeNamespaceRoles) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field NamespaceDenom", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Denom", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -3611,11 +2346,45 @@ func (m *MsgRevokeNamespaceRoles) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.NamespaceDenom = string(dAtA[iNdEx:postIndex]) + m.Denom = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AddressRolesToRevoke", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field RoleActorsToAdd", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.RoleActorsToAdd = append(m.RoleActorsToAdd, &RoleActors{}) + if err := m.RoleActorsToAdd[len(m.RoleActorsToAdd)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RoleActorsToRevoke", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -3642,8 +2411,8 @@ func (m *MsgRevokeNamespaceRoles) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.AddressRolesToRevoke = append(m.AddressRolesToRevoke, &AddressRoles{}) - if err := m.AddressRolesToRevoke[len(m.AddressRolesToRevoke)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + m.RoleActorsToRevoke = append(m.RoleActorsToRevoke, &RoleActors{}) + if err := m.RoleActorsToRevoke[len(m.RoleActorsToRevoke)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -3668,7 +2437,7 @@ func (m *MsgRevokeNamespaceRoles) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgRevokeNamespaceRolesResponse) Unmarshal(dAtA []byte) error { +func (m *MsgUpdateActorRolesResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -3691,10 +2460,10 @@ func (m *MsgRevokeNamespaceRolesResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgRevokeNamespaceRolesResponse: wiretype end group for non-group") + return fmt.Errorf("proto: MsgUpdateActorRolesResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgRevokeNamespaceRolesResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgUpdateActorRolesResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { default: diff --git a/chain/permissions/types/types.go b/chain/permissions/types/types.go deleted file mode 100644 index 12a6b08f..00000000 --- a/chain/permissions/types/types.go +++ /dev/null @@ -1,156 +0,0 @@ -package types - -import ( - "encoding/json" - - "cosmossdk.io/errors" - sdk "github.com/cosmos/cosmos-sdk/types" - - tftypes "github.com/InjectiveLabs/sdk-go/chain/tokenfactory/types" -) - -const ( - EVERYONE = "EVERYONE" - MaxPerm = uint32(Action_MINT) | uint32(Action_RECEIVE) | uint32(Action_BURN) -) - -type WasmHookMsg struct { - From sdk.AccAddress `json:"from_address"` - To sdk.AccAddress `json:"to_address"` - Action string `json:"action"` - Amounts sdk.Coins `json:"amounts"` -} - -func NewWasmHookMsg(fromAddr, toAddr sdk.AccAddress, action Action, amount sdk.Coin) WasmHookMsg { - return WasmHookMsg{ - From: fromAddr, - To: toAddr, - Action: action.String(), - Amounts: sdk.NewCoins(amount), - } -} - -func GetWasmHookMsgBytes(fromAddr, toAddr sdk.AccAddress, action Action, amount sdk.Coin) ([]byte, error) { - wasmHookMsg := struct { - SendRestriction WasmHookMsg `json:"send_restriction"` - }{NewWasmHookMsg(fromAddr, toAddr, action, amount)} - - bz, err := json.Marshal(wasmHookMsg) - if err != nil { - return nil, err - } - - return bz, nil -} - -func (n *Namespace) Validate() error { - if err := n.ValidateBasicParams(); err != nil { - return err - } - - if err := n.ValidateEveryoneRole(); err != nil { - return err - } - - if err := n.ValidateRoles(false); err != nil { - return err - } - - return nil -} - -func (n *Namespace) ValidateBasicParams() error { - if _, _, err := tftypes.DeconstructDenom(n.Denom); err != nil { - return errors.Wrap(err, "permissions namespace can only be applied to tokenfactory denoms") - } - - // existing wasm hook contract - if n.WasmHook != "" { - if _, err := sdk.AccAddressFromBech32(n.WasmHook); err != nil { - return ErrInvalidWasmHook - } - } - - return nil -} - -func (n *Namespace) ValidateRoles(isForUpdate bool) error { - // role_permissions - foundRoles := make(map[string]struct{}, len(n.RolePermissions)) - for _, rolePerm := range n.RolePermissions { - if _, ok := foundRoles[rolePerm.Role]; ok { - return errors.Wrapf(ErrInvalidPermission, "permissions for the role %s set multiple times?", rolePerm.Role) - } - if rolePerm.Permissions > MaxPerm { - return errors.Wrapf(ErrInvalidPermission, "permissions %d for the role %s is bigger than maximum expected %d", rolePerm.Permissions, rolePerm.Role, MaxPerm) - } - foundRoles[rolePerm.Role] = struct{}{} - } - - // address_roles - foundAddresses := make(map[string]struct{}, len(n.AddressRoles)) - for _, addrRoles := range n.AddressRoles { - if _, err := sdk.AccAddressFromBech32(addrRoles.Address); err != nil { - return errors.Wrapf(err, "invalid address %s", addrRoles.Address) - } - if _, ok := foundAddresses[addrRoles.Address]; ok { - return errors.Wrapf(ErrInvalidRole, "address %s is assigned new roles multiple times?", addrRoles.Address) - } - for _, role := range addrRoles.Roles { - _, found := foundRoles[role] - if !isForUpdate && !found { - return errors.Wrapf(ErrUnknownRole, "role %s has no defined permissions", role) - } - if role == EVERYONE { - return errors.Wrapf(ErrInvalidRole, "role %s should not be explicitly attached to address, you need to remove address from the list completely instead", EVERYONE) - } - } - foundAddresses[addrRoles.Address] = struct{}{} - } - - return nil -} - -func (n *Namespace) ValidateEveryoneRole() error { - // role_permissions - for _, rolePerm := range n.RolePermissions { - if rolePerm.Role == EVERYONE { - return nil - } - } - - return errors.Wrapf(ErrInvalidPermission, "permissions for role %s should be explicitly set", EVERYONE) -} - -func (n *Namespace) CheckActionValidity(action Action) error { - // check that action is not paused - switch action { - case Action_MINT: - if n.MintsPaused { - return errors.Wrap(ErrRestrictedAction, "mints paused") - } - case Action_RECEIVE: - if n.SendsPaused { - return errors.Wrap(ErrRestrictedAction, "sends paused") - } - case Action_BURN: - if n.BurnsPaused { - return errors.Wrap(ErrRestrictedAction, "burns paused") - } - } - return nil -} - -func (a Action) DeriveActor(fromAddr, toAddr sdk.AccAddress) sdk.AccAddress { - switch a { - case Action_MINT, Action_RECEIVE: - return toAddr - case Action_BURN: - return fromAddr - } - return fromAddr -} - -func NewEmptyVoucher(denom string) sdk.Coin { - return sdk.NewInt64Coin(denom, 0) -} diff --git a/chain/stream/types/query.pb.go b/chain/stream/types/query.pb.go index be31fd77..73d96e9e 100644 --- a/chain/stream/types/query.pb.go +++ b/chain/stream/types/query.pb.go @@ -581,7 +581,7 @@ func (m *SubaccountDeposit) GetDeposit() types.Deposit { type SpotOrderUpdate struct { Status OrderUpdateStatus `protobuf:"varint,1,opt,name=status,proto3,enum=injective.stream.v1beta1.OrderUpdateStatus" json:"status,omitempty"` - OrderHash []byte `protobuf:"bytes,2,opt,name=order_hash,json=orderHash,proto3" json:"order_hash,omitempty"` + OrderHash string `protobuf:"bytes,2,opt,name=order_hash,json=orderHash,proto3" json:"order_hash,omitempty"` Cid string `protobuf:"bytes,3,opt,name=cid,proto3" json:"cid,omitempty"` Order *SpotOrder `protobuf:"bytes,4,opt,name=order,proto3" json:"order,omitempty"` } @@ -626,11 +626,11 @@ func (m *SpotOrderUpdate) GetStatus() OrderUpdateStatus { return OrderUpdateStatus_Unspecified } -func (m *SpotOrderUpdate) GetOrderHash() []byte { +func (m *SpotOrderUpdate) GetOrderHash() string { if m != nil { return m.OrderHash } - return nil + return "" } func (m *SpotOrderUpdate) GetCid() string { @@ -701,7 +701,7 @@ func (m *SpotOrder) GetOrder() types.SpotLimitOrder { type DerivativeOrderUpdate struct { Status OrderUpdateStatus `protobuf:"varint,1,opt,name=status,proto3,enum=injective.stream.v1beta1.OrderUpdateStatus" json:"status,omitempty"` - OrderHash []byte `protobuf:"bytes,2,opt,name=order_hash,json=orderHash,proto3" json:"order_hash,omitempty"` + OrderHash string `protobuf:"bytes,2,opt,name=order_hash,json=orderHash,proto3" json:"order_hash,omitempty"` Cid string `protobuf:"bytes,3,opt,name=cid,proto3" json:"cid,omitempty"` Order *DerivativeOrder `protobuf:"bytes,4,opt,name=order,proto3" json:"order,omitempty"` } @@ -746,11 +746,11 @@ func (m *DerivativeOrderUpdate) GetStatus() OrderUpdateStatus { return OrderUpdateStatus_Unspecified } -func (m *DerivativeOrderUpdate) GetOrderHash() []byte { +func (m *DerivativeOrderUpdate) GetOrderHash() string { if m != nil { return m.OrderHash } - return nil + return "" } func (m *DerivativeOrderUpdate) GetCid() string { @@ -953,7 +953,7 @@ type SpotTrade struct { // bytes32 subaccount ID that executed the trade SubaccountId string `protobuf:"bytes,6,opt,name=subaccount_id,json=subaccountId,proto3" json:"subaccount_id,omitempty"` Fee cosmossdk_io_math.LegacyDec `protobuf:"bytes,7,opt,name=fee,proto3,customtype=cosmossdk.io/math.LegacyDec" json:"fee"` - OrderHash []byte `protobuf:"bytes,8,opt,name=order_hash,json=orderHash,proto3" json:"order_hash,omitempty"` + OrderHash string `protobuf:"bytes,8,opt,name=order_hash,json=orderHash,proto3" json:"order_hash,omitempty"` FeeRecipientAddress string `protobuf:"bytes,9,opt,name=fee_recipient_address,json=feeRecipientAddress,proto3" json:"fee_recipient_address,omitempty"` Cid string `protobuf:"bytes,10,opt,name=cid,proto3" json:"cid,omitempty"` TradeId string `protobuf:"bytes,11,opt,name=trade_id,json=tradeId,proto3" json:"trade_id,omitempty"` @@ -1020,11 +1020,11 @@ func (m *SpotTrade) GetSubaccountId() string { return "" } -func (m *SpotTrade) GetOrderHash() []byte { +func (m *SpotTrade) GetOrderHash() string { if m != nil { return m.OrderHash } - return nil + return "" } func (m *SpotTrade) GetFeeRecipientAddress() string { @@ -1521,110 +1521,110 @@ func init() { } var fileDescriptor_e23b7dcfb2fbc9c7 = []byte{ - // 1640 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x58, 0xcd, 0x6e, 0xdb, 0xc6, - 0x16, 0xb6, 0x2c, 0x5b, 0x16, 0x8f, 0x64, 0x5b, 0x9e, 0x38, 0x06, 0xe3, 0xdc, 0x6b, 0x27, 0x74, - 0x72, 0x63, 0xe7, 0x47, 0x72, 0x7c, 0x71, 0x81, 0x5b, 0x74, 0x91, 0x44, 0x76, 0x83, 0x38, 0x70, - 0xd0, 0x80, 0x76, 0x5a, 0x20, 0x68, 0x4a, 0x50, 0xe4, 0x48, 0x9a, 0x4a, 0x22, 0x65, 0x0e, 0x69, - 0x44, 0x4f, 0xd0, 0xae, 0x8a, 0x6c, 0xbb, 0xec, 0xb6, 0x8b, 0x3e, 0x44, 0xbb, 0xc9, 0xaa, 0xc8, - 0xb2, 0x28, 0x8a, 0xb4, 0x48, 0x5e, 0xa4, 0x98, 0x1f, 0x52, 0x24, 0x25, 0x4b, 0x72, 0x9a, 0x22, - 0x2b, 0x91, 0xa3, 0x73, 0xbe, 0x6f, 0xce, 0x99, 0x39, 0xdf, 0x1c, 0x0e, 0x5c, 0x21, 0xce, 0x57, - 0xd8, 0xf2, 0xc9, 0x09, 0xae, 0x50, 0xdf, 0xc3, 0x66, 0xa7, 0x72, 0x72, 0xbb, 0x86, 0x7d, 0xf3, - 0x76, 0xe5, 0x38, 0xc0, 0x5e, 0xaf, 0xdc, 0xf5, 0x5c, 0xdf, 0x45, 0x6a, 0x64, 0x55, 0x16, 0x56, - 0x65, 0x69, 0xb5, 0xba, 0x66, 0xb9, 0xb4, 0xe3, 0xd2, 0x4a, 0xcd, 0xa4, 0x38, 0x72, 0xb5, 0x5c, - 0xe2, 0x08, 0xcf, 0xd5, 0xe5, 0x86, 0xdb, 0x70, 0xf9, 0x63, 0x85, 0x3d, 0xc9, 0xd1, 0x6b, 0x7d, - 0x56, 0xfc, 0xdc, 0x6a, 0x9a, 0x4e, 0xa3, 0xef, 0x8c, 0x4f, 0xb0, 0xe3, 0x53, 0x69, 0xb8, 0x35, - 0xca, 0x50, 0x0e, 0x08, 0x53, 0xed, 0xdb, 0x3c, 0xcc, 0x1f, 0xf2, 0xc9, 0xe9, 0xf8, 0x38, 0xc0, - 0xd4, 0x47, 0x36, 0x2c, 0xd7, 0x4c, 0xa7, 0x65, 0xd4, 0xcc, 0xb6, 0xe9, 0x58, 0x98, 0x1a, 0x75, - 0xd2, 0xf6, 0xb1, 0xa7, 0x66, 0x2e, 0x65, 0x36, 0x0b, 0x3b, 0x37, 0xcb, 0xa7, 0x05, 0x55, 0xae, - 0x9a, 0x4e, 0xab, 0x2a, 0x9d, 0xee, 0x73, 0x9f, 0xea, 0xcc, 0xcb, 0xd7, 0xeb, 0x19, 0x1d, 0xd5, - 0x06, 0xfe, 0x41, 0x27, 0xb0, 0x4a, 0x83, 0x9a, 0x69, 0x59, 0x6e, 0xe0, 0xf8, 0x86, 0x8d, 0xbb, - 0x2e, 0x25, 0x7e, 0xc4, 0x35, 0xcd, 0xb9, 0x76, 0x4e, 0xe7, 0x3a, 0x8c, 0x7c, 0xf7, 0xa4, 0x6b, - 0x82, 0x51, 0xa5, 0xa7, 0xfc, 0x8f, 0x9e, 0x02, 0xa2, 0x5d, 0xd7, 0x37, 0x7c, 0xcf, 0xb4, 0xfb, - 0xb1, 0x65, 0x39, 0xdf, 0x7f, 0x4e, 0xe7, 0x3b, 0xe2, 0xe6, 0x09, 0x8e, 0x12, 0xc3, 0x89, 0x8f, - 0xa3, 0x3a, 0xa8, 0x36, 0xf6, 0xc8, 0x89, 0xc9, 0x10, 0x52, 0x0c, 0x33, 0xef, 0xc0, 0xb0, 0xd2, - 0x47, 0x4b, 0xf0, 0x84, 0x31, 0xb8, 0x9e, 0x8d, 0xbd, 0x88, 0x61, 0x76, 0x1c, 0xc3, 0xa7, 0xdc, - 0x7c, 0x30, 0x86, 0xf8, 0x78, 0x2a, 0x86, 0x24, 0x43, 0xee, 0x1d, 0x18, 0x62, 0x31, 0x24, 0x78, - 0x30, 0xac, 0xf4, 0x63, 0xa8, 0xb9, 0x6e, 0x2b, 0x62, 0x99, 0xe3, 0x2c, 0x5b, 0x63, 0x58, 0x98, - 0x4b, 0x82, 0x68, 0x39, 0x0a, 0x85, 0xa3, 0x49, 0x9a, 0x63, 0xf8, 0x57, 0x3a, 0x9c, 0x04, 0x59, - 0xfe, 0xdd, 0xc8, 0x56, 0x53, 0x51, 0xc5, 0x29, 0x9f, 0x42, 0x89, 0xef, 0x38, 0xe2, 0x3a, 0x11, - 0x8d, 0x32, 0x8e, 0xe6, 0x71, 0xe8, 0x91, 0xa0, 0x59, 0xec, 0x26, 0x87, 0x91, 0x09, 0xe7, 0x5c, - 0xcf, 0xb4, 0xda, 0xd8, 0xe8, 0x7a, 0xc4, 0xc2, 0x21, 0x3c, 0x70, 0xf8, 0x1b, 0xa3, 0xa2, 0x60, - 0x4e, 0x8f, 0x99, 0x4f, 0x82, 0x60, 0xc9, 0x4d, 0xff, 0xa1, 0x7d, 0x3f, 0x07, 0x0b, 0xa1, 0x20, - 0xd0, 0xae, 0xeb, 0x50, 0x8c, 0x2e, 0x43, 0xb1, 0xd6, 0x76, 0xad, 0x96, 0xd1, 0xc4, 0xa4, 0xd1, - 0xf4, 0xb9, 0x12, 0xcc, 0xe8, 0x05, 0x3e, 0xf6, 0x80, 0x0f, 0xa1, 0x7f, 0x03, 0x08, 0x13, 0x9f, - 0x74, 0x30, 0x2f, 0xdf, 0xac, 0xae, 0xf0, 0x91, 0x23, 0xd2, 0xc1, 0xe8, 0x21, 0xcc, 0x27, 0x34, - 0x45, 0xcd, 0x5e, 0xca, 0x6e, 0x16, 0x76, 0xae, 0x4e, 0x24, 0x26, 0x7a, 0x31, 0xae, 0x1f, 0xe8, - 0x19, 0x9c, 0x1b, 0xa2, 0x1c, 0xea, 0x0c, 0x47, 0xbc, 0x79, 0x16, 0xc9, 0xd0, 0xd1, 0xa0, 0x4c, - 0xa0, 0x3d, 0x28, 0xc4, 0x04, 0x42, 0x9d, 0xe5, 0xb0, 0x1b, 0x23, 0x60, 0x43, 0x15, 0xd0, 0xa1, - 0x2f, 0x08, 0xe8, 0x33, 0x58, 0x1a, 0x90, 0x02, 0x35, 0xc7, 0xb1, 0x46, 0xec, 0x82, 0xbd, 0x64, - 0xbd, 0xeb, 0xa5, 0xb4, 0x00, 0xa0, 0x87, 0x72, 0x76, 0xa2, 0x30, 0xd5, 0xb9, 0x71, 0x88, 0x87, - 0x61, 0x51, 0x3c, 0xe9, 0xda, 0xa6, 0x2f, 0xe7, 0x28, 0x0a, 0x11, 0x7d, 0x91, 0x98, 0xa3, 0x44, - 0xcc, 0x73, 0xc4, 0xca, 0x24, 0x73, 0x8c, 0xe3, 0x96, 0xd2, 0x65, 0x8e, 0x8c, 0x74, 0x81, 0x1b, - 0x01, 0x37, 0xa5, 0xaa, 0x32, 0x6e, 0xd2, 0x51, 0x49, 0x49, 0xf0, 0x64, 0x69, 0x8b, 0x41, 0x8a, - 0x5a, 0xc3, 0x4b, 0x3b, 0xa2, 0x81, 0xb3, 0xd2, 0x0c, 0x2b, 0xea, 0x90, 0xec, 0x2e, 0x28, 0x51, - 0x2d, 0xaa, 0x05, 0x8e, 0xac, 0x8d, 0xaf, 0x66, 0xbd, 0xef, 0xc4, 0x4a, 0x20, 0x5e, 0xba, 0x54, - 0x2d, 0x8e, 0x2b, 0x81, 0x58, 0xd1, 0xea, 0xc5, 0x58, 0xa1, 0x52, 0xad, 0x0e, 0x8b, 0xa9, 0x19, - 0xa2, 0x12, 0x64, 0x29, 0x3e, 0x96, 0xa5, 0xc9, 0x1e, 0xd1, 0x3d, 0x50, 0xa2, 0xa4, 0xc8, 0x03, - 0x75, 0x63, 0x82, 0x64, 0xe8, 0x7d, 0x2f, 0xed, 0xc7, 0x0c, 0x28, 0xd1, 0x1f, 0xe8, 0x22, 0x28, - 0x1d, 0xd3, 0x6b, 0x61, 0xdf, 0x20, 0x36, 0x27, 0x52, 0xf4, 0xbc, 0x18, 0xd8, 0xb7, 0xd1, 0x5d, - 0x80, 0x5a, 0xd0, 0x33, 0xda, 0xf8, 0x04, 0xb7, 0xa9, 0x3a, 0xcd, 0x63, 0xbb, 0x1c, 0xa3, 0x8b, - 0xda, 0x8e, 0x90, 0xf0, 0x80, 0x59, 0xea, 0x4a, 0x2d, 0xe8, 0xf1, 0x27, 0x8a, 0xaa, 0x50, 0xa0, - 0xb8, 0xdd, 0x0e, 0x21, 0xb2, 0x93, 0x42, 0x00, 0xf3, 0x12, 0x18, 0xda, 0x8b, 0x0c, 0x14, 0x62, - 0xca, 0x81, 0x54, 0x98, 0x93, 0xf5, 0x2d, 0x27, 0x1c, 0xbe, 0xa2, 0x06, 0xe4, 0x23, 0x31, 0x12, - 0xb3, 0xbd, 0x50, 0x16, 0x4d, 0x59, 0x99, 0x35, 0x65, 0x11, 0xc7, 0xae, 0x4b, 0x9c, 0xea, 0xf6, - 0xcb, 0xd7, 0xeb, 0x53, 0x3f, 0xfc, 0xb1, 0xbe, 0xd9, 0x20, 0x7e, 0x33, 0xa8, 0x95, 0x2d, 0xb7, - 0x53, 0x91, 0x1d, 0x9c, 0xf8, 0xb9, 0x45, 0xed, 0x56, 0xc5, 0xef, 0x75, 0x31, 0xe5, 0x0e, 0x54, - 0x8f, 0xc0, 0xb5, 0x6f, 0x32, 0x80, 0x06, 0xa5, 0x07, 0x6d, 0xc0, 0x7c, 0x4c, 0xc5, 0xa2, 0x84, - 0x16, 0xfb, 0x83, 0xfb, 0x36, 0x7a, 0x04, 0xf9, 0x48, 0xdf, 0xc4, 0x24, 0x6f, 0x9c, 0x41, 0xdf, - 0xb8, 0xc6, 0x4f, 0xe9, 0x11, 0x84, 0xe6, 0xc0, 0xd2, 0x80, 0x11, 0x5a, 0x86, 0x59, 0x1b, 0x3b, - 0x6e, 0x47, 0x4e, 0x40, 0xbc, 0xa0, 0x5d, 0x98, 0x93, 0x6e, 0x43, 0xb6, 0xce, 0xc0, 0x42, 0x24, - 0x09, 0x43, 0x4f, 0xed, 0xa7, 0x0c, 0x2c, 0xa6, 0x04, 0x08, 0xed, 0x42, 0x8e, 0xfa, 0xa6, 0x1f, - 0x50, 0xce, 0xb7, 0x30, 0xfa, 0xd0, 0x8a, 0xdc, 0x0e, 0xb9, 0x8b, 0x2e, 0x5d, 0xd9, 0x69, 0xc3, - 0x37, 0xa9, 0xd1, 0x34, 0x69, 0x93, 0x4f, 0xb0, 0x28, 0xb7, 0xed, 0x03, 0x93, 0x36, 0x59, 0x2d, - 0x58, 0xc4, 0xe6, 0x4d, 0x9d, 0xa2, 0xb3, 0x47, 0xf4, 0x11, 0xcc, 0xf2, 0xbf, 0x65, 0x1b, 0xb6, - 0x31, 0x81, 0x60, 0xea, 0xc2, 0x43, 0xeb, 0x82, 0x12, 0x8d, 0x8d, 0x2e, 0x81, 0xfb, 0x21, 0x89, - 0xc8, 0xd8, 0xf5, 0x51, 0x19, 0x63, 0x90, 0x07, 0xa4, 0x43, 0x04, 0xae, 0x4c, 0x9c, 0x64, 0xfc, - 0x25, 0x03, 0xe7, 0x87, 0xaa, 0xec, 0x07, 0x4a, 0xde, 0x9d, 0x64, 0xf2, 0xb6, 0x26, 0x3e, 0x1b, - 0xc2, 0x80, 0xbe, 0xcb, 0xc0, 0x62, 0xea, 0xaf, 0xd1, 0x99, 0x3c, 0x48, 0x66, 0x72, 0x7b, 0xf4, - 0xde, 0x0b, 0x81, 0x4f, 0xc9, 0x27, 0xa3, 0x22, 0xd4, 0x10, 0xe0, 0x3c, 0xae, 0xbc, 0x9e, 0x27, - 0xf4, 0x11, 0x7f, 0xd7, 0xbe, 0xce, 0x42, 0x3e, 0x94, 0xeb, 0xd1, 0x93, 0x1a, 0xa8, 0xd8, 0xe9, - 0x21, 0x15, 0xbb, 0x02, 0x39, 0x42, 0x0f, 0x5c, 0xa7, 0x21, 0x89, 0xe4, 0x1b, 0xba, 0x03, 0xf9, - 0xe3, 0xc0, 0x74, 0x7c, 0xe2, 0xf7, 0x78, 0x1a, 0x95, 0xea, 0x06, 0x9b, 0xe2, 0x6f, 0xaf, 0xd7, - 0x2f, 0x0a, 0x05, 0xa1, 0x76, 0xab, 0x4c, 0xdc, 0x4a, 0xc7, 0xf4, 0x9b, 0xe5, 0x03, 0xdc, 0x30, - 0xad, 0xde, 0x1e, 0xb6, 0xf4, 0xc8, 0x89, 0xb5, 0x25, 0xd8, 0xf1, 0xbd, 0x9e, 0x38, 0x3d, 0x78, - 0xb3, 0x3f, 0x21, 0x06, 0x70, 0x3f, 0x7e, 0x72, 0xa0, 0x8f, 0x21, 0xd7, 0x31, 0xbd, 0x06, 0x71, - 0x78, 0x2f, 0x3f, 0x21, 0x80, 0x74, 0x41, 0xcf, 0x40, 0xb5, 0x82, 0x4e, 0xd0, 0x16, 0x07, 0x6e, - 0x3d, 0x70, 0x6c, 0xe2, 0x34, 0x0c, 0x8e, 0xce, 0x9b, 0xf6, 0x09, 0xe1, 0x56, 0xfa, 0x20, 0xf7, - 0x05, 0xc6, 0x27, 0x0c, 0x42, 0xf3, 0xa1, 0x10, 0x3b, 0xf1, 0x58, 0x26, 0x69, 0xaf, 0x53, 0x73, - 0xdb, 0x72, 0x21, 0xe4, 0x1b, 0x2b, 0x65, 0x91, 0x82, 0xe9, 0xc9, 0x29, 0x85, 0x07, 0x42, 0x30, - 0xc3, 0x34, 0x5a, 0xee, 0x6d, 0xfe, 0xac, 0xfd, 0x9c, 0x15, 0xf5, 0xcd, 0xfb, 0xab, 0xd1, 0x1b, - 0xe0, 0x3c, 0x5b, 0x5b, 0xa3, 0x16, 0xf4, 0x38, 0x75, 0x5e, 0x9f, 0x25, 0xb4, 0x1a, 0xf4, 0xd0, - 0x15, 0x98, 0xc7, 0xcf, 0xb1, 0x15, 0xb0, 0x1d, 0x74, 0xd4, 0x87, 0x4f, 0x0e, 0xfe, 0xfd, 0x0d, - 0x10, 0xc5, 0x3d, 0x7b, 0xe6, 0xb8, 0x07, 0x76, 0x6e, 0x6e, 0xc8, 0xce, 0xfd, 0x1f, 0x64, 0xeb, - 0x18, 0x9f, 0x65, 0x21, 0x99, 0x7d, 0x4a, 0x4d, 0xf2, 0x69, 0x35, 0xf9, 0x3f, 0x9c, 0xaf, 0x63, - 0x6c, 0x78, 0xd8, 0x22, 0x5d, 0x82, 0x1d, 0xdf, 0x30, 0x6d, 0xdb, 0xc3, 0x94, 0xf2, 0x2f, 0x22, - 0x45, 0x7e, 0x85, 0x9c, 0xab, 0x63, 0xac, 0x87, 0x16, 0xf7, 0x84, 0x41, 0xa8, 0x43, 0xd0, 0xd7, - 0xa1, 0x0b, 0x90, 0xe7, 0x8d, 0x34, 0x8b, 0xa0, 0x20, 0x4e, 0x73, 0xfe, 0xbe, 0x6f, 0x6b, 0xbf, - 0x67, 0xe3, 0x0a, 0xf3, 0x4f, 0xaf, 0xe5, 0x40, 0x3e, 0x67, 0x86, 0xe4, 0xf3, 0x31, 0x2c, 0x84, - 0xcd, 0x9f, 0x61, 0xe3, 0xb6, 0x6f, 0xca, 0x0f, 0xf4, 0xad, 0x51, 0x62, 0x16, 0x2a, 0xd1, 0x1e, - 0x73, 0xd0, 0xe7, 0xbb, 0xf1, 0x57, 0x56, 0xbc, 0x5d, 0xb3, 0xe7, 0x06, 0xfe, 0x99, 0x8a, 0x57, - 0xb8, 0xbc, 0xbf, 0xe5, 0x55, 0x3e, 0xc0, 0xf2, 0x1e, 0x41, 0x31, 0x71, 0x01, 0x72, 0x15, 0x16, - 0x12, 0x0b, 0xc0, 0xce, 0xc3, 0x2c, 0x5b, 0xa7, 0xf8, 0x0a, 0xf0, 0x93, 0x2e, 0xda, 0x01, 0xa2, - 0x81, 0x52, 0x74, 0x25, 0xdc, 0x02, 0x54, 0xfb, 0x1c, 0x16, 0x53, 0x9f, 0xdd, 0xef, 0x09, 0xf8, - 0x08, 0x8a, 0x89, 0xbb, 0x8e, 0xf7, 0x83, 0xba, 0x1d, 0x6b, 0xfa, 0x25, 0x70, 0xd2, 0x23, 0x33, - 0xe8, 0x81, 0x06, 0xef, 0xe4, 0xd0, 0x2a, 0xe4, 0x25, 0x69, 0xe8, 0x12, 0xbd, 0x6b, 0xf7, 0x40, - 0x3d, 0xed, 0x66, 0x6d, 0xc2, 0x28, 0xb4, 0x1b, 0xb0, 0x34, 0x70, 0xdb, 0x90, 0x10, 0xf3, 0x6c, - 0x5f, 0xcc, 0xaf, 0x1f, 0x30, 0xe3, 0x54, 0xa3, 0x82, 0x16, 0xa1, 0xf0, 0xc4, 0xa1, 0x5d, 0x6c, - 0x91, 0x3a, 0xc1, 0x76, 0x69, 0x0a, 0x01, 0xe4, 0xaa, 0xae, 0xdb, 0xc2, 0x76, 0x29, 0x83, 0x0a, - 0x30, 0xf7, 0xc8, 0xf4, 0xad, 0x26, 0xb6, 0x4b, 0xd3, 0x68, 0x1e, 0x94, 0x5d, 0x16, 0x5a, 0xbb, - 0x8d, 0xed, 0x52, 0x76, 0xa7, 0x01, 0x39, 0x71, 0x73, 0x81, 0x9e, 0x45, 0x4f, 0xd7, 0x46, 0xb4, - 0x7a, 0xf1, 0x6b, 0xcf, 0xd5, 0xcd, 0xf1, 0x86, 0xe2, 0x3a, 0x64, 0x3b, 0x53, 0xfd, 0xf2, 0xe5, - 0x9b, 0xb5, 0xcc, 0xab, 0x37, 0x6b, 0x99, 0x3f, 0xdf, 0xac, 0x65, 0x5e, 0xbc, 0x5d, 0x9b, 0x7a, - 0xf5, 0x76, 0x6d, 0xea, 0xd7, 0xb7, 0x6b, 0x53, 0x4f, 0xf7, 0x62, 0x5f, 0x08, 0xfb, 0x21, 0xde, - 0x81, 0x59, 0xa3, 0x95, 0x08, 0xfd, 0x96, 0xe5, 0x7a, 0x38, 0xfe, 0xda, 0x34, 0x89, 0x13, 0x5e, - 0x23, 0xf3, 0x6f, 0x88, 0x5a, 0x8e, 0xdf, 0xcd, 0xfe, 0xf7, 0xaf, 0x00, 0x00, 0x00, 0xff, 0xff, - 0x78, 0x25, 0xda, 0xad, 0x67, 0x16, 0x00, 0x00, + // 1638 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x58, 0xcd, 0x6f, 0xdb, 0x46, + 0x16, 0xb7, 0x2c, 0x5b, 0x16, 0x9f, 0xfc, 0x21, 0x4f, 0x1c, 0x83, 0x71, 0x76, 0xed, 0x84, 0x4e, + 0x36, 0x76, 0x3e, 0x24, 0xc7, 0x8b, 0x05, 0x76, 0xb1, 0x87, 0x24, 0xb2, 0x37, 0x88, 0x03, 0x07, + 0x1b, 0xd0, 0xce, 0x2e, 0x10, 0x6c, 0x96, 0xe0, 0xc7, 0x48, 0x9a, 0x4a, 0x22, 0x65, 0x0e, 0x69, + 0x44, 0x7f, 0x41, 0x7b, 0x2a, 0x72, 0xed, 0xb1, 0xd7, 0x1e, 0xfa, 0x47, 0xb4, 0x97, 0x9c, 0x8a, + 0x1c, 0x8b, 0xa2, 0x48, 0x8b, 0xe4, 0x1f, 0x29, 0xe6, 0x83, 0x14, 0x49, 0xc9, 0x92, 0x9c, 0xa6, + 0x28, 0x7a, 0x12, 0x39, 0x7a, 0xef, 0xf7, 0x9b, 0xf7, 0x66, 0xde, 0x6f, 0x1e, 0x07, 0xae, 0x11, + 0xf7, 0x13, 0x6c, 0x07, 0xe4, 0x14, 0x57, 0x69, 0xe0, 0x63, 0xb3, 0x53, 0x3d, 0xbd, 0x6b, 0xe1, + 0xc0, 0xbc, 0x5b, 0x3d, 0x09, 0xb1, 0xdf, 0xab, 0x74, 0x7d, 0x2f, 0xf0, 0x90, 0x1a, 0x5b, 0x55, + 0x84, 0x55, 0x45, 0x5a, 0xad, 0xad, 0xdb, 0x1e, 0xed, 0x78, 0xb4, 0x6a, 0x99, 0x14, 0xc7, 0xae, + 0xb6, 0x47, 0x5c, 0xe1, 0xb9, 0xb6, 0xd2, 0xf0, 0x1a, 0x1e, 0x7f, 0xac, 0xb2, 0x27, 0x39, 0x7a, + 0xa3, 0xcf, 0x8a, 0x5f, 0xda, 0x4d, 0xd3, 0x6d, 0xf4, 0x9d, 0xf1, 0x29, 0x76, 0x03, 0x2a, 0x0d, + 0xb7, 0x47, 0x19, 0xca, 0x01, 0x61, 0xaa, 0x7d, 0x5e, 0x84, 0x85, 0x23, 0x3e, 0x39, 0x1d, 0x9f, + 0x84, 0x98, 0x06, 0xc8, 0x81, 0x15, 0xcb, 0x74, 0x5b, 0x86, 0x65, 0xb6, 0x4d, 0xd7, 0xc6, 0xd4, + 0xa8, 0x93, 0x76, 0x80, 0x7d, 0x35, 0x77, 0x25, 0xb7, 0x55, 0xda, 0xbd, 0x5d, 0x39, 0x2b, 0xa8, + 0x4a, 0xcd, 0x74, 0x5b, 0x35, 0xe9, 0xf4, 0x90, 0xfb, 0xd4, 0x66, 0x5e, 0xbf, 0xdd, 0xc8, 0xe9, + 0xc8, 0x1a, 0xf8, 0x07, 0x9d, 0xc2, 0x1a, 0x0d, 0x2d, 0xd3, 0xb6, 0xbd, 0xd0, 0x0d, 0x0c, 0x07, + 0x77, 0x3d, 0x4a, 0x82, 0x98, 0x6b, 0x9a, 0x73, 0xed, 0x9e, 0xcd, 0x75, 0x14, 0xfb, 0xee, 0x4b, + 0xd7, 0x14, 0xa3, 0x4a, 0xcf, 0xf8, 0x1f, 0x3d, 0x07, 0x44, 0xbb, 0x5e, 0x60, 0x04, 0xbe, 0xe9, + 0xf4, 0x63, 0xcb, 0x73, 0xbe, 0xbf, 0x9c, 0xcd, 0x77, 0xcc, 0xcd, 0x53, 0x1c, 0x65, 0x86, 0x93, + 0x1c, 0x47, 0x75, 0x50, 0x1d, 0xec, 0x93, 0x53, 0x93, 0x21, 0x64, 0x18, 0x66, 0x3e, 0x80, 0x61, + 0xb5, 0x8f, 0x96, 0xe2, 0x89, 0x62, 0xf0, 0x7c, 0x07, 0xfb, 0x31, 0xc3, 0xec, 0x38, 0x86, 0x7f, + 0x73, 0xf3, 0xc1, 0x18, 0x92, 0xe3, 0x99, 0x18, 0xd2, 0x0c, 0x85, 0x0f, 0x60, 0x48, 0xc4, 0x90, + 0xe2, 0xc1, 0xb0, 0xda, 0x8f, 0xc1, 0xf2, 0xbc, 0x56, 0xcc, 0x32, 0xc7, 0x59, 0xb6, 0xc7, 0xb0, + 0x30, 0x97, 0x14, 0xd1, 0x4a, 0x1c, 0x0a, 0x47, 0x93, 0x34, 0x27, 0xf0, 0xa7, 0x6c, 0x38, 0x29, + 0xb2, 0xe2, 0x87, 0x91, 0xad, 0x65, 0xa2, 0x4a, 0x52, 0x3e, 0x87, 0x32, 0xdf, 0x71, 0xc4, 0x73, + 0x63, 0x1a, 0x65, 0x1c, 0xcd, 0xd3, 0xc8, 0x23, 0x45, 0xb3, 0xd4, 0x4d, 0x0f, 0x23, 0x13, 0x2e, + 0x78, 0xbe, 0x69, 0xb7, 0xb1, 0xd1, 0xf5, 0x89, 0x8d, 0x23, 0x78, 0xe0, 0xf0, 0xb7, 0x46, 0x45, + 0xc1, 0x9c, 0x9e, 0x32, 0x9f, 0x14, 0xc1, 0xb2, 0x97, 0xfd, 0x43, 0xfb, 0x72, 0x0e, 0x16, 0x23, + 0x41, 0xa0, 0x5d, 0xcf, 0xa5, 0x18, 0x5d, 0x85, 0x79, 0xab, 0xed, 0xd9, 0x2d, 0xa3, 0x89, 0x49, + 0xa3, 0x19, 0x70, 0x25, 0x98, 0xd1, 0x4b, 0x7c, 0xec, 0x11, 0x1f, 0x42, 0x7f, 0x06, 0x10, 0x26, + 0x01, 0xe9, 0x60, 0x5e, 0xbe, 0x79, 0x5d, 0xe1, 0x23, 0xc7, 0xa4, 0x83, 0xd1, 0x63, 0x58, 0x48, + 0x69, 0x8a, 0x9a, 0xbf, 0x92, 0xdf, 0x2a, 0xed, 0x5e, 0x9f, 0x48, 0x4c, 0xf4, 0xf9, 0xa4, 0x7e, + 0xa0, 0x17, 0x70, 0x61, 0x88, 0x72, 0xa8, 0x33, 0x1c, 0xf1, 0xf6, 0x79, 0x24, 0x43, 0x47, 0x83, + 0x32, 0x81, 0xf6, 0xa1, 0x94, 0x10, 0x08, 0x75, 0x96, 0xc3, 0x6e, 0x8e, 0x80, 0x8d, 0x54, 0x40, + 0x87, 0xbe, 0x20, 0xa0, 0xff, 0xc0, 0xf2, 0x80, 0x14, 0xa8, 0x05, 0x8e, 0x35, 0x62, 0x17, 0xec, + 0xa7, 0xeb, 0x5d, 0x2f, 0x67, 0x05, 0x00, 0x3d, 0x96, 0xb3, 0x13, 0x85, 0xa9, 0xce, 0x8d, 0x43, + 0x3c, 0x8a, 0x8a, 0xe2, 0x59, 0xd7, 0x31, 0x03, 0x39, 0x47, 0x51, 0x88, 0xe8, 0x7f, 0xa9, 0x39, + 0x4a, 0xc4, 0x22, 0x47, 0xac, 0x4e, 0x32, 0xc7, 0x24, 0x6e, 0x39, 0x5b, 0xe6, 0xc8, 0xc8, 0x16, + 0xb8, 0x11, 0x72, 0x53, 0xaa, 0x2a, 0xe3, 0x26, 0x1d, 0x97, 0x94, 0x04, 0x4f, 0x97, 0xb6, 0x18, + 0xa4, 0xa8, 0x35, 0xbc, 0xb4, 0x63, 0x1a, 0x38, 0x2f, 0xcd, 0xb0, 0xa2, 0x8e, 0xc8, 0xee, 0x83, + 0x12, 0xd7, 0xa2, 0x5a, 0xe2, 0xc8, 0xda, 0xf8, 0x6a, 0xd6, 0xfb, 0x4e, 0xac, 0x04, 0x92, 0xa5, + 0x4b, 0xd5, 0xf9, 0x71, 0x25, 0x90, 0x28, 0x5a, 0x7d, 0x3e, 0x51, 0xa8, 0x54, 0xab, 0xc3, 0x52, + 0x66, 0x86, 0xa8, 0x0c, 0x79, 0x8a, 0x4f, 0x64, 0x69, 0xb2, 0x47, 0xf4, 0x00, 0x94, 0x38, 0x29, + 0xf2, 0x40, 0xdd, 0x9c, 0x20, 0x19, 0x7a, 0xdf, 0x4b, 0xfb, 0x3a, 0x07, 0x4a, 0xfc, 0x07, 0xba, + 0x0c, 0x4a, 0xc7, 0xf4, 0x5b, 0x38, 0x30, 0x88, 0xc3, 0x89, 0x14, 0xbd, 0x28, 0x06, 0x0e, 0x1c, + 0x74, 0x1f, 0xc0, 0x0a, 0x7b, 0x46, 0x1b, 0x9f, 0xe2, 0x36, 0x55, 0xa7, 0x79, 0x6c, 0x57, 0x13, + 0x74, 0x71, 0xdb, 0x11, 0x11, 0x1e, 0x32, 0x4b, 0x5d, 0xb1, 0xc2, 0x1e, 0x7f, 0xa2, 0xa8, 0x06, + 0x25, 0x8a, 0xdb, 0xed, 0x08, 0x22, 0x3f, 0x29, 0x04, 0x30, 0x2f, 0x81, 0xa1, 0xbd, 0xca, 0x41, + 0x29, 0xa1, 0x1c, 0x48, 0x85, 0x39, 0x59, 0xdf, 0x72, 0xc2, 0xd1, 0x2b, 0x6a, 0x40, 0x31, 0x16, + 0x23, 0x31, 0xdb, 0x4b, 0x15, 0xd1, 0x94, 0x55, 0x58, 0x53, 0x16, 0x73, 0xec, 0x79, 0xc4, 0xad, + 0xed, 0xbc, 0x7e, 0xbb, 0x31, 0xf5, 0xd5, 0x4f, 0x1b, 0x5b, 0x0d, 0x12, 0x34, 0x43, 0xab, 0x62, + 0x7b, 0x9d, 0xaa, 0xec, 0xe0, 0xc4, 0xcf, 0x1d, 0xea, 0xb4, 0xaa, 0x41, 0xaf, 0x8b, 0x29, 0x77, + 0xa0, 0x7a, 0x0c, 0xae, 0x7d, 0x96, 0x03, 0x34, 0x28, 0x3d, 0x68, 0x13, 0x16, 0x12, 0x2a, 0x16, + 0x27, 0x74, 0xbe, 0x3f, 0x78, 0xe0, 0xa0, 0x27, 0x50, 0x8c, 0xf5, 0x4d, 0x4c, 0xf2, 0xd6, 0x39, + 0xf4, 0x8d, 0x6b, 0xfc, 0x94, 0x1e, 0x43, 0x68, 0x2e, 0x2c, 0x0f, 0x18, 0xa1, 0x15, 0x98, 0x75, + 0xb0, 0xeb, 0x75, 0xe4, 0x04, 0xc4, 0x0b, 0xda, 0x83, 0x39, 0xe9, 0x36, 0x64, 0xeb, 0x0c, 0x2c, + 0x44, 0x9a, 0x30, 0xf2, 0xd4, 0xbe, 0xc9, 0xc1, 0x52, 0x46, 0x80, 0xd0, 0x1e, 0x14, 0x68, 0x60, + 0x06, 0x21, 0xe5, 0x7c, 0x8b, 0xa3, 0x0f, 0xad, 0xd8, 0xed, 0x88, 0xbb, 0xe8, 0xd2, 0x95, 0x9d, + 0x36, 0x7c, 0x93, 0x1a, 0x4d, 0x93, 0x36, 0xf9, 0x04, 0x15, 0xb9, 0x6d, 0x1f, 0x99, 0xb4, 0xc9, + 0x6a, 0xc1, 0x26, 0x0e, 0x6f, 0xea, 0x14, 0x9d, 0x3d, 0xa2, 0x7f, 0xc0, 0x2c, 0xff, 0x5b, 0xb6, + 0x61, 0x9b, 0x13, 0x08, 0xa6, 0x2e, 0x3c, 0xb4, 0x2e, 0x28, 0xf1, 0xd8, 0xe8, 0x12, 0x78, 0x18, + 0x91, 0x88, 0x8c, 0xdd, 0x1c, 0x95, 0x31, 0x06, 0x79, 0x48, 0x3a, 0x44, 0xe0, 0xca, 0xc4, 0x49, + 0xc6, 0xef, 0x72, 0x70, 0x71, 0xa8, 0xca, 0xfe, 0x4e, 0xc9, 0xbb, 0x97, 0x4e, 0xde, 0xf6, 0xc4, + 0x67, 0x43, 0x14, 0xd0, 0x17, 0x39, 0x58, 0xca, 0xfc, 0x35, 0x3a, 0x93, 0x87, 0xe9, 0x4c, 0xee, + 0x8c, 0xde, 0x7b, 0x11, 0xf0, 0x19, 0xf9, 0x64, 0x54, 0x84, 0x1a, 0x02, 0x9c, 0xc7, 0x55, 0xd4, + 0x8b, 0x84, 0x3e, 0xe1, 0xef, 0xda, 0xa7, 0x79, 0x28, 0x46, 0x72, 0x3d, 0x7a, 0x52, 0x03, 0x15, + 0x3b, 0x3d, 0xa4, 0x62, 0x57, 0xa1, 0x40, 0xe8, 0xa1, 0xe7, 0x36, 0x24, 0x91, 0x7c, 0x43, 0xf7, + 0xa0, 0x78, 0x12, 0x9a, 0x6e, 0x40, 0x82, 0x1e, 0x4f, 0xa3, 0x52, 0xdb, 0x64, 0x53, 0xfc, 0xe1, + 0xed, 0xc6, 0x65, 0xa1, 0x20, 0xd4, 0x69, 0x55, 0x88, 0x57, 0xed, 0x98, 0x41, 0xb3, 0x72, 0x88, + 0x1b, 0xa6, 0xdd, 0xdb, 0xc7, 0xb6, 0x1e, 0x3b, 0xb1, 0xb6, 0x04, 0xbb, 0x81, 0xdf, 0x13, 0xa7, + 0x07, 0x6f, 0xf6, 0x27, 0xc4, 0x00, 0xee, 0xc7, 0x4f, 0x0e, 0xf4, 0x4f, 0x28, 0x74, 0x4c, 0xbf, + 0x41, 0x5c, 0xde, 0xcb, 0x4f, 0x08, 0x20, 0x5d, 0xd0, 0x0b, 0x50, 0xed, 0xb0, 0x13, 0xb6, 0xc5, + 0x81, 0x5b, 0x0f, 0x5d, 0x87, 0xb8, 0x0d, 0x83, 0xa3, 0xf3, 0xa6, 0x7d, 0x42, 0xb8, 0xd5, 0x3e, + 0xc8, 0x43, 0x81, 0xf1, 0x2f, 0x06, 0xa1, 0x05, 0x50, 0x4a, 0x9c, 0x78, 0x2c, 0x93, 0xb4, 0xd7, + 0xb1, 0xbc, 0xb6, 0x5c, 0x08, 0xf9, 0xc6, 0x4a, 0x59, 0xa4, 0x60, 0x7a, 0x72, 0x4a, 0xe1, 0x81, + 0x10, 0xcc, 0x30, 0x8d, 0x96, 0x7b, 0x9b, 0x3f, 0x6b, 0xdf, 0xe6, 0x45, 0x7d, 0xf3, 0xfe, 0x6a, + 0xf4, 0x06, 0xb8, 0xc8, 0xd6, 0xd6, 0xb0, 0xc2, 0x1e, 0xa7, 0x2e, 0xea, 0xb3, 0x84, 0xd6, 0xc2, + 0x1e, 0xba, 0x06, 0x0b, 0xf8, 0x25, 0xb6, 0x43, 0xb6, 0x83, 0x8e, 0xfb, 0xf0, 0xe9, 0xc1, 0x5f, + 0xbf, 0x01, 0xe2, 0xb8, 0x67, 0xcf, 0x1d, 0xf7, 0xc0, 0xce, 0x2d, 0x0c, 0xd9, 0xb9, 0x7f, 0x83, + 0x7c, 0x1d, 0xe3, 0xf3, 0x2c, 0x24, 0xb3, 0xcf, 0xa8, 0x49, 0x31, 0xab, 0x26, 0x7f, 0x87, 0x8b, + 0x75, 0x8c, 0x0d, 0x1f, 0xdb, 0xa4, 0x4b, 0xb0, 0x1b, 0x18, 0xa6, 0xe3, 0xf8, 0x98, 0x52, 0xfe, + 0x45, 0xa4, 0xc8, 0xaf, 0x90, 0x0b, 0x75, 0x8c, 0xf5, 0xc8, 0xe2, 0x81, 0x30, 0x88, 0x74, 0x08, + 0xfa, 0x3a, 0x74, 0x09, 0x8a, 0xbc, 0x91, 0x66, 0x11, 0x94, 0xc4, 0x69, 0xce, 0xdf, 0x0f, 0x1c, + 0xed, 0xc7, 0x7c, 0x52, 0x61, 0x7e, 0xeb, 0xb5, 0x1c, 0xc8, 0xe7, 0xcc, 0x90, 0x7c, 0x3e, 0x85, + 0xc5, 0xa8, 0xf9, 0x33, 0x1c, 0xdc, 0x0e, 0x4c, 0xf9, 0x81, 0xbe, 0x3d, 0x4a, 0xcc, 0x22, 0x25, + 0xda, 0x67, 0x0e, 0xfa, 0x42, 0x37, 0xf9, 0xca, 0x8a, 0xb7, 0x6b, 0xf6, 0xbc, 0x30, 0x38, 0x57, + 0xf1, 0x0a, 0x97, 0x3f, 0xf6, 0xf2, 0x1e, 0xc3, 0x7c, 0xea, 0x02, 0xe4, 0x3a, 0x2c, 0xa6, 0x16, + 0x80, 0x9d, 0x87, 0x79, 0xb6, 0x4e, 0xc9, 0x15, 0xe0, 0x27, 0x5d, 0xbc, 0x03, 0x44, 0x03, 0xa5, + 0xe8, 0x4a, 0xb4, 0x05, 0xa8, 0xf6, 0x5f, 0x58, 0xca, 0x7c, 0x76, 0x7f, 0x24, 0xe0, 0x63, 0x98, + 0x4f, 0xdd, 0x75, 0x7c, 0x1c, 0xd4, 0x9d, 0x44, 0xd3, 0x2f, 0x81, 0xd3, 0x1e, 0xb9, 0x41, 0x0f, + 0x34, 0x78, 0x27, 0x87, 0xd6, 0xa0, 0x28, 0x49, 0x23, 0x97, 0xf8, 0x5d, 0x7b, 0x00, 0xea, 0x59, + 0x37, 0x6b, 0x13, 0x46, 0xa1, 0xdd, 0x82, 0xe5, 0x81, 0xdb, 0x86, 0x94, 0x98, 0xe7, 0xfb, 0x62, + 0x7e, 0xf3, 0x90, 0x19, 0x67, 0x1a, 0x15, 0xb4, 0x04, 0xa5, 0x67, 0x2e, 0xed, 0x62, 0x9b, 0xd4, + 0x09, 0x76, 0xca, 0x53, 0x08, 0xa0, 0x50, 0xf3, 0xbc, 0x16, 0x76, 0xca, 0x39, 0x54, 0x82, 0xb9, + 0x27, 0x66, 0x60, 0x37, 0xb1, 0x53, 0x9e, 0x46, 0x0b, 0xa0, 0xec, 0xb1, 0xd0, 0xda, 0x6d, 0xec, + 0x94, 0xf3, 0xbb, 0x0d, 0x28, 0x88, 0x9b, 0x0b, 0xf4, 0x22, 0x7e, 0xba, 0x31, 0xa2, 0xd5, 0x4b, + 0x5e, 0x7b, 0xae, 0x6d, 0x8d, 0x37, 0x14, 0xd7, 0x21, 0x3b, 0xb9, 0xda, 0xff, 0x5f, 0xbf, 0x5b, + 0xcf, 0xbd, 0x79, 0xb7, 0x9e, 0xfb, 0xf9, 0xdd, 0x7a, 0xee, 0xd5, 0xfb, 0xf5, 0xa9, 0x37, 0xef, + 0xd7, 0xa7, 0xbe, 0x7f, 0xbf, 0x3e, 0xf5, 0x7c, 0x3f, 0xf1, 0x85, 0x70, 0x10, 0xe1, 0x1d, 0x9a, + 0x16, 0xad, 0xc6, 0xe8, 0x77, 0x6c, 0xcf, 0xc7, 0xc9, 0xd7, 0xa6, 0x49, 0xdc, 0xe8, 0x1a, 0x99, + 0x7f, 0x43, 0x58, 0x05, 0x7e, 0x37, 0xfb, 0xd7, 0x5f, 0x02, 0x00, 0x00, 0xff, 0xff, 0x1a, 0x42, + 0x1d, 0x82, 0x67, 0x16, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -5157,7 +5157,7 @@ func (m *SpotOrderUpdate) Unmarshal(dAtA []byte) error { if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field OrderHash", wireType) } - var byteLen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowQuery @@ -5167,25 +5167,23 @@ func (m *SpotOrderUpdate) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - byteLen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if byteLen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthQuery } - postIndex := iNdEx + byteLen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthQuery } if postIndex > l { return io.ErrUnexpectedEOF } - m.OrderHash = append(m.OrderHash[:0], dAtA[iNdEx:postIndex]...) - if m.OrderHash == nil { - m.OrderHash = []byte{} - } + m.OrderHash = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 3: if wireType != 2 { @@ -5443,7 +5441,7 @@ func (m *DerivativeOrderUpdate) Unmarshal(dAtA []byte) error { if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field OrderHash", wireType) } - var byteLen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowQuery @@ -5453,25 +5451,23 @@ func (m *DerivativeOrderUpdate) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - byteLen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if byteLen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthQuery } - postIndex := iNdEx + byteLen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthQuery } if postIndex > l { return io.ErrUnexpectedEOF } - m.OrderHash = append(m.OrderHash[:0], dAtA[iNdEx:postIndex]...) - if m.OrderHash == nil { - m.OrderHash = []byte{} - } + m.OrderHash = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 3: if wireType != 2 { @@ -6366,7 +6362,7 @@ func (m *SpotTrade) Unmarshal(dAtA []byte) error { if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field OrderHash", wireType) } - var byteLen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowQuery @@ -6376,25 +6372,23 @@ func (m *SpotTrade) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - byteLen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if byteLen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthQuery } - postIndex := iNdEx + byteLen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthQuery } if postIndex > l { return io.ErrUnexpectedEOF } - m.OrderHash = append(m.OrderHash[:0], dAtA[iNdEx:postIndex]...) - if m.OrderHash == nil { - m.OrderHash = []byte{} - } + m.OrderHash = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 9: if wireType != 2 { diff --git a/chain/stream/types/request.go b/chain/stream/types/request.go deleted file mode 100644 index 3bf542aa..00000000 --- a/chain/stream/types/request.go +++ /dev/null @@ -1,54 +0,0 @@ -package types - -func NewFullStreamRequest() *StreamRequest { - return &StreamRequest{ - BankBalancesFilter: &BankBalancesFilter{ - Accounts: []string{}, - }, - SpotOrdersFilter: &OrdersFilter{ - MarketIds: []string{"*"}, - SubaccountIds: []string{"*"}, - }, - DerivativeOrdersFilter: &OrdersFilter{ - MarketIds: []string{"*"}, - SubaccountIds: []string{"*"}, - }, - SpotTradesFilter: &TradesFilter{ - MarketIds: []string{"*"}, - SubaccountIds: []string{"*"}, - }, - SubaccountDepositsFilter: &SubaccountDepositsFilter{ - SubaccountIds: []string{"*"}, - }, - DerivativeOrderbooksFilter: &OrderbookFilter{ - MarketIds: []string{"*"}, - }, - SpotOrderbooksFilter: &OrderbookFilter{ - MarketIds: []string{"*"}, - }, - PositionsFilter: &PositionsFilter{ - SubaccountIds: []string{"*"}, - MarketIds: []string{"*"}, - }, - DerivativeTradesFilter: &TradesFilter{ - SubaccountIds: []string{"*"}, - MarketIds: []string{"*"}, - }, - OraclePriceFilter: &OraclePriceFilter{ - Symbol: []string{"*"}, - }, - } -} - -// Empty query matches any set of events. -type Empty struct { -} - -// Matches always returns true. -func (Empty) Matches(tags map[string][]string) (bool, error) { - return true, nil -} - -func (Empty) String() string { - return "empty" -} diff --git a/chain/stream/types/response.go b/chain/stream/types/response.go deleted file mode 100644 index 3a215960..00000000 --- a/chain/stream/types/response.go +++ /dev/null @@ -1,84 +0,0 @@ -package types - -import ( - "fmt" - "time" -) - -type StreamResponseMap struct { - tradeEventsCounter uint64 - BlockHeight uint64 - BlockTime time.Time - BankBalancesByAccount map[string][]*BankBalance - SpotOrdersBySubaccount map[string][]*SpotOrderUpdate - SpotOrdersByMarketID map[string][]*SpotOrderUpdate - DerivativeOrdersBySubaccount map[string][]*DerivativeOrderUpdate - DerivativeOrdersByMarketID map[string][]*DerivativeOrderUpdate - SpotOrderbookUpdatesByMarketID map[string][]*OrderbookUpdate - DerivativeOrderbookUpdatesByMarketID map[string][]*OrderbookUpdate - SubaccountDepositsBySubaccountID map[string][]*SubaccountDeposits - SpotTradesBySubaccount map[string][]*SpotTrade - SpotTradesByMarketID map[string][]*SpotTrade - DerivativeTradesBySubaccount map[string][]*DerivativeTrade - DerivativeTradesByMarketID map[string][]*DerivativeTrade - PositionsBySubaccount map[string][]*Position - PositionsByMarketID map[string][]*Position - OraclePriceBySymbol map[string][]*OraclePrice -} - -func NewStreamResponseMap() *StreamResponseMap { - return &StreamResponseMap{ - BankBalancesByAccount: map[string][]*BankBalance{}, - SpotOrdersBySubaccount: map[string][]*SpotOrderUpdate{}, - SpotOrdersByMarketID: map[string][]*SpotOrderUpdate{}, - DerivativeOrdersBySubaccount: map[string][]*DerivativeOrderUpdate{}, - DerivativeOrdersByMarketID: map[string][]*DerivativeOrderUpdate{}, - SpotOrderbookUpdatesByMarketID: map[string][]*OrderbookUpdate{}, - DerivativeOrderbookUpdatesByMarketID: map[string][]*OrderbookUpdate{}, - SubaccountDepositsBySubaccountID: map[string][]*SubaccountDeposits{}, - SpotTradesBySubaccount: map[string][]*SpotTrade{}, - SpotTradesByMarketID: map[string][]*SpotTrade{}, - DerivativeTradesBySubaccount: map[string][]*DerivativeTrade{}, - DerivativeTradesByMarketID: map[string][]*DerivativeTrade{}, - PositionsBySubaccount: map[string][]*Position{}, - PositionsByMarketID: map[string][]*Position{}, - OraclePriceBySymbol: map[string][]*OraclePrice{}, - } -} - -func NewChainStreamResponse() *StreamResponse { - return &StreamResponse{ - BankBalances: []*BankBalance{}, - SubaccountDeposits: []*SubaccountDeposits{}, - SpotTrades: []*SpotTrade{}, - DerivativeTrades: []*DerivativeTrade{}, - SpotOrders: []*SpotOrderUpdate{}, - DerivativeOrders: []*DerivativeOrderUpdate{}, - SpotOrderbookUpdates: []*OrderbookUpdate{}, - DerivativeOrderbookUpdates: []*OrderbookUpdate{}, - Positions: []*Position{}, - OraclePrices: []*OraclePrice{}, - } -} - -func (m *StreamRequest) Validate() error { - if m.BankBalancesFilter == nil && - m.SubaccountDepositsFilter == nil && - m.SpotTradesFilter == nil && - m.DerivativeTradesFilter == nil && - m.SpotOrdersFilter == nil && - m.DerivativeOrdersFilter == nil && - m.SpotOrderbooksFilter == nil && - m.DerivativeOrderbooksFilter == nil && - m.PositionsFilter == nil && - m.OraclePriceFilter == nil { - return fmt.Errorf("at least one filter must be set") - } - return nil -} - -func (m *StreamResponseMap) NextTradeEventNumber() (tradeNumber uint64) { - currentTradesNumber := m.tradeEventsCounter - m.tradeEventsCounter++ - return currentTradesNumber -} diff --git a/chain/tokenfactory/types/authorityMetadata.go b/chain/tokenfactory/types/authorityMetadata.go deleted file mode 100644 index b45bffca..00000000 --- a/chain/tokenfactory/types/authorityMetadata.go +++ /dev/null @@ -1,15 +0,0 @@ -package types - -import ( - sdk "github.com/cosmos/cosmos-sdk/types" -) - -func (metadata DenomAuthorityMetadata) Validate() error { - if metadata.Admin != "" { - _, err := sdk.AccAddressFromBech32(metadata.Admin) - if err != nil { - return err - } - } - return nil -} diff --git a/chain/tokenfactory/types/authorityMetadata.pb.go b/chain/tokenfactory/types/authorityMetadata.pb.go index 51337590..381387ae 100644 --- a/chain/tokenfactory/types/authorityMetadata.pb.go +++ b/chain/tokenfactory/types/authorityMetadata.pb.go @@ -30,6 +30,8 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package type DenomAuthorityMetadata struct { // Can be empty for no admin, or a valid injective address Admin string `protobuf:"bytes,1,opt,name=admin,proto3" json:"admin,omitempty" yaml:"admin"` + // true if the admin can burn tokens from other addresses + AdminBurnAllowed bool `protobuf:"varint,2,opt,name=admin_burn_allowed,json=adminBurnAllowed,proto3" json:"admin_burn_allowed,omitempty" yaml:"admin_burn_allowed"` } func (m *DenomAuthorityMetadata) Reset() { *m = DenomAuthorityMetadata{} } @@ -72,6 +74,13 @@ func (m *DenomAuthorityMetadata) GetAdmin() string { return "" } +func (m *DenomAuthorityMetadata) GetAdminBurnAllowed() bool { + if m != nil { + return m.AdminBurnAllowed + } + return false +} + func init() { proto.RegisterType((*DenomAuthorityMetadata)(nil), "injective.tokenfactory.v1beta1.DenomAuthorityMetadata") } @@ -81,24 +90,27 @@ func init() { } var fileDescriptor_525494b77b96b2d3 = []byte{ - // 258 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x32, 0xcb, 0xcc, 0xcb, 0x4a, - 0x4d, 0x2e, 0xc9, 0x2c, 0x4b, 0xd5, 0x2f, 0xc9, 0xcf, 0x4e, 0xcd, 0x4b, 0x4b, 0x4c, 0x2e, 0xc9, - 0x2f, 0xaa, 0xd4, 0x2f, 0x33, 0x4c, 0x4a, 0x2d, 0x49, 0x34, 0xd4, 0x4f, 0x2c, 0x2d, 0xc9, 0xc8, - 0x2f, 0xca, 0x2c, 0xa9, 0xf4, 0x4d, 0x2d, 0x49, 0x4c, 0x49, 0x2c, 0x49, 0xd4, 0x2b, 0x28, 0xca, - 0x2f, 0xc9, 0x17, 0x92, 0x83, 0xeb, 0xd3, 0x43, 0xd6, 0xa7, 0x07, 0xd5, 0x27, 0x25, 0x92, 0x9e, - 0x9f, 0x9e, 0x0f, 0x56, 0xaa, 0x0f, 0x62, 0x41, 0x74, 0x49, 0xc9, 0x25, 0xe7, 0x17, 0xe7, 0xe6, - 0x17, 0xeb, 0x27, 0x25, 0x16, 0xa7, 0xc2, 0xad, 0x48, 0xce, 0xcf, 0xcc, 0x83, 0xc8, 0x2b, 0xb9, - 0x71, 0x89, 0xb9, 0xa4, 0xe6, 0xe5, 0xe7, 0x3a, 0xa2, 0xdb, 0x2a, 0xa4, 0xc6, 0xc5, 0x9a, 0x98, - 0x92, 0x9b, 0x99, 0x27, 0xc1, 0xa8, 0xc0, 0xa8, 0xc1, 0xe9, 0x24, 0xf0, 0xe9, 0x9e, 0x3c, 0x4f, - 0x65, 0x62, 0x6e, 0x8e, 0x95, 0x12, 0x58, 0x58, 0x29, 0x08, 0x22, 0x6d, 0xc5, 0xf2, 0x62, 0x81, - 0x3c, 0xa3, 0x53, 0xce, 0x89, 0x47, 0x72, 0x8c, 0x17, 0x1e, 0xc9, 0x31, 0x3e, 0x78, 0x24, 0xc7, - 0x38, 0xe1, 0xb1, 0x1c, 0xc3, 0x85, 0xc7, 0x72, 0x0c, 0x37, 0x1e, 0xcb, 0x31, 0x44, 0x05, 0xa5, - 0x67, 0x96, 0x64, 0x94, 0x26, 0xe9, 0x25, 0xe7, 0xe7, 0xea, 0x7b, 0xc2, 0xbc, 0xe0, 0x93, 0x98, - 0x54, 0xac, 0x0f, 0xf7, 0x90, 0x6e, 0x72, 0x7e, 0x51, 0x2a, 0x32, 0x37, 0x23, 0x31, 0x33, 0x4f, - 0x3f, 0x37, 0x3f, 0xa5, 0x34, 0x27, 0xb5, 0x18, 0x35, 0x94, 0x4a, 0x2a, 0x0b, 0x52, 0x8b, 0x93, - 0xd8, 0xc0, 0x8e, 0x37, 0x06, 0x04, 0x00, 0x00, 0xff, 0xff, 0x17, 0x16, 0x28, 0x7a, 0x4c, 0x01, - 0x00, 0x00, + // 305 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x5c, 0x90, 0xb1, 0x4a, 0x33, 0x41, + 0x10, 0xc7, 0xb3, 0x1f, 0x9f, 0xa2, 0x87, 0x45, 0x38, 0x44, 0x62, 0xc0, 0x4d, 0xb8, 0x42, 0xd2, + 0x78, 0x4b, 0x10, 0x2c, 0xd2, 0xe5, 0xb0, 0x11, 0xb5, 0x49, 0x69, 0x13, 0x66, 0xf7, 0xd6, 0x64, + 0xf5, 0x76, 0x27, 0xec, 0xee, 0x45, 0xee, 0x2d, 0x04, 0x5f, 0xc0, 0xc7, 0xb1, 0x4c, 0x69, 0x15, + 0x24, 0x69, 0xac, 0xf3, 0x04, 0xe2, 0x9d, 0x86, 0xc4, 0x6e, 0xe6, 0x3f, 0xf3, 0xe3, 0x0f, 0xbf, + 0xe0, 0x42, 0x99, 0x07, 0x29, 0xbc, 0x9a, 0x4a, 0xe6, 0xf1, 0x51, 0x9a, 0x7b, 0x10, 0x1e, 0x6d, + 0xc1, 0xa6, 0x5d, 0x2e, 0x3d, 0x74, 0x19, 0xe4, 0x7e, 0x8c, 0x56, 0xf9, 0xe2, 0x56, 0x7a, 0x48, + 0xc1, 0x43, 0x3c, 0xb1, 0xe8, 0x31, 0xa4, 0x6b, 0x2e, 0xde, 0xe4, 0xe2, 0x1f, 0xae, 0x79, 0x38, + 0xc2, 0x11, 0x96, 0xaf, 0xec, 0x7b, 0xaa, 0xa8, 0x26, 0x15, 0xe8, 0x34, 0x3a, 0xc6, 0xc1, 0xc9, + 0x75, 0x85, 0x40, 0x65, 0xaa, 0x7b, 0xf4, 0x42, 0x82, 0xa3, 0x4b, 0x69, 0x50, 0xf7, 0xff, 0xd6, + 0x86, 0xa7, 0xc1, 0x0e, 0xa4, 0x5a, 0x99, 0x06, 0x69, 0x93, 0xce, 0x7e, 0x52, 0x5f, 0xcd, 0x5b, + 0x07, 0x05, 0xe8, 0xac, 0x17, 0x95, 0x71, 0x34, 0xa8, 0xce, 0xe1, 0x75, 0x10, 0x96, 0xc3, 0x90, + 0xe7, 0xd6, 0x0c, 0x21, 0xcb, 0xf0, 0x49, 0xa6, 0x8d, 0x7f, 0x6d, 0xd2, 0xd9, 0x4b, 0x4e, 0x56, + 0xf3, 0xd6, 0xf1, 0x06, 0xb4, 0xf5, 0x13, 0x0d, 0xea, 0x65, 0x98, 0xe4, 0xd6, 0xf4, 0xab, 0xa8, + 0xf7, 0xff, 0xf3, 0xb5, 0x45, 0x92, 0xec, 0x6d, 0x41, 0xc9, 0x6c, 0x41, 0xc9, 0xc7, 0x82, 0x92, + 0xe7, 0x25, 0xad, 0xcd, 0x96, 0xb4, 0xf6, 0xbe, 0xa4, 0xb5, 0xbb, 0xc1, 0x48, 0xf9, 0x71, 0xce, + 0x63, 0x81, 0x9a, 0x5d, 0xfd, 0x0a, 0xb9, 0x01, 0xee, 0xd8, 0x5a, 0xcf, 0x99, 0x40, 0x2b, 0x37, + 0xd7, 0x31, 0x28, 0xc3, 0x34, 0xa6, 0x79, 0x26, 0xdd, 0xb6, 0x73, 0x5f, 0x4c, 0xa4, 0xe3, 0xbb, + 0xa5, 0x8a, 0xf3, 0xaf, 0x00, 0x00, 0x00, 0xff, 0xff, 0xf5, 0x06, 0x42, 0x33, 0x9a, 0x01, 0x00, + 0x00, } func (this *DenomAuthorityMetadata) Equal(that interface{}) bool { @@ -123,6 +135,9 @@ func (this *DenomAuthorityMetadata) Equal(that interface{}) bool { if this.Admin != that1.Admin { return false } + if this.AdminBurnAllowed != that1.AdminBurnAllowed { + return false + } return true } func (m *DenomAuthorityMetadata) Marshal() (dAtA []byte, err error) { @@ -145,6 +160,16 @@ func (m *DenomAuthorityMetadata) MarshalToSizedBuffer(dAtA []byte) (int, error) _ = i var l int _ = l + if m.AdminBurnAllowed { + i-- + if m.AdminBurnAllowed { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x10 + } if len(m.Admin) > 0 { i -= len(m.Admin) copy(dAtA[i:], m.Admin) @@ -176,6 +201,9 @@ func (m *DenomAuthorityMetadata) Size() (n int) { if l > 0 { n += 1 + l + sovAuthorityMetadata(uint64(l)) } + if m.AdminBurnAllowed { + n += 2 + } return n } @@ -246,6 +274,26 @@ func (m *DenomAuthorityMetadata) Unmarshal(dAtA []byte) error { } m.Admin = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AdminBurnAllowed", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAuthorityMetadata + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.AdminBurnAllowed = bool(v != 0) default: iNdEx = preIndex skippy, err := skipAuthorityMetadata(dAtA[iNdEx:]) diff --git a/chain/tokenfactory/types/denoms.go b/chain/tokenfactory/types/denoms.go deleted file mode 100644 index a31d5cef..00000000 --- a/chain/tokenfactory/types/denoms.go +++ /dev/null @@ -1,117 +0,0 @@ -package types - -import ( - "context" - "fmt" - "strings" - - "cosmossdk.io/errors" - sdk "github.com/cosmos/cosmos-sdk/types" - banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" -) - -const ( - ModuleDenomPrefix = "factory" - // See the TokenFactory readme for a derivation of these. - // TL;DR, MaxSubdenomLength + MaxHrpLength = 60 comes from SDK max denom length = 128 - // and the structure of tokenfactory denoms. - MaxSubdenomLength = 44 - MaxHrpLength = 16 - // MaxCreatorLength = 59 + MaxHrpLength - MaxCreatorLength = 59 + MaxHrpLength - MinSubdenomLength = 1 -) - -// GetTokenDenom constructs a denom string for tokens created by tokenfactory -// based on an input creator address and a subdenom -// The denom constructed is factory/{creator}/{subdenom} -func GetTokenDenom(creator, subdenom string) (string, error) { - if len(subdenom) > MaxSubdenomLength { - return "", ErrSubdenomTooLong - } - if len(subdenom) < MinSubdenomLength { - return "", ErrSubdenomTooShort - } - - strParts := strings.Split(subdenom, "/") - - for idx := range strParts { - if len(strParts[idx]) < MinSubdenomLength { - return "", ErrSubdenomNestedTooShort - } - } - - if len(creator) > MaxCreatorLength { - return "", ErrCreatorTooLong - } - if strings.Contains(creator, "/") || len(creator) < 1 { - return "", ErrInvalidCreator - } - - // ensure creator address is in lowercase Bech32 form - creatorAddr, err := sdk.AccAddressFromBech32(creator) - if err != nil { - return "", err - } - - denom := strings.Join([]string{ModuleDenomPrefix, creatorAddr.String(), subdenom}, "/") - return denom, sdk.ValidateDenom(denom) -} - -// DeconstructDenom takes a token denom string and verifies that it is a valid -// denom of the tokenfactory module, and is of the form `factory/{creator}/{subdenom}` -// If valid, it returns the creator address and subdenom -func DeconstructDenom(denom string) (creator, subdenom string, err error) { - err = sdk.ValidateDenom(denom) - if err != nil { - return "", "", err - } - - strParts := strings.Split(denom, "/") - if len(strParts) < 3 { - return "", "", errors.Wrapf(ErrInvalidDenom, "not enough parts of denom %s", denom) - } - - if strParts[0] != ModuleDenomPrefix { - return "", "", errors.Wrapf(ErrInvalidDenom, "denom prefix is incorrect. Is: %s. Should be: %s", strParts[0], ModuleDenomPrefix) - } - - creator = strParts[1] - creatorAddr, err := sdk.AccAddressFromBech32(creator) - if err != nil { - return "", "", errors.Wrapf(ErrInvalidDenom, "Invalid creator address (%s)", err) - } - - if len(strParts[2]) < MinSubdenomLength { - return "", "", errors.Wrapf(ErrSubdenomTooShort, "subdenom too short. Has length of: %d. Should have length at least of: %d", len(strParts[2]), MinSubdenomLength) - } - - if len(strParts) > 3 { - for i := 2; i <= len(strParts)-1; i++ { - if len(strParts[i]) < MinSubdenomLength { - return "", "", errors.Wrapf(ErrSubdenomNestedTooShort, "nested subdenom too short. Has length of: %d. Should have length at least of: %d", len(strParts[i]), MinSubdenomLength) - } - } - } - - // Handle the case where a denom has a slash in its subdenom. For example, - // when we did the split, we'd turn factory/accaddr/atomderivative/sikka into ["factory", "accaddr", "atomderivative", "sikka"] - // So we have to join [2:] with a "/" as the delimiter to get back the correct subdenom which should be "atomderivative/sikka" - subdenom = strings.Join(strParts[2:], "/") - - return creatorAddr.String(), subdenom, nil -} - -// NewTokenFactoryDenomMintCoinsRestriction creates and returns a MintingRestrictionFn that only allows minting of -// valid tokenfactory denoms -func NewTokenFactoryDenomMintCoinsRestriction() banktypes.MintingRestrictionFn { - return func(ctx context.Context, coinsToMint sdk.Coins) error { - for _, coin := range coinsToMint { - _, _, err := DeconstructDenom(coin.Denom) - if err != nil { - return fmt.Errorf("does not have permission to mint %s", coin.Denom) - } - } - return nil - } -} diff --git a/chain/tokenfactory/types/errors.go b/chain/tokenfactory/types/errors.go deleted file mode 100644 index 48ebec3a..00000000 --- a/chain/tokenfactory/types/errors.go +++ /dev/null @@ -1,25 +0,0 @@ -package types - -// DONTCOVER - -import ( - "fmt" - - "cosmossdk.io/errors" -) - -// x/tokenfactory module sentinel errors -var ( - ErrDenomExists = errors.Register(ModuleName, 2, "attempting to create a denom that already exists (has bank metadata)") - ErrUnauthorized = errors.Register(ModuleName, 3, "unauthorized account") - ErrInvalidDenom = errors.Register(ModuleName, 4, "invalid denom") - ErrInvalidCreator = errors.Register(ModuleName, 5, "invalid creator") - ErrInvalidAuthorityMetadata = errors.Register(ModuleName, 6, "invalid authority metadata") - ErrInvalidGenesis = errors.Register(ModuleName, 7, "invalid genesis") - ErrSubdenomTooLong = errors.Register(ModuleName, 8, fmt.Sprintf("subdenom too long, max length is %d bytes", MaxSubdenomLength)) - ErrSubdenomTooShort = errors.Register(ModuleName, 9, fmt.Sprintf("subdenom too short, min length is %d bytes", MinSubdenomLength)) - ErrSubdenomNestedTooShort = errors.Register(ModuleName, 10, fmt.Sprintf("nested subdenom too short, each one should have at least %d bytes", MinSubdenomLength)) - ErrCreatorTooLong = errors.Register(ModuleName, 11, fmt.Sprintf("creator too long, max length is %d bytes", MaxCreatorLength)) - ErrDenomDoesNotExist = errors.Register(ModuleName, 12, "denom does not exist") - ErrAmountNotPositive = errors.Register(ModuleName, 13, "amount has to be positive") -) diff --git a/chain/tokenfactory/types/events.pb.go b/chain/tokenfactory/types/events.pb.go index 8d71b85d..d6e06990 100644 --- a/chain/tokenfactory/types/events.pb.go +++ b/chain/tokenfactory/types/events.pb.go @@ -25,23 +25,23 @@ var _ = math.Inf // proto package needs to be updated. const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package -type EventCreateTFDenom struct { +type EventCreateDenom struct { Account string `protobuf:"bytes,1,opt,name=account,proto3" json:"account,omitempty"` Denom string `protobuf:"bytes,2,opt,name=denom,proto3" json:"denom,omitempty"` } -func (m *EventCreateTFDenom) Reset() { *m = EventCreateTFDenom{} } -func (m *EventCreateTFDenom) String() string { return proto.CompactTextString(m) } -func (*EventCreateTFDenom) ProtoMessage() {} -func (*EventCreateTFDenom) Descriptor() ([]byte, []int) { +func (m *EventCreateDenom) Reset() { *m = EventCreateDenom{} } +func (m *EventCreateDenom) String() string { return proto.CompactTextString(m) } +func (*EventCreateDenom) ProtoMessage() {} +func (*EventCreateDenom) Descriptor() ([]byte, []int) { return fileDescriptor_b9fd0c5434c2a5b7, []int{0} } -func (m *EventCreateTFDenom) XXX_Unmarshal(b []byte) error { +func (m *EventCreateDenom) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *EventCreateTFDenom) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *EventCreateDenom) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_EventCreateTFDenom.Marshal(b, m, deterministic) + return xxx_messageInfo_EventCreateDenom.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -51,49 +51,50 @@ func (m *EventCreateTFDenom) XXX_Marshal(b []byte, deterministic bool) ([]byte, return b[:n], nil } } -func (m *EventCreateTFDenom) XXX_Merge(src proto.Message) { - xxx_messageInfo_EventCreateTFDenom.Merge(m, src) +func (m *EventCreateDenom) XXX_Merge(src proto.Message) { + xxx_messageInfo_EventCreateDenom.Merge(m, src) } -func (m *EventCreateTFDenom) XXX_Size() int { +func (m *EventCreateDenom) XXX_Size() int { return m.Size() } -func (m *EventCreateTFDenom) XXX_DiscardUnknown() { - xxx_messageInfo_EventCreateTFDenom.DiscardUnknown(m) +func (m *EventCreateDenom) XXX_DiscardUnknown() { + xxx_messageInfo_EventCreateDenom.DiscardUnknown(m) } -var xxx_messageInfo_EventCreateTFDenom proto.InternalMessageInfo +var xxx_messageInfo_EventCreateDenom proto.InternalMessageInfo -func (m *EventCreateTFDenom) GetAccount() string { +func (m *EventCreateDenom) GetAccount() string { if m != nil { return m.Account } return "" } -func (m *EventCreateTFDenom) GetDenom() string { +func (m *EventCreateDenom) GetDenom() string { if m != nil { return m.Denom } return "" } -type EventMintTFDenom struct { - RecipientAddress string `protobuf:"bytes,1,opt,name=recipient_address,json=recipientAddress,proto3" json:"recipient_address,omitempty"` - Amount types.Coin `protobuf:"bytes,2,opt,name=amount,proto3" json:"amount"` +type EventMint struct { + Minter string `protobuf:"bytes,1,opt,name=minter,proto3" json:"minter,omitempty"` + Amount types.Coin `protobuf:"bytes,2,opt,name=amount,proto3" json:"amount"` + Receiver string `protobuf:"bytes,3,opt,name=receiver,proto3" json:"receiver,omitempty"` } -func (m *EventMintTFDenom) Reset() { *m = EventMintTFDenom{} } -func (m *EventMintTFDenom) String() string { return proto.CompactTextString(m) } -func (*EventMintTFDenom) ProtoMessage() {} -func (*EventMintTFDenom) Descriptor() ([]byte, []int) { +func (m *EventMint) Reset() { *m = EventMint{} } +func (m *EventMint) String() string { return proto.CompactTextString(m) } +func (*EventMint) ProtoMessage() {} +func (*EventMint) Descriptor() ([]byte, []int) { return fileDescriptor_b9fd0c5434c2a5b7, []int{1} } -func (m *EventMintTFDenom) XXX_Unmarshal(b []byte) error { +func (m *EventMint) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *EventMintTFDenom) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *EventMint) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_EventMintTFDenom.Marshal(b, m, deterministic) + return xxx_messageInfo_EventMint.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -103,49 +104,57 @@ func (m *EventMintTFDenom) XXX_Marshal(b []byte, deterministic bool) ([]byte, er return b[:n], nil } } -func (m *EventMintTFDenom) XXX_Merge(src proto.Message) { - xxx_messageInfo_EventMintTFDenom.Merge(m, src) +func (m *EventMint) XXX_Merge(src proto.Message) { + xxx_messageInfo_EventMint.Merge(m, src) } -func (m *EventMintTFDenom) XXX_Size() int { +func (m *EventMint) XXX_Size() int { return m.Size() } -func (m *EventMintTFDenom) XXX_DiscardUnknown() { - xxx_messageInfo_EventMintTFDenom.DiscardUnknown(m) +func (m *EventMint) XXX_DiscardUnknown() { + xxx_messageInfo_EventMint.DiscardUnknown(m) } -var xxx_messageInfo_EventMintTFDenom proto.InternalMessageInfo +var xxx_messageInfo_EventMint proto.InternalMessageInfo -func (m *EventMintTFDenom) GetRecipientAddress() string { +func (m *EventMint) GetMinter() string { if m != nil { - return m.RecipientAddress + return m.Minter } return "" } -func (m *EventMintTFDenom) GetAmount() types.Coin { +func (m *EventMint) GetAmount() types.Coin { if m != nil { return m.Amount } return types.Coin{} } -type EventBurnDenom struct { - BurnerAddress string `protobuf:"bytes,1,opt,name=burner_address,json=burnerAddress,proto3" json:"burner_address,omitempty"` - Amount types.Coin `protobuf:"bytes,2,opt,name=amount,proto3" json:"amount"` +func (m *EventMint) GetReceiver() string { + if m != nil { + return m.Receiver + } + return "" +} + +type EventBurn struct { + Burner string `protobuf:"bytes,1,opt,name=burner,proto3" json:"burner,omitempty"` + Amount types.Coin `protobuf:"bytes,2,opt,name=amount,proto3" json:"amount"` + BurnFrom string `protobuf:"bytes,3,opt,name=burn_from,json=burnFrom,proto3" json:"burn_from,omitempty"` } -func (m *EventBurnDenom) Reset() { *m = EventBurnDenom{} } -func (m *EventBurnDenom) String() string { return proto.CompactTextString(m) } -func (*EventBurnDenom) ProtoMessage() {} -func (*EventBurnDenom) Descriptor() ([]byte, []int) { +func (m *EventBurn) Reset() { *m = EventBurn{} } +func (m *EventBurn) String() string { return proto.CompactTextString(m) } +func (*EventBurn) ProtoMessage() {} +func (*EventBurn) Descriptor() ([]byte, []int) { return fileDescriptor_b9fd0c5434c2a5b7, []int{2} } -func (m *EventBurnDenom) XXX_Unmarshal(b []byte) error { +func (m *EventBurn) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *EventBurnDenom) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *EventBurn) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_EventBurnDenom.Marshal(b, m, deterministic) + return xxx_messageInfo_EventBurn.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -155,49 +164,56 @@ func (m *EventBurnDenom) XXX_Marshal(b []byte, deterministic bool) ([]byte, erro return b[:n], nil } } -func (m *EventBurnDenom) XXX_Merge(src proto.Message) { - xxx_messageInfo_EventBurnDenom.Merge(m, src) +func (m *EventBurn) XXX_Merge(src proto.Message) { + xxx_messageInfo_EventBurn.Merge(m, src) } -func (m *EventBurnDenom) XXX_Size() int { +func (m *EventBurn) XXX_Size() int { return m.Size() } -func (m *EventBurnDenom) XXX_DiscardUnknown() { - xxx_messageInfo_EventBurnDenom.DiscardUnknown(m) +func (m *EventBurn) XXX_DiscardUnknown() { + xxx_messageInfo_EventBurn.DiscardUnknown(m) } -var xxx_messageInfo_EventBurnDenom proto.InternalMessageInfo +var xxx_messageInfo_EventBurn proto.InternalMessageInfo -func (m *EventBurnDenom) GetBurnerAddress() string { +func (m *EventBurn) GetBurner() string { if m != nil { - return m.BurnerAddress + return m.Burner } return "" } -func (m *EventBurnDenom) GetAmount() types.Coin { +func (m *EventBurn) GetAmount() types.Coin { if m != nil { return m.Amount } return types.Coin{} } -type EventChangeTFAdmin struct { +func (m *EventBurn) GetBurnFrom() string { + if m != nil { + return m.BurnFrom + } + return "" +} + +type EventChangeAdmin struct { Denom string `protobuf:"bytes,1,opt,name=denom,proto3" json:"denom,omitempty"` NewAdminAddress string `protobuf:"bytes,2,opt,name=new_admin_address,json=newAdminAddress,proto3" json:"new_admin_address,omitempty"` } -func (m *EventChangeTFAdmin) Reset() { *m = EventChangeTFAdmin{} } -func (m *EventChangeTFAdmin) String() string { return proto.CompactTextString(m) } -func (*EventChangeTFAdmin) ProtoMessage() {} -func (*EventChangeTFAdmin) Descriptor() ([]byte, []int) { +func (m *EventChangeAdmin) Reset() { *m = EventChangeAdmin{} } +func (m *EventChangeAdmin) String() string { return proto.CompactTextString(m) } +func (*EventChangeAdmin) ProtoMessage() {} +func (*EventChangeAdmin) Descriptor() ([]byte, []int) { return fileDescriptor_b9fd0c5434c2a5b7, []int{3} } -func (m *EventChangeTFAdmin) XXX_Unmarshal(b []byte) error { +func (m *EventChangeAdmin) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *EventChangeTFAdmin) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *EventChangeAdmin) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_EventChangeTFAdmin.Marshal(b, m, deterministic) + return xxx_messageInfo_EventChangeAdmin.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -207,49 +223,49 @@ func (m *EventChangeTFAdmin) XXX_Marshal(b []byte, deterministic bool) ([]byte, return b[:n], nil } } -func (m *EventChangeTFAdmin) XXX_Merge(src proto.Message) { - xxx_messageInfo_EventChangeTFAdmin.Merge(m, src) +func (m *EventChangeAdmin) XXX_Merge(src proto.Message) { + xxx_messageInfo_EventChangeAdmin.Merge(m, src) } -func (m *EventChangeTFAdmin) XXX_Size() int { +func (m *EventChangeAdmin) XXX_Size() int { return m.Size() } -func (m *EventChangeTFAdmin) XXX_DiscardUnknown() { - xxx_messageInfo_EventChangeTFAdmin.DiscardUnknown(m) +func (m *EventChangeAdmin) XXX_DiscardUnknown() { + xxx_messageInfo_EventChangeAdmin.DiscardUnknown(m) } -var xxx_messageInfo_EventChangeTFAdmin proto.InternalMessageInfo +var xxx_messageInfo_EventChangeAdmin proto.InternalMessageInfo -func (m *EventChangeTFAdmin) GetDenom() string { +func (m *EventChangeAdmin) GetDenom() string { if m != nil { return m.Denom } return "" } -func (m *EventChangeTFAdmin) GetNewAdminAddress() string { +func (m *EventChangeAdmin) GetNewAdminAddress() string { if m != nil { return m.NewAdminAddress } return "" } -type EventSetTFDenomMetadata struct { +type EventSetDenomMetadata struct { Denom string `protobuf:"bytes,1,opt,name=denom,proto3" json:"denom,omitempty"` Metadata types1.Metadata `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata"` } -func (m *EventSetTFDenomMetadata) Reset() { *m = EventSetTFDenomMetadata{} } -func (m *EventSetTFDenomMetadata) String() string { return proto.CompactTextString(m) } -func (*EventSetTFDenomMetadata) ProtoMessage() {} -func (*EventSetTFDenomMetadata) Descriptor() ([]byte, []int) { +func (m *EventSetDenomMetadata) Reset() { *m = EventSetDenomMetadata{} } +func (m *EventSetDenomMetadata) String() string { return proto.CompactTextString(m) } +func (*EventSetDenomMetadata) ProtoMessage() {} +func (*EventSetDenomMetadata) Descriptor() ([]byte, []int) { return fileDescriptor_b9fd0c5434c2a5b7, []int{4} } -func (m *EventSetTFDenomMetadata) XXX_Unmarshal(b []byte) error { +func (m *EventSetDenomMetadata) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *EventSetTFDenomMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *EventSetDenomMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_EventSetTFDenomMetadata.Marshal(b, m, deterministic) + return xxx_messageInfo_EventSetDenomMetadata.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -259,26 +275,26 @@ func (m *EventSetTFDenomMetadata) XXX_Marshal(b []byte, deterministic bool) ([]b return b[:n], nil } } -func (m *EventSetTFDenomMetadata) XXX_Merge(src proto.Message) { - xxx_messageInfo_EventSetTFDenomMetadata.Merge(m, src) +func (m *EventSetDenomMetadata) XXX_Merge(src proto.Message) { + xxx_messageInfo_EventSetDenomMetadata.Merge(m, src) } -func (m *EventSetTFDenomMetadata) XXX_Size() int { +func (m *EventSetDenomMetadata) XXX_Size() int { return m.Size() } -func (m *EventSetTFDenomMetadata) XXX_DiscardUnknown() { - xxx_messageInfo_EventSetTFDenomMetadata.DiscardUnknown(m) +func (m *EventSetDenomMetadata) XXX_DiscardUnknown() { + xxx_messageInfo_EventSetDenomMetadata.DiscardUnknown(m) } -var xxx_messageInfo_EventSetTFDenomMetadata proto.InternalMessageInfo +var xxx_messageInfo_EventSetDenomMetadata proto.InternalMessageInfo -func (m *EventSetTFDenomMetadata) GetDenom() string { +func (m *EventSetDenomMetadata) GetDenom() string { if m != nil { return m.Denom } return "" } -func (m *EventSetTFDenomMetadata) GetMetadata() types1.Metadata { +func (m *EventSetDenomMetadata) GetMetadata() types1.Metadata { if m != nil { return m.Metadata } @@ -286,11 +302,11 @@ func (m *EventSetTFDenomMetadata) GetMetadata() types1.Metadata { } func init() { - proto.RegisterType((*EventCreateTFDenom)(nil), "injective.tokenfactory.v1beta1.EventCreateTFDenom") - proto.RegisterType((*EventMintTFDenom)(nil), "injective.tokenfactory.v1beta1.EventMintTFDenom") - proto.RegisterType((*EventBurnDenom)(nil), "injective.tokenfactory.v1beta1.EventBurnDenom") - proto.RegisterType((*EventChangeTFAdmin)(nil), "injective.tokenfactory.v1beta1.EventChangeTFAdmin") - proto.RegisterType((*EventSetTFDenomMetadata)(nil), "injective.tokenfactory.v1beta1.EventSetTFDenomMetadata") + proto.RegisterType((*EventCreateDenom)(nil), "injective.tokenfactory.v1beta1.EventCreateDenom") + proto.RegisterType((*EventMint)(nil), "injective.tokenfactory.v1beta1.EventMint") + proto.RegisterType((*EventBurn)(nil), "injective.tokenfactory.v1beta1.EventBurn") + proto.RegisterType((*EventChangeAdmin)(nil), "injective.tokenfactory.v1beta1.EventChangeAdmin") + proto.RegisterType((*EventSetDenomMetadata)(nil), "injective.tokenfactory.v1beta1.EventSetDenomMetadata") } func init() { @@ -298,38 +314,39 @@ func init() { } var fileDescriptor_b9fd0c5434c2a5b7 = []byte{ - // 442 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x52, 0xc1, 0x6a, 0x14, 0x41, - 0x10, 0xdd, 0x11, 0x8d, 0xda, 0x62, 0x4c, 0x86, 0x80, 0x6b, 0xc0, 0x51, 0x16, 0x04, 0x31, 0x38, - 0x43, 0x14, 0xf4, 0x28, 0xd9, 0xc4, 0x80, 0x60, 0x2e, 0x6b, 0xf0, 0xe0, 0x25, 0xf4, 0xf4, 0x94, - 0xbb, 0xed, 0x66, 0xaa, 0x86, 0xee, 0x9a, 0x8d, 0xfb, 0x17, 0x7e, 0x56, 0x8e, 0x39, 0x7a, 0x12, - 0xd9, 0xfd, 0x11, 0x99, 0x99, 0xee, 0xce, 0xaa, 0x88, 0x87, 0xdc, 0xa6, 0xba, 0x5e, 0xbd, 0x57, - 0xef, 0x4d, 0x89, 0x1d, 0x8d, 0x5f, 0x40, 0xb1, 0x9e, 0x41, 0xc6, 0x34, 0x05, 0xfc, 0x2c, 0x15, - 0x93, 0x99, 0x67, 0xb3, 0xdd, 0x1c, 0x58, 0xee, 0x66, 0x30, 0x03, 0x64, 0x9b, 0x56, 0x86, 0x98, - 0xe2, 0x24, 0x80, 0xd3, 0x55, 0x70, 0xea, 0xc0, 0xdb, 0x5b, 0x63, 0x1a, 0x53, 0x0b, 0xcd, 0x9a, - 0xaf, 0x6e, 0x6a, 0x3b, 0x51, 0x64, 0x4b, 0xb2, 0x59, 0x2e, 0x2d, 0x04, 0x5e, 0x45, 0x1a, 0xff, - 0xea, 0xe3, 0x34, 0xf4, 0x9b, 0xc2, 0xf5, 0x5f, 0xfd, 0x67, 0x45, 0x59, 0xf3, 0x84, 0x8c, 0xe6, - 0xf9, 0x11, 0xb0, 0x2c, 0x24, 0xcb, 0x6e, 0x6e, 0x70, 0x20, 0xe2, 0xb7, 0xcd, 0xf6, 0xfb, 0x06, - 0x24, 0xc3, 0xf1, 0xe1, 0x01, 0x20, 0x95, 0x71, 0x5f, 0xdc, 0x94, 0x4a, 0x51, 0x8d, 0xdc, 0x8f, - 0x1e, 0x47, 0x4f, 0x6f, 0x8f, 0x7c, 0x19, 0x6f, 0x89, 0x1b, 0x45, 0x03, 0xe9, 0x5f, 0x6b, 0xdf, - 0xbb, 0x62, 0xf0, 0x55, 0x6c, 0xb4, 0x2c, 0x47, 0x1a, 0xd9, 0x73, 0xec, 0x88, 0x4d, 0x03, 0x4a, - 0x57, 0x1a, 0x90, 0x4f, 0x64, 0x51, 0x18, 0xb0, 0xd6, 0xb1, 0x6d, 0x84, 0xc6, 0x5e, 0xf7, 0x1e, - 0xbf, 0x16, 0x6b, 0xb2, 0x6c, 0xf5, 0x1a, 0xde, 0x3b, 0x2f, 0x1e, 0xa4, 0x9d, 0xdf, 0xb4, 0xc9, - 0xc3, 0x47, 0x97, 0xee, 0x93, 0xc6, 0xe1, 0xf5, 0xf3, 0x1f, 0x8f, 0x7a, 0x23, 0x07, 0x1f, 0x54, - 0x62, 0xbd, 0x55, 0x1e, 0xd6, 0x06, 0x3b, 0xdd, 0x27, 0x62, 0x3d, 0xaf, 0x0d, 0x82, 0xf9, 0x43, - 0xf4, 0x6e, 0xf7, 0x7a, 0x65, 0xc5, 0x8f, 0x3e, 0xb1, 0x89, 0xc4, 0x31, 0x1c, 0x1f, 0xee, 0x15, - 0xa5, 0xc6, 0xcb, 0x5c, 0xa2, 0x95, 0x5c, 0xe2, 0x67, 0x62, 0x13, 0xe1, 0xec, 0x44, 0x36, 0x90, - 0xb0, 0x4e, 0x97, 0xdc, 0x3d, 0x84, 0xb3, 0x76, 0xd4, 0x2d, 0x34, 0xa8, 0xc4, 0xfd, 0x96, 0xf7, - 0x03, 0xf8, 0x08, 0xfd, 0xaf, 0xfa, 0x07, 0xf9, 0x1b, 0x71, 0xab, 0x74, 0x08, 0xe7, 0xe1, 0xe1, - 0xa5, 0x07, 0x9c, 0x06, 0x0f, 0x9e, 0xc6, 0xf9, 0x08, 0x43, 0xc3, 0xd3, 0xf3, 0x45, 0x12, 0x5d, - 0x2c, 0x92, 0xe8, 0xe7, 0x22, 0x89, 0xbe, 0x2d, 0x93, 0xde, 0xc5, 0x32, 0xe9, 0x7d, 0x5f, 0x26, - 0xbd, 0x4f, 0xa3, 0xb1, 0xe6, 0x49, 0x9d, 0xa7, 0x8a, 0xca, 0xec, 0x9d, 0x3f, 0xac, 0xf7, 0x32, - 0xb7, 0x59, 0x38, 0xb3, 0xe7, 0x8a, 0x0c, 0xac, 0x96, 0x13, 0xa9, 0x31, 0x2b, 0xa9, 0xa8, 0x4f, - 0xc1, 0xfe, 0x7e, 0x83, 0x3c, 0xaf, 0xc0, 0xe6, 0x6b, 0xed, 0xc1, 0xbd, 0xfc, 0x15, 0x00, 0x00, - 0xff, 0xff, 0x0f, 0x75, 0x34, 0xbb, 0x4d, 0x03, 0x00, 0x00, + // 449 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x52, 0x4d, 0x6f, 0xd3, 0x40, + 0x10, 0x8d, 0xf9, 0x08, 0xcd, 0x72, 0x00, 0xac, 0x82, 0x42, 0x10, 0x06, 0xf9, 0x84, 0x40, 0xd8, + 0x2a, 0x48, 0x70, 0x44, 0x4d, 0x01, 0x09, 0x89, 0x5e, 0x02, 0x27, 0x2e, 0xd1, 0x7a, 0x3d, 0x4d, + 0x96, 0x74, 0x67, 0xaa, 0xdd, 0x75, 0x8a, 0xff, 0x05, 0x3f, 0xab, 0xc7, 0x1c, 0x39, 0x21, 0x94, + 0xfc, 0x11, 0xb4, 0xeb, 0xb5, 0x13, 0x84, 0x10, 0x52, 0x6f, 0x7e, 0x33, 0xef, 0xbd, 0xf1, 0x9b, + 0x1d, 0xf6, 0x4c, 0xe2, 0x57, 0x10, 0x56, 0x2e, 0x21, 0xb7, 0xb4, 0x00, 0x3c, 0xe1, 0xc2, 0x92, + 0xae, 0xf3, 0xe5, 0x41, 0x01, 0x96, 0x1f, 0xe4, 0xb0, 0x04, 0xb4, 0x26, 0x3b, 0xd3, 0x64, 0x29, + 0x4e, 0x3a, 0x72, 0xb6, 0x4b, 0xce, 0x02, 0x79, 0xb4, 0x3f, 0xa3, 0x19, 0x79, 0x6a, 0xee, 0xbe, + 0x1a, 0xd5, 0x28, 0x11, 0x64, 0x14, 0x99, 0xbc, 0xe0, 0x06, 0x3a, 0x5f, 0x41, 0x12, 0xff, 0xea, + 0xe3, 0xa2, 0xeb, 0x3b, 0x10, 0xfa, 0xaf, 0xfe, 0xf3, 0x8b, 0xbc, 0xb2, 0x73, 0xd2, 0xd2, 0xd6, + 0xc7, 0x60, 0x79, 0xc9, 0x2d, 0x6f, 0x74, 0xe9, 0x98, 0xdd, 0x7e, 0xe7, 0xfe, 0xfe, 0x48, 0x03, + 0xb7, 0xf0, 0x16, 0x90, 0x54, 0x3c, 0x64, 0x37, 0xb8, 0x10, 0x54, 0xa1, 0x1d, 0x46, 0x8f, 0xa3, + 0x27, 0x83, 0x49, 0x0b, 0xe3, 0x7d, 0x76, 0xbd, 0x74, 0x94, 0xe1, 0x15, 0x5f, 0x6f, 0x40, 0xfa, + 0x8d, 0x0d, 0xbc, 0xc7, 0xb1, 0x44, 0x1b, 0xdf, 0x63, 0x7d, 0x25, 0xd1, 0x82, 0x0e, 0xda, 0x80, + 0xe2, 0xd7, 0xac, 0xcf, 0x95, 0xf7, 0x74, 0xda, 0x9b, 0x2f, 0xee, 0x67, 0x4d, 0xa2, 0xcc, 0x25, + 0x6e, 0x97, 0x93, 0x1d, 0x91, 0xc4, 0xf1, 0xb5, 0x8b, 0x9f, 0x8f, 0x7a, 0x93, 0x40, 0x8f, 0x47, + 0x6c, 0x4f, 0x83, 0x00, 0xb9, 0x04, 0x3d, 0xbc, 0xea, 0x2d, 0x3b, 0x9c, 0xd6, 0x61, 0xf2, 0xb8, + 0xd2, 0xe8, 0x26, 0x17, 0x95, 0xc6, 0xed, 0xe4, 0x06, 0x5d, 0x7e, 0xf2, 0x03, 0x36, 0x70, 0x16, + 0xd3, 0x13, 0x4d, 0xaa, 0x1d, 0xed, 0x0a, 0xef, 0x35, 0xa9, 0xf4, 0x73, 0xbb, 0xb8, 0x39, 0xc7, + 0x19, 0x1c, 0x96, 0x4a, 0xe2, 0x76, 0x3d, 0xd1, 0xce, 0x7a, 0xe2, 0xa7, 0xec, 0x0e, 0xc2, 0xf9, + 0x94, 0x3b, 0xca, 0x94, 0x97, 0xa5, 0x06, 0x63, 0xc2, 0x02, 0x6f, 0x21, 0x9c, 0x7b, 0xe9, 0x61, + 0x53, 0x4e, 0x91, 0xdd, 0xf5, 0xae, 0x9f, 0xc0, 0xfa, 0xb7, 0x68, 0x5f, 0xeb, 0x1f, 0xd6, 0x6f, + 0xd8, 0x9e, 0x0a, 0x8c, 0x10, 0xee, 0xe1, 0x36, 0x1c, 0x2e, 0xba, 0x70, 0xad, 0x4d, 0x08, 0xd8, + 0x89, 0xc6, 0xa7, 0x17, 0xeb, 0x24, 0x5a, 0xad, 0x93, 0xe8, 0xd7, 0x3a, 0x89, 0xbe, 0x6f, 0x92, + 0xde, 0x6a, 0x93, 0xf4, 0x7e, 0x6c, 0x92, 0xde, 0x97, 0xc9, 0x4c, 0xda, 0x79, 0x55, 0x64, 0x82, + 0x54, 0xfe, 0xa1, 0xbd, 0xad, 0x8f, 0xbc, 0x30, 0x79, 0x77, 0x69, 0xcf, 0x05, 0x69, 0xd8, 0x85, + 0x73, 0x2e, 0x31, 0x57, 0x54, 0x56, 0xa7, 0x60, 0xfe, 0x3c, 0x43, 0x5b, 0x9f, 0x81, 0x29, 0xfa, + 0xfe, 0xe6, 0x5e, 0xfe, 0x0e, 0x00, 0x00, 0xff, 0xff, 0x69, 0xd3, 0xee, 0x9b, 0x50, 0x03, 0x00, + 0x00, } -func (m *EventCreateTFDenom) Marshal() (dAtA []byte, err error) { +func (m *EventCreateDenom) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -339,12 +356,12 @@ func (m *EventCreateTFDenom) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *EventCreateTFDenom) MarshalTo(dAtA []byte) (int, error) { +func (m *EventCreateDenom) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *EventCreateTFDenom) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *EventCreateDenom) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -366,7 +383,7 @@ func (m *EventCreateTFDenom) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func (m *EventMintTFDenom) Marshal() (dAtA []byte, err error) { +func (m *EventMint) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -376,16 +393,23 @@ func (m *EventMintTFDenom) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *EventMintTFDenom) MarshalTo(dAtA []byte) (int, error) { +func (m *EventMint) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *EventMintTFDenom) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *EventMint) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l + if len(m.Receiver) > 0 { + i -= len(m.Receiver) + copy(dAtA[i:], m.Receiver) + i = encodeVarintEvents(dAtA, i, uint64(len(m.Receiver))) + i-- + dAtA[i] = 0x1a + } { size, err := m.Amount.MarshalToSizedBuffer(dAtA[:i]) if err != nil { @@ -396,17 +420,17 @@ func (m *EventMintTFDenom) MarshalToSizedBuffer(dAtA []byte) (int, error) { } i-- dAtA[i] = 0x12 - if len(m.RecipientAddress) > 0 { - i -= len(m.RecipientAddress) - copy(dAtA[i:], m.RecipientAddress) - i = encodeVarintEvents(dAtA, i, uint64(len(m.RecipientAddress))) + if len(m.Minter) > 0 { + i -= len(m.Minter) + copy(dAtA[i:], m.Minter) + i = encodeVarintEvents(dAtA, i, uint64(len(m.Minter))) i-- dAtA[i] = 0xa } return len(dAtA) - i, nil } -func (m *EventBurnDenom) Marshal() (dAtA []byte, err error) { +func (m *EventBurn) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -416,16 +440,23 @@ func (m *EventBurnDenom) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *EventBurnDenom) MarshalTo(dAtA []byte) (int, error) { +func (m *EventBurn) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *EventBurnDenom) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *EventBurn) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l + if len(m.BurnFrom) > 0 { + i -= len(m.BurnFrom) + copy(dAtA[i:], m.BurnFrom) + i = encodeVarintEvents(dAtA, i, uint64(len(m.BurnFrom))) + i-- + dAtA[i] = 0x1a + } { size, err := m.Amount.MarshalToSizedBuffer(dAtA[:i]) if err != nil { @@ -436,17 +467,17 @@ func (m *EventBurnDenom) MarshalToSizedBuffer(dAtA []byte) (int, error) { } i-- dAtA[i] = 0x12 - if len(m.BurnerAddress) > 0 { - i -= len(m.BurnerAddress) - copy(dAtA[i:], m.BurnerAddress) - i = encodeVarintEvents(dAtA, i, uint64(len(m.BurnerAddress))) + if len(m.Burner) > 0 { + i -= len(m.Burner) + copy(dAtA[i:], m.Burner) + i = encodeVarintEvents(dAtA, i, uint64(len(m.Burner))) i-- dAtA[i] = 0xa } return len(dAtA) - i, nil } -func (m *EventChangeTFAdmin) Marshal() (dAtA []byte, err error) { +func (m *EventChangeAdmin) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -456,12 +487,12 @@ func (m *EventChangeTFAdmin) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *EventChangeTFAdmin) MarshalTo(dAtA []byte) (int, error) { +func (m *EventChangeAdmin) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *EventChangeTFAdmin) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *EventChangeAdmin) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -483,7 +514,7 @@ func (m *EventChangeTFAdmin) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func (m *EventSetTFDenomMetadata) Marshal() (dAtA []byte, err error) { +func (m *EventSetDenomMetadata) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -493,12 +524,12 @@ func (m *EventSetTFDenomMetadata) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *EventSetTFDenomMetadata) MarshalTo(dAtA []byte) (int, error) { +func (m *EventSetDenomMetadata) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *EventSetTFDenomMetadata) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *EventSetDenomMetadata) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -534,7 +565,7 @@ func encodeVarintEvents(dAtA []byte, offset int, v uint64) int { dAtA[offset] = uint8(v) return base } -func (m *EventCreateTFDenom) Size() (n int) { +func (m *EventCreateDenom) Size() (n int) { if m == nil { return 0 } @@ -551,37 +582,45 @@ func (m *EventCreateTFDenom) Size() (n int) { return n } -func (m *EventMintTFDenom) Size() (n int) { +func (m *EventMint) Size() (n int) { if m == nil { return 0 } var l int _ = l - l = len(m.RecipientAddress) + l = len(m.Minter) if l > 0 { n += 1 + l + sovEvents(uint64(l)) } l = m.Amount.Size() n += 1 + l + sovEvents(uint64(l)) + l = len(m.Receiver) + if l > 0 { + n += 1 + l + sovEvents(uint64(l)) + } return n } -func (m *EventBurnDenom) Size() (n int) { +func (m *EventBurn) Size() (n int) { if m == nil { return 0 } var l int _ = l - l = len(m.BurnerAddress) + l = len(m.Burner) if l > 0 { n += 1 + l + sovEvents(uint64(l)) } l = m.Amount.Size() n += 1 + l + sovEvents(uint64(l)) + l = len(m.BurnFrom) + if l > 0 { + n += 1 + l + sovEvents(uint64(l)) + } return n } -func (m *EventChangeTFAdmin) Size() (n int) { +func (m *EventChangeAdmin) Size() (n int) { if m == nil { return 0 } @@ -598,7 +637,7 @@ func (m *EventChangeTFAdmin) Size() (n int) { return n } -func (m *EventSetTFDenomMetadata) Size() (n int) { +func (m *EventSetDenomMetadata) Size() (n int) { if m == nil { return 0 } @@ -619,7 +658,7 @@ func sovEvents(x uint64) (n int) { func sozEvents(x uint64) (n int) { return sovEvents(uint64((x << 1) ^ uint64((int64(x) >> 63)))) } -func (m *EventCreateTFDenom) Unmarshal(dAtA []byte) error { +func (m *EventCreateDenom) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -642,10 +681,10 @@ func (m *EventCreateTFDenom) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: EventCreateTFDenom: wiretype end group for non-group") + return fmt.Errorf("proto: EventCreateDenom: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: EventCreateTFDenom: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: EventCreateDenom: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -733,7 +772,7 @@ func (m *EventCreateTFDenom) Unmarshal(dAtA []byte) error { } return nil } -func (m *EventMintTFDenom) Unmarshal(dAtA []byte) error { +func (m *EventMint) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -756,15 +795,15 @@ func (m *EventMintTFDenom) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: EventMintTFDenom: wiretype end group for non-group") + return fmt.Errorf("proto: EventMint: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: EventMintTFDenom: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: EventMint: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field RecipientAddress", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Minter", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -792,7 +831,7 @@ func (m *EventMintTFDenom) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.RecipientAddress = string(dAtA[iNdEx:postIndex]) + m.Minter = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 2 { @@ -827,6 +866,38 @@ func (m *EventMintTFDenom) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Receiver", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Receiver = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipEvents(dAtA[iNdEx:]) @@ -848,7 +919,7 @@ func (m *EventMintTFDenom) Unmarshal(dAtA []byte) error { } return nil } -func (m *EventBurnDenom) Unmarshal(dAtA []byte) error { +func (m *EventBurn) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -871,15 +942,15 @@ func (m *EventBurnDenom) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: EventBurnDenom: wiretype end group for non-group") + return fmt.Errorf("proto: EventBurn: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: EventBurnDenom: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: EventBurn: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field BurnerAddress", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Burner", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -907,7 +978,7 @@ func (m *EventBurnDenom) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.BurnerAddress = string(dAtA[iNdEx:postIndex]) + m.Burner = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 2 { @@ -942,6 +1013,38 @@ func (m *EventBurnDenom) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field BurnFrom", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.BurnFrom = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipEvents(dAtA[iNdEx:]) @@ -963,7 +1066,7 @@ func (m *EventBurnDenom) Unmarshal(dAtA []byte) error { } return nil } -func (m *EventChangeTFAdmin) Unmarshal(dAtA []byte) error { +func (m *EventChangeAdmin) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -986,10 +1089,10 @@ func (m *EventChangeTFAdmin) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: EventChangeTFAdmin: wiretype end group for non-group") + return fmt.Errorf("proto: EventChangeAdmin: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: EventChangeTFAdmin: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: EventChangeAdmin: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -1077,7 +1180,7 @@ func (m *EventChangeTFAdmin) Unmarshal(dAtA []byte) error { } return nil } -func (m *EventSetTFDenomMetadata) Unmarshal(dAtA []byte) error { +func (m *EventSetDenomMetadata) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -1100,10 +1203,10 @@ func (m *EventSetTFDenomMetadata) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: EventSetTFDenomMetadata: wiretype end group for non-group") + return fmt.Errorf("proto: EventSetDenomMetadata: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: EventSetTFDenomMetadata: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: EventSetDenomMetadata: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: diff --git a/chain/tokenfactory/types/expected_keepers.go b/chain/tokenfactory/types/expected_keepers.go deleted file mode 100644 index 27c25b23..00000000 --- a/chain/tokenfactory/types/expected_keepers.go +++ /dev/null @@ -1,35 +0,0 @@ -package types - -import ( - "context" - - sdk "github.com/cosmos/cosmos-sdk/types" - banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" -) - -type BankKeeper interface { - // Methods imported from bank should be defined here - GetDenomMetaData(ctx context.Context, denom string) (banktypes.Metadata, bool) - SetDenomMetaData(ctx context.Context, denomMetaData banktypes.Metadata) - - HasSupply(ctx context.Context, denom string) bool - - SendCoinsFromModuleToAccount(ctx context.Context, senderModule string, recipientAddr sdk.AccAddress, amt sdk.Coins) error - SendCoinsFromAccountToModule(ctx context.Context, senderAddr sdk.AccAddress, recipientModule string, amt sdk.Coins) error - MintCoins(ctx context.Context, moduleName string, amt sdk.Coins) error - BurnCoins(ctx context.Context, moduleName string, amt sdk.Coins) error - - SendCoins(ctx context.Context, fromAddr sdk.AccAddress, toAddr sdk.AccAddress, amt sdk.Coins) error - HasBalance(ctx context.Context, addr sdk.AccAddress, amt sdk.Coin) bool - BlockedAddr(addr sdk.AccAddress) bool -} - -type AccountKeeper interface { - SetModuleAccount(ctx context.Context, macc sdk.ModuleAccountI) - NewAccount(ctx context.Context, acc sdk.AccountI) sdk.AccountI -} - -// CommunityPoolKeeper defines the contract needed to be fulfilled for community pool interactions. -type CommunityPoolKeeper interface { - FundCommunityPool(ctx context.Context, amount sdk.Coins, sender sdk.AccAddress) error -} diff --git a/chain/tokenfactory/types/genesis.go b/chain/tokenfactory/types/genesis.go deleted file mode 100644 index 3c4bdb6d..00000000 --- a/chain/tokenfactory/types/genesis.go +++ /dev/null @@ -1,51 +0,0 @@ -package types - -import ( - "cosmossdk.io/errors" - sdk "github.com/cosmos/cosmos-sdk/types" -) - -// this line is used by starport scaffolding # genesis/types/import - -// DefaultIndex is the default capability global index -const DefaultIndex uint64 = 1 - -// DefaultGenesis returns the default Capability genesis state -func DefaultGenesis() *GenesisState { - return &GenesisState{ - Params: DefaultParams(), - FactoryDenoms: []GenesisDenom{}, - } -} - -// Validate performs basic genesis state validation returning an error upon any -// failure. -func (gs GenesisState) Validate() error { - err := gs.Params.Validate() - if err != nil { - return err - } - - seenDenoms := map[string]bool{} - - for _, denom := range gs.GetFactoryDenoms() { - if seenDenoms[denom.GetDenom()] { - return errors.Wrapf(ErrInvalidGenesis, "duplicate denom: %s", denom.GetDenom()) - } - seenDenoms[denom.GetDenom()] = true - - _, _, err := DeconstructDenom(denom.GetDenom()) - if err != nil { - return err - } - - if denom.AuthorityMetadata.Admin != "" { - _, err = sdk.AccAddressFromBech32(denom.AuthorityMetadata.Admin) - if err != nil { - return errors.Wrapf(ErrInvalidAuthorityMetadata, "Invalid admin address (%s)", err) - } - } - } - - return nil -} diff --git a/chain/tokenfactory/types/gov.go b/chain/tokenfactory/types/gov.go deleted file mode 100644 index 346c24ae..00000000 --- a/chain/tokenfactory/types/gov.go +++ /dev/null @@ -1,54 +0,0 @@ -package types - -import ( - errorsmod "cosmossdk.io/errors" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" - govtypes "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" -) - -const ( - ProposalTypeUpdateDenomsMetaData = "UpdateDenomsMetaData" -) - -func init() { - govtypes.RegisterProposalType(ProposalTypeUpdateDenomsMetaData) -} - -var ( - _ govtypes.Content = &UpdateDenomsMetadataProposal{} -) - -func NewUpdateDenomsMetadataProposal(title, description string, metadatas []banktypes.Metadata) govtypes.Content { - return &UpdateDenomsMetadataProposal{ - Title: title, - Description: description, - Metadatas: metadatas, - } -} - -func (p *UpdateDenomsMetadataProposal) GetTitle() string { return p.Title } - -func (p *UpdateDenomsMetadataProposal) GetDescription() string { return p.Description } - -func (p *UpdateDenomsMetadataProposal) ProposalRoute() string { return RouterKey } - -func (p *UpdateDenomsMetadataProposal) ProposalType() string { - return ProposalTypeUpdateDenomsMetaData -} - -func (p *UpdateDenomsMetadataProposal) ValidateBasic() error { - err := govtypes.ValidateAbstract(p) - if err != nil { - return err - } - - for idx := range p.Metadatas { - metadata := p.Metadatas[idx] - if metadata.Base == "" { - return errorsmod.Wrapf(sdkerrors.ErrInvalidRequest, "invalid denom (%s)", metadata.Base) - } - } - - return nil -} diff --git a/chain/tokenfactory/types/gov.pb.go b/chain/tokenfactory/types/gov.pb.go deleted file mode 100644 index 0a090625..00000000 --- a/chain/tokenfactory/types/gov.pb.go +++ /dev/null @@ -1,465 +0,0 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: injective/tokenfactory/v1beta1/gov.proto - -package types - -import ( - fmt "fmt" - types "github.com/cosmos/cosmos-sdk/x/bank/types" - _ "github.com/cosmos/gogoproto/gogoproto" - proto "github.com/cosmos/gogoproto/proto" - io "io" - math "math" - math_bits "math/bits" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package - -type UpdateDenomsMetadataProposal struct { - Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"` - Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` - Metadatas []types.Metadata `protobuf:"bytes,3,rep,name=metadatas,proto3" json:"metadatas"` - Deposit string `protobuf:"bytes,4,opt,name=deposit,proto3" json:"deposit,omitempty" yaml:"deposit"` -} - -func (m *UpdateDenomsMetadataProposal) Reset() { *m = UpdateDenomsMetadataProposal{} } -func (m *UpdateDenomsMetadataProposal) String() string { return proto.CompactTextString(m) } -func (*UpdateDenomsMetadataProposal) ProtoMessage() {} -func (*UpdateDenomsMetadataProposal) Descriptor() ([]byte, []int) { - return fileDescriptor_2c4dd8ce2ae85492, []int{0} -} -func (m *UpdateDenomsMetadataProposal) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *UpdateDenomsMetadataProposal) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_UpdateDenomsMetadataProposal.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *UpdateDenomsMetadataProposal) XXX_Merge(src proto.Message) { - xxx_messageInfo_UpdateDenomsMetadataProposal.Merge(m, src) -} -func (m *UpdateDenomsMetadataProposal) XXX_Size() int { - return m.Size() -} -func (m *UpdateDenomsMetadataProposal) XXX_DiscardUnknown() { - xxx_messageInfo_UpdateDenomsMetadataProposal.DiscardUnknown(m) -} - -var xxx_messageInfo_UpdateDenomsMetadataProposal proto.InternalMessageInfo - -func init() { - proto.RegisterType((*UpdateDenomsMetadataProposal)(nil), "injective.tokenfactory.v1beta1.UpdateDenomsMetadataProposal") -} - -func init() { - proto.RegisterFile("injective/tokenfactory/v1beta1/gov.proto", fileDescriptor_2c4dd8ce2ae85492) -} - -var fileDescriptor_2c4dd8ce2ae85492 = []byte{ - // 332 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x54, 0x91, 0xc1, 0x4e, 0xf2, 0x40, - 0x14, 0x85, 0xdb, 0x1f, 0x7e, 0x0d, 0x25, 0x71, 0xd1, 0xb0, 0x68, 0x88, 0x0e, 0x84, 0x15, 0x0b, - 0x9d, 0x09, 0xba, 0x63, 0x27, 0x71, 0x63, 0xa2, 0x89, 0x69, 0xe2, 0xc6, 0xdd, 0xb4, 0xbd, 0x96, - 0x91, 0xb6, 0x77, 0xd2, 0xb9, 0x90, 0xf0, 0x06, 0x2e, 0x7d, 0x04, 0x1f, 0x87, 0x8d, 0x09, 0x4b, - 0x57, 0xc4, 0xc0, 0x1b, 0xf8, 0x04, 0x86, 0xb6, 0x20, 0xee, 0x7a, 0x7a, 0xbe, 0x7b, 0xcf, 0xcd, - 0x19, 0xa7, 0xaf, 0xb2, 0x17, 0x08, 0x49, 0xcd, 0x40, 0x10, 0x4e, 0x20, 0x7b, 0x96, 0x21, 0x61, - 0x3e, 0x17, 0xb3, 0x41, 0x00, 0x24, 0x07, 0x22, 0xc6, 0x19, 0xd7, 0x39, 0x12, 0xba, 0x6c, 0x4f, - 0xf2, 0x43, 0x92, 0x57, 0x64, 0xbb, 0x15, 0x63, 0x8c, 0x05, 0x2a, 0xb6, 0x5f, 0xe5, 0x54, 0x9b, - 0x85, 0x68, 0x52, 0x34, 0x22, 0x90, 0xd9, 0x64, 0xbf, 0x74, 0x2b, 0x4a, 0xbf, 0xf7, 0x61, 0x3b, - 0xa7, 0x8f, 0x3a, 0x92, 0x04, 0x37, 0x90, 0x61, 0x6a, 0xee, 0x81, 0x64, 0x24, 0x49, 0x3e, 0xe4, - 0xa8, 0xd1, 0xc8, 0xc4, 0x6d, 0x39, 0xff, 0x49, 0x51, 0x02, 0x9e, 0xdd, 0xb5, 0xfb, 0x0d, 0xbf, - 0x14, 0x6e, 0xd7, 0x69, 0x46, 0x60, 0xc2, 0x5c, 0x69, 0x52, 0x98, 0x79, 0xff, 0x0a, 0xef, 0xf0, - 0x97, 0x7b, 0xed, 0x34, 0xd2, 0x6a, 0x97, 0xf1, 0x6a, 0xdd, 0x5a, 0xbf, 0x79, 0x79, 0xc6, 0xcb, - 0x63, 0x78, 0x91, 0x5f, 0x1d, 0xc3, 0x77, 0x89, 0xa3, 0xfa, 0x62, 0xd5, 0xb1, 0xfc, 0xdf, 0x29, - 0xf7, 0xdc, 0x39, 0x8e, 0x40, 0xa3, 0x51, 0xe4, 0xd5, 0xb7, 0x01, 0x23, 0xf7, 0x7b, 0xd5, 0x39, - 0x99, 0xcb, 0x34, 0x19, 0xf6, 0x2a, 0xa3, 0xe7, 0xef, 0x90, 0x61, 0xfd, 0xf5, 0xbd, 0x63, 0x8d, - 0x92, 0xc5, 0x9a, 0xd9, 0xcb, 0x35, 0xb3, 0xbf, 0xd6, 0xcc, 0x7e, 0xdb, 0x30, 0x6b, 0xb9, 0x61, - 0xd6, 0xe7, 0x86, 0x59, 0x4f, 0x7e, 0xac, 0x68, 0x3c, 0x0d, 0x78, 0x88, 0xa9, 0xb8, 0xdd, 0x55, - 0x79, 0x27, 0x03, 0x23, 0xf6, 0xc5, 0x5e, 0x84, 0x98, 0xc3, 0xa1, 0x1c, 0x4b, 0x95, 0x89, 0x14, - 0xa3, 0x69, 0x02, 0xe6, 0xef, 0xfb, 0xd0, 0x5c, 0x83, 0x09, 0x8e, 0x8a, 0x12, 0xaf, 0x7e, 0x02, - 0x00, 0x00, 0xff, 0xff, 0x31, 0xc4, 0xfd, 0x93, 0xc6, 0x01, 0x00, 0x00, -} - -func (m *UpdateDenomsMetadataProposal) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *UpdateDenomsMetadataProposal) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *UpdateDenomsMetadataProposal) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Deposit) > 0 { - i -= len(m.Deposit) - copy(dAtA[i:], m.Deposit) - i = encodeVarintGov(dAtA, i, uint64(len(m.Deposit))) - i-- - dAtA[i] = 0x22 - } - if len(m.Metadatas) > 0 { - for iNdEx := len(m.Metadatas) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.Metadatas[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGov(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x1a - } - } - if len(m.Description) > 0 { - i -= len(m.Description) - copy(dAtA[i:], m.Description) - i = encodeVarintGov(dAtA, i, uint64(len(m.Description))) - i-- - dAtA[i] = 0x12 - } - if len(m.Title) > 0 { - i -= len(m.Title) - copy(dAtA[i:], m.Title) - i = encodeVarintGov(dAtA, i, uint64(len(m.Title))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func encodeVarintGov(dAtA []byte, offset int, v uint64) int { - offset -= sovGov(v) - base := offset - for v >= 1<<7 { - dAtA[offset] = uint8(v&0x7f | 0x80) - v >>= 7 - offset++ - } - dAtA[offset] = uint8(v) - return base -} -func (m *UpdateDenomsMetadataProposal) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Title) - if l > 0 { - n += 1 + l + sovGov(uint64(l)) - } - l = len(m.Description) - if l > 0 { - n += 1 + l + sovGov(uint64(l)) - } - if len(m.Metadatas) > 0 { - for _, e := range m.Metadatas { - l = e.Size() - n += 1 + l + sovGov(uint64(l)) - } - } - l = len(m.Deposit) - if l > 0 { - n += 1 + l + sovGov(uint64(l)) - } - return n -} - -func sovGov(x uint64) (n int) { - return (math_bits.Len64(x|1) + 6) / 7 -} -func sozGov(x uint64) (n int) { - return sovGov(uint64((x << 1) ^ uint64((int64(x) >> 63)))) -} -func (m *UpdateDenomsMetadataProposal) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGov - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: UpdateDenomsMetadataProposal: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: UpdateDenomsMetadataProposal: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Title", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGov - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGov - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGov - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Title = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Description", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGov - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGov - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGov - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Description = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Metadatas", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGov - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGov - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGov - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Metadatas = append(m.Metadatas, types.Metadata{}) - if err := m.Metadatas[len(m.Metadatas)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Deposit", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGov - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGov - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGov - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Deposit = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipGov(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthGov - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func skipGov(dAtA []byte) (n int, err error) { - l := len(dAtA) - iNdEx := 0 - depth := 0 - for iNdEx < l { - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowGov - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - wireType := int(wire & 0x7) - switch wireType { - case 0: - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowGov - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - iNdEx++ - if dAtA[iNdEx-1] < 0x80 { - break - } - } - case 1: - iNdEx += 8 - case 2: - var length int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowGov - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - length |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if length < 0 { - return 0, ErrInvalidLengthGov - } - iNdEx += length - case 3: - depth++ - case 4: - if depth == 0 { - return 0, ErrUnexpectedEndOfGroupGov - } - depth-- - case 5: - iNdEx += 4 - default: - return 0, fmt.Errorf("proto: illegal wireType %d", wireType) - } - if iNdEx < 0 { - return 0, ErrInvalidLengthGov - } - if depth == 0 { - return iNdEx, nil - } - } - return 0, io.ErrUnexpectedEOF -} - -var ( - ErrInvalidLengthGov = fmt.Errorf("proto: negative length found during unmarshaling") - ErrIntOverflowGov = fmt.Errorf("proto: integer overflow") - ErrUnexpectedEndOfGroupGov = fmt.Errorf("proto: unexpected end of group") -) diff --git a/chain/tokenfactory/types/keys.go b/chain/tokenfactory/types/keys.go deleted file mode 100644 index 6d8aed08..00000000 --- a/chain/tokenfactory/types/keys.go +++ /dev/null @@ -1,50 +0,0 @@ -package types - -import ( - "strings" -) - -const ( - // ModuleName defines the module name - ModuleName = "tokenfactory" - - // StoreKey defines the primary module store key - StoreKey = ModuleName - - // RouterKey is the message route for slashing - RouterKey = ModuleName - - // QuerierRoute defines the module's query routing key - QuerierRoute = ModuleName - - // MemStoreKey defines the in-memory store key - MemStoreKey = "mem_tokenfactory" -) - -// KeySeparator is used to combine parts of the keys in the store -const KeySeparator = "|" - -var ( - DenomAuthorityMetadataKey = []byte{0x01} - DenomsPrefixKey = []byte{0x02} - CreatorPrefixKey = []byte{0x03} - AdminPrefixKey = []byte{0x04} - ParamsKey = []byte{0x05} -) - -// GetDenomPrefixStore returns the store prefix where all the data associated with a specific denom -// is stored -func GetDenomPrefixStore(denom string) []byte { - return []byte(strings.Join([]string{string(DenomsPrefixKey), denom, ""}, KeySeparator)) -} - -// GetCreatorPrefix returns the store prefix where the list of the denoms created by a specific -// creator are stored. -func GetCreatorPrefix(creator string) []byte { - return []byte(strings.Join([]string{string(CreatorPrefixKey), creator, ""}, KeySeparator)) -} - -// GetCreatorsPrefix returns the store prefix where a list of all creator addresses are stored -func GetCreatorsPrefix() []byte { - return append(CreatorPrefixKey, []byte(KeySeparator)...) -} diff --git a/chain/tokenfactory/types/msgs.go b/chain/tokenfactory/types/msgs.go deleted file mode 100644 index c3a62338..00000000 --- a/chain/tokenfactory/types/msgs.go +++ /dev/null @@ -1,288 +0,0 @@ -package types - -import ( - "cosmossdk.io/errors" - "cosmossdk.io/math" - "github.com/InjectiveLabs/sdk-go/chain/types" - sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" - "strings" -) - -// constants -const ( - TypeMsgCreateDenom = "create_denom" - TypeMsgMint = "tf_mint" - TypeMsgBurn = "tf_burn" - TypeMsgChangeAdmin = "change_admin" - TypeMsgSetDenomMetadata = "set_denom_metadata" - TypeMsgUpdateParams = "update_params" -) - -var _ sdk.Msg = &MsgCreateDenom{} -var _ sdk.Msg = &MsgMint{} -var _ sdk.Msg = &MsgBurn{} -var _ sdk.Msg = &MsgSetDenomMetadata{} -var _ sdk.Msg = &MsgChangeAdmin{} -var _ sdk.Msg = &MsgUpdateParams{} - -func (m MsgUpdateParams) Route() string { return RouterKey } - -func (m MsgUpdateParams) Type() string { return TypeMsgUpdateParams } - -func (m MsgUpdateParams) ValidateBasic() error { - if _, err := sdk.AccAddressFromBech32(m.Authority); err != nil { - return errors.Wrap(err, "invalid authority address") - } - - if err := m.Params.Validate(); err != nil { - return err - } - - return nil -} - -func (m *MsgUpdateParams) GetSignBytes() []byte { - return sdk.MustSortJSON(ModuleCdc.MustMarshal(m)) -} - -func (m MsgUpdateParams) GetSigners() []sdk.AccAddress { - addr, _ := sdk.AccAddressFromBech32(m.Authority) - return []sdk.AccAddress{addr} -} - -// NewMsgCreateDenom creates a msg to create a new denom -func NewMsgCreateDenom(sender, subdenom, name, symbol string, decimals uint32) *MsgCreateDenom { - return &MsgCreateDenom{ - Sender: sender, - Subdenom: subdenom, - Name: name, - Symbol: symbol, - Decimals: decimals, - } -} - -func (m MsgCreateDenom) Route() string { return RouterKey } -func (m MsgCreateDenom) Type() string { return TypeMsgCreateDenom } -func (m MsgCreateDenom) ValidateBasic() error { - _, err := sdk.AccAddressFromBech32(m.Sender) - if err != nil { - return errors.Wrapf(sdkerrors.ErrInvalidAddress, "Invalid sender address (%s)", err) - } - - _, err = GetTokenDenom(m.Sender, m.Subdenom) - if err != nil { - return errors.Wrap(ErrInvalidDenom, err.Error()) - } - - return nil -} - -func (m *MsgCreateDenom) GetSignBytes() []byte { - return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(m)) -} - -func (m MsgCreateDenom) GetSigners() []sdk.AccAddress { - sender, _ := sdk.AccAddressFromBech32(m.Sender) - return []sdk.AccAddress{sender} -} - -// NewMsgMint creates a message to mint tokens -func NewMsgMint(sender string, amount sdk.Coin) *MsgMint { - return &MsgMint{ - Sender: sender, - Amount: amount, - } -} - -func (m MsgMint) Route() string { return RouterKey } -func (m MsgMint) Type() string { return TypeMsgMint } -func (m MsgMint) ValidateBasic() error { - _, err := sdk.AccAddressFromBech32(m.Sender) - if err != nil { - return errors.Wrapf(sdkerrors.ErrInvalidAddress, "Invalid sender address (%s)", err) - } - - if !m.Amount.IsValid() || m.Amount.Amount.Equal(math.ZeroInt()) { - return errors.Wrap(sdkerrors.ErrInvalidCoins, m.Amount.String()) - } - - return nil -} - -func (m MsgMint) GetSignBytes() []byte { - return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(&m)) -} - -func (m MsgMint) GetSigners() []sdk.AccAddress { - sender, _ := sdk.AccAddressFromBech32(m.Sender) - return []sdk.AccAddress{sender} -} - -// NewMsgBurn creates a message to burn tokens -func NewMsgBurn(sender string, amount sdk.Coin) *MsgBurn { - return &MsgBurn{ - Sender: sender, - Amount: amount, - } -} - -func (m MsgBurn) Route() string { return RouterKey } -func (m MsgBurn) Type() string { return TypeMsgBurn } -func (m MsgBurn) ValidateBasic() error { - _, err := sdk.AccAddressFromBech32(m.Sender) - if err != nil { - return errors.Wrapf(sdkerrors.ErrInvalidAddress, "Invalid sender address (%s)", err) - } - - if !m.Amount.IsValid() || !m.Amount.IsPositive() { - return errors.Wrap(sdkerrors.ErrInvalidCoins, m.Amount.String()) - } - - return nil -} - -func (m *MsgBurn) GetSignBytes() []byte { - return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(m)) -} - -func (m MsgBurn) GetSigners() []sdk.AccAddress { - sender, _ := sdk.AccAddressFromBech32(m.Sender) - return []sdk.AccAddress{sender} -} - -// NewMsgChangeAdmin creates a message to change the admin -func NewMsgChangeAdmin(sender, denom, newAdmin string) *MsgChangeAdmin { - return &MsgChangeAdmin{ - Sender: sender, - Denom: denom, - NewAdmin: newAdmin, - } -} - -func (m MsgChangeAdmin) Route() string { return RouterKey } -func (m MsgChangeAdmin) Type() string { return TypeMsgChangeAdmin } -func (m MsgChangeAdmin) ValidateBasic() error { - _, err := sdk.AccAddressFromBech32(m.Sender) - if err != nil { - return errors.Wrapf(sdkerrors.ErrInvalidAddress, "Invalid sender address (%s)", err) - } - - _, err = sdk.AccAddressFromBech32(m.NewAdmin) - if err != nil { - return errors.Wrapf(sdkerrors.ErrInvalidAddress, "Invalid address (%s)", err) - } - - _, _, err = DeconstructDenom(m.Denom) - if err != nil { - return err - } - - return nil -} - -func (m *MsgChangeAdmin) GetSignBytes() []byte { - return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(m)) -} - -func (m MsgChangeAdmin) GetSigners() []sdk.AccAddress { - sender, _ := sdk.AccAddressFromBech32(m.Sender) - return []sdk.AccAddress{sender} -} - -// NewMsgSetDenomMetadata creates a message to set the denom metadata -func NewMsgSetDenomMetadata(sender string, metadata banktypes.Metadata) *MsgSetDenomMetadata { - return &MsgSetDenomMetadata{ - Sender: sender, - Metadata: metadata, - } -} - -func (m MsgSetDenomMetadata) Route() string { return RouterKey } -func (m MsgSetDenomMetadata) Type() string { return TypeMsgSetDenomMetadata } -func (m MsgSetDenomMetadata) ValidateBasic() error { - _, err := sdk.AccAddressFromBech32(m.Sender) - if err != nil { - return errors.Wrapf(sdkerrors.ErrInvalidAddress, "Invalid sender address (%s)", err) - } - - err = m.Metadata.Validate() - if err != nil { - return err - } - - if m.Metadata.Base == types.InjectiveCoin { - return errors.Wrap(ErrInvalidDenom, "cannot set metadata for INJ") - } - - err = sdk.ValidateDenom(m.Metadata.Base) - if err != nil { - return err - } - - // If denom metadata is for a TokenFactory denom, run the different components validations - strParts := strings.Split(m.Metadata.Base, "/") - if len(strParts) > 2 { - _, _, err = DeconstructDenom(m.Metadata.Base) - if err != nil { - return err - } - } - - return nil -} - -func (m *MsgSetDenomMetadata) GetSignBytes() []byte { - return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(m)) -} - -func (m MsgSetDenomMetadata) GetSigners() []sdk.AccAddress { - sender, _ := sdk.AccAddressFromBech32(m.Sender) - return []sdk.AccAddress{sender} -} - -// var _ sdk.Msg = &MsgForceTransfer{} - -// // NewMsgForceTransfer creates a transfer funds from one account to another -// func NewMsgForceTransfer(sender string, amount sdk.Coin, fromAddr, toAddr string) *MsgForceTransfer { -// return &MsgForceTransfer{ -// Sender: sender, -// Amount: amount, -// TransferFromAddress: fromAddr, -// TransferToAddress: toAddr, -// } -// } - -// func (m MsgForceTransfer) Route() string { return RouterKey } -// func (m MsgForceTransfer) Type() string { return TypeMsgForceTransfer } -// func (m MsgForceTransfer) ValidateBasic() error { -// _, err := sdk.AccAddressFromBech32(m.Sender) -// if err != nil { -// return errors.Wrapf(sdkerrors.ErrInvalidAddress, "Invalid sender address (%s)", err) -// } - -// _, err = sdk.AccAddressFromBech32(m.TransferFromAddress) -// if err != nil { -// return errors.Wrapf(sdkerrors.ErrInvalidAddress, "Invalid address (%s)", err) -// } -// _, err = sdk.AccAddressFromBech32(m.TransferToAddress) -// if err != nil { -// return errors.Wrapf(sdkerrors.ErrInvalidAddress, "Invalid address (%s)", err) -// } - -// if !m.Amount.IsValid() { -// return errors.Wrap(sdkerrors.ErrInvalidCoins, m.Amount.String()) -// } - -// return nil -// } - -// func (m MsgForceTransfer) GetSignBytes() []byte { -// return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(&m)) -// } - -// func (m MsgForceTransfer) GetSigners() []sdk.AccAddress { -// sender, _ := sdk.AccAddressFromBech32(m.Sender) -// return []sdk.AccAddress{sender} -// } diff --git a/chain/tokenfactory/types/params.go b/chain/tokenfactory/types/params.go deleted file mode 100644 index f1d52477..00000000 --- a/chain/tokenfactory/types/params.go +++ /dev/null @@ -1,63 +0,0 @@ -package types - -import ( - "fmt" - - "cosmossdk.io/math" - sdk "github.com/cosmos/cosmos-sdk/types" - paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" - - chaintypes "github.com/InjectiveLabs/sdk-go/chain/types" -) - -// Parameter store keys. -var ( - KeyDenomCreationFee = []byte("DenomCreationFee") -) - -// ParamTable for gamm module. -func ParamKeyTable() paramtypes.KeyTable { - return paramtypes.NewKeyTable().RegisterParamSet(&Params{}) -} - -func NewParams(denomCreationFee sdk.Coins) Params { - return Params{ - DenomCreationFee: denomCreationFee, - } -} - -// default gamm module parameters. -func DefaultParams() Params { - return Params{ - DenomCreationFee: sdk.NewCoins(sdk.NewCoin(chaintypes.InjectiveCoin, math.NewIntWithDecimal(10, 18))), // 10 INJ - } -} - -// validate params. -func (p Params) Validate() error { - if err := validateDenomCreationFee(p.DenomCreationFee); err != nil { - return err - } - - return nil -} - -// Implements params.ParamSet. -func (p *Params) ParamSetPairs() paramtypes.ParamSetPairs { - return paramtypes.ParamSetPairs{ - paramtypes.NewParamSetPair(KeyDenomCreationFee, &p.DenomCreationFee, validateDenomCreationFee), - } -} - -func validateDenomCreationFee(i interface{}) error { - v, ok := i.(sdk.Coins) - if !ok { - return fmt.Errorf("invalid parameter type: %T", i) - } - - if v.Validate() != nil { - return fmt.Errorf("invalid denom creation fee: %+v", i) - } - - return nil -} diff --git a/chain/tokenfactory/types/tx.pb.go b/chain/tokenfactory/types/tx.pb.go index 10dc706d..5bcfbf5a 100644 --- a/chain/tokenfactory/types/tx.pb.go +++ b/chain/tokenfactory/types/tx.pb.go @@ -49,6 +49,8 @@ type MsgCreateDenom struct { Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty" yaml:"name"` Symbol string `protobuf:"bytes,4,opt,name=symbol,proto3" json:"symbol,omitempty" yaml:"symbol"` Decimals uint32 `protobuf:"varint,5,opt,name=decimals,proto3" json:"decimals,omitempty" yaml:"decimals"` + // true if admins are allowed to burn tokens from other addresses + AllowAdminBurn bool `protobuf:"varint,6,opt,name=allow_admin_burn,json=allowAdminBurn,proto3" json:"allow_admin_burn,omitempty" yaml:"allow_admin_burn"` } func (m *MsgCreateDenom) Reset() { *m = MsgCreateDenom{} } @@ -119,6 +121,13 @@ func (m *MsgCreateDenom) GetDecimals() uint32 { return 0 } +func (m *MsgCreateDenom) GetAllowAdminBurn() bool { + if m != nil { + return m.AllowAdminBurn + } + return false +} + // MsgCreateDenomResponse is the return value of MsgCreateDenom // It returns the full string of the newly created denom type MsgCreateDenomResponse struct { @@ -165,11 +174,12 @@ func (m *MsgCreateDenomResponse) GetNewTokenDenom() string { return "" } -// MsgMint is the sdk.Msg type for allowing an admin account to mint -// more of a token. For now, we only support minting to the sender account +// MsgMint is the sdk.Msg type for allowing an admin account or other permitted accounts to mint +// more of a token. type MsgMint struct { - Sender string `protobuf:"bytes,1,opt,name=sender,proto3" json:"sender,omitempty" yaml:"sender"` - Amount types.Coin `protobuf:"bytes,2,opt,name=amount,proto3" json:"amount" yaml:"amount"` + Sender string `protobuf:"bytes,1,opt,name=sender,proto3" json:"sender,omitempty" yaml:"sender"` + Amount types.Coin `protobuf:"bytes,2,opt,name=amount,proto3" json:"amount" yaml:"amount"` + Receiver string `protobuf:"bytes,3,opt,name=receiver,proto3" json:"receiver,omitempty" yaml:"receiver"` } func (m *MsgMint) Reset() { *m = MsgMint{} } @@ -219,6 +229,13 @@ func (m *MsgMint) GetAmount() types.Coin { return types.Coin{} } +func (m *MsgMint) GetReceiver() string { + if m != nil { + return m.Receiver + } + return "" +} + type MsgMintResponse struct { } @@ -256,10 +273,11 @@ func (m *MsgMintResponse) XXX_DiscardUnknown() { var xxx_messageInfo_MsgMintResponse proto.InternalMessageInfo // MsgBurn is the sdk.Msg type for allowing an admin account to burn -// a token. For now, we only support burning from the sender account. +// a token. type MsgBurn struct { - Sender string `protobuf:"bytes,1,opt,name=sender,proto3" json:"sender,omitempty" yaml:"sender"` - Amount types.Coin `protobuf:"bytes,2,opt,name=amount,proto3" json:"amount" yaml:"amount"` + Sender string `protobuf:"bytes,1,opt,name=sender,proto3" json:"sender,omitempty" yaml:"sender"` + Amount types.Coin `protobuf:"bytes,2,opt,name=amount,proto3" json:"amount" yaml:"amount"` + BurnFromAddress string `protobuf:"bytes,3,opt,name=burnFromAddress,proto3" json:"burnFromAddress,omitempty" yaml:"burn_from_address"` } func (m *MsgBurn) Reset() { *m = MsgBurn{} } @@ -309,6 +327,13 @@ func (m *MsgBurn) GetAmount() types.Coin { return types.Coin{} } +func (m *MsgBurn) GetBurnFromAddress() string { + if m != nil { + return m.BurnFromAddress + } + return "" +} + type MsgBurnResponse struct { } @@ -448,8 +473,9 @@ var xxx_messageInfo_MsgChangeAdminResponse proto.InternalMessageInfo // MsgSetDenomMetadata is the sdk.Msg type for allowing an admin account to set // the denom's bank metadata type MsgSetDenomMetadata struct { - Sender string `protobuf:"bytes,1,opt,name=sender,proto3" json:"sender,omitempty" yaml:"sender"` - Metadata types1.Metadata `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata" yaml:"metadata"` + Sender string `protobuf:"bytes,1,opt,name=sender,proto3" json:"sender,omitempty" yaml:"sender"` + Metadata types1.Metadata `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata" yaml:"metadata"` + AdminBurnDisabled *MsgSetDenomMetadata_AdminBurnDisabled `protobuf:"bytes,3,opt,name=admin_burn_disabled,json=adminBurnDisabled,proto3" json:"admin_burn_disabled,omitempty" yaml:"admin_burn_disabled"` } func (m *MsgSetDenomMetadata) Reset() { *m = MsgSetDenomMetadata{} } @@ -499,6 +525,58 @@ func (m *MsgSetDenomMetadata) GetMetadata() types1.Metadata { return types1.Metadata{} } +func (m *MsgSetDenomMetadata) GetAdminBurnDisabled() *MsgSetDenomMetadata_AdminBurnDisabled { + if m != nil { + return m.AdminBurnDisabled + } + return nil +} + +type MsgSetDenomMetadata_AdminBurnDisabled struct { + // true if the admin burn capability should be disabled + ShouldDisable bool `protobuf:"varint,1,opt,name=should_disable,json=shouldDisable,proto3" json:"should_disable,omitempty" yaml:"should_disable"` +} + +func (m *MsgSetDenomMetadata_AdminBurnDisabled) Reset() { *m = MsgSetDenomMetadata_AdminBurnDisabled{} } +func (m *MsgSetDenomMetadata_AdminBurnDisabled) String() string { return proto.CompactTextString(m) } +func (*MsgSetDenomMetadata_AdminBurnDisabled) ProtoMessage() {} +func (*MsgSetDenomMetadata_AdminBurnDisabled) Descriptor() ([]byte, []int) { + return fileDescriptor_b0b26fd7f19ce3c4, []int{8, 0} +} +func (m *MsgSetDenomMetadata_AdminBurnDisabled) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgSetDenomMetadata_AdminBurnDisabled) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgSetDenomMetadata_AdminBurnDisabled.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgSetDenomMetadata_AdminBurnDisabled) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgSetDenomMetadata_AdminBurnDisabled.Merge(m, src) +} +func (m *MsgSetDenomMetadata_AdminBurnDisabled) XXX_Size() int { + return m.Size() +} +func (m *MsgSetDenomMetadata_AdminBurnDisabled) XXX_DiscardUnknown() { + xxx_messageInfo_MsgSetDenomMetadata_AdminBurnDisabled.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgSetDenomMetadata_AdminBurnDisabled proto.InternalMessageInfo + +func (m *MsgSetDenomMetadata_AdminBurnDisabled) GetShouldDisable() bool { + if m != nil { + return m.ShouldDisable + } + return false +} + // MsgSetDenomMetadataResponse defines the response structure for an executed // MsgSetDenomMetadata message. type MsgSetDenomMetadataResponse struct { @@ -639,6 +717,7 @@ func init() { proto.RegisterType((*MsgChangeAdmin)(nil), "injective.tokenfactory.v1beta1.MsgChangeAdmin") proto.RegisterType((*MsgChangeAdminResponse)(nil), "injective.tokenfactory.v1beta1.MsgChangeAdminResponse") proto.RegisterType((*MsgSetDenomMetadata)(nil), "injective.tokenfactory.v1beta1.MsgSetDenomMetadata") + proto.RegisterType((*MsgSetDenomMetadata_AdminBurnDisabled)(nil), "injective.tokenfactory.v1beta1.MsgSetDenomMetadata.AdminBurnDisabled") proto.RegisterType((*MsgSetDenomMetadataResponse)(nil), "injective.tokenfactory.v1beta1.MsgSetDenomMetadataResponse") proto.RegisterType((*MsgUpdateParams)(nil), "injective.tokenfactory.v1beta1.MsgUpdateParams") proto.RegisterType((*MsgUpdateParamsResponse)(nil), "injective.tokenfactory.v1beta1.MsgUpdateParamsResponse") @@ -649,63 +728,74 @@ func init() { } var fileDescriptor_b0b26fd7f19ce3c4 = []byte{ - // 888 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x56, 0xbd, 0x6f, 0xdb, 0x46, - 0x14, 0x37, 0x13, 0x49, 0xb5, 0xcf, 0x71, 0x65, 0x33, 0x6e, 0x2c, 0x33, 0x08, 0x15, 0x30, 0x45, - 0x3e, 0x1c, 0x88, 0x84, 0x62, 0x20, 0x41, 0xd5, 0x29, 0x4a, 0x86, 0x16, 0xa8, 0x80, 0x82, 0x69, - 0x97, 0xa2, 0x80, 0x7b, 0x24, 0xaf, 0x14, 0x6b, 0xf1, 0x4e, 0xe0, 0x1d, 0xed, 0x68, 0x2b, 0x8a, - 0x4e, 0x9d, 0xfa, 0x37, 0x74, 0xed, 0xe2, 0xa1, 0x7b, 0x57, 0x03, 0x1d, 0x1a, 0x74, 0xea, 0x24, - 0x14, 0xf6, 0xe0, 0x5d, 0x7f, 0x41, 0x71, 0x1f, 0xa4, 0x28, 0xa9, 0x6a, 0xa8, 0x4e, 0x5d, 0x24, - 0xf2, 0xde, 0xef, 0x7d, 0xfc, 0x7e, 0xf7, 0xde, 0x93, 0xc0, 0x83, 0x08, 0x7f, 0x83, 0x7c, 0x16, - 0x9d, 0x20, 0x87, 0x91, 0x63, 0x84, 0xbf, 0x86, 0x3e, 0x23, 0xc9, 0xc8, 0x39, 0x69, 0x7b, 0x88, - 0xc1, 0xb6, 0xc3, 0x5e, 0xdb, 0xc3, 0x84, 0x30, 0xa2, 0x9b, 0x39, 0xd0, 0x2e, 0x02, 0x6d, 0x05, - 0x34, 0x76, 0x43, 0x12, 0x12, 0x01, 0x75, 0xf8, 0x93, 0xf4, 0x32, 0x4c, 0x9f, 0xd0, 0x98, 0x50, - 0xc7, 0x83, 0x14, 0xe5, 0x31, 0x7d, 0x12, 0xe1, 0x05, 0x3b, 0x3e, 0xce, 0xed, 0xfc, 0x45, 0xd9, - 0xf7, 0x94, 0x3d, 0xa6, 0xa1, 0x73, 0xd2, 0xe6, 0x5f, 0xca, 0xb0, 0x2f, 0x0d, 0x47, 0x32, 0xa3, - 0x7c, 0x51, 0xa6, 0xc7, 0x6f, 0xa1, 0x34, 0x84, 0x09, 0x8c, 0x33, 0xf0, 0x0e, 0x8c, 0x23, 0x4c, - 0x1c, 0xf1, 0x29, 0x8f, 0xac, 0x9f, 0xae, 0x81, 0x77, 0x7b, 0x34, 0x7c, 0x91, 0x20, 0xc8, 0xd0, - 0x4b, 0x84, 0x49, 0xac, 0x3f, 0x02, 0x35, 0x8a, 0x70, 0x80, 0x92, 0x86, 0x76, 0x57, 0x7b, 0xb8, - 0xd1, 0xdd, 0x99, 0x8c, 0x9b, 0x5b, 0x23, 0x18, 0x0f, 0x3a, 0x96, 0x3c, 0xb7, 0x5c, 0x05, 0xd0, - 0x1d, 0xb0, 0x4e, 0x53, 0x2f, 0xe0, 0x6e, 0x8d, 0x6b, 0x02, 0x7c, 0x73, 0x32, 0x6e, 0xd6, 0x15, - 0x58, 0x59, 0x2c, 0x37, 0x07, 0xe9, 0xf7, 0x40, 0x05, 0xc3, 0x18, 0x35, 0xae, 0x0b, 0x70, 0x7d, - 0x32, 0x6e, 0x6e, 0x4a, 0x30, 0x3f, 0xb5, 0x5c, 0x61, 0x14, 0x05, 0x8c, 0x62, 0x8f, 0x0c, 0x1a, - 0x95, 0x85, 0x02, 0xc4, 0x39, 0x2f, 0x40, 0x3c, 0xf0, 0x02, 0x02, 0xe4, 0x47, 0x31, 0x1c, 0xd0, - 0x46, 0xf5, 0xae, 0xf6, 0x70, 0xab, 0x58, 0x40, 0x66, 0xb1, 0xdc, 0x1c, 0xd4, 0x39, 0xfc, 0xee, - 0xea, 0xec, 0x40, 0x95, 0xff, 0xc3, 0xd5, 0xd9, 0xc1, 0xbd, 0x25, 0xfa, 0xf9, 0x42, 0x90, 0x96, - 0x24, 0xf0, 0x25, 0xb8, 0x35, 0xab, 0x91, 0x8b, 0xe8, 0x90, 0x60, 0x8a, 0xf4, 0x2e, 0xa8, 0x63, - 0x74, 0x7a, 0x24, 0x5c, 0x8f, 0xa4, 0x0e, 0x52, 0x34, 0x63, 0x32, 0x6e, 0xde, 0x52, 0xd4, 0x66, - 0x01, 0x96, 0xbb, 0x85, 0xd1, 0xe9, 0x67, 0xfc, 0x40, 0xc4, 0xb2, 0x7e, 0xd6, 0xc0, 0x3b, 0x3d, - 0x1a, 0xf6, 0x22, 0xcc, 0x56, 0xd1, 0xfe, 0x23, 0x50, 0x83, 0x31, 0x49, 0x31, 0x13, 0xca, 0x6f, - 0x3e, 0xd9, 0xb7, 0x55, 0x63, 0xf0, 0xf6, 0xcb, 0x3a, 0xd5, 0x7e, 0x41, 0x22, 0xdc, 0x7d, 0xef, - 0x7c, 0xdc, 0x5c, 0x9b, 0x46, 0x92, 0x6e, 0x96, 0xab, 0xfc, 0x3b, 0x8f, 0xe7, 0x34, 0xb9, 0xbd, - 0x44, 0x93, 0x38, 0xc2, 0xcc, 0xda, 0x01, 0x75, 0x55, 0x6c, 0x26, 0x42, 0x46, 0xa0, 0x9b, 0x26, - 0xf8, 0xff, 0x4d, 0xc0, 0x4b, 0x13, 0xac, 0x08, 0xf0, 0x62, 0x73, 0x02, 0xbf, 0x69, 0x72, 0x08, - 0xfa, 0x10, 0x87, 0xe8, 0x79, 0x10, 0x47, 0x2b, 0xf1, 0xb8, 0x0f, 0xaa, 0xc5, 0x09, 0xd8, 0x9e, - 0x8c, 0x9b, 0x37, 0xb2, 0x06, 0x14, 0xf7, 0x2d, 0xcd, 0x7a, 0x1b, 0x6c, 0xf0, 0x56, 0x80, 0x3c, - 0xbe, 0x1a, 0x80, 0xdd, 0xc9, 0xb8, 0xb9, 0x3d, 0xed, 0x12, 0x61, 0xb2, 0xdc, 0x75, 0x8c, 0x4e, - 0x45, 0x15, 0xe5, 0xbb, 0x55, 0x54, 0xde, 0x92, 0xfe, 0x0d, 0xd9, 0xad, 0x53, 0x32, 0x39, 0xcf, - 0xdf, 0x35, 0x70, 0xb3, 0x47, 0xc3, 0x57, 0x88, 0x89, 0xce, 0xeb, 0x21, 0x06, 0x03, 0xc8, 0xe0, - 0x2a, 0x64, 0x5d, 0xb0, 0x1e, 0x2b, 0x37, 0x75, 0x6d, 0x77, 0xa6, 0xd7, 0x86, 0x8f, 0xf3, 0x6b, - 0xcb, 0x62, 0x77, 0xf7, 0xd4, 0xd5, 0xa9, 0x99, 0xcc, 0x9c, 0x2d, 0x37, 0x8f, 0xd3, 0xf9, 0x60, - 0x8e, 0xe5, 0xa3, 0x25, 0x2c, 0x29, 0x62, 0x72, 0x20, 0x5b, 0x79, 0x94, 0x3b, 0xe0, 0xf6, 0x3f, - 0x10, 0xca, 0x09, 0x9f, 0x6b, 0xe2, 0xb2, 0x3f, 0x1f, 0x06, 0x90, 0xa1, 0x4f, 0xc5, 0x2a, 0xd4, - 0x9f, 0x82, 0x0d, 0x98, 0xb2, 0x3e, 0x49, 0x22, 0x36, 0x52, 0x7c, 0x1b, 0x7f, 0xfc, 0xd2, 0xda, - 0x55, 0x2c, 0x9e, 0x07, 0x41, 0x82, 0x28, 0x7d, 0xc5, 0x92, 0x08, 0x87, 0xee, 0x14, 0xaa, 0xbf, - 0x04, 0x35, 0xb9, 0x4c, 0x15, 0xef, 0xfb, 0xf6, 0xbf, 0xff, 0x48, 0xd8, 0x32, 0x5f, 0xb7, 0xc2, - 0x05, 0x70, 0x95, 0x6f, 0xe7, 0x19, 0xe7, 0x3a, 0x8d, 0xca, 0xe9, 0xbe, 0xbf, 0x84, 0x6e, 0x2a, - 0xaa, 0x6e, 0x49, 0x47, 0x6b, 0x1f, 0xec, 0xcd, 0x31, 0xc9, 0x58, 0x3e, 0xf9, 0xb5, 0x0a, 0xae, - 0xf7, 0x68, 0xa8, 0xa7, 0x60, 0xb3, 0xb8, 0xc7, 0xed, 0xb7, 0x15, 0x38, 0xbb, 0xd3, 0x8c, 0xa7, - 0xab, 0xe1, 0xf3, 0x1d, 0xf8, 0x15, 0xa8, 0x88, 0xdd, 0xf5, 0xa0, 0x84, 0x3f, 0x07, 0x1a, 0x4e, - 0x49, 0x60, 0x31, 0x83, 0x58, 0x2e, 0x65, 0x32, 0x70, 0x60, 0xa9, 0x0c, 0xc5, 0x0d, 0x20, 0xa4, - 0x2b, 0x4c, 0x7f, 0x29, 0xe9, 0xa6, 0xf8, 0x72, 0xd2, 0x2d, 0x0e, 0xa4, 0xfe, 0xbd, 0x06, 0xb6, - 0x17, 0xa6, 0xf1, 0xb0, 0x44, 0xb0, 0x79, 0x27, 0xe3, 0xc3, 0xff, 0xe0, 0x94, 0x97, 0xf1, 0x1a, - 0xdc, 0x98, 0x19, 0x91, 0x32, 0xf2, 0x15, 0x1d, 0x8c, 0x67, 0x2b, 0x3a, 0x64, 0x99, 0x8d, 0xea, - 0xb7, 0x57, 0x67, 0x07, 0x5a, 0x77, 0x70, 0x7e, 0x61, 0x6a, 0x6f, 0x2e, 0x4c, 0xed, 0xaf, 0x0b, - 0x53, 0xfb, 0xf1, 0xd2, 0x5c, 0x7b, 0x73, 0x69, 0xae, 0xfd, 0x79, 0x69, 0xae, 0x7d, 0xe1, 0x86, - 0x11, 0xeb, 0xa7, 0x9e, 0xed, 0x93, 0xd8, 0xf9, 0x38, 0xcb, 0xf1, 0x09, 0xf4, 0xa8, 0x93, 0x67, - 0x6c, 0xf9, 0x24, 0x41, 0xc5, 0xd7, 0x3e, 0x8c, 0xb0, 0x13, 0x93, 0x20, 0x1d, 0x20, 0x3a, 0x3b, - 0x52, 0x6c, 0x34, 0x44, 0xd4, 0xab, 0x89, 0xbf, 0x3e, 0x87, 0x7f, 0x07, 0x00, 0x00, 0xff, 0xff, - 0xf0, 0x22, 0x4e, 0x61, 0x0f, 0x0a, 0x00, 0x00, + // 1063 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x56, 0xcf, 0x6f, 0xdc, 0x44, + 0x14, 0x8e, 0x9b, 0x1f, 0x24, 0x93, 0xe6, 0x97, 0x93, 0x36, 0x1b, 0x47, 0x5d, 0x07, 0x17, 0xb5, + 0x69, 0xaa, 0xb5, 0x95, 0x44, 0x6a, 0x45, 0xb8, 0x50, 0x37, 0x45, 0x20, 0x58, 0x09, 0xb9, 0xf4, + 0x82, 0x90, 0x96, 0xd9, 0xf5, 0xd4, 0x31, 0x59, 0xcf, 0x44, 0x9e, 0x71, 0xd2, 0xdc, 0x10, 0xe2, + 0xc4, 0x89, 0x0b, 0xff, 0x03, 0xc7, 0x1c, 0x38, 0xc3, 0x35, 0x12, 0x97, 0x8a, 0x13, 0x07, 0x64, + 0xa1, 0xe4, 0x10, 0x71, 0xf5, 0x89, 0x23, 0x9a, 0x1f, 0xf6, 0x3a, 0xbb, 0x0d, 0xf5, 0xf6, 0xd2, + 0x4b, 0xbb, 0x9e, 0xf7, 0x7d, 0xf3, 0xe6, 0x7d, 0xef, 0x7b, 0x33, 0x01, 0x77, 0x43, 0xfc, 0x0d, + 0xea, 0xb0, 0xf0, 0x10, 0x39, 0x8c, 0xec, 0x23, 0xfc, 0x1c, 0x76, 0x18, 0x89, 0x8f, 0x9d, 0xc3, + 0xcd, 0x36, 0x62, 0x70, 0xd3, 0x61, 0x2f, 0xec, 0x83, 0x98, 0x30, 0xa2, 0xd7, 0x0b, 0xa0, 0x5d, + 0x06, 0xda, 0x0a, 0x68, 0x2c, 0x05, 0x24, 0x20, 0x02, 0xea, 0xf0, 0x5f, 0x92, 0x65, 0xd4, 0x3b, + 0x84, 0x46, 0x84, 0x3a, 0x6d, 0x48, 0x51, 0xb1, 0x67, 0x87, 0x84, 0x78, 0x20, 0x8e, 0xf7, 0x8b, + 0x38, 0xff, 0x50, 0xf1, 0x65, 0x15, 0x8f, 0x68, 0xe0, 0x1c, 0x6e, 0xf2, 0xff, 0x54, 0x60, 0x45, + 0x06, 0x5a, 0x32, 0xa3, 0xfc, 0x50, 0xa1, 0xfb, 0xaf, 0x29, 0xe9, 0x00, 0xc6, 0x30, 0xca, 0xc1, + 0x0b, 0x30, 0x0a, 0x31, 0x71, 0xc4, 0xbf, 0x72, 0xc9, 0xfa, 0xe7, 0x1a, 0x98, 0x6d, 0xd2, 0xe0, + 0x71, 0x8c, 0x20, 0x43, 0xbb, 0x08, 0x93, 0x48, 0xbf, 0x07, 0x26, 0x28, 0xc2, 0x3e, 0x8a, 0x6b, + 0xda, 0x9a, 0xb6, 0x3e, 0xe5, 0x2e, 0x64, 0xa9, 0x39, 0x73, 0x0c, 0xa3, 0xee, 0x8e, 0x25, 0xd7, + 0x2d, 0x4f, 0x01, 0x74, 0x07, 0x4c, 0xd2, 0xa4, 0xed, 0x73, 0x5a, 0xed, 0x9a, 0x00, 0x2f, 0x66, + 0xa9, 0x39, 0xa7, 0xc0, 0x2a, 0x62, 0x79, 0x05, 0x48, 0xbf, 0x0d, 0xc6, 0x30, 0x8c, 0x50, 0x6d, + 0x54, 0x80, 0xe7, 0xb2, 0xd4, 0x9c, 0x96, 0x60, 0xbe, 0x6a, 0x79, 0x22, 0x28, 0x0e, 0x70, 0x1c, + 0xb5, 0x49, 0xb7, 0x36, 0x36, 0x70, 0x00, 0xb1, 0xce, 0x0f, 0x20, 0x7e, 0xf0, 0x03, 0xf8, 0xa8, + 0x13, 0x46, 0xb0, 0x4b, 0x6b, 0xe3, 0x6b, 0xda, 0xfa, 0x4c, 0xf9, 0x00, 0x79, 0xc4, 0xf2, 0x0a, + 0x90, 0xfe, 0x04, 0xcc, 0xc3, 0x6e, 0x97, 0x1c, 0xb5, 0xa0, 0x1f, 0x85, 0xb8, 0xd5, 0x4e, 0x62, + 0x5c, 0x9b, 0x58, 0xd3, 0xd6, 0x27, 0xdd, 0xd5, 0x2c, 0x35, 0x97, 0x25, 0xb1, 0x1f, 0x61, 0x79, + 0xb3, 0x62, 0xe9, 0x11, 0x5f, 0x71, 0x93, 0x18, 0xef, 0x6c, 0x7f, 0x77, 0x71, 0xb2, 0xa1, 0x54, + 0xf8, 0xe1, 0xe2, 0x64, 0xe3, 0xf6, 0x15, 0x6d, 0xe8, 0x08, 0x5d, 0x1b, 0x52, 0x87, 0xaf, 0xc0, + 0xcd, 0xcb, 0x52, 0x7b, 0x88, 0x1e, 0x10, 0x4c, 0x91, 0xee, 0x82, 0x39, 0x8c, 0x8e, 0x5a, 0x82, + 0xda, 0x92, 0x72, 0x4a, 0xed, 0x8d, 0x2c, 0x35, 0x6f, 0x2a, 0x85, 0x2e, 0x03, 0x2c, 0x6f, 0x06, + 0xa3, 0xa3, 0x2f, 0xf8, 0x82, 0xd8, 0xcb, 0xfa, 0x4b, 0x03, 0xef, 0x34, 0x69, 0xd0, 0x0c, 0x31, + 0x1b, 0xa6, 0x85, 0x1f, 0x83, 0x09, 0x18, 0x91, 0x04, 0x33, 0xd1, 0xc0, 0xe9, 0xad, 0x15, 0x5b, + 0xf9, 0x8b, 0xbb, 0x38, 0x37, 0xbc, 0xfd, 0x98, 0x84, 0xd8, 0xbd, 0x71, 0x9a, 0x9a, 0x23, 0xbd, + 0x9d, 0x24, 0xcd, 0xf2, 0x14, 0x9f, 0xf7, 0x22, 0x46, 0x1d, 0x14, 0x1e, 0xa2, 0x58, 0xf5, 0xb7, + 0xd4, 0x8b, 0x3c, 0x62, 0x79, 0x05, 0x68, 0xe7, 0x7e, 0x9f, 0x88, 0xab, 0x57, 0x88, 0x18, 0x85, + 0x98, 0x59, 0x0b, 0x60, 0x4e, 0x55, 0x97, 0xab, 0x66, 0xfd, 0x2b, 0x2b, 0xe6, 0x0d, 0x79, 0x3b, + 0x15, 0x7f, 0x0a, 0xe6, 0xb8, 0x3d, 0x3e, 0x8a, 0x49, 0xf4, 0xc8, 0xf7, 0x63, 0x44, 0xa9, 0x2a, + 0xfc, 0xdd, 0x2c, 0x35, 0x6b, 0x92, 0xc3, 0x01, 0xad, 0xe7, 0x31, 0x89, 0x5a, 0x50, 0x42, 0xac, + 0x9f, 0x2f, 0x4e, 0x36, 0x34, 0xaf, 0x9f, 0x59, 0x59, 0x0d, 0x61, 0x48, 0xa9, 0x06, 0xaf, 0xbc, + 0x50, 0xe3, 0x77, 0x4d, 0x4e, 0xf2, 0x1e, 0xc4, 0x01, 0x12, 0x4e, 0x1d, 0x46, 0x94, 0x3b, 0x60, + 0xbc, 0x3c, 0xc6, 0xf3, 0x59, 0x6a, 0x5e, 0xcf, 0xa7, 0x48, 0xb8, 0x4d, 0x86, 0xf5, 0x4d, 0x30, + 0xc5, 0x8d, 0x28, 0x66, 0x43, 0x15, 0xbb, 0x94, 0xa5, 0xe6, 0x7c, 0xcf, 0xa3, 0x22, 0x64, 0x79, + 0x93, 0x18, 0xc9, 0x79, 0xa9, 0x3e, 0x2b, 0xe2, 0xe4, 0x0d, 0xc9, 0xaf, 0xc9, 0x59, 0xe9, 0x15, + 0x53, 0xd4, 0xf9, 0xeb, 0x28, 0x58, 0x6c, 0xd2, 0xe0, 0x29, 0x62, 0xc2, 0xf7, 0x4d, 0xc4, 0xa0, + 0x0f, 0x19, 0x1c, 0xa6, 0x58, 0x0f, 0x4c, 0x46, 0x8a, 0xa6, 0x3c, 0x70, 0xab, 0xe7, 0x01, 0xbc, + 0x5f, 0x78, 0x20, 0xdf, 0xdb, 0x5d, 0x56, 0x3e, 0x50, 0x66, 0xce, 0xc9, 0x96, 0x57, 0xec, 0xa3, + 0xff, 0xa4, 0x81, 0xc5, 0xde, 0x8d, 0xd1, 0xf2, 0x43, 0x0a, 0xdb, 0x5d, 0xe4, 0x0b, 0x8d, 0xa6, + 0xb7, 0x9e, 0xd8, 0xff, 0xff, 0xa2, 0xd8, 0xaf, 0xa8, 0xc8, 0x2e, 0xae, 0x9b, 0x5d, 0xb5, 0x99, + 0x5b, 0xcf, 0x52, 0xd3, 0x50, 0x5e, 0x1c, 0xcc, 0x65, 0x79, 0x0b, 0xb0, 0x9f, 0x62, 0x3c, 0x03, + 0x0b, 0x03, 0xfb, 0xe8, 0x1f, 0x82, 0x59, 0xba, 0x47, 0x92, 0xae, 0x9f, 0x73, 0x85, 0x66, 0x93, + 0xee, 0x4a, 0x96, 0x9a, 0x37, 0x94, 0x66, 0x97, 0xe2, 0x96, 0x37, 0x23, 0x17, 0xd4, 0x16, 0x3b, + 0xef, 0xf7, 0x35, 0xf5, 0xde, 0x15, 0x4d, 0xa5, 0x88, 0xc9, 0xdb, 0xaf, 0x51, 0x88, 0x76, 0x0b, + 0xac, 0xbe, 0xa2, 0xda, 0xa2, 0xbf, 0xa7, 0x9a, 0xf0, 0xf6, 0xb3, 0x03, 0x1f, 0x32, 0xf4, 0xb9, + 0x78, 0xbe, 0xf4, 0x07, 0x60, 0x0a, 0x26, 0x6c, 0x8f, 0xc4, 0x21, 0x3b, 0x56, 0xed, 0xad, 0xfd, + 0xf1, 0x4b, 0x63, 0x49, 0x35, 0x4d, 0x8d, 0xd0, 0x53, 0x16, 0x87, 0x38, 0xf0, 0x7a, 0x50, 0x7d, + 0x17, 0x4c, 0xc8, 0x07, 0x50, 0xb5, 0xf9, 0xce, 0xeb, 0xda, 0x20, 0xf3, 0xb9, 0x63, 0xbc, 0xdf, + 0x9e, 0xe2, 0xee, 0x3c, 0xe4, 0xb5, 0xf6, 0x76, 0xe5, 0xe5, 0xbe, 0x77, 0x45, 0xb9, 0x89, 0x38, + 0x75, 0x43, 0x12, 0xad, 0x15, 0xb0, 0xdc, 0x57, 0x49, 0x5e, 0xe5, 0xd6, 0x6f, 0xe3, 0x60, 0xb4, + 0x49, 0x03, 0x3d, 0x01, 0xd3, 0xe5, 0xb7, 0xd7, 0xae, 0xe0, 0x93, 0x12, 0xde, 0x78, 0x30, 0x1c, + 0xbe, 0x78, 0x70, 0xbe, 0x06, 0x63, 0xe2, 0xa1, 0xb8, 0x5b, 0x81, 0xcf, 0x81, 0x86, 0x53, 0x11, + 0x58, 0xce, 0x20, 0x2e, 0xe6, 0x2a, 0x19, 0x38, 0xb0, 0x52, 0x86, 0xf2, 0x85, 0x27, 0xa4, 0x2b, + 0x5d, 0x76, 0x95, 0xa4, 0xeb, 0xe1, 0xab, 0x49, 0x37, 0x78, 0xff, 0xe8, 0xdf, 0x6b, 0x60, 0x7e, + 0xe0, 0xf2, 0xd9, 0x7e, 0x83, 0xf9, 0x36, 0x3e, 0x78, 0x03, 0x52, 0x71, 0x8c, 0x17, 0xe0, 0xfa, + 0xa5, 0x11, 0xa9, 0x22, 0x5f, 0x99, 0x60, 0x3c, 0x1c, 0x92, 0x90, 0x67, 0x36, 0xc6, 0xbf, 0xe5, + 0x0f, 0x98, 0xdb, 0x3d, 0x3d, 0xab, 0x6b, 0x2f, 0xcf, 0xea, 0xda, 0xdf, 0x67, 0x75, 0xed, 0xc7, + 0xf3, 0xfa, 0xc8, 0xcb, 0xf3, 0xfa, 0xc8, 0x9f, 0xe7, 0xf5, 0x91, 0x2f, 0xbd, 0x20, 0x64, 0x7b, + 0x49, 0xdb, 0xee, 0x90, 0xc8, 0xf9, 0x24, 0xcf, 0xf1, 0x19, 0x6c, 0x53, 0xa7, 0xc8, 0xd8, 0xe8, + 0x90, 0x18, 0x95, 0x3f, 0xf7, 0x60, 0x88, 0x9d, 0x88, 0xf8, 0x49, 0x17, 0xd1, 0xcb, 0x23, 0xc5, + 0x8e, 0x0f, 0x10, 0x6d, 0x4f, 0x88, 0x3f, 0x57, 0xb7, 0xff, 0x0b, 0x00, 0x00, 0xff, 0xff, 0xaa, + 0x21, 0x43, 0x44, 0xc3, 0x0b, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -988,6 +1078,16 @@ func (m *MsgCreateDenom) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.AllowAdminBurn { + i-- + if m.AllowAdminBurn { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x30 + } if m.Decimals != 0 { i = encodeVarintTx(dAtA, i, uint64(m.Decimals)) i-- @@ -1074,6 +1174,13 @@ func (m *MsgMint) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if len(m.Receiver) > 0 { + i -= len(m.Receiver) + copy(dAtA[i:], m.Receiver) + i = encodeVarintTx(dAtA, i, uint64(len(m.Receiver))) + i-- + dAtA[i] = 0x1a + } { size, err := m.Amount.MarshalToSizedBuffer(dAtA[:i]) if err != nil { @@ -1137,6 +1244,13 @@ func (m *MsgBurn) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if len(m.BurnFromAddress) > 0 { + i -= len(m.BurnFromAddress) + copy(dAtA[i:], m.BurnFromAddress) + i = encodeVarintTx(dAtA, i, uint64(len(m.BurnFromAddress))) + i-- + dAtA[i] = 0x1a + } { size, err := m.Amount.MarshalToSizedBuffer(dAtA[:i]) if err != nil { @@ -1267,6 +1381,18 @@ func (m *MsgSetDenomMetadata) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.AdminBurnDisabled != nil { + { + size, err := m.AdminBurnDisabled.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } { size, err := m.Metadata.MarshalToSizedBuffer(dAtA[:i]) if err != nil { @@ -1287,6 +1413,39 @@ func (m *MsgSetDenomMetadata) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *MsgSetDenomMetadata_AdminBurnDisabled) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgSetDenomMetadata_AdminBurnDisabled) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgSetDenomMetadata_AdminBurnDisabled) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.ShouldDisable { + i-- + if m.ShouldDisable { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + func (m *MsgSetDenomMetadataResponse) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -1409,6 +1568,9 @@ func (m *MsgCreateDenom) Size() (n int) { if m.Decimals != 0 { n += 1 + sovTx(uint64(m.Decimals)) } + if m.AllowAdminBurn { + n += 2 + } return n } @@ -1437,6 +1599,10 @@ func (m *MsgMint) Size() (n int) { } l = m.Amount.Size() n += 1 + l + sovTx(uint64(l)) + l = len(m.Receiver) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } return n } @@ -1461,6 +1627,10 @@ func (m *MsgBurn) Size() (n int) { } l = m.Amount.Size() n += 1 + l + sovTx(uint64(l)) + l = len(m.BurnFromAddress) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } return n } @@ -1515,6 +1685,22 @@ func (m *MsgSetDenomMetadata) Size() (n int) { } l = m.Metadata.Size() n += 1 + l + sovTx(uint64(l)) + if m.AdminBurnDisabled != nil { + l = m.AdminBurnDisabled.Size() + n += 1 + l + sovTx(uint64(l)) + } + return n +} + +func (m *MsgSetDenomMetadata_AdminBurnDisabled) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.ShouldDisable { + n += 2 + } return n } @@ -1733,6 +1919,26 @@ func (m *MsgCreateDenom) Unmarshal(dAtA []byte) error { break } } + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AllowAdminBurn", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.AllowAdminBurn = bool(v != 0) default: iNdEx = preIndex skippy, err := skipTx(dAtA[iNdEx:]) @@ -1930,6 +2136,38 @@ func (m *MsgMint) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Receiver", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Receiver = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipTx(dAtA[iNdEx:]) @@ -2095,6 +2333,38 @@ func (m *MsgBurn) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field BurnFromAddress", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.BurnFromAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipTx(dAtA[iNdEx:]) @@ -2456,6 +2726,112 @@ func (m *MsgSetDenomMetadata) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AdminBurnDisabled", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.AdminBurnDisabled == nil { + m.AdminBurnDisabled = &MsgSetDenomMetadata_AdminBurnDisabled{} + } + if err := m.AdminBurnDisabled.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgSetDenomMetadata_AdminBurnDisabled) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: AdminBurnDisabled: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: AdminBurnDisabled: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ShouldDisable", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.ShouldDisable = bool(v != 0) default: iNdEx = preIndex skippy, err := skipTx(dAtA[iNdEx:]) diff --git a/chain/types/account.go b/chain/types/account.go deleted file mode 100644 index 7d6be3d5..00000000 --- a/chain/types/account.go +++ /dev/null @@ -1,186 +0,0 @@ -package types - -import ( - "bytes" - "encoding/json" - "fmt" - "strings" - - authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - "gopkg.in/yaml.v2" - - "cosmossdk.io/errors" - codectypes "github.com/cosmos/cosmos-sdk/codec/types" - sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - - ethcmn "github.com/ethereum/go-ethereum/common" - ethcrypto "github.com/ethereum/go-ethereum/crypto" -) - -var ( - _ sdk.AccountI = (*EthAccount)(nil) - _ authtypes.GenesisAccount = (*EthAccount)(nil) - _ codectypes.UnpackInterfacesMessage = (*EthAccount)(nil) -) - -var EmptyCodeHash = ethcrypto.Keccak256(nil) - -// ---------------------------------------------------------------------------- -// Main Ethermint account -// ---------------------------------------------------------------------------- - -// ProtoAccount defines the prototype function for BaseAccount used for an -// AccountKeeper. -func ProtoAccount() sdk.AccountI { - return &EthAccount{ - BaseAccount: &authtypes.BaseAccount{}, - CodeHash: ethcrypto.Keccak256(nil), - } -} - -// EthAddress returns the account address ethereum format. -func (acc EthAccount) EthAddress() ethcmn.Address { - return ethcmn.BytesToAddress(acc.GetAddress().Bytes()) -} - -type ethAccountPretty struct { - Address string `json:"address" yaml:"address"` - EthAddress string `json:"eth_address" yaml:"eth_address"` - PubKey string `json:"public_key" yaml:"public_key"` - AccountNumber uint64 `json:"account_number" yaml:"account_number"` - Sequence uint64 `json:"sequence" yaml:"sequence"` - CodeHash string `json:"code_hash" yaml:"code_hash"` -} - -// MarshalYAML returns the YAML representation of an account. -func (acc EthAccount) MarshalYAML() (interface{}, error) { - alias := ethAccountPretty{ - Address: acc.Address, - EthAddress: acc.EthAddress().String(), - AccountNumber: acc.AccountNumber, - Sequence: acc.Sequence, - CodeHash: ethcmn.Bytes2Hex(acc.CodeHash), - PubKey: "", - } - - var err error - - bz, err := yaml.Marshal(alias) - if err != nil { - return nil, err - } - - return string(bz), err -} - -// MarshalJSON returns the JSON representation of an EthAccount. -func (acc EthAccount) MarshalJSON() ([]byte, error) { - var ethAddress = "" - - if acc.BaseAccount != nil && acc.Address == "" { - ethAddress = acc.EthAddress().String() - } - - alias := ethAccountPretty{ - Address: acc.Address, - EthAddress: ethAddress, - AccountNumber: acc.AccountNumber, - Sequence: acc.Sequence, - CodeHash: ethcmn.Bytes2Hex(acc.CodeHash), - PubKey: "", - } - - return json.Marshal(alias) -} - -// UnmarshalJSON unmarshals raw JSON bytes into an EthAccount. -func (acc *EthAccount) UnmarshalJSON(bz []byte) error { - var ( - alias ethAccountPretty - err error - ) - - if err := json.Unmarshal(bz, &alias); err != nil { - return err - } - - switch { - case alias.Address != "" && alias.EthAddress != "": - // Both addresses provided. Verify correctness - ethAddress := ethcmn.HexToAddress(alias.EthAddress) - - var address sdk.AccAddress - address, err = sdk.AccAddressFromBech32(alias.Address) - if err != nil { - return err - } - - ethAddressFromAccAddress := ethcmn.BytesToAddress(address.Bytes()) - - if !bytes.Equal(ethAddress.Bytes(), address.Bytes()) { - err = errors.Wrapf( - sdkerrors.ErrInvalidAddress, - "expected %s, got %s", - ethAddressFromAccAddress.String(), ethAddress.String(), - ) - } - - case alias.Address != "" && alias.EthAddress == "": - // unmarshal sdk.AccAddress only. Do nothing here - case alias.Address == "" && alias.EthAddress != "": - // retrieve sdk.AccAddress from ethereum address - ethAddress := ethcmn.HexToAddress(alias.EthAddress) - alias.Address = sdk.AccAddress(ethAddress.Bytes()).String() - case alias.Address == "" && alias.EthAddress == "": - err = errors.Wrapf( - sdkerrors.ErrInvalidAddress, - "account must contain address in Ethereum Hex or Cosmos Bech32 format", - ) - } - - if err != nil { - return err - } - - acc.BaseAccount = &authtypes.BaseAccount{ - Address: alias.Address, - AccountNumber: alias.AccountNumber, - Sequence: alias.Sequence, - } - - acc.CodeHash = ethcmn.HexToHash(alias.CodeHash).Bytes() - - return nil -} - -// String implements the fmt.Stringer interface -func (acc EthAccount) String() string { - out, _ := yaml.Marshal(acc) - return string(out) -} - -func CosmosAddressToEthAddress(addr string) (ethcmn.Address, error) { - if strings.HasPrefix(addr, sdk.GetConfig().GetBech32AccountAddrPrefix()) { - // Check to see if address is Cosmos bech32 formatted - toAddr, err := sdk.AccAddressFromBech32(addr) - if err != nil { - return ethcmn.Address{}, errors.Wrap(err, "must provide a valid Bech32 address") - } - ethAddr := ethcmn.BytesToAddress(toAddr.Bytes()) - return ethAddr, nil - } - - if !strings.HasPrefix(addr, "0x") { - addr = "0x" + addr - } - - valid := ethcmn.IsHexAddress(addr) - if !valid { - return ethcmn.Address{}, fmt.Errorf("%s is not a valid Ethereum or Cosmos address", addr) - } - - ethAddr := ethcmn.HexToAddress(addr) - - return ethAddr, nil -} diff --git a/chain/types/chain_id.go b/chain/types/chain_id.go deleted file mode 100644 index 6882db48..00000000 --- a/chain/types/chain_id.go +++ /dev/null @@ -1,54 +0,0 @@ -package types - -import ( - "fmt" - "math/big" - "regexp" - "strings" - - "cosmossdk.io/errors" - tmrand "github.com/cometbft/cometbft/libs/rand" -) - -var ( - regexChainID = `[a-z]*` - regexSeparator = `-{1}` - regexEpoch = `[1-9][0-9]*` - injectiveChainID = regexp.MustCompile(fmt.Sprintf(`^(%s)%s(%s)$`, regexChainID, regexSeparator, regexEpoch)) -) - -// IsValidChainID returns false if the given chain identifier is incorrectly formatted. -func IsValidChainID(chainID string) bool { - if len(chainID) > 48 { - return false - } - - return injectiveChainID.MatchString(chainID) -} - -// ParseChainID parses a string chain identifier's epoch to an Ethereum-compatible -// chain-id in *big.Int format. The function returns an error if the chain-id has an invalid format -func ParseChainID(chainID string) (*big.Int, error) { - chainID = strings.TrimSpace(chainID) - if len(chainID) > 48 { - return nil, errors.Wrapf(ErrInvalidChainID, "chain-id '%s' cannot exceed 48 chars", chainID) - } - - matches := injectiveChainID.FindStringSubmatch(chainID) - if matches == nil || len(matches) != 3 || matches[1] == "" { - return nil, errors.Wrap(ErrInvalidChainID, chainID) - } - - // verify that the chain-id entered is a base 10 integer - chainIDInt, ok := new(big.Int).SetString(matches[2], 10) - if !ok { - return nil, errors.Wrapf(ErrInvalidChainID, "epoch %s must be base-10 integer format", matches[2]) - } - - return chainIDInt, nil -} - -// GenerateRandomChainID returns a random chain-id in the valid format. -func GenerateRandomChainID() string { - return fmt.Sprintf("injective-%d", 10+tmrand.Intn(10000)) -} diff --git a/chain/types/code.go b/chain/types/code.go deleted file mode 100644 index fa1da75d..00000000 --- a/chain/types/code.go +++ /dev/null @@ -1,12 +0,0 @@ -package types - -// ---------------------------------------------------------------------------- -// Code -// ---------------------------------------------------------------------------- - -// Code is account Code type alias -type Code []byte - -func (c Code) String() string { - return string(c) -} diff --git a/chain/types/coin.go b/chain/types/coin.go deleted file mode 100644 index b8ec01ae..00000000 --- a/chain/types/coin.go +++ /dev/null @@ -1,33 +0,0 @@ -package types - -import ( - "cosmossdk.io/math" - sdk "github.com/cosmos/cosmos-sdk/types" -) - -const ( - // INJ defines the default coin denomination used in Ethermint in: - // - // - Staking parameters: denomination used as stake in the dPoS chain - // - Mint parameters: denomination minted due to fee distribution rewards - // - Governance parameters: denomination used for spam prevention in proposal deposits - // - Crisis parameters: constant fee denomination used for spam prevention to check broken invariant - // - EVM parameters: denomination used for running EVM state transitions in Ethermint. - InjectiveCoin string = "inj" - - // BaseDenomUnit defines the base denomination unit for Photons. - // 1 photon = 1x10^{BaseDenomUnit} inj - BaseDenomUnit = 18 -) - -// NewInjectiveCoin is a utility function that returns an "inj" coin with the given math.Int amount. -// The function will panic if the provided amount is negative. -func NewInjectiveCoin(amount math.Int) sdk.Coin { - return sdk.NewCoin(InjectiveCoin, amount) -} - -// NewInjectiveCoinInt64 is a utility function that returns an "inj" coin with the given int64 amount. -// The function will panic if the provided amount is negative. -func NewInjectiveCoinInt64(amount int64) sdk.Coin { - return sdk.NewInt64Coin(InjectiveCoin, amount) -} diff --git a/chain/types/errors.go b/chain/types/errors.go deleted file mode 100644 index 2408fad5..00000000 --- a/chain/types/errors.go +++ /dev/null @@ -1,15 +0,0 @@ -package types - -import "cosmossdk.io/errors" - -const ( - // RootCodespace is the codespace for all errors defined in this package - RootCodespace = "injective" -) - -// NOTE: We can't use 1 since that error code is reserved for internal errors. - -var ( - // ErrInvalidChainID returns an error resulting from an invalid chain ID. - ErrInvalidChainID = errors.Register(RootCodespace, 3, "invalid chain ID") -) diff --git a/chain/types/gas.go b/chain/types/gas.go deleted file mode 100644 index b14660de..00000000 --- a/chain/types/gas.go +++ /dev/null @@ -1,97 +0,0 @@ -package types - -import ( - "fmt" - "math" - "sync" - - storetypes "cosmossdk.io/store/types" -) - -type infiniteGasMeter struct { - consumed storetypes.Gas - mux sync.RWMutex -} - -// NewThreadsafeInfiniteGasMeter returns a reference to a new thread-safe infiniteGasMeter. -func NewThreadsafeInfiniteGasMeter() storetypes.GasMeter { - return &infiniteGasMeter{ - consumed: 0, - } -} - -func (g *infiniteGasMeter) GasRemaining() storetypes.Gas { - return math.MaxUint64 -} - -func (g *infiniteGasMeter) GasConsumed() storetypes.Gas { - g.mux.RLock() - defer g.mux.RUnlock() - - return g.consumed -} - -func (g *infiniteGasMeter) GasConsumedToLimit() storetypes.Gas { - g.mux.RLock() - defer g.mux.RUnlock() - - return g.consumed -} - -func (g *infiniteGasMeter) Limit() storetypes.Gas { - return 0 -} - -func (g *infiniteGasMeter) ConsumeGas(amount storetypes.Gas, descriptor string) { - g.mux.Lock() - defer g.mux.Unlock() - - var overflow bool - // TODO: Should we set the consumed field after overflow checking? - g.consumed, overflow = addUint64Overflow(g.consumed, amount) - if overflow { - panic(storetypes.ErrorGasOverflow{Descriptor: descriptor}) - } -} - -// RefundGas will deduct the given amount from the gas consumed. If the amount is greater than the -// gas consumed, the function will panic. -// -// Use case: This functionality enables refunding gas to the trasaction or block gas pools so that -// EVM-compatible chains can fully support the go-ethereum StateDb interface. -// See https://github.com/cosmos/cosmos-sdk/pull/9403 for reference. -func (g *infiniteGasMeter) RefundGas(amount storetypes.Gas, descriptor string) { - g.mux.Lock() - defer g.mux.Unlock() - - if g.consumed < amount { - panic(storetypes.ErrorNegativeGasConsumed{Descriptor: descriptor}) - } - - g.consumed -= amount -} - -func (g *infiniteGasMeter) IsPastLimit() bool { - return false -} - -func (g *infiniteGasMeter) IsOutOfGas() bool { - return false -} - -func (g *infiniteGasMeter) String() string { - g.mux.RLock() - defer g.mux.RUnlock() - - return fmt.Sprintf("InfiniteGasMeter:\n consumed: %d", g.consumed) -} - -// addUint64Overflow performs the addition operation on two uint64 integers and -// returns a boolean on whether or not the result overflows. -func addUint64Overflow(a, b uint64) (uint64, bool) { - if math.MaxUint64-a < b { - return 0, true - } - - return a + b, false -} diff --git a/chain/types/int.go b/chain/types/int.go deleted file mode 100644 index af991c40..00000000 --- a/chain/types/int.go +++ /dev/null @@ -1,22 +0,0 @@ -package types - -import "math/big" - -// MarshalBigInt marshals big int into text string for consistent encoding -func MarshalBigInt(i *big.Int) (string, error) { - bz, err := i.MarshalText() - if err != nil { - return "", err - } - return string(bz), nil -} - -// UnmarshalBigInt unmarshals string from *big.Int -func UnmarshalBigInt(s string) (*big.Int, error) { - ret := new(big.Int) - err := ret.UnmarshalText([]byte(s)) - if err != nil { - return nil, err - } - return ret, nil -} diff --git a/chain/types/params.go b/chain/types/params.go deleted file mode 100644 index 9d322668..00000000 --- a/chain/types/params.go +++ /dev/null @@ -1,8 +0,0 @@ -package types - -const ( - // DefaultGasPrice is default gas price for evm transactions - DefaultGasPrice = 0 - // DefaultRPCGasLimit is default gas limit for RPC call operations - DefaultRPCGasLimit = 80000000 -) diff --git a/chain/wasmx/types/exec_callback_msgs.go b/chain/wasmx/types/exec_callback_msgs.go deleted file mode 100644 index 784a2abe..00000000 --- a/chain/wasmx/types/exec_callback_msgs.go +++ /dev/null @@ -1,25 +0,0 @@ -package types - -func NewRegistryDeregisterCallbackMsg() RegistryDeregisterCallbackMsg { - return RegistryDeregisterCallbackMsg{ - DeregisterCallback: &DeregisterCallbackMsg{}, - } -} - -type RegistryDeregisterCallbackMsg struct { - DeregisterCallback *DeregisterCallbackMsg `json:"deregister,omitempty"` -} - -type DeregisterCallbackMsg struct{} - -func NewRegistryDeactivateCallbackMsg() RegistryDeactivateCallbackMsg { - return RegistryDeactivateCallbackMsg{ - DeactivateCallback: &DeactivateCallbackMsg{}, - } -} - -type RegistryDeactivateCallbackMsg struct { - DeactivateCallback *DeactivateCallbackMsg `json:"deactivate,omitempty"` -} - -type DeactivateCallbackMsg struct{} diff --git a/chain/wasmx/types/exec_msgs.go b/chain/wasmx/types/exec_msgs.go deleted file mode 100644 index 1f6ad121..00000000 --- a/chain/wasmx/types/exec_msgs.go +++ /dev/null @@ -1,26 +0,0 @@ -package types - -import ( - "encoding/json" -) - -func NewBeginBlockerExecMsg() ([]byte, error) { - // Construct Exec message - beginBlocker := CWBeginBlockerExecMsg{BeginBlockerMsg: &BeginBlockerMsg{}} - - // nolint:all - // execMsg := []byte(`{"begin_blocker":{}}`) - execMsg, err := json.Marshal(beginBlocker) - if err != nil { - return nil, err - } - - return execMsg, nil -} - -type CWBeginBlockerExecMsg struct { - BeginBlockerMsg *BeginBlockerMsg `json:"begin_blocker,omitempty"` -} - -type BeginBlockerMsg struct { -} diff --git a/chain/wasmx/types/expected_keepers.go b/chain/wasmx/types/expected_keepers.go deleted file mode 100644 index e9d5d692..00000000 --- a/chain/wasmx/types/expected_keepers.go +++ /dev/null @@ -1,28 +0,0 @@ -package types - -import ( - "context" - - wasmtypes "github.com/CosmWasm/wasmd/x/wasm/types" - sdk "github.com/cosmos/cosmos-sdk/types" -) - -// BankKeeper defines the expected bank keeper methods -type BankKeeper interface { - GetBalance(ctx context.Context, addr sdk.AccAddress, denom string) sdk.Coin - GetAllBalances(ctx context.Context, addr sdk.AccAddress) sdk.Coins - SendCoinsFromModuleToModule(ctx context.Context, senderModule, recipientModule string, amt sdk.Coins) error - SendCoinsFromModuleToAccount(ctx context.Context, senderModule string, recipientAddr sdk.AccAddress, amt sdk.Coins) error - SendCoinsFromAccountToModule(ctx context.Context, senderAddr sdk.AccAddress, recipientModule string, amt sdk.Coins) error - BurnCoins(ctx context.Context, moduleName string, amt sdk.Coins) error - IsSendEnabledCoins(ctx context.Context, coins ...sdk.Coin) error - SendCoins(ctx context.Context, from, to sdk.AccAddress, amt sdk.Coins) error -} - -type WasmViewKeeper interface { - wasmtypes.ViewKeeper -} - -type WasmContractOpsKeeper interface { - wasmtypes.ContractOpsKeeper -} diff --git a/chain/wasmx/types/genesis.go b/chain/wasmx/types/genesis.go deleted file mode 100644 index 3739aca4..00000000 --- a/chain/wasmx/types/genesis.go +++ /dev/null @@ -1,18 +0,0 @@ -package types - -func NewGenesisState() GenesisState { - return GenesisState{} -} - -func (gs GenesisState) Validate() error { - if err := gs.Params.Validate(); err != nil { - return err - } - return nil -} - -func DefaultGenesisState() *GenesisState { - return &GenesisState{ - Params: DefaultParams(), - } -} diff --git a/chain/wasmx/types/paramset.go b/chain/wasmx/types/paramset.go deleted file mode 100644 index 80d0852b..00000000 --- a/chain/wasmx/types/paramset.go +++ /dev/null @@ -1,26 +0,0 @@ -package types - -type ( - ValueValidatorFn func(value interface{}) error - - // ParamSetPair is used for associating paramsubspace key and field of param - // structs. - ParamSetPair struct { - Key []byte - Value interface{} - ValidatorFn ValueValidatorFn - } -) - -// NewParamSetPair creates a new ParamSetPair instance. -func NewParamSetPair(key []byte, value interface{}, vfn ValueValidatorFn) ParamSetPair { - return ParamSetPair{key, value, vfn} -} - -// ParamSetPairs Slice of KeyFieldPair -type ParamSetPairs []ParamSetPair - -// ParamSet defines an interface for structs containing parameters for a module -type ParamSet interface { - ParamSetPairs() ParamSetPairs -} diff --git a/chain/wasmx/types/util.go b/chain/wasmx/types/util.go deleted file mode 100644 index 49eb4491..00000000 --- a/chain/wasmx/types/util.go +++ /dev/null @@ -1,17 +0,0 @@ -package types - -import ( - "github.com/CosmWasm/wasmd/x/wasm/types" - sdktypes "github.com/cosmos/cosmos-sdk/types" -) - -func IsAllowed(accessConfig types.AccessConfig, actor sdktypes.AccAddress) bool { - if accessConfig.Permission == types.AccessTypeAnyOfAddresses { - for _, v := range accessConfig.Addresses { - if v == actor.String() { - return true - } - } - } - return false -} diff --git a/client/chain/chain.go b/client/chain/chain.go index 7475f506..26d50e5b 100644 --- a/client/chain/chain.go +++ b/client/chain/chain.go @@ -287,11 +287,18 @@ type ChainClient interface { FetchIBCConnectionParams(ctx context.Context) (*ibcconnectiontypes.QueryConnectionParamsResponse, error) // Permissions module - FetchAllNamespaces(ctx context.Context) (*permissionstypes.QueryAllNamespacesResponse, error) - FetchNamespaceByDenom(ctx context.Context, denom string, includeRoles bool) (*permissionstypes.QueryNamespaceByDenomResponse, error) - FetchAddressRoles(ctx context.Context, denom, address string) (*permissionstypes.QueryAddressRolesResponse, error) - FetchAddressesByRole(ctx context.Context, denom, role string) (*permissionstypes.QueryAddressesByRoleResponse, error) - FetchVouchersForAddress(ctx context.Context, address string) (*permissionstypes.QueryVouchersForAddressResponse, error) + FetchPermissionsNamespaceDenoms(ctx context.Context) (*permissionstypes.QueryNamespaceDenomsResponse, error) + FetchPermissionsNamespaces(ctx context.Context) (*permissionstypes.QueryNamespacesResponse, error) + FetchPermissionsNamespace(ctx context.Context, denom string) (*permissionstypes.QueryNamespaceResponse, error) + FetchPermissionsRolesByActor(ctx context.Context, denom, actor string) (*permissionstypes.QueryRolesByActorResponse, error) + FetchPermissionsActorsByRole(ctx context.Context, denom, role string) (*permissionstypes.QueryActorsByRoleResponse, error) + FetchPermissionsRoleManagers(ctx context.Context, denom string) (*permissionstypes.QueryRoleManagersResponse, error) + FetchPermissionsRoleManager(ctx context.Context, denom, manager string) (*permissionstypes.QueryRoleManagerResponse, error) + FetchPermissionsPolicyStatuses(ctx context.Context, denom string) (*permissionstypes.QueryPolicyStatusesResponse, error) + FetchPermissionsPolicyManagerCapabilities(ctx context.Context, denom string) (*permissionstypes.QueryPolicyManagerCapabilitiesResponse, error) + FetchPermissionsVouchers(ctx context.Context, denom string) (*permissionstypes.QueryVouchersResponse, error) + FetchPermissionsVoucher(ctx context.Context, denom, address string) (*permissionstypes.QueryVoucherResponse, error) + FetchPermissionsModuleState(ctx context.Context) (*permissionstypes.QueryModuleStateResponse, error) GetNetwork() common.Network Close() @@ -2602,48 +2609,108 @@ func (c *chainClient) FetchIBCConnectionParams(ctx context.Context) (*ibcconnect // Permissions module -func (c *chainClient) FetchAllNamespaces(ctx context.Context) (*permissionstypes.QueryAllNamespacesResponse, error) { - req := &permissionstypes.QueryAllNamespacesRequest{} - res, err := common.ExecuteCall(ctx, c.network.ChainCookieAssistant, c.permissionsQueryClient.AllNamespaces, req) +func (c *chainClient) FetchPermissionsNamespaceDenoms(ctx context.Context) (*permissionstypes.QueryNamespaceDenomsResponse, error) { + req := &permissionstypes.QueryNamespaceDenomsRequest{} + res, err := common.ExecuteCall(ctx, c.network.ChainCookieAssistant, c.permissionsQueryClient.NamespaceDenoms, req) return res, err } -func (c *chainClient) FetchNamespaceByDenom(ctx context.Context, denom string, includeRoles bool) (*permissionstypes.QueryNamespaceByDenomResponse, error) { - req := &permissionstypes.QueryNamespaceByDenomRequest{ - Denom: denom, - IncludeRoles: includeRoles, +func (c *chainClient) FetchPermissionsNamespaces(ctx context.Context) (*permissionstypes.QueryNamespacesResponse, error) { + req := &permissionstypes.QueryNamespacesRequest{} + res, err := common.ExecuteCall(ctx, c.network.ChainCookieAssistant, c.permissionsQueryClient.Namespaces, req) + + return res, err +} + +func (c *chainClient) FetchPermissionsNamespace(ctx context.Context, denom string) (*permissionstypes.QueryNamespaceResponse, error) { + req := &permissionstypes.QueryNamespaceRequest{ + Denom: denom, } - res, err := common.ExecuteCall(ctx, c.network.ChainCookieAssistant, c.permissionsQueryClient.NamespaceByDenom, req) + res, err := common.ExecuteCall(ctx, c.network.ChainCookieAssistant, c.permissionsQueryClient.Namespace, req) return res, err } -func (c *chainClient) FetchAddressRoles(ctx context.Context, denom, address string) (*permissionstypes.QueryAddressRolesResponse, error) { - req := &permissionstypes.QueryAddressRolesRequest{ - Denom: denom, - Address: address, +func (c *chainClient) FetchPermissionsRolesByActor(ctx context.Context, denom, actor string) (*permissionstypes.QueryRolesByActorResponse, error) { + req := &permissionstypes.QueryRolesByActorRequest{ + Denom: denom, + Actor: actor, } - res, err := common.ExecuteCall(ctx, c.network.ChainCookieAssistant, c.permissionsQueryClient.AddressRoles, req) + res, err := common.ExecuteCall(ctx, c.network.ChainCookieAssistant, c.permissionsQueryClient.RolesByActor, req) return res, err } -func (c *chainClient) FetchAddressesByRole(ctx context.Context, denom, role string) (*permissionstypes.QueryAddressesByRoleResponse, error) { - req := &permissionstypes.QueryAddressesByRoleRequest{ +func (c *chainClient) FetchPermissionsActorsByRole(ctx context.Context, denom, role string) (*permissionstypes.QueryActorsByRoleResponse, error) { + req := &permissionstypes.QueryActorsByRoleRequest{ Denom: denom, Role: role, } - res, err := common.ExecuteCall(ctx, c.network.ChainCookieAssistant, c.permissionsQueryClient.AddressesByRole, req) + res, err := common.ExecuteCall(ctx, c.network.ChainCookieAssistant, c.permissionsQueryClient.ActorsByRole, req) + + return res, err +} + +func (c *chainClient) FetchPermissionsRoleManagers(ctx context.Context, denom string) (*permissionstypes.QueryRoleManagersResponse, error) { + req := &permissionstypes.QueryRoleManagersRequest{ + Denom: denom, + } + res, err := common.ExecuteCall(ctx, c.network.ChainCookieAssistant, c.permissionsQueryClient.RoleManagers, req) + + return res, err +} + +func (c *chainClient) FetchPermissionsRoleManager(ctx context.Context, denom, manager string) (*permissionstypes.QueryRoleManagerResponse, error) { + req := &permissionstypes.QueryRoleManagerRequest{ + Denom: denom, + Manager: manager, + } + res, err := common.ExecuteCall(ctx, c.network.ChainCookieAssistant, c.permissionsQueryClient.RoleManager, req) + + return res, err +} + +func (c *chainClient) FetchPermissionsPolicyStatuses(ctx context.Context, denom string) (*permissionstypes.QueryPolicyStatusesResponse, error) { + req := &permissionstypes.QueryPolicyStatusesRequest{ + Denom: denom, + } + res, err := common.ExecuteCall(ctx, c.network.ChainCookieAssistant, c.permissionsQueryClient.PolicyStatuses, req) + + return res, err +} + +func (c *chainClient) FetchPermissionsPolicyManagerCapabilities(ctx context.Context, denom string) (*permissionstypes.QueryPolicyManagerCapabilitiesResponse, error) { + req := &permissionstypes.QueryPolicyManagerCapabilitiesRequest{ + Denom: denom, + } + res, err := common.ExecuteCall(ctx, c.network.ChainCookieAssistant, c.permissionsQueryClient.PolicyManagerCapabilities, req) return res, err } -func (c *chainClient) FetchVouchersForAddress(ctx context.Context, address string) (*permissionstypes.QueryVouchersForAddressResponse, error) { - req := &permissionstypes.QueryVouchersForAddressRequest{ +func (c *chainClient) FetchPermissionsVouchers(ctx context.Context, denom string) (*permissionstypes.QueryVouchersResponse, error) { + req := &permissionstypes.QueryVouchersRequest{ + Denom: denom, + } + res, err := common.ExecuteCall(ctx, c.network.ChainCookieAssistant, c.permissionsQueryClient.Vouchers, req) + + return res, err +} + +func (c *chainClient) FetchPermissionsVoucher(ctx context.Context, denom, address string) (*permissionstypes.QueryVoucherResponse, error) { + req := &permissionstypes.QueryVoucherRequest{ + Denom: denom, Address: address, } - res, err := common.ExecuteCall(ctx, c.network.ChainCookieAssistant, c.permissionsQueryClient.VouchersForAddress, req) + res, err := common.ExecuteCall(ctx, c.network.ChainCookieAssistant, c.permissionsQueryClient.Voucher, req) + + return res, err +} + +func (c *chainClient) FetchPermissionsModuleState(ctx context.Context) (*permissionstypes.QueryModuleStateResponse, error) { + req := &permissionstypes.QueryModuleStateRequest{} + res, err := common.ExecuteCall(ctx, c.network.ChainCookieAssistant, c.permissionsQueryClient.PermissionsModuleState, req) return res, err } diff --git a/client/chain/chain_test_support.go b/client/chain/chain_test_support.go index e7f6d750..d5881e50 100644 --- a/client/chain/chain_test_support.go +++ b/client/chain/chain_test_support.go @@ -751,24 +751,52 @@ func (c *MockChainClient) FetchIBCConnectionParams(ctx context.Context) (*ibccon // Permissions module -func (c *MockChainClient) FetchAllNamespaces(ctx context.Context) (*permissionstypes.QueryAllNamespacesResponse, error) { - return &permissionstypes.QueryAllNamespacesResponse{}, nil +func (c *MockChainClient) FetchPermissionsNamespaceDenoms(ctx context.Context) (*permissionstypes.QueryNamespaceDenomsResponse, error) { + return &permissionstypes.QueryNamespaceDenomsResponse{}, nil } -func (c *MockChainClient) FetchNamespaceByDenom(ctx context.Context, denom string, includeRoles bool) (*permissionstypes.QueryNamespaceByDenomResponse, error) { - return &permissionstypes.QueryNamespaceByDenomResponse{}, nil +func (c *MockChainClient) FetchPermissionsNamespaces(ctx context.Context) (*permissionstypes.QueryNamespacesResponse, error) { + return &permissionstypes.QueryNamespacesResponse{}, nil } -func (c *MockChainClient) FetchAddressRoles(ctx context.Context, denom, address string) (*permissionstypes.QueryAddressRolesResponse, error) { - return &permissionstypes.QueryAddressRolesResponse{}, nil +func (c *MockChainClient) FetchPermissionsNamespace(ctx context.Context, denom string) (*permissionstypes.QueryNamespaceResponse, error) { + return &permissionstypes.QueryNamespaceResponse{}, nil } -func (c *MockChainClient) FetchAddressesByRole(ctx context.Context, denom, role string) (*permissionstypes.QueryAddressesByRoleResponse, error) { - return &permissionstypes.QueryAddressesByRoleResponse{}, nil +func (c *MockChainClient) FetchPermissionsRolesByActor(ctx context.Context, denom, actor string) (*permissionstypes.QueryRolesByActorResponse, error) { + return &permissionstypes.QueryRolesByActorResponse{}, nil } -func (c *MockChainClient) FetchVouchersForAddress(ctx context.Context, address string) (*permissionstypes.QueryVouchersForAddressResponse, error) { - return &permissionstypes.QueryVouchersForAddressResponse{}, nil +func (c *MockChainClient) FetchPermissionsActorsByRole(ctx context.Context, denom, role string) (*permissionstypes.QueryActorsByRoleResponse, error) { + return &permissionstypes.QueryActorsByRoleResponse{}, nil +} + +func (c *MockChainClient) FetchPermissionsRoleManagers(ctx context.Context, denom string) (*permissionstypes.QueryRoleManagersResponse, error) { + return &permissionstypes.QueryRoleManagersResponse{}, nil +} + +func (c *MockChainClient) FetchPermissionsRoleManager(ctx context.Context, denom, manager string) (*permissionstypes.QueryRoleManagerResponse, error) { + return &permissionstypes.QueryRoleManagerResponse{}, nil +} + +func (c *MockChainClient) FetchPermissionsPolicyStatuses(ctx context.Context, denom string) (*permissionstypes.QueryPolicyStatusesResponse, error) { + return &permissionstypes.QueryPolicyStatusesResponse{}, nil +} + +func (c *MockChainClient) FetchPermissionsPolicyManagerCapabilities(ctx context.Context, denom string) (*permissionstypes.QueryPolicyManagerCapabilitiesResponse, error) { + return &permissionstypes.QueryPolicyManagerCapabilitiesResponse{}, nil +} + +func (c *MockChainClient) FetchPermissionsVouchers(ctx context.Context, denom string) (*permissionstypes.QueryVouchersResponse, error) { + return &permissionstypes.QueryVouchersResponse{}, nil +} + +func (c *MockChainClient) FetchPermissionsVoucher(ctx context.Context, denom, address string) (*permissionstypes.QueryVoucherResponse, error) { + return &permissionstypes.QueryVoucherResponse{}, nil +} + +func (c *MockChainClient) FetchPermissionsModuleState(ctx context.Context) (*permissionstypes.QueryModuleStateResponse, error) { + return &permissionstypes.QueryModuleStateResponse{}, nil } func (c *MockChainClient) GetNetwork() common.Network { diff --git a/client/chain/markets_assistant.go b/client/chain/markets_assistant.go index 52340223..924f41c4 100644 --- a/client/chain/markets_assistant.go +++ b/client/chain/markets_assistant.go @@ -317,16 +317,16 @@ func (assistant *MarketsAssistant) initializeFromChain(ctx context.Context, chai continue } - makerFeeRate := decimal.RequireFromString(marketInfo.GetMakerFeeRate().String()) - takerFeeRate := decimal.RequireFromString(marketInfo.GetTakerFeeRate().String()) - serviceProviderFee := decimal.RequireFromString(marketInfo.GetRelayerFeeShareRate().String()) - minPriceTickSize := decimal.RequireFromString(marketInfo.GetMinPriceTickSize().String()) - minQuantityTickSize := decimal.RequireFromString(marketInfo.GetMinQuantityTickSize().String()) - minNotional := decimal.RequireFromString(marketInfo.GetMinNotional().String()) + makerFeeRate := decimal.RequireFromString(marketInfo.MakerFeeRate.String()) + takerFeeRate := decimal.RequireFromString(marketInfo.TakerFeeRate.String()) + serviceProviderFee := decimal.RequireFromString(marketInfo.RelayerFeeShareRate.String()) + minPriceTickSize := decimal.RequireFromString(marketInfo.MinPriceTickSize.String()) + minQuantityTickSize := decimal.RequireFromString(marketInfo.MinQuantityTickSize.String()) + minNotional := decimal.RequireFromString(marketInfo.MinNotional.String()) market := core.SpotMarket{ Id: marketInfo.GetMarketId(), - Status: marketInfo.GetMarketStatus().String(), + Status: marketInfo.Status.String(), Ticker: marketInfo.GetTicker(), BaseToken: baseToken, QuoteToken: quoteToken, @@ -350,29 +350,29 @@ func (assistant *MarketsAssistant) initializeFromChain(ctx context.Context, chai for _, fullMarket := range derivativeMarkets.GetMarkets() { marketInfo := fullMarket.GetMarket() - quoteToken, quoteTokenFound := assistant.tokensByDenom[marketInfo.GetQuoteDenom()] + quoteToken, quoteTokenFound := assistant.tokensByDenom[marketInfo.QuoteDenom] if !quoteTokenFound { // Ignore the market because it references a token that is not in the token list continue } - initialMarginRatio := decimal.RequireFromString(marketInfo.GetInitialMarginRatio().String()) + initialMarginRatio := decimal.RequireFromString(marketInfo.InitialMarginRatio.String()) maintenanceMarginRatio := decimal.RequireFromString(marketInfo.MaintenanceMarginRatio.String()) - makerFeeRate := decimal.RequireFromString(marketInfo.GetMakerFeeRate().String()) - takerFeeRate := decimal.RequireFromString(marketInfo.GetTakerFeeRate().String()) - serviceProviderFee := decimal.RequireFromString(marketInfo.GetRelayerFeeShareRate().String()) - minPriceTickSize := decimal.RequireFromString(marketInfo.GetMinPriceTickSize().String()) - minQuantityTickSize := decimal.RequireFromString(marketInfo.GetMinQuantityTickSize().String()) - minNotional := decimal.RequireFromString(marketInfo.GetMinNotional().String()) + makerFeeRate := decimal.RequireFromString(marketInfo.MakerFeeRate.String()) + takerFeeRate := decimal.RequireFromString(marketInfo.TakerFeeRate.String()) + serviceProviderFee := decimal.RequireFromString(marketInfo.RelayerFeeShareRate.String()) + minPriceTickSize := decimal.RequireFromString(marketInfo.MinPriceTickSize.String()) + minQuantityTickSize := decimal.RequireFromString(marketInfo.MinQuantityTickSize.String()) + minNotional := decimal.RequireFromString(marketInfo.MinNotional.String()) market := core.DerivativeMarket{ Id: marketInfo.MarketId, - Status: marketInfo.GetMarketStatus().String(), - Ticker: marketInfo.GetTicker(), + Status: marketInfo.Status.String(), + Ticker: marketInfo.Ticker, OracleBase: marketInfo.OracleBase, OracleQuote: marketInfo.OracleQuote, OracleType: marketInfo.OracleType.String(), - OracleScaleFactor: marketInfo.GetOracleScaleFactor(), + OracleScaleFactor: marketInfo.OracleScaleFactor, InitialMarginRatio: initialMarginRatio, MaintenanceMarginRatio: maintenanceMarginRatio, QuoteToken: quoteToken, @@ -394,27 +394,27 @@ func (assistant *MarketsAssistant) initializeFromChain(ctx context.Context, chai } for _, marketInfo := range binaryOptionsMarkets.GetMarkets() { - quoteToken, quoteTokenFound := assistant.tokensByDenom[marketInfo.GetQuoteDenom()] + quoteToken, quoteTokenFound := assistant.tokensByDenom[marketInfo.QuoteDenom] if !quoteTokenFound { // Ignore the market because it references a token that is not in the token list continue } - makerFeeRate := decimal.RequireFromString(marketInfo.GetMakerFeeRate().String()) - takerFeeRate := decimal.RequireFromString(marketInfo.GetTakerFeeRate().String()) - serviceProviderFee := decimal.RequireFromString(marketInfo.GetRelayerFeeShareRate().String()) - minPriceTickSize := decimal.RequireFromString(marketInfo.GetMinPriceTickSize().String()) - minQuantityTickSize := decimal.RequireFromString(marketInfo.GetMinQuantityTickSize().String()) - minNotional := decimal.RequireFromString(marketInfo.GetMinNotional().String()) + makerFeeRate := decimal.RequireFromString(marketInfo.MakerFeeRate.String()) + takerFeeRate := decimal.RequireFromString(marketInfo.TakerFeeRate.String()) + serviceProviderFee := decimal.RequireFromString(marketInfo.RelayerFeeShareRate.String()) + minPriceTickSize := decimal.RequireFromString(marketInfo.MinPriceTickSize.String()) + minQuantityTickSize := decimal.RequireFromString(marketInfo.MinQuantityTickSize.String()) + minNotional := decimal.RequireFromString(marketInfo.MinNotional.String()) market := core.BinaryOptionMarket{ Id: marketInfo.MarketId, - Status: marketInfo.GetMarketStatus().String(), - Ticker: marketInfo.GetTicker(), + Status: marketInfo.Status.String(), + Ticker: marketInfo.Ticker, OracleSymbol: marketInfo.OracleSymbol, OracleProvider: marketInfo.OracleProvider, OracleType: marketInfo.OracleType.String(), - OracleScaleFactor: marketInfo.GetOracleScaleFactor(), + OracleScaleFactor: marketInfo.OracleScaleFactor, ExpirationTimestamp: marketInfo.ExpirationTimestamp, SettlementTimestamp: marketInfo.SettlementTimestamp, QuoteToken: quoteToken, diff --git a/examples/chain/permissions/1_MsgCreateNamespace/example.go b/examples/chain/permissions/1_MsgCreateNamespace/example.go new file mode 100644 index 00000000..087a4f81 --- /dev/null +++ b/examples/chain/permissions/1_MsgCreateNamespace/example.go @@ -0,0 +1,135 @@ +package main + +import ( + "encoding/json" + "fmt" + "os" + + permissionstypes "github.com/InjectiveLabs/sdk-go/chain/permissions/types" + "github.com/InjectiveLabs/sdk-go/client" + chainclient "github.com/InjectiveLabs/sdk-go/client/chain" + "github.com/InjectiveLabs/sdk-go/client/common" + rpchttp "github.com/cometbft/cometbft/rpc/client/http" +) + +func main() { + network := common.LoadNetwork("devnet", "lb") + tmClient, err := rpchttp.New(network.TmEndpoint, "/websocket") + if err != nil { + panic(err) + } + + senderAddress, cosmosKeyring, err := chainclient.InitCosmosKeyring( + os.Getenv("HOME")+"/.injectived", + "injectived", + "file", + "inj-user", + "12345678", + "f9db9bf330e23cb7839039e944adef6e9df447b90b503d5b4464c90bea9022f3", // keyring will be used if pk not provided + false, + ) + + if err != nil { + panic(err) + } + + clientCtx, err := chainclient.NewClientContext( + network.ChainId, + senderAddress.String(), + cosmosKeyring, + ) + + if err != nil { + panic(err) + } + + clientCtx = clientCtx.WithNodeURI(network.TmEndpoint).WithClient(tmClient) + + chainClient, err := chainclient.NewChainClient( + clientCtx, + network, + common.OptionGasPrices(client.DefaultGasPriceWithDenom), + ) + + if err != nil { + panic(err) + } + + denom := "factory/inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r/inj_test" + role1 := permissionstypes.Role{ + Name: "EVERYONE", + RoleId: 0, + Permissions: uint32(permissionstypes.Action_RECEIVE | permissionstypes.Action_SEND), + } + role2 := permissionstypes.Role{ + Name: "admin", + RoleId: 1, + Permissions: uint32(permissionstypes.Action_MODIFY_ROLE_PERMISSIONS), + } + role3 := permissionstypes.Role{ + Name: "user", + RoleId: 2, + Permissions: uint32( + permissionstypes.Action_MINT | + permissionstypes.Action_RECEIVE | + permissionstypes.Action_BURN | + permissionstypes.Action_SEND), + } + + actor_role1 := permissionstypes.ActorRoles{ + Actor: "inj1specificactoraddress", + Roles: []string{"admin"}, + } + actor_role2 := permissionstypes.ActorRoles{ + Actor: "inj1anotheractoraddress", + Roles: []string{"user"}, + } + + role_manager := permissionstypes.RoleManager{ + Manager: "inj1manageraddress", + Roles: []string{"admin"}, + } + + policy_status1 := permissionstypes.PolicyStatus{ + Action: permissionstypes.Action_MINT, + IsDisabled: false, + IsSealed: false, + } + policy_status2 := permissionstypes.PolicyStatus{ + Action: permissionstypes.Action_BURN, + IsDisabled: false, + IsSealed: false, + } + + policy_manager_capability := permissionstypes.PolicyManagerCapability{ + Manager: "inj1policymanageraddress", + Action: permissionstypes.Action_MODIFY_CONTRACT_HOOK, + CanDisable: true, + CanSeal: false, + } + + namespace := permissionstypes.Namespace{ + Denom: denom, + ContractHook: "", + RolePermissions: []*permissionstypes.Role{&role1, &role2, &role3}, + ActorRoles: []*permissionstypes.ActorRoles{&actor_role1, &actor_role2}, + RoleManagers: []*permissionstypes.RoleManager{&role_manager}, + PolicyStatuses: []*permissionstypes.PolicyStatus{&policy_status1, &policy_status2}, + PolicyManagerCapabilities: []*permissionstypes.PolicyManagerCapability{&policy_manager_capability}, + } + + msg := &permissionstypes.MsgCreateNamespace{ + Sender: senderAddress.String(), + Namespace: namespace, + } + + //AsyncBroadcastMsg, SyncBroadcastMsg, QueueBroadcastMsg + response, err := chainClient.SyncBroadcastMsg(msg) + + if err != nil { + panic(err) + } + + str, _ := json.MarshalIndent(response, "", " ") + fmt.Print(string(str)) +} diff --git a/examples/chain/permissions/2_DeleteNamespace/example.go b/examples/chain/permissions/2_DeleteNamespace/example.go deleted file mode 100644 index 611f569e..00000000 --- a/examples/chain/permissions/2_DeleteNamespace/example.go +++ /dev/null @@ -1,74 +0,0 @@ -package main - -import ( - "encoding/json" - "fmt" - "os" - - permissionstypes "github.com/InjectiveLabs/sdk-go/chain/permissions/types" - "github.com/InjectiveLabs/sdk-go/client" - chainclient "github.com/InjectiveLabs/sdk-go/client/chain" - "github.com/InjectiveLabs/sdk-go/client/common" - rpchttp "github.com/cometbft/cometbft/rpc/client/http" -) - -func main() { - network := common.LoadNetwork("devnet", "lb") - tmClient, err := rpchttp.New(network.TmEndpoint, "/websocket") - if err != nil { - panic(err) - } - - senderAddress, cosmosKeyring, err := chainclient.InitCosmosKeyring( - os.Getenv("HOME")+"/.injectived", - "injectived", - "file", - "inj-user", - "12345678", - "f9db9bf330e23cb7839039e944adef6e9df447b90b503d5b4464c90bea9022f3", // keyring will be used if pk not provided - false, - ) - - if err != nil { - panic(err) - } - - clientCtx, err := chainclient.NewClientContext( - network.ChainId, - senderAddress.String(), - cosmosKeyring, - ) - - if err != nil { - panic(err) - } - - clientCtx = clientCtx.WithNodeURI(network.TmEndpoint).WithClient(tmClient) - - chainClient, err := chainclient.NewChainClient( - clientCtx, - network, - common.OptionGasPrices(client.DefaultGasPriceWithDenom), - ) - - if err != nil { - panic(err) - } - - namespaceDenom := "factory/inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r/inj_test" - - msg := &permissionstypes.MsgDeleteNamespace{ - Sender: senderAddress.String(), - NamespaceDenom: namespaceDenom, - } - - //AsyncBroadcastMsg, SyncBroadcastMsg, QueueBroadcastMsg - response, err := chainClient.SyncBroadcastMsg(msg) - - if err != nil { - panic(err) - } - - str, _ := json.MarshalIndent(response, "", " ") - fmt.Print(string(str)) -} diff --git a/examples/chain/permissions/2_MsgUpdateNamespace/example.go b/examples/chain/permissions/2_MsgUpdateNamespace/example.go new file mode 100644 index 00000000..6d50bd00 --- /dev/null +++ b/examples/chain/permissions/2_MsgUpdateNamespace/example.go @@ -0,0 +1,113 @@ +package main + +import ( + "encoding/json" + "fmt" + "os" + + permissionstypes "github.com/InjectiveLabs/sdk-go/chain/permissions/types" + "github.com/InjectiveLabs/sdk-go/client" + chainclient "github.com/InjectiveLabs/sdk-go/client/chain" + "github.com/InjectiveLabs/sdk-go/client/common" + rpchttp "github.com/cometbft/cometbft/rpc/client/http" +) + +func main() { + network := common.LoadNetwork("devnet", "lb") + tmClient, err := rpchttp.New(network.TmEndpoint, "/websocket") + if err != nil { + panic(err) + } + + senderAddress, cosmosKeyring, err := chainclient.InitCosmosKeyring( + os.Getenv("HOME")+"/.injectived", + "injectived", + "file", + "inj-user", + "12345678", + "f9db9bf330e23cb7839039e944adef6e9df447b90b503d5b4464c90bea9022f3", // keyring will be used if pk not provided + false, + ) + + if err != nil { + panic(err) + } + + clientCtx, err := chainclient.NewClientContext( + network.ChainId, + senderAddress.String(), + cosmosKeyring, + ) + + if err != nil { + panic(err) + } + + clientCtx = clientCtx.WithNodeURI(network.TmEndpoint).WithClient(tmClient) + + chainClient, err := chainclient.NewChainClient( + clientCtx, + network, + common.OptionGasPrices(client.DefaultGasPriceWithDenom), + ) + + if err != nil { + panic(err) + } + + denom := "factory/inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r/inj_test" + + role1 := permissionstypes.Role{ + Name: "EVERYONE", + RoleId: 0, + Permissions: uint32(permissionstypes.Action_UNSPECIFIED), + } + role2 := permissionstypes.Role{ + Name: "user", + RoleId: 2, + Permissions: uint32(permissionstypes.Action_RECEIVE | permissionstypes.Action_SEND), + } + + role_manager := permissionstypes.RoleManager{ + Manager: "inj1manageraddress", + Roles: []string{"admin", "user"}, + } + + policy_status1 := permissionstypes.PolicyStatus{ + Action: permissionstypes.Action_MINT, + IsDisabled: true, + IsSealed: false, + } + policy_status2 := permissionstypes.PolicyStatus{ + Action: permissionstypes.Action_BURN, + IsDisabled: false, + IsSealed: true, + } + + policy_manager_capability := permissionstypes.PolicyManagerCapability{ + Manager: "inj1policymanageraddress", + Action: permissionstypes.Action_MODIFY_ROLE_PERMISSIONS, + CanDisable: true, + CanSeal: false, + } + + msg := &permissionstypes.MsgUpdateNamespace{ + Sender: senderAddress.String(), + Denom: denom, + ContractHook: &permissionstypes.MsgUpdateNamespace_SetContractHook{NewValue: "inj19ld6swyldyujcn72j7ugnu9twafhs9wxlyye5m"}, + RolePermissions: []*permissionstypes.Role{&role1, &role2}, + RoleManagers: []*permissionstypes.RoleManager{&role_manager}, + PolicyStatuses: []*permissionstypes.PolicyStatus{&policy_status1, &policy_status2}, + PolicyManagerCapabilities: []*permissionstypes.PolicyManagerCapability{&policy_manager_capability}, + } + + //AsyncBroadcastMsg, SyncBroadcastMsg, QueueBroadcastMsg + response, err := chainClient.SyncBroadcastMsg(msg) + + if err != nil { + panic(err) + } + + str, _ := json.MarshalIndent(response, "", " ") + fmt.Print(string(str)) +} diff --git a/examples/chain/permissions/1_CreateNamespace/example.go b/examples/chain/permissions/3_MsgUpdateActorRoles/example.go similarity index 64% rename from examples/chain/permissions/1_CreateNamespace/example.go rename to examples/chain/permissions/3_MsgUpdateActorRoles/example.go index 540d2a9b..dc9d5594 100644 --- a/examples/chain/permissions/1_CreateNamespace/example.go +++ b/examples/chain/permissions/3_MsgUpdateActorRoles/example.go @@ -55,30 +55,29 @@ func main() { panic(err) } - blockedAddress := "inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r" - namespace := permissionstypes.Namespace{ - Denom: "factory/inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r/inj_test", - RolePermissions: []*permissionstypes.Role{ - { - Role: permissionstypes.EVERYONE, - Permissions: uint32(permissionstypes.Action_MINT | permissionstypes.Action_RECEIVE | permissionstypes.Action_BURN), - }, - { - Role: "blacklisted", - Permissions: 0, - }, - }, - AddressRoles: []*permissionstypes.AddressRoles{ - { - Address: blockedAddress, - Roles: []string{"blacklisted"}, - }, - }, + denom := "factory/inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r/inj_test" + roleActors1 := permissionstypes.RoleActors{ + Role: "admin", + Actors: []string{"inj1actoraddress1", "inj1actoraddress2"}, + } + roleActors2 := permissionstypes.RoleActors{ + Role: "user", + Actors: []string{"inj1actoraddress3"}, + } + roleActors3 := permissionstypes.RoleActors{ + Role: "user", + Actors: []string{"inj1actoraddress4"}, + } + roleActors4 := permissionstypes.RoleActors{ + Role: "admin", + Actors: []string{"inj1actoraddress5"}, } - msg := &permissionstypes.MsgCreateNamespace{ - Sender: senderAddress.String(), - Namespace: namespace, + msg := &permissionstypes.MsgUpdateActorRoles{ + Sender: senderAddress.String(), + Denom: denom, + RoleActorsToAdd: []*permissionstypes.RoleActors{&roleActors1, &roleActors2}, + RoleActorsToRevoke: []*permissionstypes.RoleActors{&roleActors3, &roleActors4}, } //AsyncBroadcastMsg, SyncBroadcastMsg, QueueBroadcastMsg diff --git a/examples/chain/permissions/3_UpdateNamespace/example.go b/examples/chain/permissions/3_UpdateNamespace/example.go deleted file mode 100644 index 2fd48eaf..00000000 --- a/examples/chain/permissions/3_UpdateNamespace/example.go +++ /dev/null @@ -1,78 +0,0 @@ -package main - -import ( - "encoding/json" - "fmt" - "os" - - permissionstypes "github.com/InjectiveLabs/sdk-go/chain/permissions/types" - "github.com/InjectiveLabs/sdk-go/client" - chainclient "github.com/InjectiveLabs/sdk-go/client/chain" - "github.com/InjectiveLabs/sdk-go/client/common" - rpchttp "github.com/cometbft/cometbft/rpc/client/http" -) - -func main() { - network := common.LoadNetwork("devnet", "lb") - tmClient, err := rpchttp.New(network.TmEndpoint, "/websocket") - if err != nil { - panic(err) - } - - senderAddress, cosmosKeyring, err := chainclient.InitCosmosKeyring( - os.Getenv("HOME")+"/.injectived", - "injectived", - "file", - "inj-user", - "12345678", - "f9db9bf330e23cb7839039e944adef6e9df447b90b503d5b4464c90bea9022f3", // keyring will be used if pk not provided - false, - ) - - if err != nil { - panic(err) - } - - clientCtx, err := chainclient.NewClientContext( - network.ChainId, - senderAddress.String(), - cosmosKeyring, - ) - - if err != nil { - panic(err) - } - - clientCtx = clientCtx.WithNodeURI(network.TmEndpoint).WithClient(tmClient) - - chainClient, err := chainclient.NewChainClient( - clientCtx, - network, - common.OptionGasPrices(client.DefaultGasPriceWithDenom), - ) - - if err != nil { - panic(err) - } - - namespaceDenom := "factory/inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r/inj_test" - - msg := &permissionstypes.MsgUpdateNamespace{ - Sender: senderAddress.String(), - NamespaceDenom: namespaceDenom, - WasmHook: &permissionstypes.MsgUpdateNamespace_MsgSetWasmHook{NewValue: "inj19ld6swyldyujcn72j7ugnu9twafhs9wxlyye5m"}, - SendsPaused: &permissionstypes.MsgUpdateNamespace_MsgSetSendsPaused{NewValue: true}, - MintsPaused: &permissionstypes.MsgUpdateNamespace_MsgSetMintsPaused{NewValue: true}, - BurnsPaused: &permissionstypes.MsgUpdateNamespace_MsgSetBurnsPaused{NewValue: true}, - } - - //AsyncBroadcastMsg, SyncBroadcastMsg, QueueBroadcastMsg - response, err := chainClient.SyncBroadcastMsg(msg) - - if err != nil { - panic(err) - } - - str, _ := json.MarshalIndent(response, "", " ") - fmt.Print(string(str)) -} diff --git a/examples/chain/permissions/6_ClaimVoucher/example.go b/examples/chain/permissions/4_MsgClaimVoucher/example.go similarity index 100% rename from examples/chain/permissions/6_ClaimVoucher/example.go rename to examples/chain/permissions/4_MsgClaimVoucher/example.go diff --git a/examples/chain/permissions/4_UpdateNamespaceRoles/example.go b/examples/chain/permissions/4_UpdateNamespaceRoles/example.go deleted file mode 100644 index 62941e9d..00000000 --- a/examples/chain/permissions/4_UpdateNamespaceRoles/example.go +++ /dev/null @@ -1,91 +0,0 @@ -package main - -import ( - "encoding/json" - "fmt" - "os" - - permissionstypes "github.com/InjectiveLabs/sdk-go/chain/permissions/types" - "github.com/InjectiveLabs/sdk-go/client" - chainclient "github.com/InjectiveLabs/sdk-go/client/chain" - "github.com/InjectiveLabs/sdk-go/client/common" - rpchttp "github.com/cometbft/cometbft/rpc/client/http" -) - -func main() { - network := common.LoadNetwork("devnet", "lb") - tmClient, err := rpchttp.New(network.TmEndpoint, "/websocket") - if err != nil { - panic(err) - } - - senderAddress, cosmosKeyring, err := chainclient.InitCosmosKeyring( - os.Getenv("HOME")+"/.injectived", - "injectived", - "file", - "inj-user", - "12345678", - "f9db9bf330e23cb7839039e944adef6e9df447b90b503d5b4464c90bea9022f3", // keyring will be used if pk not provided - false, - ) - - if err != nil { - panic(err) - } - - clientCtx, err := chainclient.NewClientContext( - network.ChainId, - senderAddress.String(), - cosmosKeyring, - ) - - if err != nil { - panic(err) - } - - clientCtx = clientCtx.WithNodeURI(network.TmEndpoint).WithClient(tmClient) - - chainClient, err := chainclient.NewChainClient( - clientCtx, - network, - common.OptionGasPrices(client.DefaultGasPriceWithDenom), - ) - - if err != nil { - panic(err) - } - - namespaceDenom := "factory/inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r/inj_test" - blockedAddress := "inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r" - - msg := &permissionstypes.MsgUpdateNamespaceRoles{ - Sender: senderAddress.String(), - NamespaceDenom: namespaceDenom, - RolePermissions: []*permissionstypes.Role{ - { - Role: permissionstypes.EVERYONE, - Permissions: uint32(permissionstypes.Action_RECEIVE), - }, - { - Role: "blacklisted", - Permissions: 0, - }, - }, - AddressRoles: []*permissionstypes.AddressRoles{ - { - Address: blockedAddress, - Roles: []string{"blacklisted"}, - }, - }, - } - - //AsyncBroadcastMsg, SyncBroadcastMsg, QueueBroadcastMsg - response, err := chainClient.SyncBroadcastMsg(msg) - - if err != nil { - panic(err) - } - - str, _ := json.MarshalIndent(response, "", " ") - fmt.Print(string(str)) -} diff --git a/examples/chain/permissions/5_RevokeNamespaceRoles/example.go b/examples/chain/permissions/5_RevokeNamespaceRoles/example.go deleted file mode 100644 index 3bc62f57..00000000 --- a/examples/chain/permissions/5_RevokeNamespaceRoles/example.go +++ /dev/null @@ -1,81 +0,0 @@ -package main - -import ( - "encoding/json" - "fmt" - "os" - - permissionstypes "github.com/InjectiveLabs/sdk-go/chain/permissions/types" - "github.com/InjectiveLabs/sdk-go/client" - chainclient "github.com/InjectiveLabs/sdk-go/client/chain" - "github.com/InjectiveLabs/sdk-go/client/common" - rpchttp "github.com/cometbft/cometbft/rpc/client/http" -) - -func main() { - network := common.LoadNetwork("devnet", "lb") - tmClient, err := rpchttp.New(network.TmEndpoint, "/websocket") - if err != nil { - panic(err) - } - - senderAddress, cosmosKeyring, err := chainclient.InitCosmosKeyring( - os.Getenv("HOME")+"/.injectived", - "injectived", - "file", - "inj-user", - "12345678", - "f9db9bf330e23cb7839039e944adef6e9df447b90b503d5b4464c90bea9022f3", // keyring will be used if pk not provided - false, - ) - - if err != nil { - panic(err) - } - - clientCtx, err := chainclient.NewClientContext( - network.ChainId, - senderAddress.String(), - cosmosKeyring, - ) - - if err != nil { - panic(err) - } - - clientCtx = clientCtx.WithNodeURI(network.TmEndpoint).WithClient(tmClient) - - chainClient, err := chainclient.NewChainClient( - clientCtx, - network, - common.OptionGasPrices(client.DefaultGasPriceWithDenom), - ) - - if err != nil { - panic(err) - } - - namespaceDenom := "factory/inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r/inj_test" - blockedAddress := "inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r" - - msg := &permissionstypes.MsgRevokeNamespaceRoles{ - Sender: senderAddress.String(), - NamespaceDenom: namespaceDenom, - AddressRolesToRevoke: []*permissionstypes.AddressRoles{ - { - Address: blockedAddress, - Roles: []string{"blacklisted"}, - }, - }, - } - - //AsyncBroadcastMsg, SyncBroadcastMsg, QueueBroadcastMsg - response, err := chainClient.SyncBroadcastMsg(msg) - - if err != nil { - panic(err) - } - - str, _ := json.MarshalIndent(response, "", " ") - fmt.Print(string(str)) -} diff --git a/examples/chain/permissions/query/5_VouchersForAddress/example.go b/examples/chain/permissions/query/10_Vouchers/example.go similarity index 90% rename from examples/chain/permissions/query/5_VouchersForAddress/example.go rename to examples/chain/permissions/query/10_Vouchers/example.go index fe7b9d96..fe7d9b84 100644 --- a/examples/chain/permissions/query/5_VouchersForAddress/example.go +++ b/examples/chain/permissions/query/10_Vouchers/example.go @@ -55,11 +55,11 @@ func main() { panic(err) } - address := senderAddress.String() - ctx := context.Background() - res, err := chainClient.FetchVouchersForAddress(ctx, address) + denom := "factory/inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r/inj_test" + + res, err := chainClient.FetchPermissionsVouchers(ctx, denom) if err != nil { fmt.Println(err) } diff --git a/examples/chain/permissions/query/11_Voucher/example.go b/examples/chain/permissions/query/11_Voucher/example.go new file mode 100644 index 00000000..dc393327 --- /dev/null +++ b/examples/chain/permissions/query/11_Voucher/example.go @@ -0,0 +1,70 @@ +package main + +import ( + "context" + "encoding/json" + "fmt" + "os" + + "github.com/InjectiveLabs/sdk-go/client" + chainclient "github.com/InjectiveLabs/sdk-go/client/chain" + "github.com/InjectiveLabs/sdk-go/client/common" + rpchttp "github.com/cometbft/cometbft/rpc/client/http" +) + +func main() { + network := common.LoadNetwork("devnet", "lb") + tmClient, err := rpchttp.New(network.TmEndpoint, "/websocket") + if err != nil { + panic(err) + } + + senderAddress, cosmosKeyring, err := chainclient.InitCosmosKeyring( + os.Getenv("HOME")+"/.injectived", + "injectived", + "file", + "inj-user", + "12345678", + "f9db9bf330e23cb7839039e944adef6e9df447b90b503d5b4464c90bea9022f3", // keyring will be used if pk not provided + false, + ) + + if err != nil { + panic(err) + } + + clientCtx, err := chainclient.NewClientContext( + network.ChainId, + senderAddress.String(), + cosmosKeyring, + ) + + if err != nil { + panic(err) + } + + clientCtx = clientCtx.WithNodeURI(network.TmEndpoint).WithClient(tmClient) + + chainClient, err := chainclient.NewChainClient( + clientCtx, + network, + common.OptionGasPrices(client.DefaultGasPriceWithDenom), + ) + + if err != nil { + panic(err) + } + + ctx := context.Background() + + denom := "factory/inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r/inj_test" + address := "inj1knhahceyp57j5x7xh69p7utegnnnfgxavmahjr" + + res, err := chainClient.FetchPermissionsVoucher(ctx, denom, address) + if err != nil { + fmt.Println(err) + } + + str, _ := json.MarshalIndent(res, "", " ") + fmt.Print(string(str)) +} diff --git a/examples/chain/permissions/query/12_PermissionsModuleState/example.go b/examples/chain/permissions/query/12_PermissionsModuleState/example.go new file mode 100644 index 00000000..71687687 --- /dev/null +++ b/examples/chain/permissions/query/12_PermissionsModuleState/example.go @@ -0,0 +1,69 @@ +package main + +import ( + "context" + "encoding/json" + "fmt" + + "os" + + "github.com/InjectiveLabs/sdk-go/client" + chainclient "github.com/InjectiveLabs/sdk-go/client/chain" + "github.com/InjectiveLabs/sdk-go/client/common" + rpchttp "github.com/cometbft/cometbft/rpc/client/http" +) + +func main() { + network := common.LoadNetwork("devnet", "lb") + tmClient, err := rpchttp.New(network.TmEndpoint, "/websocket") + if err != nil { + panic(err) + } + + senderAddress, cosmosKeyring, err := chainclient.InitCosmosKeyring( + os.Getenv("HOME")+"/.injectived", + "injectived", + "file", + "inj-user", + "12345678", + "5d386fbdbf11f1141010f81a46b40f94887367562bd33b452bbaa6ce1cd1381e", // keyring will be used if pk not provided + false, + ) + + if err != nil { + panic(err) + } + + clientCtx, err := chainclient.NewClientContext( + network.ChainId, + senderAddress.String(), + cosmosKeyring, + ) + + if err != nil { + panic(err) + } + + clientCtx = clientCtx.WithNodeURI(network.TmEndpoint).WithClient(tmClient) + + chainClient, err := chainclient.NewChainClient( + clientCtx, + network, + common.OptionGasPrices(client.DefaultGasPriceWithDenom), + ) + + if err != nil { + panic(err) + } + + ctx := context.Background() + + res, err := chainClient.FetchPermissionsModuleState(ctx) + if err != nil { + fmt.Println(err) + } + + str, _ := json.MarshalIndent(res, "", " ") + fmt.Print(string(str)) + +} diff --git a/examples/chain/permissions/query/1_NamespaceDenoms/example.go b/examples/chain/permissions/query/1_NamespaceDenoms/example.go new file mode 100644 index 00000000..23ac104f --- /dev/null +++ b/examples/chain/permissions/query/1_NamespaceDenoms/example.go @@ -0,0 +1,69 @@ +package main + +import ( + "context" + "encoding/json" + "fmt" + + "os" + + "github.com/InjectiveLabs/sdk-go/client" + chainclient "github.com/InjectiveLabs/sdk-go/client/chain" + "github.com/InjectiveLabs/sdk-go/client/common" + rpchttp "github.com/cometbft/cometbft/rpc/client/http" +) + +func main() { + network := common.LoadNetwork("devnet", "lb") + tmClient, err := rpchttp.New(network.TmEndpoint, "/websocket") + if err != nil { + panic(err) + } + + senderAddress, cosmosKeyring, err := chainclient.InitCosmosKeyring( + os.Getenv("HOME")+"/.injectived", + "injectived", + "file", + "inj-user", + "12345678", + "5d386fbdbf11f1141010f81a46b40f94887367562bd33b452bbaa6ce1cd1381e", // keyring will be used if pk not provided + false, + ) + + if err != nil { + panic(err) + } + + clientCtx, err := chainclient.NewClientContext( + network.ChainId, + senderAddress.String(), + cosmosKeyring, + ) + + if err != nil { + panic(err) + } + + clientCtx = clientCtx.WithNodeURI(network.TmEndpoint).WithClient(tmClient) + + chainClient, err := chainclient.NewChainClient( + clientCtx, + network, + common.OptionGasPrices(client.DefaultGasPriceWithDenom), + ) + + if err != nil { + panic(err) + } + + ctx := context.Background() + + res, err := chainClient.FetchPermissionsNamespaceDenoms(ctx) + if err != nil { + fmt.Println(err) + } + + str, _ := json.MarshalIndent(res, "", " ") + fmt.Print(string(str)) + +} diff --git a/examples/chain/permissions/query/1_AllNamespaces/example.go b/examples/chain/permissions/query/2_Namespaces/example.go similarity index 95% rename from examples/chain/permissions/query/1_AllNamespaces/example.go rename to examples/chain/permissions/query/2_Namespaces/example.go index 650477d2..10bceac6 100644 --- a/examples/chain/permissions/query/1_AllNamespaces/example.go +++ b/examples/chain/permissions/query/2_Namespaces/example.go @@ -58,7 +58,7 @@ func main() { ctx := context.Background() - res, err := chainClient.FetchAllNamespaces(ctx) + res, err := chainClient.FetchPermissionsNamespaces(ctx) if err != nil { fmt.Println(err) } diff --git a/examples/chain/permissions/query/2_NamespaceByDenom/example.go b/examples/chain/permissions/query/3_Namespace/example.go similarity index 94% rename from examples/chain/permissions/query/2_NamespaceByDenom/example.go rename to examples/chain/permissions/query/3_Namespace/example.go index 69efeb11..3a48c57d 100644 --- a/examples/chain/permissions/query/2_NamespaceByDenom/example.go +++ b/examples/chain/permissions/query/3_Namespace/example.go @@ -59,7 +59,7 @@ func main() { ctx := context.Background() - res, err := chainClient.FetchNamespaceByDenom(ctx, namespaceDenom, true) + res, err := chainClient.FetchPermissionsNamespace(ctx, namespaceDenom) if err != nil { fmt.Println(err) } diff --git a/examples/chain/permissions/query/3_AddressRoles/example.go b/examples/chain/permissions/query/4_RolesByActor/example.go similarity index 92% rename from examples/chain/permissions/query/3_AddressRoles/example.go rename to examples/chain/permissions/query/4_RolesByActor/example.go index 17fe06a0..b86c5d4b 100644 --- a/examples/chain/permissions/query/3_AddressRoles/example.go +++ b/examples/chain/permissions/query/4_RolesByActor/example.go @@ -56,11 +56,11 @@ func main() { } namespaceDenom := "factory/inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r/inj_test" - address := senderAddress.String() + actor := senderAddress.String() ctx := context.Background() - res, err := chainClient.FetchAddressRoles(ctx, namespaceDenom, address) + res, err := chainClient.FetchPermissionsRolesByActor(ctx, namespaceDenom, actor) if err != nil { fmt.Println(err) } diff --git a/examples/chain/permissions/query/4_AddressesByRole/example.go b/examples/chain/permissions/query/5_ActorsByRole/example.go similarity index 94% rename from examples/chain/permissions/query/4_AddressesByRole/example.go rename to examples/chain/permissions/query/5_ActorsByRole/example.go index ca2b3f7f..35ed2e24 100644 --- a/examples/chain/permissions/query/4_AddressesByRole/example.go +++ b/examples/chain/permissions/query/5_ActorsByRole/example.go @@ -60,7 +60,7 @@ func main() { ctx := context.Background() - res, err := chainClient.FetchAddressesByRole(ctx, namespaceDenom, role) + res, err := chainClient.FetchPermissionsActorsByRole(ctx, namespaceDenom, role) if err != nil { fmt.Println(err) } diff --git a/examples/chain/permissions/query/6_RoleManagers/example.go b/examples/chain/permissions/query/6_RoleManagers/example.go new file mode 100644 index 00000000..9e99b3aa --- /dev/null +++ b/examples/chain/permissions/query/6_RoleManagers/example.go @@ -0,0 +1,69 @@ +package main + +import ( + "context" + "encoding/json" + "fmt" + "os" + + "github.com/InjectiveLabs/sdk-go/client" + chainclient "github.com/InjectiveLabs/sdk-go/client/chain" + "github.com/InjectiveLabs/sdk-go/client/common" + rpchttp "github.com/cometbft/cometbft/rpc/client/http" +) + +func main() { + network := common.LoadNetwork("devnet", "lb") + tmClient, err := rpchttp.New(network.TmEndpoint, "/websocket") + if err != nil { + panic(err) + } + + senderAddress, cosmosKeyring, err := chainclient.InitCosmosKeyring( + os.Getenv("HOME")+"/.injectived", + "injectived", + "file", + "inj-user", + "12345678", + "f9db9bf330e23cb7839039e944adef6e9df447b90b503d5b4464c90bea9022f3", // keyring will be used if pk not provided + false, + ) + + if err != nil { + panic(err) + } + + clientCtx, err := chainclient.NewClientContext( + network.ChainId, + senderAddress.String(), + cosmosKeyring, + ) + + if err != nil { + panic(err) + } + + clientCtx = clientCtx.WithNodeURI(network.TmEndpoint).WithClient(tmClient) + + chainClient, err := chainclient.NewChainClient( + clientCtx, + network, + common.OptionGasPrices(client.DefaultGasPriceWithDenom), + ) + + if err != nil { + panic(err) + } + + ctx := context.Background() + + denom := "factory/inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r/inj_test" + + res, err := chainClient.FetchPermissionsRoleManagers(ctx, denom) + if err != nil { + fmt.Println(err) + } + + str, _ := json.MarshalIndent(res, "", " ") + fmt.Print(string(str)) +} diff --git a/examples/chain/permissions/query/7_RoleManager/example.go b/examples/chain/permissions/query/7_RoleManager/example.go new file mode 100644 index 00000000..b61af27b --- /dev/null +++ b/examples/chain/permissions/query/7_RoleManager/example.go @@ -0,0 +1,70 @@ +package main + +import ( + "context" + "encoding/json" + "fmt" + "os" + + "github.com/InjectiveLabs/sdk-go/client" + chainclient "github.com/InjectiveLabs/sdk-go/client/chain" + "github.com/InjectiveLabs/sdk-go/client/common" + rpchttp "github.com/cometbft/cometbft/rpc/client/http" +) + +func main() { + network := common.LoadNetwork("devnet", "lb") + tmClient, err := rpchttp.New(network.TmEndpoint, "/websocket") + if err != nil { + panic(err) + } + + senderAddress, cosmosKeyring, err := chainclient.InitCosmosKeyring( + os.Getenv("HOME")+"/.injectived", + "injectived", + "file", + "inj-user", + "12345678", + "f9db9bf330e23cb7839039e944adef6e9df447b90b503d5b4464c90bea9022f3", // keyring will be used if pk not provided + false, + ) + + if err != nil { + panic(err) + } + + clientCtx, err := chainclient.NewClientContext( + network.ChainId, + senderAddress.String(), + cosmosKeyring, + ) + + if err != nil { + panic(err) + } + + clientCtx = clientCtx.WithNodeURI(network.TmEndpoint).WithClient(tmClient) + + chainClient, err := chainclient.NewChainClient( + clientCtx, + network, + common.OptionGasPrices(client.DefaultGasPriceWithDenom), + ) + + if err != nil { + panic(err) + } + + ctx := context.Background() + + denom := "factory/inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r/inj_test" + manager := "inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r" + + res, err := chainClient.FetchPermissionsRoleManager(ctx, denom, manager) + if err != nil { + fmt.Println(err) + } + + str, _ := json.MarshalIndent(res, "", " ") + fmt.Print(string(str)) +} diff --git a/examples/chain/permissions/query/8_PolicyStatuses/example.go b/examples/chain/permissions/query/8_PolicyStatuses/example.go new file mode 100644 index 00000000..64deff3e --- /dev/null +++ b/examples/chain/permissions/query/8_PolicyStatuses/example.go @@ -0,0 +1,69 @@ +package main + +import ( + "context" + "encoding/json" + "fmt" + "os" + + "github.com/InjectiveLabs/sdk-go/client" + chainclient "github.com/InjectiveLabs/sdk-go/client/chain" + "github.com/InjectiveLabs/sdk-go/client/common" + rpchttp "github.com/cometbft/cometbft/rpc/client/http" +) + +func main() { + network := common.LoadNetwork("devnet", "lb") + tmClient, err := rpchttp.New(network.TmEndpoint, "/websocket") + if err != nil { + panic(err) + } + + senderAddress, cosmosKeyring, err := chainclient.InitCosmosKeyring( + os.Getenv("HOME")+"/.injectived", + "injectived", + "file", + "inj-user", + "12345678", + "f9db9bf330e23cb7839039e944adef6e9df447b90b503d5b4464c90bea9022f3", // keyring will be used if pk not provided + false, + ) + + if err != nil { + panic(err) + } + + clientCtx, err := chainclient.NewClientContext( + network.ChainId, + senderAddress.String(), + cosmosKeyring, + ) + + if err != nil { + panic(err) + } + + clientCtx = clientCtx.WithNodeURI(network.TmEndpoint).WithClient(tmClient) + + chainClient, err := chainclient.NewChainClient( + clientCtx, + network, + common.OptionGasPrices(client.DefaultGasPriceWithDenom), + ) + + if err != nil { + panic(err) + } + + ctx := context.Background() + + denom := "factory/inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r/inj_test" + + res, err := chainClient.FetchPermissionsPolicyStatuses(ctx, denom) + if err != nil { + fmt.Println(err) + } + + str, _ := json.MarshalIndent(res, "", " ") + fmt.Print(string(str)) +} diff --git a/examples/chain/permissions/query/9_PolicyManagerCapabilities/example.go b/examples/chain/permissions/query/9_PolicyManagerCapabilities/example.go new file mode 100644 index 00000000..64deff3e --- /dev/null +++ b/examples/chain/permissions/query/9_PolicyManagerCapabilities/example.go @@ -0,0 +1,69 @@ +package main + +import ( + "context" + "encoding/json" + "fmt" + "os" + + "github.com/InjectiveLabs/sdk-go/client" + chainclient "github.com/InjectiveLabs/sdk-go/client/chain" + "github.com/InjectiveLabs/sdk-go/client/common" + rpchttp "github.com/cometbft/cometbft/rpc/client/http" +) + +func main() { + network := common.LoadNetwork("devnet", "lb") + tmClient, err := rpchttp.New(network.TmEndpoint, "/websocket") + if err != nil { + panic(err) + } + + senderAddress, cosmosKeyring, err := chainclient.InitCosmosKeyring( + os.Getenv("HOME")+"/.injectived", + "injectived", + "file", + "inj-user", + "12345678", + "f9db9bf330e23cb7839039e944adef6e9df447b90b503d5b4464c90bea9022f3", // keyring will be used if pk not provided + false, + ) + + if err != nil { + panic(err) + } + + clientCtx, err := chainclient.NewClientContext( + network.ChainId, + senderAddress.String(), + cosmosKeyring, + ) + + if err != nil { + panic(err) + } + + clientCtx = clientCtx.WithNodeURI(network.TmEndpoint).WithClient(tmClient) + + chainClient, err := chainclient.NewChainClient( + clientCtx, + network, + common.OptionGasPrices(client.DefaultGasPriceWithDenom), + ) + + if err != nil { + panic(err) + } + + ctx := context.Background() + + denom := "factory/inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r/inj_test" + + res, err := chainClient.FetchPermissionsPolicyStatuses(ctx, denom) + if err != nil { + fmt.Println(err) + } + + str, _ := json.MarshalIndent(res, "", " ") + fmt.Print(string(str)) +} diff --git a/exchange/accounts_rpc/pb/goadesign_goagen_injective_accounts_rpc.pb.go b/exchange/accounts_rpc/pb/goadesign_goagen_injective_accounts_rpc.pb.go index b118a8a5..6e44ae07 100644 --- a/exchange/accounts_rpc/pb/goadesign_goagen_injective_accounts_rpc.pb.go +++ b/exchange/accounts_rpc/pb/goadesign_goagen_injective_accounts_rpc.pb.go @@ -8,7 +8,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.30.0 -// protoc v3.19.4 +// protoc v3.21.12 // source: goadesign_goagen_injective_accounts_rpc.proto package injective_accounts_rpcpb diff --git a/exchange/accounts_rpc/pb/goadesign_goagen_injective_accounts_rpc_grpc.pb.go b/exchange/accounts_rpc/pb/goadesign_goagen_injective_accounts_rpc_grpc.pb.go index ceb634f9..57dec967 100644 --- a/exchange/accounts_rpc/pb/goadesign_goagen_injective_accounts_rpc_grpc.pb.go +++ b/exchange/accounts_rpc/pb/goadesign_goagen_injective_accounts_rpc_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.2.0 -// - protoc v3.19.4 +// - protoc v3.21.12 // source: goadesign_goagen_injective_accounts_rpc.proto package injective_accounts_rpcpb diff --git a/exchange/accounts_rpc/pb/pb/goadesign_goagen_injective_accounts_rpc.pb.go b/exchange/accounts_rpc/pb/pb/goadesign_goagen_injective_accounts_rpc.pb.go deleted file mode 100644 index b118a8a5..00000000 --- a/exchange/accounts_rpc/pb/pb/goadesign_goagen_injective_accounts_rpc.pb.go +++ /dev/null @@ -1,5333 +0,0 @@ -// Code generated with goa v3.7.0, DO NOT EDIT. -// -// InjectiveAccountsRPC protocol buffer definition -// -// Command: -// $ goa gen github.com/InjectiveLabs/injective-indexer/api/design -o ../ - -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.30.0 -// protoc v3.19.4 -// source: goadesign_goagen_injective_accounts_rpc.proto - -package injective_accounts_rpcpb - -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - reflect "reflect" - sync "sync" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -type PortfolioRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Account address - AccountAddress string `protobuf:"bytes,1,opt,name=account_address,json=accountAddress,proto3" json:"account_address,omitempty"` -} - -func (x *PortfolioRequest) Reset() { - *x = PortfolioRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *PortfolioRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PortfolioRequest) ProtoMessage() {} - -func (x *PortfolioRequest) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use PortfolioRequest.ProtoReflect.Descriptor instead. -func (*PortfolioRequest) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{0} -} - -func (x *PortfolioRequest) GetAccountAddress() string { - if x != nil { - return x.AccountAddress - } - return "" -} - -type PortfolioResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The portfolio of this account - Portfolio *AccountPortfolio `protobuf:"bytes,1,opt,name=portfolio,proto3" json:"portfolio,omitempty"` -} - -func (x *PortfolioResponse) Reset() { - *x = PortfolioResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *PortfolioResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PortfolioResponse) ProtoMessage() {} - -func (x *PortfolioResponse) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use PortfolioResponse.ProtoReflect.Descriptor instead. -func (*PortfolioResponse) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{1} -} - -func (x *PortfolioResponse) GetPortfolio() *AccountPortfolio { - if x != nil { - return x.Portfolio - } - return nil -} - -type AccountPortfolio struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The account's portfolio value in USD. - PortfolioValue string `protobuf:"bytes,1,opt,name=portfolio_value,json=portfolioValue,proto3" json:"portfolio_value,omitempty"` - // The account's available balance value in USD. - AvailableBalance string `protobuf:"bytes,2,opt,name=available_balance,json=availableBalance,proto3" json:"available_balance,omitempty"` - // The account's locked balance value in USD. - LockedBalance string `protobuf:"bytes,3,opt,name=locked_balance,json=lockedBalance,proto3" json:"locked_balance,omitempty"` - // The account's total unrealized PnL value in USD. - UnrealizedPnl string `protobuf:"bytes,4,opt,name=unrealized_pnl,json=unrealizedPnl,proto3" json:"unrealized_pnl,omitempty"` - // List of all subaccounts' portfolio - Subaccounts []*SubaccountPortfolio `protobuf:"bytes,5,rep,name=subaccounts,proto3" json:"subaccounts,omitempty"` -} - -func (x *AccountPortfolio) Reset() { - *x = AccountPortfolio{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *AccountPortfolio) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AccountPortfolio) ProtoMessage() {} - -func (x *AccountPortfolio) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use AccountPortfolio.ProtoReflect.Descriptor instead. -func (*AccountPortfolio) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{2} -} - -func (x *AccountPortfolio) GetPortfolioValue() string { - if x != nil { - return x.PortfolioValue - } - return "" -} - -func (x *AccountPortfolio) GetAvailableBalance() string { - if x != nil { - return x.AvailableBalance - } - return "" -} - -func (x *AccountPortfolio) GetLockedBalance() string { - if x != nil { - return x.LockedBalance - } - return "" -} - -func (x *AccountPortfolio) GetUnrealizedPnl() string { - if x != nil { - return x.UnrealizedPnl - } - return "" -} - -func (x *AccountPortfolio) GetSubaccounts() []*SubaccountPortfolio { - if x != nil { - return x.Subaccounts - } - return nil -} - -type SubaccountPortfolio struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The ID of this subaccount - SubaccountId string `protobuf:"bytes,1,opt,name=subaccount_id,json=subaccountId,proto3" json:"subaccount_id,omitempty"` - // The subaccount's available balance value in USD. - AvailableBalance string `protobuf:"bytes,2,opt,name=available_balance,json=availableBalance,proto3" json:"available_balance,omitempty"` - // The subaccount's locked balance value in USD. - LockedBalance string `protobuf:"bytes,3,opt,name=locked_balance,json=lockedBalance,proto3" json:"locked_balance,omitempty"` - // The subaccount's total unrealized PnL value in USD. - UnrealizedPnl string `protobuf:"bytes,4,opt,name=unrealized_pnl,json=unrealizedPnl,proto3" json:"unrealized_pnl,omitempty"` -} - -func (x *SubaccountPortfolio) Reset() { - *x = SubaccountPortfolio{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SubaccountPortfolio) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SubaccountPortfolio) ProtoMessage() {} - -func (x *SubaccountPortfolio) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SubaccountPortfolio.ProtoReflect.Descriptor instead. -func (*SubaccountPortfolio) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{3} -} - -func (x *SubaccountPortfolio) GetSubaccountId() string { - if x != nil { - return x.SubaccountId - } - return "" -} - -func (x *SubaccountPortfolio) GetAvailableBalance() string { - if x != nil { - return x.AvailableBalance - } - return "" -} - -func (x *SubaccountPortfolio) GetLockedBalance() string { - if x != nil { - return x.LockedBalance - } - return "" -} - -func (x *SubaccountPortfolio) GetUnrealizedPnl() string { - if x != nil { - return x.UnrealizedPnl - } - return "" -} - -type OrderStatesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - SpotOrderHashes []string `protobuf:"bytes,1,rep,name=spot_order_hashes,json=spotOrderHashes,proto3" json:"spot_order_hashes,omitempty"` - DerivativeOrderHashes []string `protobuf:"bytes,2,rep,name=derivative_order_hashes,json=derivativeOrderHashes,proto3" json:"derivative_order_hashes,omitempty"` -} - -func (x *OrderStatesRequest) Reset() { - *x = OrderStatesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *OrderStatesRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*OrderStatesRequest) ProtoMessage() {} - -func (x *OrderStatesRequest) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use OrderStatesRequest.ProtoReflect.Descriptor instead. -func (*OrderStatesRequest) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{4} -} - -func (x *OrderStatesRequest) GetSpotOrderHashes() []string { - if x != nil { - return x.SpotOrderHashes - } - return nil -} - -func (x *OrderStatesRequest) GetDerivativeOrderHashes() []string { - if x != nil { - return x.DerivativeOrderHashes - } - return nil -} - -type OrderStatesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // List of the spot order state records - SpotOrderStates []*OrderStateRecord `protobuf:"bytes,1,rep,name=spot_order_states,json=spotOrderStates,proto3" json:"spot_order_states,omitempty"` - // List of the derivative order state records - DerivativeOrderStates []*OrderStateRecord `protobuf:"bytes,2,rep,name=derivative_order_states,json=derivativeOrderStates,proto3" json:"derivative_order_states,omitempty"` -} - -func (x *OrderStatesResponse) Reset() { - *x = OrderStatesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *OrderStatesResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*OrderStatesResponse) ProtoMessage() {} - -func (x *OrderStatesResponse) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use OrderStatesResponse.ProtoReflect.Descriptor instead. -func (*OrderStatesResponse) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{5} -} - -func (x *OrderStatesResponse) GetSpotOrderStates() []*OrderStateRecord { - if x != nil { - return x.SpotOrderStates - } - return nil -} - -func (x *OrderStatesResponse) GetDerivativeOrderStates() []*OrderStateRecord { - if x != nil { - return x.DerivativeOrderStates - } - return nil -} - -type OrderStateRecord struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Hash of the order - OrderHash string `protobuf:"bytes,1,opt,name=order_hash,json=orderHash,proto3" json:"order_hash,omitempty"` - // The subaccountId that this order belongs to - SubaccountId string `protobuf:"bytes,2,opt,name=subaccount_id,json=subaccountId,proto3" json:"subaccount_id,omitempty"` - // The Market ID of the order - MarketId string `protobuf:"bytes,3,opt,name=market_id,json=marketId,proto3" json:"market_id,omitempty"` - // The type of the order - OrderType string `protobuf:"bytes,4,opt,name=order_type,json=orderType,proto3" json:"order_type,omitempty"` - // The side of the order - OrderSide string `protobuf:"bytes,5,opt,name=order_side,json=orderSide,proto3" json:"order_side,omitempty"` - // The state (status) of the order - State string `protobuf:"bytes,6,opt,name=state,proto3" json:"state,omitempty"` - // The filled quantity of the order - QuantityFilled string `protobuf:"bytes,7,opt,name=quantity_filled,json=quantityFilled,proto3" json:"quantity_filled,omitempty"` - // The filled quantity of the order - QuantityRemaining string `protobuf:"bytes,8,opt,name=quantity_remaining,json=quantityRemaining,proto3" json:"quantity_remaining,omitempty"` - // Order committed timestamp in UNIX millis. - CreatedAt int64 `protobuf:"zigzag64,9,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - // Order updated timestamp in UNIX millis. - UpdatedAt int64 `protobuf:"zigzag64,10,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - // Order prices - Price string `protobuf:"bytes,11,opt,name=price,proto3" json:"price,omitempty"` - // Margin for derivative order - Margin string `protobuf:"bytes,12,opt,name=margin,proto3" json:"margin,omitempty"` -} - -func (x *OrderStateRecord) Reset() { - *x = OrderStateRecord{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *OrderStateRecord) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*OrderStateRecord) ProtoMessage() {} - -func (x *OrderStateRecord) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use OrderStateRecord.ProtoReflect.Descriptor instead. -func (*OrderStateRecord) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{6} -} - -func (x *OrderStateRecord) GetOrderHash() string { - if x != nil { - return x.OrderHash - } - return "" -} - -func (x *OrderStateRecord) GetSubaccountId() string { - if x != nil { - return x.SubaccountId - } - return "" -} - -func (x *OrderStateRecord) GetMarketId() string { - if x != nil { - return x.MarketId - } - return "" -} - -func (x *OrderStateRecord) GetOrderType() string { - if x != nil { - return x.OrderType - } - return "" -} - -func (x *OrderStateRecord) GetOrderSide() string { - if x != nil { - return x.OrderSide - } - return "" -} - -func (x *OrderStateRecord) GetState() string { - if x != nil { - return x.State - } - return "" -} - -func (x *OrderStateRecord) GetQuantityFilled() string { - if x != nil { - return x.QuantityFilled - } - return "" -} - -func (x *OrderStateRecord) GetQuantityRemaining() string { - if x != nil { - return x.QuantityRemaining - } - return "" -} - -func (x *OrderStateRecord) GetCreatedAt() int64 { - if x != nil { - return x.CreatedAt - } - return 0 -} - -func (x *OrderStateRecord) GetUpdatedAt() int64 { - if x != nil { - return x.UpdatedAt - } - return 0 -} - -func (x *OrderStateRecord) GetPrice() string { - if x != nil { - return x.Price - } - return "" -} - -func (x *OrderStateRecord) GetMargin() string { - if x != nil { - return x.Margin - } - return "" -} - -type SubaccountsListRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Account address, the subaccounts owner - AccountAddress string `protobuf:"bytes,1,opt,name=account_address,json=accountAddress,proto3" json:"account_address,omitempty"` -} - -func (x *SubaccountsListRequest) Reset() { - *x = SubaccountsListRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SubaccountsListRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SubaccountsListRequest) ProtoMessage() {} - -func (x *SubaccountsListRequest) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SubaccountsListRequest.ProtoReflect.Descriptor instead. -func (*SubaccountsListRequest) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{7} -} - -func (x *SubaccountsListRequest) GetAccountAddress() string { - if x != nil { - return x.AccountAddress - } - return "" -} - -type SubaccountsListResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Subaccounts []string `protobuf:"bytes,1,rep,name=subaccounts,proto3" json:"subaccounts,omitempty"` -} - -func (x *SubaccountsListResponse) Reset() { - *x = SubaccountsListResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SubaccountsListResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SubaccountsListResponse) ProtoMessage() {} - -func (x *SubaccountsListResponse) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SubaccountsListResponse.ProtoReflect.Descriptor instead. -func (*SubaccountsListResponse) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{8} -} - -func (x *SubaccountsListResponse) GetSubaccounts() []string { - if x != nil { - return x.Subaccounts - } - return nil -} - -type SubaccountBalancesListRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // SubaccountId of the trader we want to get the trades from - SubaccountId string `protobuf:"bytes,1,opt,name=subaccount_id,json=subaccountId,proto3" json:"subaccount_id,omitempty"` - // Filter balances by denoms. If not set, the balances of all the denoms for - // the subaccount are provided. - Denoms []string `protobuf:"bytes,2,rep,name=denoms,proto3" json:"denoms,omitempty"` -} - -func (x *SubaccountBalancesListRequest) Reset() { - *x = SubaccountBalancesListRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SubaccountBalancesListRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SubaccountBalancesListRequest) ProtoMessage() {} - -func (x *SubaccountBalancesListRequest) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SubaccountBalancesListRequest.ProtoReflect.Descriptor instead. -func (*SubaccountBalancesListRequest) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{9} -} - -func (x *SubaccountBalancesListRequest) GetSubaccountId() string { - if x != nil { - return x.SubaccountId - } - return "" -} - -func (x *SubaccountBalancesListRequest) GetDenoms() []string { - if x != nil { - return x.Denoms - } - return nil -} - -type SubaccountBalancesListResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // List of subaccount balances - Balances []*SubaccountBalance `protobuf:"bytes,1,rep,name=balances,proto3" json:"balances,omitempty"` -} - -func (x *SubaccountBalancesListResponse) Reset() { - *x = SubaccountBalancesListResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SubaccountBalancesListResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SubaccountBalancesListResponse) ProtoMessage() {} - -func (x *SubaccountBalancesListResponse) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[10] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SubaccountBalancesListResponse.ProtoReflect.Descriptor instead. -func (*SubaccountBalancesListResponse) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{10} -} - -func (x *SubaccountBalancesListResponse) GetBalances() []*SubaccountBalance { - if x != nil { - return x.Balances - } - return nil -} - -type SubaccountBalance struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Related subaccount ID - SubaccountId string `protobuf:"bytes,1,opt,name=subaccount_id,json=subaccountId,proto3" json:"subaccount_id,omitempty"` - // Account address, owner of this subaccount - AccountAddress string `protobuf:"bytes,2,opt,name=account_address,json=accountAddress,proto3" json:"account_address,omitempty"` - // Coin denom on the chain. - Denom string `protobuf:"bytes,3,opt,name=denom,proto3" json:"denom,omitempty"` - Deposit *SubaccountDeposit `protobuf:"bytes,4,opt,name=deposit,proto3" json:"deposit,omitempty"` -} - -func (x *SubaccountBalance) Reset() { - *x = SubaccountBalance{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SubaccountBalance) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SubaccountBalance) ProtoMessage() {} - -func (x *SubaccountBalance) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[11] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SubaccountBalance.ProtoReflect.Descriptor instead. -func (*SubaccountBalance) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{11} -} - -func (x *SubaccountBalance) GetSubaccountId() string { - if x != nil { - return x.SubaccountId - } - return "" -} - -func (x *SubaccountBalance) GetAccountAddress() string { - if x != nil { - return x.AccountAddress - } - return "" -} - -func (x *SubaccountBalance) GetDenom() string { - if x != nil { - return x.Denom - } - return "" -} - -func (x *SubaccountBalance) GetDeposit() *SubaccountDeposit { - if x != nil { - return x.Deposit - } - return nil -} - -type SubaccountDeposit struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - TotalBalance string `protobuf:"bytes,1,opt,name=total_balance,json=totalBalance,proto3" json:"total_balance,omitempty"` - AvailableBalance string `protobuf:"bytes,2,opt,name=available_balance,json=availableBalance,proto3" json:"available_balance,omitempty"` -} - -func (x *SubaccountDeposit) Reset() { - *x = SubaccountDeposit{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SubaccountDeposit) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SubaccountDeposit) ProtoMessage() {} - -func (x *SubaccountDeposit) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[12] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SubaccountDeposit.ProtoReflect.Descriptor instead. -func (*SubaccountDeposit) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{12} -} - -func (x *SubaccountDeposit) GetTotalBalance() string { - if x != nil { - return x.TotalBalance - } - return "" -} - -func (x *SubaccountDeposit) GetAvailableBalance() string { - if x != nil { - return x.AvailableBalance - } - return "" -} - -type SubaccountBalanceEndpointRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // SubaccountId of the trader we want to get the trades from - SubaccountId string `protobuf:"bytes,1,opt,name=subaccount_id,json=subaccountId,proto3" json:"subaccount_id,omitempty"` - // Specify denom to get balance - Denom string `protobuf:"bytes,2,opt,name=denom,proto3" json:"denom,omitempty"` -} - -func (x *SubaccountBalanceEndpointRequest) Reset() { - *x = SubaccountBalanceEndpointRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SubaccountBalanceEndpointRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SubaccountBalanceEndpointRequest) ProtoMessage() {} - -func (x *SubaccountBalanceEndpointRequest) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[13] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SubaccountBalanceEndpointRequest.ProtoReflect.Descriptor instead. -func (*SubaccountBalanceEndpointRequest) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{13} -} - -func (x *SubaccountBalanceEndpointRequest) GetSubaccountId() string { - if x != nil { - return x.SubaccountId - } - return "" -} - -func (x *SubaccountBalanceEndpointRequest) GetDenom() string { - if x != nil { - return x.Denom - } - return "" -} - -type SubaccountBalanceEndpointResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Subaccount balance - Balance *SubaccountBalance `protobuf:"bytes,1,opt,name=balance,proto3" json:"balance,omitempty"` -} - -func (x *SubaccountBalanceEndpointResponse) Reset() { - *x = SubaccountBalanceEndpointResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SubaccountBalanceEndpointResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SubaccountBalanceEndpointResponse) ProtoMessage() {} - -func (x *SubaccountBalanceEndpointResponse) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[14] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SubaccountBalanceEndpointResponse.ProtoReflect.Descriptor instead. -func (*SubaccountBalanceEndpointResponse) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{14} -} - -func (x *SubaccountBalanceEndpointResponse) GetBalance() *SubaccountBalance { - if x != nil { - return x.Balance - } - return nil -} - -type StreamSubaccountBalanceRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // SubaccountId of the trader we want to get the trades from - SubaccountId string `protobuf:"bytes,1,opt,name=subaccount_id,json=subaccountId,proto3" json:"subaccount_id,omitempty"` - // Filter balances by denoms. If not set, the balances of all the denoms for - // the subaccount are provided. - Denoms []string `protobuf:"bytes,2,rep,name=denoms,proto3" json:"denoms,omitempty"` -} - -func (x *StreamSubaccountBalanceRequest) Reset() { - *x = StreamSubaccountBalanceRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *StreamSubaccountBalanceRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*StreamSubaccountBalanceRequest) ProtoMessage() {} - -func (x *StreamSubaccountBalanceRequest) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[15] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use StreamSubaccountBalanceRequest.ProtoReflect.Descriptor instead. -func (*StreamSubaccountBalanceRequest) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{15} -} - -func (x *StreamSubaccountBalanceRequest) GetSubaccountId() string { - if x != nil { - return x.SubaccountId - } - return "" -} - -func (x *StreamSubaccountBalanceRequest) GetDenoms() []string { - if x != nil { - return x.Denoms - } - return nil -} - -type StreamSubaccountBalanceResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Subaccount balance - Balance *SubaccountBalance `protobuf:"bytes,1,opt,name=balance,proto3" json:"balance,omitempty"` - // Operation timestamp in UNIX millis. - Timestamp int64 `protobuf:"zigzag64,2,opt,name=timestamp,proto3" json:"timestamp,omitempty"` -} - -func (x *StreamSubaccountBalanceResponse) Reset() { - *x = StreamSubaccountBalanceResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[16] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *StreamSubaccountBalanceResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*StreamSubaccountBalanceResponse) ProtoMessage() {} - -func (x *StreamSubaccountBalanceResponse) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[16] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use StreamSubaccountBalanceResponse.ProtoReflect.Descriptor instead. -func (*StreamSubaccountBalanceResponse) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{16} -} - -func (x *StreamSubaccountBalanceResponse) GetBalance() *SubaccountBalance { - if x != nil { - return x.Balance - } - return nil -} - -func (x *StreamSubaccountBalanceResponse) GetTimestamp() int64 { - if x != nil { - return x.Timestamp - } - return 0 -} - -type SubaccountHistoryRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // SubaccountId of the trader we want to get the history from - SubaccountId string `protobuf:"bytes,1,opt,name=subaccount_id,json=subaccountId,proto3" json:"subaccount_id,omitempty"` - // Filter history by denom - Denom string `protobuf:"bytes,2,opt,name=denom,proto3" json:"denom,omitempty"` - // Filter history by transfer type - TransferTypes []string `protobuf:"bytes,3,rep,name=transfer_types,json=transferTypes,proto3" json:"transfer_types,omitempty"` - // Skip will skip the first n item from the result - Skip uint64 `protobuf:"varint,4,opt,name=skip,proto3" json:"skip,omitempty"` - // Limit is used to specify the maximum number of items to be returned - Limit int32 `protobuf:"zigzag32,5,opt,name=limit,proto3" json:"limit,omitempty"` - // Upper bound of account transfer history's executedAt - EndTime int64 `protobuf:"zigzag64,6,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` -} - -func (x *SubaccountHistoryRequest) Reset() { - *x = SubaccountHistoryRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[17] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SubaccountHistoryRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SubaccountHistoryRequest) ProtoMessage() {} - -func (x *SubaccountHistoryRequest) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[17] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SubaccountHistoryRequest.ProtoReflect.Descriptor instead. -func (*SubaccountHistoryRequest) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{17} -} - -func (x *SubaccountHistoryRequest) GetSubaccountId() string { - if x != nil { - return x.SubaccountId - } - return "" -} - -func (x *SubaccountHistoryRequest) GetDenom() string { - if x != nil { - return x.Denom - } - return "" -} - -func (x *SubaccountHistoryRequest) GetTransferTypes() []string { - if x != nil { - return x.TransferTypes - } - return nil -} - -func (x *SubaccountHistoryRequest) GetSkip() uint64 { - if x != nil { - return x.Skip - } - return 0 -} - -func (x *SubaccountHistoryRequest) GetLimit() int32 { - if x != nil { - return x.Limit - } - return 0 -} - -func (x *SubaccountHistoryRequest) GetEndTime() int64 { - if x != nil { - return x.EndTime - } - return 0 -} - -type SubaccountHistoryResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // List of subaccount transfers - Transfers []*SubaccountBalanceTransfer `protobuf:"bytes,1,rep,name=transfers,proto3" json:"transfers,omitempty"` - Paging *Paging `protobuf:"bytes,2,opt,name=paging,proto3" json:"paging,omitempty"` -} - -func (x *SubaccountHistoryResponse) Reset() { - *x = SubaccountHistoryResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[18] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SubaccountHistoryResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SubaccountHistoryResponse) ProtoMessage() {} - -func (x *SubaccountHistoryResponse) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[18] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SubaccountHistoryResponse.ProtoReflect.Descriptor instead. -func (*SubaccountHistoryResponse) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{18} -} - -func (x *SubaccountHistoryResponse) GetTransfers() []*SubaccountBalanceTransfer { - if x != nil { - return x.Transfers - } - return nil -} - -func (x *SubaccountHistoryResponse) GetPaging() *Paging { - if x != nil { - return x.Paging - } - return nil -} - -type SubaccountBalanceTransfer struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Type of the subaccount balance transfer - TransferType string `protobuf:"bytes,1,opt,name=transfer_type,json=transferType,proto3" json:"transfer_type,omitempty"` - // Subaccount ID of the sending side - SrcSubaccountId string `protobuf:"bytes,2,opt,name=src_subaccount_id,json=srcSubaccountId,proto3" json:"src_subaccount_id,omitempty"` - // Account address of the sending side - SrcAccountAddress string `protobuf:"bytes,3,opt,name=src_account_address,json=srcAccountAddress,proto3" json:"src_account_address,omitempty"` - // Subaccount ID of the receiving side - DstSubaccountId string `protobuf:"bytes,4,opt,name=dst_subaccount_id,json=dstSubaccountId,proto3" json:"dst_subaccount_id,omitempty"` - // Account address of the receiving side - DstAccountAddress string `protobuf:"bytes,5,opt,name=dst_account_address,json=dstAccountAddress,proto3" json:"dst_account_address,omitempty"` - // Coin amount of the transfer - Amount *CosmosCoin `protobuf:"bytes,6,opt,name=amount,proto3" json:"amount,omitempty"` - // Timestamp of the transfer in UNIX millis - ExecutedAt int64 `protobuf:"zigzag64,7,opt,name=executed_at,json=executedAt,proto3" json:"executed_at,omitempty"` -} - -func (x *SubaccountBalanceTransfer) Reset() { - *x = SubaccountBalanceTransfer{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[19] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SubaccountBalanceTransfer) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SubaccountBalanceTransfer) ProtoMessage() {} - -func (x *SubaccountBalanceTransfer) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[19] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SubaccountBalanceTransfer.ProtoReflect.Descriptor instead. -func (*SubaccountBalanceTransfer) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{19} -} - -func (x *SubaccountBalanceTransfer) GetTransferType() string { - if x != nil { - return x.TransferType - } - return "" -} - -func (x *SubaccountBalanceTransfer) GetSrcSubaccountId() string { - if x != nil { - return x.SrcSubaccountId - } - return "" -} - -func (x *SubaccountBalanceTransfer) GetSrcAccountAddress() string { - if x != nil { - return x.SrcAccountAddress - } - return "" -} - -func (x *SubaccountBalanceTransfer) GetDstSubaccountId() string { - if x != nil { - return x.DstSubaccountId - } - return "" -} - -func (x *SubaccountBalanceTransfer) GetDstAccountAddress() string { - if x != nil { - return x.DstAccountAddress - } - return "" -} - -func (x *SubaccountBalanceTransfer) GetAmount() *CosmosCoin { - if x != nil { - return x.Amount - } - return nil -} - -func (x *SubaccountBalanceTransfer) GetExecutedAt() int64 { - if x != nil { - return x.ExecutedAt - } - return 0 -} - -type CosmosCoin struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Coin denominator - Denom string `protobuf:"bytes,1,opt,name=denom,proto3" json:"denom,omitempty"` - // Coin amount (big int) - Amount string `protobuf:"bytes,2,opt,name=amount,proto3" json:"amount,omitempty"` -} - -func (x *CosmosCoin) Reset() { - *x = CosmosCoin{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[20] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *CosmosCoin) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CosmosCoin) ProtoMessage() {} - -func (x *CosmosCoin) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[20] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use CosmosCoin.ProtoReflect.Descriptor instead. -func (*CosmosCoin) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{20} -} - -func (x *CosmosCoin) GetDenom() string { - if x != nil { - return x.Denom - } - return "" -} - -func (x *CosmosCoin) GetAmount() string { - if x != nil { - return x.Amount - } - return "" -} - -// Paging defines the structure for required params for handling pagination -type Paging struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // total number of txs saved in database - Total int64 `protobuf:"zigzag64,1,opt,name=total,proto3" json:"total,omitempty"` - // can be either block height or index num - From int32 `protobuf:"zigzag32,2,opt,name=from,proto3" json:"from,omitempty"` - // can be either block height or index num - To int32 `protobuf:"zigzag32,3,opt,name=to,proto3" json:"to,omitempty"` - // count entries by subaccount, serving some places on helix - CountBySubaccount int64 `protobuf:"zigzag64,4,opt,name=count_by_subaccount,json=countBySubaccount,proto3" json:"count_by_subaccount,omitempty"` - // array of tokens to navigate to the next pages - Next []string `protobuf:"bytes,5,rep,name=next,proto3" json:"next,omitempty"` -} - -func (x *Paging) Reset() { - *x = Paging{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[21] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Paging) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Paging) ProtoMessage() {} - -func (x *Paging) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[21] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Paging.ProtoReflect.Descriptor instead. -func (*Paging) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{21} -} - -func (x *Paging) GetTotal() int64 { - if x != nil { - return x.Total - } - return 0 -} - -func (x *Paging) GetFrom() int32 { - if x != nil { - return x.From - } - return 0 -} - -func (x *Paging) GetTo() int32 { - if x != nil { - return x.To - } - return 0 -} - -func (x *Paging) GetCountBySubaccount() int64 { - if x != nil { - return x.CountBySubaccount - } - return 0 -} - -func (x *Paging) GetNext() []string { - if x != nil { - return x.Next - } - return nil -} - -type SubaccountOrderSummaryRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // SubaccountId of the trader we want to get the summary from - SubaccountId string `protobuf:"bytes,1,opt,name=subaccount_id,json=subaccountId,proto3" json:"subaccount_id,omitempty"` - // MarketId is limiting order summary to specific market only - MarketId string `protobuf:"bytes,2,opt,name=market_id,json=marketId,proto3" json:"market_id,omitempty"` - // Filter by direction of the orders - OrderDirection string `protobuf:"bytes,3,opt,name=order_direction,json=orderDirection,proto3" json:"order_direction,omitempty"` -} - -func (x *SubaccountOrderSummaryRequest) Reset() { - *x = SubaccountOrderSummaryRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[22] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SubaccountOrderSummaryRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SubaccountOrderSummaryRequest) ProtoMessage() {} - -func (x *SubaccountOrderSummaryRequest) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[22] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SubaccountOrderSummaryRequest.ProtoReflect.Descriptor instead. -func (*SubaccountOrderSummaryRequest) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{22} -} - -func (x *SubaccountOrderSummaryRequest) GetSubaccountId() string { - if x != nil { - return x.SubaccountId - } - return "" -} - -func (x *SubaccountOrderSummaryRequest) GetMarketId() string { - if x != nil { - return x.MarketId - } - return "" -} - -func (x *SubaccountOrderSummaryRequest) GetOrderDirection() string { - if x != nil { - return x.OrderDirection - } - return "" -} - -type SubaccountOrderSummaryResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Total count of subaccount's spot orders in given market and direction - SpotOrdersTotal int64 `protobuf:"zigzag64,1,opt,name=spot_orders_total,json=spotOrdersTotal,proto3" json:"spot_orders_total,omitempty"` - // Total count of subaccount's derivative orders in given market and direction - DerivativeOrdersTotal int64 `protobuf:"zigzag64,2,opt,name=derivative_orders_total,json=derivativeOrdersTotal,proto3" json:"derivative_orders_total,omitempty"` -} - -func (x *SubaccountOrderSummaryResponse) Reset() { - *x = SubaccountOrderSummaryResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[23] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SubaccountOrderSummaryResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SubaccountOrderSummaryResponse) ProtoMessage() {} - -func (x *SubaccountOrderSummaryResponse) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[23] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SubaccountOrderSummaryResponse.ProtoReflect.Descriptor instead. -func (*SubaccountOrderSummaryResponse) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{23} -} - -func (x *SubaccountOrderSummaryResponse) GetSpotOrdersTotal() int64 { - if x != nil { - return x.SpotOrdersTotal - } - return 0 -} - -func (x *SubaccountOrderSummaryResponse) GetDerivativeOrdersTotal() int64 { - if x != nil { - return x.DerivativeOrdersTotal - } - return 0 -} - -type RewardsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The distribution epoch sequence number. -1 for latest. - Epoch int64 `protobuf:"zigzag64,1,opt,name=epoch,proto3" json:"epoch,omitempty"` - // Account address for the rewards distribution - AccountAddress string `protobuf:"bytes,2,opt,name=account_address,json=accountAddress,proto3" json:"account_address,omitempty"` -} - -func (x *RewardsRequest) Reset() { - *x = RewardsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[24] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *RewardsRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RewardsRequest) ProtoMessage() {} - -func (x *RewardsRequest) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[24] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use RewardsRequest.ProtoReflect.Descriptor instead. -func (*RewardsRequest) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{24} -} - -func (x *RewardsRequest) GetEpoch() int64 { - if x != nil { - return x.Epoch - } - return 0 -} - -func (x *RewardsRequest) GetAccountAddress() string { - if x != nil { - return x.AccountAddress - } - return "" -} - -type RewardsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The trading rewards distributed - Rewards []*Reward `protobuf:"bytes,1,rep,name=rewards,proto3" json:"rewards,omitempty"` -} - -func (x *RewardsResponse) Reset() { - *x = RewardsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[25] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *RewardsResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RewardsResponse) ProtoMessage() {} - -func (x *RewardsResponse) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[25] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use RewardsResponse.ProtoReflect.Descriptor instead. -func (*RewardsResponse) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{25} -} - -func (x *RewardsResponse) GetRewards() []*Reward { - if x != nil { - return x.Rewards - } - return nil -} - -type Reward struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Account address - AccountAddress string `protobuf:"bytes,1,opt,name=account_address,json=accountAddress,proto3" json:"account_address,omitempty"` - // Reward coins distributed - Rewards []*Coin `protobuf:"bytes,2,rep,name=rewards,proto3" json:"rewards,omitempty"` - // Rewards distribution timestamp in UNIX millis. - DistributedAt int64 `protobuf:"zigzag64,3,opt,name=distributed_at,json=distributedAt,proto3" json:"distributed_at,omitempty"` -} - -func (x *Reward) Reset() { - *x = Reward{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[26] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Reward) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Reward) ProtoMessage() {} - -func (x *Reward) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[26] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Reward.ProtoReflect.Descriptor instead. -func (*Reward) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{26} -} - -func (x *Reward) GetAccountAddress() string { - if x != nil { - return x.AccountAddress - } - return "" -} - -func (x *Reward) GetRewards() []*Coin { - if x != nil { - return x.Rewards - } - return nil -} - -func (x *Reward) GetDistributedAt() int64 { - if x != nil { - return x.DistributedAt - } - return 0 -} - -type Coin struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Denom of the coin - Denom string `protobuf:"bytes,1,opt,name=denom,proto3" json:"denom,omitempty"` - Amount string `protobuf:"bytes,2,opt,name=amount,proto3" json:"amount,omitempty"` -} - -func (x *Coin) Reset() { - *x = Coin{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[27] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Coin) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Coin) ProtoMessage() {} - -func (x *Coin) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[27] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Coin.ProtoReflect.Descriptor instead. -func (*Coin) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{27} -} - -func (x *Coin) GetDenom() string { - if x != nil { - return x.Denom - } - return "" -} - -func (x *Coin) GetAmount() string { - if x != nil { - return x.Amount - } - return "" -} - -type StreamAccountDataRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // account address - AccountAddress string `protobuf:"bytes,1,opt,name=account_address,json=accountAddress,proto3" json:"account_address,omitempty"` -} - -func (x *StreamAccountDataRequest) Reset() { - *x = StreamAccountDataRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[28] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *StreamAccountDataRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*StreamAccountDataRequest) ProtoMessage() {} - -func (x *StreamAccountDataRequest) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[28] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use StreamAccountDataRequest.ProtoReflect.Descriptor instead. -func (*StreamAccountDataRequest) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{28} -} - -func (x *StreamAccountDataRequest) GetAccountAddress() string { - if x != nil { - return x.AccountAddress - } - return "" -} - -type StreamAccountDataResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - SubaccountBalance *SubaccountBalanceResult `protobuf:"bytes,1,opt,name=subaccount_balance,json=subaccountBalance,proto3" json:"subaccount_balance,omitempty"` - Position *PositionsResult `protobuf:"bytes,2,opt,name=position,proto3" json:"position,omitempty"` - Trade *TradeResult `protobuf:"bytes,3,opt,name=trade,proto3" json:"trade,omitempty"` - Order *OrderResult `protobuf:"bytes,4,opt,name=order,proto3" json:"order,omitempty"` - OrderHistory *OrderHistoryResult `protobuf:"bytes,5,opt,name=order_history,json=orderHistory,proto3" json:"order_history,omitempty"` - FundingPayment *FundingPaymentResult `protobuf:"bytes,6,opt,name=funding_payment,json=fundingPayment,proto3" json:"funding_payment,omitempty"` -} - -func (x *StreamAccountDataResponse) Reset() { - *x = StreamAccountDataResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[29] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *StreamAccountDataResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*StreamAccountDataResponse) ProtoMessage() {} - -func (x *StreamAccountDataResponse) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[29] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use StreamAccountDataResponse.ProtoReflect.Descriptor instead. -func (*StreamAccountDataResponse) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{29} -} - -func (x *StreamAccountDataResponse) GetSubaccountBalance() *SubaccountBalanceResult { - if x != nil { - return x.SubaccountBalance - } - return nil -} - -func (x *StreamAccountDataResponse) GetPosition() *PositionsResult { - if x != nil { - return x.Position - } - return nil -} - -func (x *StreamAccountDataResponse) GetTrade() *TradeResult { - if x != nil { - return x.Trade - } - return nil -} - -func (x *StreamAccountDataResponse) GetOrder() *OrderResult { - if x != nil { - return x.Order - } - return nil -} - -func (x *StreamAccountDataResponse) GetOrderHistory() *OrderHistoryResult { - if x != nil { - return x.OrderHistory - } - return nil -} - -func (x *StreamAccountDataResponse) GetFundingPayment() *FundingPaymentResult { - if x != nil { - return x.FundingPayment - } - return nil -} - -type SubaccountBalanceResult struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Subaccount balance - Balance *SubaccountBalance `protobuf:"bytes,1,opt,name=balance,proto3" json:"balance,omitempty"` - // Operation timestamp in UNIX millis. - Timestamp int64 `protobuf:"zigzag64,2,opt,name=timestamp,proto3" json:"timestamp,omitempty"` -} - -func (x *SubaccountBalanceResult) Reset() { - *x = SubaccountBalanceResult{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[30] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SubaccountBalanceResult) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SubaccountBalanceResult) ProtoMessage() {} - -func (x *SubaccountBalanceResult) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[30] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SubaccountBalanceResult.ProtoReflect.Descriptor instead. -func (*SubaccountBalanceResult) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{30} -} - -func (x *SubaccountBalanceResult) GetBalance() *SubaccountBalance { - if x != nil { - return x.Balance - } - return nil -} - -func (x *SubaccountBalanceResult) GetTimestamp() int64 { - if x != nil { - return x.Timestamp - } - return 0 -} - -type PositionsResult struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Updated derivative Position - Position *Position `protobuf:"bytes,1,opt,name=position,proto3" json:"position,omitempty"` - // Operation timestamp in UNIX millis. - Timestamp int64 `protobuf:"zigzag64,2,opt,name=timestamp,proto3" json:"timestamp,omitempty"` -} - -func (x *PositionsResult) Reset() { - *x = PositionsResult{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[31] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *PositionsResult) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PositionsResult) ProtoMessage() {} - -func (x *PositionsResult) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[31] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use PositionsResult.ProtoReflect.Descriptor instead. -func (*PositionsResult) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{31} -} - -func (x *PositionsResult) GetPosition() *Position { - if x != nil { - return x.Position - } - return nil -} - -func (x *PositionsResult) GetTimestamp() int64 { - if x != nil { - return x.Timestamp - } - return 0 -} - -type Position struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Ticker of the derivative market - Ticker string `protobuf:"bytes,1,opt,name=ticker,proto3" json:"ticker,omitempty"` - // Derivative Market ID - MarketId string `protobuf:"bytes,2,opt,name=market_id,json=marketId,proto3" json:"market_id,omitempty"` - // The subaccountId that the position belongs to - SubaccountId string `protobuf:"bytes,3,opt,name=subaccount_id,json=subaccountId,proto3" json:"subaccount_id,omitempty"` - // Direction of the position - Direction string `protobuf:"bytes,4,opt,name=direction,proto3" json:"direction,omitempty"` - // Quantity of the position - Quantity string `protobuf:"bytes,5,opt,name=quantity,proto3" json:"quantity,omitempty"` - // Price of the position - EntryPrice string `protobuf:"bytes,6,opt,name=entry_price,json=entryPrice,proto3" json:"entry_price,omitempty"` - // Margin of the position - Margin string `protobuf:"bytes,7,opt,name=margin,proto3" json:"margin,omitempty"` - // LiquidationPrice of the position - LiquidationPrice string `protobuf:"bytes,8,opt,name=liquidation_price,json=liquidationPrice,proto3" json:"liquidation_price,omitempty"` - // MarkPrice of the position - MarkPrice string `protobuf:"bytes,9,opt,name=mark_price,json=markPrice,proto3" json:"mark_price,omitempty"` - // Position updated timestamp in UNIX millis. - UpdatedAt int64 `protobuf:"zigzag64,10,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - // Position created timestamp in UNIX millis. - CreatedAt int64 `protobuf:"zigzag64,11,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` -} - -func (x *Position) Reset() { - *x = Position{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[32] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Position) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Position) ProtoMessage() {} - -func (x *Position) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[32] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Position.ProtoReflect.Descriptor instead. -func (*Position) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{32} -} - -func (x *Position) GetTicker() string { - if x != nil { - return x.Ticker - } - return "" -} - -func (x *Position) GetMarketId() string { - if x != nil { - return x.MarketId - } - return "" -} - -func (x *Position) GetSubaccountId() string { - if x != nil { - return x.SubaccountId - } - return "" -} - -func (x *Position) GetDirection() string { - if x != nil { - return x.Direction - } - return "" -} - -func (x *Position) GetQuantity() string { - if x != nil { - return x.Quantity - } - return "" -} - -func (x *Position) GetEntryPrice() string { - if x != nil { - return x.EntryPrice - } - return "" -} - -func (x *Position) GetMargin() string { - if x != nil { - return x.Margin - } - return "" -} - -func (x *Position) GetLiquidationPrice() string { - if x != nil { - return x.LiquidationPrice - } - return "" -} - -func (x *Position) GetMarkPrice() string { - if x != nil { - return x.MarkPrice - } - return "" -} - -func (x *Position) GetUpdatedAt() int64 { - if x != nil { - return x.UpdatedAt - } - return 0 -} - -func (x *Position) GetCreatedAt() int64 { - if x != nil { - return x.CreatedAt - } - return 0 -} - -type TradeResult struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to Trade: - // - // *TradeResult_SpotTrade - // *TradeResult_DerivativeTrade - Trade isTradeResult_Trade `protobuf_oneof:"trade"` - // Executed trades update type - OperationType string `protobuf:"bytes,3,opt,name=operation_type,json=operationType,proto3" json:"operation_type,omitempty"` - // Operation timestamp in UNIX millis. - Timestamp int64 `protobuf:"zigzag64,4,opt,name=timestamp,proto3" json:"timestamp,omitempty"` -} - -func (x *TradeResult) Reset() { - *x = TradeResult{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[33] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *TradeResult) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*TradeResult) ProtoMessage() {} - -func (x *TradeResult) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[33] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use TradeResult.ProtoReflect.Descriptor instead. -func (*TradeResult) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{33} -} - -func (m *TradeResult) GetTrade() isTradeResult_Trade { - if m != nil { - return m.Trade - } - return nil -} - -func (x *TradeResult) GetSpotTrade() *SpotTrade { - if x, ok := x.GetTrade().(*TradeResult_SpotTrade); ok { - return x.SpotTrade - } - return nil -} - -func (x *TradeResult) GetDerivativeTrade() *DerivativeTrade { - if x, ok := x.GetTrade().(*TradeResult_DerivativeTrade); ok { - return x.DerivativeTrade - } - return nil -} - -func (x *TradeResult) GetOperationType() string { - if x != nil { - return x.OperationType - } - return "" -} - -func (x *TradeResult) GetTimestamp() int64 { - if x != nil { - return x.Timestamp - } - return 0 -} - -type isTradeResult_Trade interface { - isTradeResult_Trade() -} - -type TradeResult_SpotTrade struct { - // New spot market trade - SpotTrade *SpotTrade `protobuf:"bytes,1,opt,name=spot_trade,json=spotTrade,proto3,oneof"` -} - -type TradeResult_DerivativeTrade struct { - // New derivative market trade - DerivativeTrade *DerivativeTrade `protobuf:"bytes,2,opt,name=derivative_trade,json=derivativeTrade,proto3,oneof"` -} - -func (*TradeResult_SpotTrade) isTradeResult_Trade() {} - -func (*TradeResult_DerivativeTrade) isTradeResult_Trade() {} - -type SpotTrade struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Maker order hash. - OrderHash string `protobuf:"bytes,1,opt,name=order_hash,json=orderHash,proto3" json:"order_hash,omitempty"` - // The subaccountId that executed the trade - SubaccountId string `protobuf:"bytes,2,opt,name=subaccount_id,json=subaccountId,proto3" json:"subaccount_id,omitempty"` - // The ID of the market that this trade is in - MarketId string `protobuf:"bytes,3,opt,name=market_id,json=marketId,proto3" json:"market_id,omitempty"` - // The execution type of the trade - TradeExecutionType string `protobuf:"bytes,4,opt,name=trade_execution_type,json=tradeExecutionType,proto3" json:"trade_execution_type,omitempty"` - // The direction the trade - TradeDirection string `protobuf:"bytes,5,opt,name=trade_direction,json=tradeDirection,proto3" json:"trade_direction,omitempty"` - // Price level at which trade has been executed - Price *PriceLevel `protobuf:"bytes,6,opt,name=price,proto3" json:"price,omitempty"` - // The fee associated with the trade (quote asset denom) - Fee string `protobuf:"bytes,7,opt,name=fee,proto3" json:"fee,omitempty"` - // Timestamp of trade execution in UNIX millis - ExecutedAt int64 `protobuf:"zigzag64,8,opt,name=executed_at,json=executedAt,proto3" json:"executed_at,omitempty"` - // Fee recipient address - FeeRecipient string `protobuf:"bytes,9,opt,name=fee_recipient,json=feeRecipient,proto3" json:"fee_recipient,omitempty"` - // A unique string that helps differentiate between trades - TradeId string `protobuf:"bytes,10,opt,name=trade_id,json=tradeId,proto3" json:"trade_id,omitempty"` - // Trade's execution side, marker/taker - ExecutionSide string `protobuf:"bytes,11,opt,name=execution_side,json=executionSide,proto3" json:"execution_side,omitempty"` - // Custom client order ID - Cid string `protobuf:"bytes,12,opt,name=cid,proto3" json:"cid,omitempty"` -} - -func (x *SpotTrade) Reset() { - *x = SpotTrade{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[34] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SpotTrade) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SpotTrade) ProtoMessage() {} - -func (x *SpotTrade) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[34] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SpotTrade.ProtoReflect.Descriptor instead. -func (*SpotTrade) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{34} -} - -func (x *SpotTrade) GetOrderHash() string { - if x != nil { - return x.OrderHash - } - return "" -} - -func (x *SpotTrade) GetSubaccountId() string { - if x != nil { - return x.SubaccountId - } - return "" -} - -func (x *SpotTrade) GetMarketId() string { - if x != nil { - return x.MarketId - } - return "" -} - -func (x *SpotTrade) GetTradeExecutionType() string { - if x != nil { - return x.TradeExecutionType - } - return "" -} - -func (x *SpotTrade) GetTradeDirection() string { - if x != nil { - return x.TradeDirection - } - return "" -} - -func (x *SpotTrade) GetPrice() *PriceLevel { - if x != nil { - return x.Price - } - return nil -} - -func (x *SpotTrade) GetFee() string { - if x != nil { - return x.Fee - } - return "" -} - -func (x *SpotTrade) GetExecutedAt() int64 { - if x != nil { - return x.ExecutedAt - } - return 0 -} - -func (x *SpotTrade) GetFeeRecipient() string { - if x != nil { - return x.FeeRecipient - } - return "" -} - -func (x *SpotTrade) GetTradeId() string { - if x != nil { - return x.TradeId - } - return "" -} - -func (x *SpotTrade) GetExecutionSide() string { - if x != nil { - return x.ExecutionSide - } - return "" -} - -func (x *SpotTrade) GetCid() string { - if x != nil { - return x.Cid - } - return "" -} - -type PriceLevel struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Price number of the price level. - Price string `protobuf:"bytes,1,opt,name=price,proto3" json:"price,omitempty"` - // Quantity of the price level. - Quantity string `protobuf:"bytes,2,opt,name=quantity,proto3" json:"quantity,omitempty"` - // Price level last updated timestamp in UNIX millis. - Timestamp int64 `protobuf:"zigzag64,3,opt,name=timestamp,proto3" json:"timestamp,omitempty"` -} - -func (x *PriceLevel) Reset() { - *x = PriceLevel{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[35] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *PriceLevel) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PriceLevel) ProtoMessage() {} - -func (x *PriceLevel) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[35] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use PriceLevel.ProtoReflect.Descriptor instead. -func (*PriceLevel) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{35} -} - -func (x *PriceLevel) GetPrice() string { - if x != nil { - return x.Price - } - return "" -} - -func (x *PriceLevel) GetQuantity() string { - if x != nil { - return x.Quantity - } - return "" -} - -func (x *PriceLevel) GetTimestamp() int64 { - if x != nil { - return x.Timestamp - } - return 0 -} - -type DerivativeTrade struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Order hash. - OrderHash string `protobuf:"bytes,1,opt,name=order_hash,json=orderHash,proto3" json:"order_hash,omitempty"` - // The subaccountId that executed the trade - SubaccountId string `protobuf:"bytes,2,opt,name=subaccount_id,json=subaccountId,proto3" json:"subaccount_id,omitempty"` - // The ID of the market that this trade is in - MarketId string `protobuf:"bytes,3,opt,name=market_id,json=marketId,proto3" json:"market_id,omitempty"` - // The execution type of the trade - TradeExecutionType string `protobuf:"bytes,4,opt,name=trade_execution_type,json=tradeExecutionType,proto3" json:"trade_execution_type,omitempty"` - // True if the trade is a liquidation - IsLiquidation bool `protobuf:"varint,5,opt,name=is_liquidation,json=isLiquidation,proto3" json:"is_liquidation,omitempty"` - // Position Delta from the trade - PositionDelta *PositionDelta `protobuf:"bytes,6,opt,name=position_delta,json=positionDelta,proto3" json:"position_delta,omitempty"` - // The payout associated with the trade - Payout string `protobuf:"bytes,7,opt,name=payout,proto3" json:"payout,omitempty"` - // The fee associated with the trade - Fee string `protobuf:"bytes,8,opt,name=fee,proto3" json:"fee,omitempty"` - // Timestamp of trade execution in UNIX millis - ExecutedAt int64 `protobuf:"zigzag64,9,opt,name=executed_at,json=executedAt,proto3" json:"executed_at,omitempty"` - // Fee recipient address - FeeRecipient string `protobuf:"bytes,10,opt,name=fee_recipient,json=feeRecipient,proto3" json:"fee_recipient,omitempty"` - // A unique string that helps differentiate between trades - TradeId string `protobuf:"bytes,11,opt,name=trade_id,json=tradeId,proto3" json:"trade_id,omitempty"` - // Trade's execution side, marker/taker - ExecutionSide string `protobuf:"bytes,12,opt,name=execution_side,json=executionSide,proto3" json:"execution_side,omitempty"` - // Custom client order ID - Cid string `protobuf:"bytes,13,opt,name=cid,proto3" json:"cid,omitempty"` -} - -func (x *DerivativeTrade) Reset() { - *x = DerivativeTrade{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[36] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *DerivativeTrade) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DerivativeTrade) ProtoMessage() {} - -func (x *DerivativeTrade) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[36] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DerivativeTrade.ProtoReflect.Descriptor instead. -func (*DerivativeTrade) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{36} -} - -func (x *DerivativeTrade) GetOrderHash() string { - if x != nil { - return x.OrderHash - } - return "" -} - -func (x *DerivativeTrade) GetSubaccountId() string { - if x != nil { - return x.SubaccountId - } - return "" -} - -func (x *DerivativeTrade) GetMarketId() string { - if x != nil { - return x.MarketId - } - return "" -} - -func (x *DerivativeTrade) GetTradeExecutionType() string { - if x != nil { - return x.TradeExecutionType - } - return "" -} - -func (x *DerivativeTrade) GetIsLiquidation() bool { - if x != nil { - return x.IsLiquidation - } - return false -} - -func (x *DerivativeTrade) GetPositionDelta() *PositionDelta { - if x != nil { - return x.PositionDelta - } - return nil -} - -func (x *DerivativeTrade) GetPayout() string { - if x != nil { - return x.Payout - } - return "" -} - -func (x *DerivativeTrade) GetFee() string { - if x != nil { - return x.Fee - } - return "" -} - -func (x *DerivativeTrade) GetExecutedAt() int64 { - if x != nil { - return x.ExecutedAt - } - return 0 -} - -func (x *DerivativeTrade) GetFeeRecipient() string { - if x != nil { - return x.FeeRecipient - } - return "" -} - -func (x *DerivativeTrade) GetTradeId() string { - if x != nil { - return x.TradeId - } - return "" -} - -func (x *DerivativeTrade) GetExecutionSide() string { - if x != nil { - return x.ExecutionSide - } - return "" -} - -func (x *DerivativeTrade) GetCid() string { - if x != nil { - return x.Cid - } - return "" -} - -type PositionDelta struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The direction the trade - TradeDirection string `protobuf:"bytes,1,opt,name=trade_direction,json=tradeDirection,proto3" json:"trade_direction,omitempty"` - // Execution Price of the trade. - ExecutionPrice string `protobuf:"bytes,2,opt,name=execution_price,json=executionPrice,proto3" json:"execution_price,omitempty"` - // Execution Quantity of the trade. - ExecutionQuantity string `protobuf:"bytes,3,opt,name=execution_quantity,json=executionQuantity,proto3" json:"execution_quantity,omitempty"` - // Execution Margin of the trade. - ExecutionMargin string `protobuf:"bytes,4,opt,name=execution_margin,json=executionMargin,proto3" json:"execution_margin,omitempty"` -} - -func (x *PositionDelta) Reset() { - *x = PositionDelta{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[37] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *PositionDelta) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PositionDelta) ProtoMessage() {} - -func (x *PositionDelta) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[37] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use PositionDelta.ProtoReflect.Descriptor instead. -func (*PositionDelta) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{37} -} - -func (x *PositionDelta) GetTradeDirection() string { - if x != nil { - return x.TradeDirection - } - return "" -} - -func (x *PositionDelta) GetExecutionPrice() string { - if x != nil { - return x.ExecutionPrice - } - return "" -} - -func (x *PositionDelta) GetExecutionQuantity() string { - if x != nil { - return x.ExecutionQuantity - } - return "" -} - -func (x *PositionDelta) GetExecutionMargin() string { - if x != nil { - return x.ExecutionMargin - } - return "" -} - -type OrderResult struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to Order: - // - // *OrderResult_SpotOrder - // *OrderResult_DerivativeOrder - Order isOrderResult_Order `protobuf_oneof:"order"` - // Executed orders update type - OperationType string `protobuf:"bytes,3,opt,name=operation_type,json=operationType,proto3" json:"operation_type,omitempty"` - // Operation timestamp in UNIX millis. - Timestamp int64 `protobuf:"zigzag64,4,opt,name=timestamp,proto3" json:"timestamp,omitempty"` -} - -func (x *OrderResult) Reset() { - *x = OrderResult{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[38] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *OrderResult) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*OrderResult) ProtoMessage() {} - -func (x *OrderResult) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[38] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use OrderResult.ProtoReflect.Descriptor instead. -func (*OrderResult) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{38} -} - -func (m *OrderResult) GetOrder() isOrderResult_Order { - if m != nil { - return m.Order - } - return nil -} - -func (x *OrderResult) GetSpotOrder() *SpotLimitOrder { - if x, ok := x.GetOrder().(*OrderResult_SpotOrder); ok { - return x.SpotOrder - } - return nil -} - -func (x *OrderResult) GetDerivativeOrder() *DerivativeLimitOrder { - if x, ok := x.GetOrder().(*OrderResult_DerivativeOrder); ok { - return x.DerivativeOrder - } - return nil -} - -func (x *OrderResult) GetOperationType() string { - if x != nil { - return x.OperationType - } - return "" -} - -func (x *OrderResult) GetTimestamp() int64 { - if x != nil { - return x.Timestamp - } - return 0 -} - -type isOrderResult_Order interface { - isOrderResult_Order() -} - -type OrderResult_SpotOrder struct { - // Updated spot market order - SpotOrder *SpotLimitOrder `protobuf:"bytes,1,opt,name=spot_order,json=spotOrder,proto3,oneof"` -} - -type OrderResult_DerivativeOrder struct { - // Updated derivative market order - DerivativeOrder *DerivativeLimitOrder `protobuf:"bytes,2,opt,name=derivative_order,json=derivativeOrder,proto3,oneof"` -} - -func (*OrderResult_SpotOrder) isOrderResult_Order() {} - -func (*OrderResult_DerivativeOrder) isOrderResult_Order() {} - -type SpotLimitOrder struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Hash of the order - OrderHash string `protobuf:"bytes,1,opt,name=order_hash,json=orderHash,proto3" json:"order_hash,omitempty"` - // The side of the order - OrderSide string `protobuf:"bytes,2,opt,name=order_side,json=orderSide,proto3" json:"order_side,omitempty"` - // Spot Market ID is keccak265(baseDenom + quoteDenom) - MarketId string `protobuf:"bytes,3,opt,name=market_id,json=marketId,proto3" json:"market_id,omitempty"` - // The subaccountId that this order belongs to - SubaccountId string `protobuf:"bytes,4,opt,name=subaccount_id,json=subaccountId,proto3" json:"subaccount_id,omitempty"` - // Price of the order - Price string `protobuf:"bytes,5,opt,name=price,proto3" json:"price,omitempty"` - // Quantity of the order - Quantity string `protobuf:"bytes,6,opt,name=quantity,proto3" json:"quantity,omitempty"` - // The amount of the quantity remaining unfilled - UnfilledQuantity string `protobuf:"bytes,7,opt,name=unfilled_quantity,json=unfilledQuantity,proto3" json:"unfilled_quantity,omitempty"` - // Trigger price is the trigger price used by stop/take orders. 0 if the - // trigger price is not set. - TriggerPrice string `protobuf:"bytes,8,opt,name=trigger_price,json=triggerPrice,proto3" json:"trigger_price,omitempty"` - // Fee recipient address - FeeRecipient string `protobuf:"bytes,9,opt,name=fee_recipient,json=feeRecipient,proto3" json:"fee_recipient,omitempty"` - // Order state - State string `protobuf:"bytes,10,opt,name=state,proto3" json:"state,omitempty"` - // Order committed timestamp in UNIX millis. - CreatedAt int64 `protobuf:"zigzag64,11,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - // Order updated timestamp in UNIX millis. - UpdatedAt int64 `protobuf:"zigzag64,12,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - // Transaction Hash where order is created. Not all orders have this field - TxHash string `protobuf:"bytes,13,opt,name=tx_hash,json=txHash,proto3" json:"tx_hash,omitempty"` - // Custom client order ID - Cid string `protobuf:"bytes,14,opt,name=cid,proto3" json:"cid,omitempty"` -} - -func (x *SpotLimitOrder) Reset() { - *x = SpotLimitOrder{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[39] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SpotLimitOrder) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SpotLimitOrder) ProtoMessage() {} - -func (x *SpotLimitOrder) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[39] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SpotLimitOrder.ProtoReflect.Descriptor instead. -func (*SpotLimitOrder) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{39} -} - -func (x *SpotLimitOrder) GetOrderHash() string { - if x != nil { - return x.OrderHash - } - return "" -} - -func (x *SpotLimitOrder) GetOrderSide() string { - if x != nil { - return x.OrderSide - } - return "" -} - -func (x *SpotLimitOrder) GetMarketId() string { - if x != nil { - return x.MarketId - } - return "" -} - -func (x *SpotLimitOrder) GetSubaccountId() string { - if x != nil { - return x.SubaccountId - } - return "" -} - -func (x *SpotLimitOrder) GetPrice() string { - if x != nil { - return x.Price - } - return "" -} - -func (x *SpotLimitOrder) GetQuantity() string { - if x != nil { - return x.Quantity - } - return "" -} - -func (x *SpotLimitOrder) GetUnfilledQuantity() string { - if x != nil { - return x.UnfilledQuantity - } - return "" -} - -func (x *SpotLimitOrder) GetTriggerPrice() string { - if x != nil { - return x.TriggerPrice - } - return "" -} - -func (x *SpotLimitOrder) GetFeeRecipient() string { - if x != nil { - return x.FeeRecipient - } - return "" -} - -func (x *SpotLimitOrder) GetState() string { - if x != nil { - return x.State - } - return "" -} - -func (x *SpotLimitOrder) GetCreatedAt() int64 { - if x != nil { - return x.CreatedAt - } - return 0 -} - -func (x *SpotLimitOrder) GetUpdatedAt() int64 { - if x != nil { - return x.UpdatedAt - } - return 0 -} - -func (x *SpotLimitOrder) GetTxHash() string { - if x != nil { - return x.TxHash - } - return "" -} - -func (x *SpotLimitOrder) GetCid() string { - if x != nil { - return x.Cid - } - return "" -} - -type DerivativeLimitOrder struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Hash of the order - OrderHash string `protobuf:"bytes,1,opt,name=order_hash,json=orderHash,proto3" json:"order_hash,omitempty"` - // The side of the order - OrderSide string `protobuf:"bytes,2,opt,name=order_side,json=orderSide,proto3" json:"order_side,omitempty"` - // Derivative Market ID - MarketId string `protobuf:"bytes,3,opt,name=market_id,json=marketId,proto3" json:"market_id,omitempty"` - // The subaccountId that this order belongs to - SubaccountId string `protobuf:"bytes,4,opt,name=subaccount_id,json=subaccountId,proto3" json:"subaccount_id,omitempty"` - // True if the order is a reduce-only order - IsReduceOnly bool `protobuf:"varint,5,opt,name=is_reduce_only,json=isReduceOnly,proto3" json:"is_reduce_only,omitempty"` - // Margin of the order - Margin string `protobuf:"bytes,6,opt,name=margin,proto3" json:"margin,omitempty"` - // Price of the order - Price string `protobuf:"bytes,7,opt,name=price,proto3" json:"price,omitempty"` - // Quantity of the order - Quantity string `protobuf:"bytes,8,opt,name=quantity,proto3" json:"quantity,omitempty"` - // The amount of the quantity remaining unfilled - UnfilledQuantity string `protobuf:"bytes,9,opt,name=unfilled_quantity,json=unfilledQuantity,proto3" json:"unfilled_quantity,omitempty"` - // Trigger price is the trigger price used by stop/take orders - TriggerPrice string `protobuf:"bytes,10,opt,name=trigger_price,json=triggerPrice,proto3" json:"trigger_price,omitempty"` - // Fee recipient address - FeeRecipient string `protobuf:"bytes,11,opt,name=fee_recipient,json=feeRecipient,proto3" json:"fee_recipient,omitempty"` - // Order state - State string `protobuf:"bytes,12,opt,name=state,proto3" json:"state,omitempty"` - // Order committed timestamp in UNIX millis. - CreatedAt int64 `protobuf:"zigzag64,13,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - // Order updated timestamp in UNIX millis. - UpdatedAt int64 `protobuf:"zigzag64,14,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - // Order number of subaccount - OrderNumber int64 `protobuf:"zigzag64,15,opt,name=order_number,json=orderNumber,proto3" json:"order_number,omitempty"` - // Order type - OrderType string `protobuf:"bytes,16,opt,name=order_type,json=orderType,proto3" json:"order_type,omitempty"` - // Order type - IsConditional bool `protobuf:"varint,17,opt,name=is_conditional,json=isConditional,proto3" json:"is_conditional,omitempty"` - // Trigger timestamp, only exists for conditional orders - TriggerAt uint64 `protobuf:"varint,18,opt,name=trigger_at,json=triggerAt,proto3" json:"trigger_at,omitempty"` - // OrderHash of order that is triggered by this conditional order - PlacedOrderHash string `protobuf:"bytes,19,opt,name=placed_order_hash,json=placedOrderHash,proto3" json:"placed_order_hash,omitempty"` - // Execution type of conditional order - ExecutionType string `protobuf:"bytes,20,opt,name=execution_type,json=executionType,proto3" json:"execution_type,omitempty"` - // Transaction Hash where order is created. Not all orders have this field - TxHash string `protobuf:"bytes,21,opt,name=tx_hash,json=txHash,proto3" json:"tx_hash,omitempty"` - // Custom client order ID - Cid string `protobuf:"bytes,22,opt,name=cid,proto3" json:"cid,omitempty"` -} - -func (x *DerivativeLimitOrder) Reset() { - *x = DerivativeLimitOrder{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[40] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *DerivativeLimitOrder) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DerivativeLimitOrder) ProtoMessage() {} - -func (x *DerivativeLimitOrder) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[40] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DerivativeLimitOrder.ProtoReflect.Descriptor instead. -func (*DerivativeLimitOrder) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{40} -} - -func (x *DerivativeLimitOrder) GetOrderHash() string { - if x != nil { - return x.OrderHash - } - return "" -} - -func (x *DerivativeLimitOrder) GetOrderSide() string { - if x != nil { - return x.OrderSide - } - return "" -} - -func (x *DerivativeLimitOrder) GetMarketId() string { - if x != nil { - return x.MarketId - } - return "" -} - -func (x *DerivativeLimitOrder) GetSubaccountId() string { - if x != nil { - return x.SubaccountId - } - return "" -} - -func (x *DerivativeLimitOrder) GetIsReduceOnly() bool { - if x != nil { - return x.IsReduceOnly - } - return false -} - -func (x *DerivativeLimitOrder) GetMargin() string { - if x != nil { - return x.Margin - } - return "" -} - -func (x *DerivativeLimitOrder) GetPrice() string { - if x != nil { - return x.Price - } - return "" -} - -func (x *DerivativeLimitOrder) GetQuantity() string { - if x != nil { - return x.Quantity - } - return "" -} - -func (x *DerivativeLimitOrder) GetUnfilledQuantity() string { - if x != nil { - return x.UnfilledQuantity - } - return "" -} - -func (x *DerivativeLimitOrder) GetTriggerPrice() string { - if x != nil { - return x.TriggerPrice - } - return "" -} - -func (x *DerivativeLimitOrder) GetFeeRecipient() string { - if x != nil { - return x.FeeRecipient - } - return "" -} - -func (x *DerivativeLimitOrder) GetState() string { - if x != nil { - return x.State - } - return "" -} - -func (x *DerivativeLimitOrder) GetCreatedAt() int64 { - if x != nil { - return x.CreatedAt - } - return 0 -} - -func (x *DerivativeLimitOrder) GetUpdatedAt() int64 { - if x != nil { - return x.UpdatedAt - } - return 0 -} - -func (x *DerivativeLimitOrder) GetOrderNumber() int64 { - if x != nil { - return x.OrderNumber - } - return 0 -} - -func (x *DerivativeLimitOrder) GetOrderType() string { - if x != nil { - return x.OrderType - } - return "" -} - -func (x *DerivativeLimitOrder) GetIsConditional() bool { - if x != nil { - return x.IsConditional - } - return false -} - -func (x *DerivativeLimitOrder) GetTriggerAt() uint64 { - if x != nil { - return x.TriggerAt - } - return 0 -} - -func (x *DerivativeLimitOrder) GetPlacedOrderHash() string { - if x != nil { - return x.PlacedOrderHash - } - return "" -} - -func (x *DerivativeLimitOrder) GetExecutionType() string { - if x != nil { - return x.ExecutionType - } - return "" -} - -func (x *DerivativeLimitOrder) GetTxHash() string { - if x != nil { - return x.TxHash - } - return "" -} - -func (x *DerivativeLimitOrder) GetCid() string { - if x != nil { - return x.Cid - } - return "" -} - -type OrderHistoryResult struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to OrderHistory: - // - // *OrderHistoryResult_SpotOrderHistory - // *OrderHistoryResult_DerivativeOrderHistory - OrderHistory isOrderHistoryResult_OrderHistory `protobuf_oneof:"order_history"` - // Order update type - OperationType string `protobuf:"bytes,3,opt,name=operation_type,json=operationType,proto3" json:"operation_type,omitempty"` - // Operation timestamp in UNIX millis. - Timestamp int64 `protobuf:"zigzag64,4,opt,name=timestamp,proto3" json:"timestamp,omitempty"` -} - -func (x *OrderHistoryResult) Reset() { - *x = OrderHistoryResult{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[41] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *OrderHistoryResult) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*OrderHistoryResult) ProtoMessage() {} - -func (x *OrderHistoryResult) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[41] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use OrderHistoryResult.ProtoReflect.Descriptor instead. -func (*OrderHistoryResult) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{41} -} - -func (m *OrderHistoryResult) GetOrderHistory() isOrderHistoryResult_OrderHistory { - if m != nil { - return m.OrderHistory - } - return nil -} - -func (x *OrderHistoryResult) GetSpotOrderHistory() *SpotOrderHistory { - if x, ok := x.GetOrderHistory().(*OrderHistoryResult_SpotOrderHistory); ok { - return x.SpotOrderHistory - } - return nil -} - -func (x *OrderHistoryResult) GetDerivativeOrderHistory() *DerivativeOrderHistory { - if x, ok := x.GetOrderHistory().(*OrderHistoryResult_DerivativeOrderHistory); ok { - return x.DerivativeOrderHistory - } - return nil -} - -func (x *OrderHistoryResult) GetOperationType() string { - if x != nil { - return x.OperationType - } - return "" -} - -func (x *OrderHistoryResult) GetTimestamp() int64 { - if x != nil { - return x.Timestamp - } - return 0 -} - -type isOrderHistoryResult_OrderHistory interface { - isOrderHistoryResult_OrderHistory() -} - -type OrderHistoryResult_SpotOrderHistory struct { - // Spot order history - SpotOrderHistory *SpotOrderHistory `protobuf:"bytes,1,opt,name=spot_order_history,json=spotOrderHistory,proto3,oneof"` -} - -type OrderHistoryResult_DerivativeOrderHistory struct { - // Derivative order history - DerivativeOrderHistory *DerivativeOrderHistory `protobuf:"bytes,2,opt,name=derivative_order_history,json=derivativeOrderHistory,proto3,oneof"` -} - -func (*OrderHistoryResult_SpotOrderHistory) isOrderHistoryResult_OrderHistory() {} - -func (*OrderHistoryResult_DerivativeOrderHistory) isOrderHistoryResult_OrderHistory() {} - -type SpotOrderHistory struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Hash of the order - OrderHash string `protobuf:"bytes,1,opt,name=order_hash,json=orderHash,proto3" json:"order_hash,omitempty"` - // Spot Market ID is keccak265(baseDenom + quoteDenom) - MarketId string `protobuf:"bytes,2,opt,name=market_id,json=marketId,proto3" json:"market_id,omitempty"` - // active state of the order - IsActive bool `protobuf:"varint,3,opt,name=is_active,json=isActive,proto3" json:"is_active,omitempty"` - // The subaccountId that this order belongs to - SubaccountId string `protobuf:"bytes,4,opt,name=subaccount_id,json=subaccountId,proto3" json:"subaccount_id,omitempty"` - // The execution type - ExecutionType string `protobuf:"bytes,5,opt,name=execution_type,json=executionType,proto3" json:"execution_type,omitempty"` - // The side of the order - OrderType string `protobuf:"bytes,6,opt,name=order_type,json=orderType,proto3" json:"order_type,omitempty"` - // Price of the order - Price string `protobuf:"bytes,7,opt,name=price,proto3" json:"price,omitempty"` - // Trigger price - TriggerPrice string `protobuf:"bytes,8,opt,name=trigger_price,json=triggerPrice,proto3" json:"trigger_price,omitempty"` - // Quantity of the order - Quantity string `protobuf:"bytes,9,opt,name=quantity,proto3" json:"quantity,omitempty"` - // Filled amount - FilledQuantity string `protobuf:"bytes,10,opt,name=filled_quantity,json=filledQuantity,proto3" json:"filled_quantity,omitempty"` - // Order state - State string `protobuf:"bytes,11,opt,name=state,proto3" json:"state,omitempty"` - // Order committed timestamp in UNIX millis. - CreatedAt int64 `protobuf:"zigzag64,12,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - // Order updated timestamp in UNIX millis. - UpdatedAt int64 `protobuf:"zigzag64,13,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - // Order direction (order side) - Direction string `protobuf:"bytes,14,opt,name=direction,proto3" json:"direction,omitempty"` - // Transaction Hash where order is created. Not all orders have this field - TxHash string `protobuf:"bytes,15,opt,name=tx_hash,json=txHash,proto3" json:"tx_hash,omitempty"` - // Custom client order ID - Cid string `protobuf:"bytes,16,opt,name=cid,proto3" json:"cid,omitempty"` -} - -func (x *SpotOrderHistory) Reset() { - *x = SpotOrderHistory{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[42] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SpotOrderHistory) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SpotOrderHistory) ProtoMessage() {} - -func (x *SpotOrderHistory) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[42] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SpotOrderHistory.ProtoReflect.Descriptor instead. -func (*SpotOrderHistory) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{42} -} - -func (x *SpotOrderHistory) GetOrderHash() string { - if x != nil { - return x.OrderHash - } - return "" -} - -func (x *SpotOrderHistory) GetMarketId() string { - if x != nil { - return x.MarketId - } - return "" -} - -func (x *SpotOrderHistory) GetIsActive() bool { - if x != nil { - return x.IsActive - } - return false -} - -func (x *SpotOrderHistory) GetSubaccountId() string { - if x != nil { - return x.SubaccountId - } - return "" -} - -func (x *SpotOrderHistory) GetExecutionType() string { - if x != nil { - return x.ExecutionType - } - return "" -} - -func (x *SpotOrderHistory) GetOrderType() string { - if x != nil { - return x.OrderType - } - return "" -} - -func (x *SpotOrderHistory) GetPrice() string { - if x != nil { - return x.Price - } - return "" -} - -func (x *SpotOrderHistory) GetTriggerPrice() string { - if x != nil { - return x.TriggerPrice - } - return "" -} - -func (x *SpotOrderHistory) GetQuantity() string { - if x != nil { - return x.Quantity - } - return "" -} - -func (x *SpotOrderHistory) GetFilledQuantity() string { - if x != nil { - return x.FilledQuantity - } - return "" -} - -func (x *SpotOrderHistory) GetState() string { - if x != nil { - return x.State - } - return "" -} - -func (x *SpotOrderHistory) GetCreatedAt() int64 { - if x != nil { - return x.CreatedAt - } - return 0 -} - -func (x *SpotOrderHistory) GetUpdatedAt() int64 { - if x != nil { - return x.UpdatedAt - } - return 0 -} - -func (x *SpotOrderHistory) GetDirection() string { - if x != nil { - return x.Direction - } - return "" -} - -func (x *SpotOrderHistory) GetTxHash() string { - if x != nil { - return x.TxHash - } - return "" -} - -func (x *SpotOrderHistory) GetCid() string { - if x != nil { - return x.Cid - } - return "" -} - -type DerivativeOrderHistory struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Hash of the order - OrderHash string `protobuf:"bytes,1,opt,name=order_hash,json=orderHash,proto3" json:"order_hash,omitempty"` - // Spot Market ID is keccak265(baseDenom + quoteDenom) - MarketId string `protobuf:"bytes,2,opt,name=market_id,json=marketId,proto3" json:"market_id,omitempty"` - // active state of the order - IsActive bool `protobuf:"varint,3,opt,name=is_active,json=isActive,proto3" json:"is_active,omitempty"` - // The subaccountId that this order belongs to - SubaccountId string `protobuf:"bytes,4,opt,name=subaccount_id,json=subaccountId,proto3" json:"subaccount_id,omitempty"` - // The execution type - ExecutionType string `protobuf:"bytes,5,opt,name=execution_type,json=executionType,proto3" json:"execution_type,omitempty"` - // The side of the order - OrderType string `protobuf:"bytes,6,opt,name=order_type,json=orderType,proto3" json:"order_type,omitempty"` - // Price of the order - Price string `protobuf:"bytes,7,opt,name=price,proto3" json:"price,omitempty"` - // Trigger price - TriggerPrice string `protobuf:"bytes,8,opt,name=trigger_price,json=triggerPrice,proto3" json:"trigger_price,omitempty"` - // Quantity of the order - Quantity string `protobuf:"bytes,9,opt,name=quantity,proto3" json:"quantity,omitempty"` - // Filled amount - FilledQuantity string `protobuf:"bytes,10,opt,name=filled_quantity,json=filledQuantity,proto3" json:"filled_quantity,omitempty"` - // Order state - State string `protobuf:"bytes,11,opt,name=state,proto3" json:"state,omitempty"` - // Order committed timestamp in UNIX millis. - CreatedAt int64 `protobuf:"zigzag64,12,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - // Order updated timestamp in UNIX millis. - UpdatedAt int64 `protobuf:"zigzag64,13,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - // True if an order is reduce only - IsReduceOnly bool `protobuf:"varint,14,opt,name=is_reduce_only,json=isReduceOnly,proto3" json:"is_reduce_only,omitempty"` - // Order direction (order side) - Direction string `protobuf:"bytes,15,opt,name=direction,proto3" json:"direction,omitempty"` - // True if this is conditional order, otherwise false - IsConditional bool `protobuf:"varint,16,opt,name=is_conditional,json=isConditional,proto3" json:"is_conditional,omitempty"` - // Trigger timestamp in unix milli - TriggerAt uint64 `protobuf:"varint,17,opt,name=trigger_at,json=triggerAt,proto3" json:"trigger_at,omitempty"` - // Order hash placed when this triggers - PlacedOrderHash string `protobuf:"bytes,18,opt,name=placed_order_hash,json=placedOrderHash,proto3" json:"placed_order_hash,omitempty"` - // Order's margin - Margin string `protobuf:"bytes,19,opt,name=margin,proto3" json:"margin,omitempty"` - // Transaction Hash where order is created. Not all orders have this field - TxHash string `protobuf:"bytes,20,opt,name=tx_hash,json=txHash,proto3" json:"tx_hash,omitempty"` - // Custom client order ID - Cid string `protobuf:"bytes,21,opt,name=cid,proto3" json:"cid,omitempty"` -} - -func (x *DerivativeOrderHistory) Reset() { - *x = DerivativeOrderHistory{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[43] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *DerivativeOrderHistory) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DerivativeOrderHistory) ProtoMessage() {} - -func (x *DerivativeOrderHistory) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[43] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DerivativeOrderHistory.ProtoReflect.Descriptor instead. -func (*DerivativeOrderHistory) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{43} -} - -func (x *DerivativeOrderHistory) GetOrderHash() string { - if x != nil { - return x.OrderHash - } - return "" -} - -func (x *DerivativeOrderHistory) GetMarketId() string { - if x != nil { - return x.MarketId - } - return "" -} - -func (x *DerivativeOrderHistory) GetIsActive() bool { - if x != nil { - return x.IsActive - } - return false -} - -func (x *DerivativeOrderHistory) GetSubaccountId() string { - if x != nil { - return x.SubaccountId - } - return "" -} - -func (x *DerivativeOrderHistory) GetExecutionType() string { - if x != nil { - return x.ExecutionType - } - return "" -} - -func (x *DerivativeOrderHistory) GetOrderType() string { - if x != nil { - return x.OrderType - } - return "" -} - -func (x *DerivativeOrderHistory) GetPrice() string { - if x != nil { - return x.Price - } - return "" -} - -func (x *DerivativeOrderHistory) GetTriggerPrice() string { - if x != nil { - return x.TriggerPrice - } - return "" -} - -func (x *DerivativeOrderHistory) GetQuantity() string { - if x != nil { - return x.Quantity - } - return "" -} - -func (x *DerivativeOrderHistory) GetFilledQuantity() string { - if x != nil { - return x.FilledQuantity - } - return "" -} - -func (x *DerivativeOrderHistory) GetState() string { - if x != nil { - return x.State - } - return "" -} - -func (x *DerivativeOrderHistory) GetCreatedAt() int64 { - if x != nil { - return x.CreatedAt - } - return 0 -} - -func (x *DerivativeOrderHistory) GetUpdatedAt() int64 { - if x != nil { - return x.UpdatedAt - } - return 0 -} - -func (x *DerivativeOrderHistory) GetIsReduceOnly() bool { - if x != nil { - return x.IsReduceOnly - } - return false -} - -func (x *DerivativeOrderHistory) GetDirection() string { - if x != nil { - return x.Direction - } - return "" -} - -func (x *DerivativeOrderHistory) GetIsConditional() bool { - if x != nil { - return x.IsConditional - } - return false -} - -func (x *DerivativeOrderHistory) GetTriggerAt() uint64 { - if x != nil { - return x.TriggerAt - } - return 0 -} - -func (x *DerivativeOrderHistory) GetPlacedOrderHash() string { - if x != nil { - return x.PlacedOrderHash - } - return "" -} - -func (x *DerivativeOrderHistory) GetMargin() string { - if x != nil { - return x.Margin - } - return "" -} - -func (x *DerivativeOrderHistory) GetTxHash() string { - if x != nil { - return x.TxHash - } - return "" -} - -func (x *DerivativeOrderHistory) GetCid() string { - if x != nil { - return x.Cid - } - return "" -} - -type FundingPaymentResult struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Funding payments of the account - FundingPayments *FundingPayment `protobuf:"bytes,1,opt,name=funding_payments,json=fundingPayments,proto3" json:"funding_payments,omitempty"` - // Funding payments type - OperationType string `protobuf:"bytes,2,opt,name=operation_type,json=operationType,proto3" json:"operation_type,omitempty"` - // Operation timestamp in UNIX millis. - Timestamp int64 `protobuf:"zigzag64,4,opt,name=timestamp,proto3" json:"timestamp,omitempty"` -} - -func (x *FundingPaymentResult) Reset() { - *x = FundingPaymentResult{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[44] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *FundingPaymentResult) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*FundingPaymentResult) ProtoMessage() {} - -func (x *FundingPaymentResult) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[44] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use FundingPaymentResult.ProtoReflect.Descriptor instead. -func (*FundingPaymentResult) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{44} -} - -func (x *FundingPaymentResult) GetFundingPayments() *FundingPayment { - if x != nil { - return x.FundingPayments - } - return nil -} - -func (x *FundingPaymentResult) GetOperationType() string { - if x != nil { - return x.OperationType - } - return "" -} - -func (x *FundingPaymentResult) GetTimestamp() int64 { - if x != nil { - return x.Timestamp - } - return 0 -} - -type FundingPayment struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Derivative Market ID - MarketId string `protobuf:"bytes,1,opt,name=market_id,json=marketId,proto3" json:"market_id,omitempty"` - // The subaccountId that the position belongs to - SubaccountId string `protobuf:"bytes,2,opt,name=subaccount_id,json=subaccountId,proto3" json:"subaccount_id,omitempty"` - // Amount of the funding payment - Amount string `protobuf:"bytes,3,opt,name=amount,proto3" json:"amount,omitempty"` - // Timestamp of funding payment in UNIX millis - Timestamp int64 `protobuf:"zigzag64,4,opt,name=timestamp,proto3" json:"timestamp,omitempty"` -} - -func (x *FundingPayment) Reset() { - *x = FundingPayment{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[45] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *FundingPayment) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*FundingPayment) ProtoMessage() {} - -func (x *FundingPayment) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[45] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use FundingPayment.ProtoReflect.Descriptor instead. -func (*FundingPayment) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{45} -} - -func (x *FundingPayment) GetMarketId() string { - if x != nil { - return x.MarketId - } - return "" -} - -func (x *FundingPayment) GetSubaccountId() string { - if x != nil { - return x.SubaccountId - } - return "" -} - -func (x *FundingPayment) GetAmount() string { - if x != nil { - return x.Amount - } - return "" -} - -func (x *FundingPayment) GetTimestamp() int64 { - if x != nil { - return x.Timestamp - } - return 0 -} - -var File_goadesign_goagen_injective_accounts_rpc_proto protoreflect.FileDescriptor - -var file_goadesign_goagen_injective_accounts_rpc_proto_rawDesc = []byte{ - 0x0a, 0x2d, 0x67, 0x6f, 0x61, 0x64, 0x65, 0x73, 0x69, 0x67, 0x6e, 0x5f, 0x67, 0x6f, 0x61, 0x67, - 0x65, 0x6e, 0x5f, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, - 0x16, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x73, 0x5f, 0x72, 0x70, 0x63, 0x22, 0x3b, 0x0a, 0x10, 0x50, 0x6f, 0x72, 0x74, 0x66, - 0x6f, 0x6c, 0x69, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x61, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x22, 0x5b, 0x0a, 0x11, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, - 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x09, 0x70, 0x6f, 0x72, - 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x69, - 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x73, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x6f, 0x72, - 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x52, 0x09, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, - 0x6f, 0x22, 0x85, 0x02, 0x0a, 0x10, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x6f, 0x72, - 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, - 0x6c, 0x69, 0x6f, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0e, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, - 0x2b, 0x0a, 0x11, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x62, 0x61, 0x6c, - 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x61, 0x76, 0x61, 0x69, - 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x25, 0x0a, 0x0e, - 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x42, 0x61, 0x6c, 0x61, - 0x6e, 0x63, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x75, 0x6e, 0x72, 0x65, 0x61, 0x6c, 0x69, 0x7a, 0x65, - 0x64, 0x5f, 0x70, 0x6e, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x75, 0x6e, 0x72, - 0x65, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x50, 0x6e, 0x6c, 0x12, 0x4d, 0x0a, 0x0b, 0x73, 0x75, - 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x2b, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x73, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x52, 0x0b, 0x73, 0x75, - 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x22, 0xb5, 0x01, 0x0a, 0x13, 0x53, 0x75, - 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, - 0x6f, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x11, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, - 0x62, 0x6c, 0x65, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x10, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x61, 0x6c, 0x61, - 0x6e, 0x63, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x62, 0x61, - 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6c, 0x6f, 0x63, - 0x6b, 0x65, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x75, 0x6e, - 0x72, 0x65, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x70, 0x6e, 0x6c, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0d, 0x75, 0x6e, 0x72, 0x65, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x50, 0x6e, - 0x6c, 0x22, 0x78, 0x0a, 0x12, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x11, 0x73, 0x70, 0x6f, 0x74, 0x5f, - 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x0f, 0x73, 0x70, 0x6f, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x48, 0x61, 0x73, - 0x68, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x17, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, - 0x65, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x65, 0x73, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x15, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, - 0x4f, 0x72, 0x64, 0x65, 0x72, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x22, 0xcd, 0x01, 0x0a, 0x13, - 0x4f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x54, 0x0a, 0x11, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x6f, 0x72, 0x64, 0x65, - 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, - 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x73, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x74, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x0f, 0x73, 0x70, 0x6f, 0x74, 0x4f, 0x72, - 0x64, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x12, 0x60, 0x0a, 0x17, 0x64, 0x65, 0x72, - 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x73, 0x74, - 0x61, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x69, 0x6e, 0x6a, - 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5f, - 0x72, 0x70, 0x63, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, - 0x63, 0x6f, 0x72, 0x64, 0x52, 0x15, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, - 0x4f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x22, 0x8b, 0x03, 0x0a, 0x10, - 0x4f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, - 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x48, 0x61, 0x73, 0x68, 0x12, - 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, - 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, - 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x69, 0x64, 0x65, 0x12, - 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, - 0x79, 0x5f, 0x66, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, - 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x46, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x12, 0x2d, - 0x0a, 0x12, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x72, 0x65, 0x6d, 0x61, 0x69, - 0x6e, 0x69, 0x6e, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x71, 0x75, 0x61, 0x6e, - 0x74, 0x69, 0x74, 0x79, 0x52, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x12, 0x1d, 0x0a, - 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x12, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, - 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x12, - 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x70, - 0x72, 0x69, 0x63, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, - 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x22, 0x41, 0x0a, 0x16, 0x53, 0x75, 0x62, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x3b, 0x0a, 0x17, - 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x75, 0x62, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x75, - 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x22, 0x5c, 0x0a, 0x1d, 0x53, 0x75, 0x62, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x4c, - 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, - 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, - 0x16, 0x0a, 0x06, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x06, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x73, 0x22, 0x67, 0x0a, 0x1e, 0x53, 0x75, 0x62, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x4c, 0x69, 0x73, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, 0x08, 0x62, 0x61, 0x6c, - 0x61, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x69, 0x6e, - 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, - 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, - 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x08, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, - 0x22, 0xbc, 0x01, 0x0a, 0x11, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, - 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, - 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x61, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x12, 0x43, 0x0a, 0x07, 0x64, 0x65, - 0x70, 0x6f, 0x73, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x69, 0x6e, - 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, - 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x44, - 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x52, 0x07, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x22, - 0x65, 0x0a, 0x11, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x44, 0x65, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x62, 0x61, - 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x74, 0x6f, 0x74, - 0x61, 0x6c, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x61, 0x76, 0x61, - 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x42, - 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x5d, 0x0a, 0x20, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x45, 0x6e, 0x64, 0x70, 0x6f, - 0x69, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, - 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, - 0x14, 0x0a, 0x05, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x22, 0x68, 0x0a, 0x21, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, - 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x07, 0x62, 0x61, - 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x69, 0x6e, - 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, - 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, - 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x22, - 0x5d, 0x0a, 0x1e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x73, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x73, 0x22, 0x84, - 0x01, 0x0a, 0x1f, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x43, 0x0a, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x75, 0x62, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x07, - 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0xc1, 0x01, 0x0a, 0x18, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x65, 0x6e, 0x6f, 0x6d, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x12, 0x25, 0x0a, - 0x0e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, - 0x79, 0x70, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, - 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x19, - 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x12, - 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xa4, 0x01, 0x0a, 0x19, 0x53, 0x75, - 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, - 0x66, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x69, 0x6e, 0x6a, - 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5f, - 0x72, 0x70, 0x63, 0x2e, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x61, - 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x52, 0x09, 0x74, - 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x12, 0x36, 0x0a, 0x06, 0x70, 0x61, 0x67, 0x69, - 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, - 0x74, 0x69, 0x76, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5f, 0x72, 0x70, - 0x63, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, - 0x22, 0xd5, 0x02, 0x0a, 0x19, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, - 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x12, 0x23, - 0x0a, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x75, 0x62, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, - 0x73, 0x72, 0x63, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, - 0x2e, 0x0a, 0x13, 0x73, 0x72, 0x63, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x73, 0x72, - 0x63, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, - 0x2a, 0x0a, 0x11, 0x64, 0x73, 0x74, 0x5f, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x73, 0x74, 0x53, - 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x13, 0x64, - 0x73, 0x74, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, - 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x64, 0x73, 0x74, 0x41, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x3a, 0x0a, 0x06, 0x61, - 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x69, 0x6e, - 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, - 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x43, 0x6f, 0x69, 0x6e, 0x52, - 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0a, 0x65, 0x78, - 0x65, 0x63, 0x75, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x3a, 0x0a, 0x0a, 0x43, 0x6f, 0x73, 0x6d, - 0x6f, 0x73, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x12, 0x16, 0x0a, 0x06, - 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, - 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x86, 0x01, 0x0a, 0x06, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x12, - 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x12, 0x52, 0x05, - 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x11, 0x52, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x6f, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x11, 0x52, 0x02, 0x74, 0x6f, 0x12, 0x2e, 0x0a, 0x13, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x5f, 0x62, 0x79, 0x5f, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x12, 0x52, 0x11, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x79, 0x53, - 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x65, 0x78, - 0x74, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x65, 0x78, 0x74, 0x22, 0x8a, 0x01, - 0x0a, 0x1d, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4f, 0x72, 0x64, 0x65, - 0x72, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, - 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x64, 0x65, - 0x72, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x84, 0x01, 0x0a, 0x1e, 0x53, - 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x75, - 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2a, 0x0a, - 0x11, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x74, 0x6f, 0x74, - 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0f, 0x73, 0x70, 0x6f, 0x74, 0x4f, 0x72, - 0x64, 0x65, 0x72, 0x73, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x36, 0x0a, 0x17, 0x64, 0x65, 0x72, - 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x74, - 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x12, 0x52, 0x15, 0x64, 0x65, 0x72, 0x69, - 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x54, 0x6f, 0x74, 0x61, - 0x6c, 0x22, 0x4f, 0x0a, 0x0e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x12, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, - 0x73, 0x73, 0x22, 0x4b, 0x0a, 0x0f, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, - 0x76, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5f, 0x72, 0x70, 0x63, 0x2e, - 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x22, - 0x90, 0x01, 0x0a, 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x72, - 0x65, 0x73, 0x73, 0x12, 0x36, 0x0a, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, - 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, - 0x69, 0x6e, 0x52, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x64, - 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x12, 0x52, 0x0d, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x64, - 0x41, 0x74, 0x22, 0x34, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x65, - 0x6e, 0x6f, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x64, 0x65, 0x6e, 0x6f, 0x6d, - 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x43, 0x0a, 0x18, 0x53, 0x74, 0x72, 0x65, - 0x61, 0x6d, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, - 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0xde, 0x03, - 0x0a, 0x19, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x44, - 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5e, 0x0a, 0x12, 0x73, - 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, - 0x69, 0x76, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5f, 0x72, 0x70, 0x63, - 0x2e, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, - 0x63, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x11, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x43, 0x0a, 0x08, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, - 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x73, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x39, 0x0a, 0x05, 0x74, 0x72, 0x61, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x23, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x73, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x72, 0x61, 0x64, 0x65, 0x52, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x52, 0x05, 0x74, 0x72, 0x61, 0x64, 0x65, 0x12, 0x39, 0x0a, 0x05, 0x6f, - 0x72, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x69, 0x6e, 0x6a, - 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5f, - 0x72, 0x70, 0x63, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, - 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x4f, 0x0a, 0x0d, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, - 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, - 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x73, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x48, 0x69, 0x73, 0x74, - 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x0c, 0x6f, 0x72, 0x64, 0x65, 0x72, - 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x55, 0x0a, 0x0f, 0x66, 0x75, 0x6e, 0x64, 0x69, - 0x6e, 0x67, 0x5f, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x2c, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, - 0x67, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x0e, - 0x66, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x7c, - 0x0a, 0x17, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x61, 0x6c, 0x61, - 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x43, 0x0a, 0x07, 0x62, 0x61, 0x6c, - 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x69, 0x6e, 0x6a, - 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5f, - 0x72, 0x70, 0x63, 0x2e, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x61, - 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1c, - 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x12, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0x6d, 0x0a, 0x0f, - 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, - 0x3c, 0x0a, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x20, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, - 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x12, - 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0xe1, 0x02, 0x0a, 0x08, - 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x69, 0x63, 0x6b, - 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x72, - 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x23, 0x0a, - 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x1a, 0x0a, 0x08, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x1f, 0x0a, 0x0b, - 0x65, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0a, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x16, 0x0a, - 0x06, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, - 0x61, 0x72, 0x67, 0x69, 0x6e, 0x12, 0x2b, 0x0a, 0x11, 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x10, 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x69, - 0x63, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x50, 0x72, 0x69, 0x63, - 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, - 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0b, - 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, - 0xf5, 0x01, 0x0a, 0x0b, 0x54, 0x72, 0x61, 0x64, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, - 0x42, 0x0a, 0x0a, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x74, 0x72, 0x61, 0x64, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x70, 0x6f, - 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x48, 0x00, 0x52, 0x09, 0x73, 0x70, 0x6f, 0x74, 0x54, 0x72, - 0x61, 0x64, 0x65, 0x12, 0x54, 0x0a, 0x10, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, - 0x65, 0x5f, 0x74, 0x72, 0x61, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, - 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x73, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, - 0x65, 0x54, 0x72, 0x61, 0x64, 0x65, 0x48, 0x00, 0x52, 0x0f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, - 0x74, 0x69, 0x76, 0x65, 0x54, 0x72, 0x61, 0x64, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x12, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x07, - 0x0a, 0x05, 0x74, 0x72, 0x61, 0x64, 0x65, 0x22, 0xad, 0x03, 0x0a, 0x09, 0x53, 0x70, 0x6f, 0x74, - 0x54, 0x72, 0x61, 0x64, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x68, - 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x72, 0x64, 0x65, 0x72, - 0x48, 0x61, 0x73, 0x68, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, - 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, - 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x74, 0x72, 0x61, 0x64, 0x65, 0x5f, - 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x74, 0x72, 0x61, 0x64, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x74, 0x72, 0x61, 0x64, - 0x65, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0e, 0x74, 0x72, 0x61, 0x64, 0x65, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x38, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x22, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x72, 0x69, 0x63, 0x65, 0x4c, - 0x65, 0x76, 0x65, 0x6c, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x66, - 0x65, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x66, 0x65, 0x65, 0x12, 0x1f, 0x0a, - 0x0b, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x12, 0x52, 0x0a, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x23, - 0x0a, 0x0d, 0x66, 0x65, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x66, 0x65, 0x65, 0x52, 0x65, 0x63, 0x69, 0x70, 0x69, - 0x65, 0x6e, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x72, 0x61, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x72, 0x61, 0x64, 0x65, 0x49, 0x64, 0x12, 0x25, - 0x0a, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x69, 0x64, 0x65, - 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x53, 0x69, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x63, 0x69, 0x64, 0x22, 0x5c, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x63, 0x65, - 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x71, - 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x71, - 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0xdd, 0x03, 0x0a, 0x0f, 0x44, 0x65, 0x72, 0x69, 0x76, 0x61, - 0x74, 0x69, 0x76, 0x65, 0x54, 0x72, 0x61, 0x64, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x72, 0x64, - 0x65, 0x72, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, - 0x72, 0x64, 0x65, 0x72, 0x48, 0x61, 0x73, 0x68, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x61, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0c, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, - 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x74, 0x72, - 0x61, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x74, 0x72, 0x61, 0x64, 0x65, 0x45, - 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x25, 0x0a, 0x0e, - 0x69, 0x73, 0x5f, 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x69, 0x73, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x4c, 0x0a, 0x0e, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x64, 0x65, 0x6c, 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x69, 0x6e, - 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, - 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x6c, - 0x74, 0x61, 0x52, 0x0d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x6c, 0x74, - 0x61, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x70, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x65, 0x65, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x66, 0x65, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x65, - 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x12, - 0x52, 0x0a, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x23, 0x0a, 0x0d, - 0x66, 0x65, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x0a, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0c, 0x66, 0x65, 0x65, 0x52, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, - 0x74, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x72, 0x61, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x0b, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x72, 0x61, 0x64, 0x65, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, - 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x18, 0x0c, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, - 0x69, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x69, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x63, 0x69, 0x64, 0x22, 0xbb, 0x01, 0x0a, 0x0d, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x12, 0x27, 0x0a, 0x0f, 0x74, 0x72, 0x61, 0x64, 0x65, - 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0e, 0x74, 0x72, 0x61, 0x64, 0x65, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x27, 0x0a, 0x0f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, - 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x65, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x29, 0x0a, 0x10, 0x65, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x72, - 0x67, 0x69, 0x6e, 0x22, 0xff, 0x01, 0x0a, 0x0b, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x12, 0x47, 0x0a, 0x0a, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x6f, 0x72, 0x64, 0x65, - 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, - 0x69, 0x76, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5f, 0x72, 0x70, 0x63, - 0x2e, 0x53, 0x70, 0x6f, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x48, - 0x00, 0x52, 0x09, 0x73, 0x70, 0x6f, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x59, 0x0a, 0x10, - 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, - 0x76, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5f, 0x72, 0x70, 0x63, 0x2e, - 0x44, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4f, - 0x72, 0x64, 0x65, 0x72, 0x48, 0x00, 0x52, 0x0f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, - 0x76, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x70, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, - 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x12, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x07, 0x0a, 0x05, - 0x6f, 0x72, 0x64, 0x65, 0x72, 0x22, 0xb8, 0x03, 0x0a, 0x0e, 0x53, 0x70, 0x6f, 0x74, 0x4c, 0x69, - 0x6d, 0x69, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x72, 0x64, 0x65, - 0x72, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x72, - 0x64, 0x65, 0x72, 0x48, 0x61, 0x73, 0x68, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, - 0x5f, 0x73, 0x69, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x72, 0x64, - 0x65, 0x72, 0x53, 0x69, 0x64, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, - 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, - 0x74, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x61, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, - 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x1a, - 0x0a, 0x08, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x2b, 0x0a, 0x11, 0x75, 0x6e, - 0x66, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x5f, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x75, 0x6e, 0x66, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x51, - 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x74, 0x72, 0x69, 0x67, 0x67, - 0x65, 0x72, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, - 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x23, 0x0a, 0x0d, - 0x66, 0x65, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x09, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0c, 0x66, 0x65, 0x65, 0x52, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, - 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x78, 0x5f, 0x68, 0x61, 0x73, 0x68, - 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x12, 0x10, - 0x0a, 0x03, 0x63, 0x69, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, 0x69, 0x64, - 0x22, 0xd7, 0x05, 0x0a, 0x14, 0x44, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x4c, - 0x69, 0x6d, 0x69, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x72, 0x64, - 0x65, 0x72, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, - 0x72, 0x64, 0x65, 0x72, 0x48, 0x61, 0x73, 0x68, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x72, 0x64, 0x65, - 0x72, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x72, - 0x64, 0x65, 0x72, 0x53, 0x69, 0x64, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, - 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, - 0x65, 0x74, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0e, 0x69, 0x73, 0x5f, - 0x72, 0x65, 0x64, 0x75, 0x63, 0x65, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x0c, 0x69, 0x73, 0x52, 0x65, 0x64, 0x75, 0x63, 0x65, 0x4f, 0x6e, 0x6c, 0x79, 0x12, - 0x16, 0x0a, 0x06, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x1a, 0x0a, - 0x08, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x2b, 0x0a, 0x11, 0x75, 0x6e, 0x66, - 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x5f, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x75, 0x6e, 0x66, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x51, 0x75, - 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, - 0x72, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x74, - 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x66, - 0x65, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0c, 0x66, 0x65, 0x65, 0x52, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, - 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, - 0x5f, 0x61, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x64, 0x41, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x6e, 0x75, - 0x6d, 0x62, 0x65, 0x72, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0b, 0x6f, 0x72, 0x64, 0x65, - 0x72, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, - 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x72, 0x64, - 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6e, - 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, - 0x69, 0x73, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x12, 0x1d, 0x0a, - 0x0a, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x5f, 0x61, 0x74, 0x18, 0x12, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x09, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x41, 0x74, 0x12, 0x2a, 0x0a, 0x11, - 0x70, 0x6c, 0x61, 0x63, 0x65, 0x64, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x68, 0x61, 0x73, - 0x68, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x64, 0x4f, - 0x72, 0x64, 0x65, 0x72, 0x48, 0x61, 0x73, 0x68, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0d, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x17, 0x0a, 0x07, 0x74, 0x78, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x69, 0x64, 0x18, - 0x16, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, 0x69, 0x64, 0x22, 0xb0, 0x02, 0x0a, 0x12, 0x4f, - 0x72, 0x64, 0x65, 0x72, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x12, 0x58, 0x0a, 0x12, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, - 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, - 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x73, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x70, 0x6f, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, - 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x48, 0x00, 0x52, 0x10, 0x73, 0x70, 0x6f, 0x74, 0x4f, - 0x72, 0x64, 0x65, 0x72, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x6a, 0x0a, 0x18, 0x64, - 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, - 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, - 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x73, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, - 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x48, 0x00, 0x52, - 0x16, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, - 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x70, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, - 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x12, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x0f, 0x0a, 0x0d, - 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x22, 0xf3, 0x03, - 0x0a, 0x10, 0x53, 0x70, 0x6f, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x48, 0x69, 0x73, 0x74, 0x6f, - 0x72, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x68, 0x61, 0x73, 0x68, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x48, 0x61, 0x73, - 0x68, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x1b, - 0x0a, 0x09, 0x69, 0x73, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x08, 0x69, 0x73, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x73, - 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, - 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, - 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x72, 0x64, - 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x23, 0x0a, 0x0d, - 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0c, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x50, 0x72, 0x69, 0x63, - 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x09, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x27, 0x0a, - 0x0f, 0x66, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x5f, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, - 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x66, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x51, 0x75, - 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, - 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x0a, 0x0a, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x12, - 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x75, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x12, 0x52, - 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x69, - 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, - 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x78, 0x5f, 0x68, - 0x61, 0x73, 0x68, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x78, 0x48, 0x61, 0x73, - 0x68, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x69, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x63, 0x69, 0x64, 0x22, 0xa9, 0x05, 0x0a, 0x16, 0x44, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, - 0x76, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x1d, - 0x0a, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x48, 0x61, 0x73, 0x68, 0x12, 0x1b, 0x0a, - 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x73, - 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, - 0x73, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, - 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, - 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x74, 0x72, 0x69, 0x67, - 0x67, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0c, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x1a, 0x0a, - 0x08, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x66, 0x69, 0x6c, - 0x6c, 0x65, 0x64, 0x5f, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x0a, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0e, 0x66, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, - 0x74, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x24, 0x0a, 0x0e, 0x69, 0x73, 0x5f, 0x72, 0x65, 0x64, - 0x75, 0x63, 0x65, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, - 0x69, 0x73, 0x52, 0x65, 0x64, 0x75, 0x63, 0x65, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x1c, 0x0a, 0x09, - 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x0e, 0x69, 0x73, - 0x5f, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x18, 0x10, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x0d, 0x69, 0x73, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, - 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x5f, 0x61, 0x74, 0x18, - 0x11, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x41, 0x74, - 0x12, 0x2a, 0x0a, 0x11, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x64, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, - 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x6c, 0x61, - 0x63, 0x65, 0x64, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x48, 0x61, 0x73, 0x68, 0x12, 0x16, 0x0a, 0x06, - 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x61, - 0x72, 0x67, 0x69, 0x6e, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x78, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, - 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x12, 0x10, 0x0a, - 0x03, 0x63, 0x69, 0x64, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, 0x69, 0x64, 0x22, - 0xae, 0x01, 0x0a, 0x14, 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x79, 0x6d, 0x65, - 0x6e, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x51, 0x0a, 0x10, 0x66, 0x75, 0x6e, 0x64, - 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x61, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x46, 0x75, 0x6e, 0x64, - 0x69, 0x6e, 0x67, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0f, 0x66, 0x75, 0x6e, 0x64, - 0x69, 0x6e, 0x67, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x6f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x22, 0x88, 0x01, 0x0a, 0x0e, 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x79, 0x6d, - 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, - 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x0a, - 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x12, - 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x32, 0xdc, 0x09, 0x0a, 0x14, - 0x49, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x73, 0x52, 0x50, 0x43, 0x12, 0x60, 0x0a, 0x09, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, - 0x6f, 0x12, 0x28, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x66, - 0x6f, 0x6c, 0x69, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x69, 0x6e, - 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, - 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x66, 0x0a, 0x0b, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x73, 0x12, 0x2a, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, - 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4f, - 0x72, 0x64, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x2b, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x72, - 0x0a, 0x0f, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x4c, 0x69, 0x73, - 0x74, 0x12, 0x2e, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x75, 0x62, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x2f, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x75, 0x62, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x87, 0x01, 0x0a, 0x16, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x35, 0x2e, - 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x73, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, - 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x75, - 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, - 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x90, 0x01, 0x0a, - 0x19, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, - 0x63, 0x65, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x38, 0x2e, 0x69, 0x6e, 0x6a, - 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5f, - 0x72, 0x70, 0x63, 0x2e, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x61, - 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, - 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x75, - 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x45, - 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x8c, 0x01, 0x0a, 0x17, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x36, 0x2e, 0x69, 0x6e, - 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, - 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x75, 0x62, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x61, 0x6c, - 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x78, - 0x0a, 0x11, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x48, 0x69, 0x73, 0x74, - 0x6f, 0x72, 0x79, 0x12, 0x30, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x75, 0x62, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, - 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, - 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x87, 0x01, 0x0a, 0x16, 0x53, 0x75, 0x62, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x75, 0x6d, 0x6d, - 0x61, 0x72, 0x79, 0x12, 0x35, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x75, 0x62, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x75, 0x6d, 0x6d, - 0x61, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x69, 0x6e, 0x6a, - 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5f, - 0x72, 0x70, 0x63, 0x2e, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4f, 0x72, - 0x64, 0x65, 0x72, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x5a, 0x0a, 0x07, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0x26, 0x2e, - 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x73, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, - 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x52, - 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7a, - 0x0a, 0x11, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x44, - 0x61, 0x74, 0x61, 0x12, 0x30, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, - 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, - 0x74, 0x72, 0x65, 0x61, 0x6d, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x44, 0x61, 0x74, 0x61, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x42, 0x1b, 0x5a, 0x19, 0x2f, 0x69, - 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x73, 0x5f, 0x72, 0x70, 0x63, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_goadesign_goagen_injective_accounts_rpc_proto_rawDescOnce sync.Once - file_goadesign_goagen_injective_accounts_rpc_proto_rawDescData = file_goadesign_goagen_injective_accounts_rpc_proto_rawDesc -) - -func file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP() []byte { - file_goadesign_goagen_injective_accounts_rpc_proto_rawDescOnce.Do(func() { - file_goadesign_goagen_injective_accounts_rpc_proto_rawDescData = protoimpl.X.CompressGZIP(file_goadesign_goagen_injective_accounts_rpc_proto_rawDescData) - }) - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescData -} - -var file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes = make([]protoimpl.MessageInfo, 46) -var file_goadesign_goagen_injective_accounts_rpc_proto_goTypes = []interface{}{ - (*PortfolioRequest)(nil), // 0: injective_accounts_rpc.PortfolioRequest - (*PortfolioResponse)(nil), // 1: injective_accounts_rpc.PortfolioResponse - (*AccountPortfolio)(nil), // 2: injective_accounts_rpc.AccountPortfolio - (*SubaccountPortfolio)(nil), // 3: injective_accounts_rpc.SubaccountPortfolio - (*OrderStatesRequest)(nil), // 4: injective_accounts_rpc.OrderStatesRequest - (*OrderStatesResponse)(nil), // 5: injective_accounts_rpc.OrderStatesResponse - (*OrderStateRecord)(nil), // 6: injective_accounts_rpc.OrderStateRecord - (*SubaccountsListRequest)(nil), // 7: injective_accounts_rpc.SubaccountsListRequest - (*SubaccountsListResponse)(nil), // 8: injective_accounts_rpc.SubaccountsListResponse - (*SubaccountBalancesListRequest)(nil), // 9: injective_accounts_rpc.SubaccountBalancesListRequest - (*SubaccountBalancesListResponse)(nil), // 10: injective_accounts_rpc.SubaccountBalancesListResponse - (*SubaccountBalance)(nil), // 11: injective_accounts_rpc.SubaccountBalance - (*SubaccountDeposit)(nil), // 12: injective_accounts_rpc.SubaccountDeposit - (*SubaccountBalanceEndpointRequest)(nil), // 13: injective_accounts_rpc.SubaccountBalanceEndpointRequest - (*SubaccountBalanceEndpointResponse)(nil), // 14: injective_accounts_rpc.SubaccountBalanceEndpointResponse - (*StreamSubaccountBalanceRequest)(nil), // 15: injective_accounts_rpc.StreamSubaccountBalanceRequest - (*StreamSubaccountBalanceResponse)(nil), // 16: injective_accounts_rpc.StreamSubaccountBalanceResponse - (*SubaccountHistoryRequest)(nil), // 17: injective_accounts_rpc.SubaccountHistoryRequest - (*SubaccountHistoryResponse)(nil), // 18: injective_accounts_rpc.SubaccountHistoryResponse - (*SubaccountBalanceTransfer)(nil), // 19: injective_accounts_rpc.SubaccountBalanceTransfer - (*CosmosCoin)(nil), // 20: injective_accounts_rpc.CosmosCoin - (*Paging)(nil), // 21: injective_accounts_rpc.Paging - (*SubaccountOrderSummaryRequest)(nil), // 22: injective_accounts_rpc.SubaccountOrderSummaryRequest - (*SubaccountOrderSummaryResponse)(nil), // 23: injective_accounts_rpc.SubaccountOrderSummaryResponse - (*RewardsRequest)(nil), // 24: injective_accounts_rpc.RewardsRequest - (*RewardsResponse)(nil), // 25: injective_accounts_rpc.RewardsResponse - (*Reward)(nil), // 26: injective_accounts_rpc.Reward - (*Coin)(nil), // 27: injective_accounts_rpc.Coin - (*StreamAccountDataRequest)(nil), // 28: injective_accounts_rpc.StreamAccountDataRequest - (*StreamAccountDataResponse)(nil), // 29: injective_accounts_rpc.StreamAccountDataResponse - (*SubaccountBalanceResult)(nil), // 30: injective_accounts_rpc.SubaccountBalanceResult - (*PositionsResult)(nil), // 31: injective_accounts_rpc.PositionsResult - (*Position)(nil), // 32: injective_accounts_rpc.Position - (*TradeResult)(nil), // 33: injective_accounts_rpc.TradeResult - (*SpotTrade)(nil), // 34: injective_accounts_rpc.SpotTrade - (*PriceLevel)(nil), // 35: injective_accounts_rpc.PriceLevel - (*DerivativeTrade)(nil), // 36: injective_accounts_rpc.DerivativeTrade - (*PositionDelta)(nil), // 37: injective_accounts_rpc.PositionDelta - (*OrderResult)(nil), // 38: injective_accounts_rpc.OrderResult - (*SpotLimitOrder)(nil), // 39: injective_accounts_rpc.SpotLimitOrder - (*DerivativeLimitOrder)(nil), // 40: injective_accounts_rpc.DerivativeLimitOrder - (*OrderHistoryResult)(nil), // 41: injective_accounts_rpc.OrderHistoryResult - (*SpotOrderHistory)(nil), // 42: injective_accounts_rpc.SpotOrderHistory - (*DerivativeOrderHistory)(nil), // 43: injective_accounts_rpc.DerivativeOrderHistory - (*FundingPaymentResult)(nil), // 44: injective_accounts_rpc.FundingPaymentResult - (*FundingPayment)(nil), // 45: injective_accounts_rpc.FundingPayment -} -var file_goadesign_goagen_injective_accounts_rpc_proto_depIdxs = []int32{ - 2, // 0: injective_accounts_rpc.PortfolioResponse.portfolio:type_name -> injective_accounts_rpc.AccountPortfolio - 3, // 1: injective_accounts_rpc.AccountPortfolio.subaccounts:type_name -> injective_accounts_rpc.SubaccountPortfolio - 6, // 2: injective_accounts_rpc.OrderStatesResponse.spot_order_states:type_name -> injective_accounts_rpc.OrderStateRecord - 6, // 3: injective_accounts_rpc.OrderStatesResponse.derivative_order_states:type_name -> injective_accounts_rpc.OrderStateRecord - 11, // 4: injective_accounts_rpc.SubaccountBalancesListResponse.balances:type_name -> injective_accounts_rpc.SubaccountBalance - 12, // 5: injective_accounts_rpc.SubaccountBalance.deposit:type_name -> injective_accounts_rpc.SubaccountDeposit - 11, // 6: injective_accounts_rpc.SubaccountBalanceEndpointResponse.balance:type_name -> injective_accounts_rpc.SubaccountBalance - 11, // 7: injective_accounts_rpc.StreamSubaccountBalanceResponse.balance:type_name -> injective_accounts_rpc.SubaccountBalance - 19, // 8: injective_accounts_rpc.SubaccountHistoryResponse.transfers:type_name -> injective_accounts_rpc.SubaccountBalanceTransfer - 21, // 9: injective_accounts_rpc.SubaccountHistoryResponse.paging:type_name -> injective_accounts_rpc.Paging - 20, // 10: injective_accounts_rpc.SubaccountBalanceTransfer.amount:type_name -> injective_accounts_rpc.CosmosCoin - 26, // 11: injective_accounts_rpc.RewardsResponse.rewards:type_name -> injective_accounts_rpc.Reward - 27, // 12: injective_accounts_rpc.Reward.rewards:type_name -> injective_accounts_rpc.Coin - 30, // 13: injective_accounts_rpc.StreamAccountDataResponse.subaccount_balance:type_name -> injective_accounts_rpc.SubaccountBalanceResult - 31, // 14: injective_accounts_rpc.StreamAccountDataResponse.position:type_name -> injective_accounts_rpc.PositionsResult - 33, // 15: injective_accounts_rpc.StreamAccountDataResponse.trade:type_name -> injective_accounts_rpc.TradeResult - 38, // 16: injective_accounts_rpc.StreamAccountDataResponse.order:type_name -> injective_accounts_rpc.OrderResult - 41, // 17: injective_accounts_rpc.StreamAccountDataResponse.order_history:type_name -> injective_accounts_rpc.OrderHistoryResult - 44, // 18: injective_accounts_rpc.StreamAccountDataResponse.funding_payment:type_name -> injective_accounts_rpc.FundingPaymentResult - 11, // 19: injective_accounts_rpc.SubaccountBalanceResult.balance:type_name -> injective_accounts_rpc.SubaccountBalance - 32, // 20: injective_accounts_rpc.PositionsResult.position:type_name -> injective_accounts_rpc.Position - 34, // 21: injective_accounts_rpc.TradeResult.spot_trade:type_name -> injective_accounts_rpc.SpotTrade - 36, // 22: injective_accounts_rpc.TradeResult.derivative_trade:type_name -> injective_accounts_rpc.DerivativeTrade - 35, // 23: injective_accounts_rpc.SpotTrade.price:type_name -> injective_accounts_rpc.PriceLevel - 37, // 24: injective_accounts_rpc.DerivativeTrade.position_delta:type_name -> injective_accounts_rpc.PositionDelta - 39, // 25: injective_accounts_rpc.OrderResult.spot_order:type_name -> injective_accounts_rpc.SpotLimitOrder - 40, // 26: injective_accounts_rpc.OrderResult.derivative_order:type_name -> injective_accounts_rpc.DerivativeLimitOrder - 42, // 27: injective_accounts_rpc.OrderHistoryResult.spot_order_history:type_name -> injective_accounts_rpc.SpotOrderHistory - 43, // 28: injective_accounts_rpc.OrderHistoryResult.derivative_order_history:type_name -> injective_accounts_rpc.DerivativeOrderHistory - 45, // 29: injective_accounts_rpc.FundingPaymentResult.funding_payments:type_name -> injective_accounts_rpc.FundingPayment - 0, // 30: injective_accounts_rpc.InjectiveAccountsRPC.Portfolio:input_type -> injective_accounts_rpc.PortfolioRequest - 4, // 31: injective_accounts_rpc.InjectiveAccountsRPC.OrderStates:input_type -> injective_accounts_rpc.OrderStatesRequest - 7, // 32: injective_accounts_rpc.InjectiveAccountsRPC.SubaccountsList:input_type -> injective_accounts_rpc.SubaccountsListRequest - 9, // 33: injective_accounts_rpc.InjectiveAccountsRPC.SubaccountBalancesList:input_type -> injective_accounts_rpc.SubaccountBalancesListRequest - 13, // 34: injective_accounts_rpc.InjectiveAccountsRPC.SubaccountBalanceEndpoint:input_type -> injective_accounts_rpc.SubaccountBalanceEndpointRequest - 15, // 35: injective_accounts_rpc.InjectiveAccountsRPC.StreamSubaccountBalance:input_type -> injective_accounts_rpc.StreamSubaccountBalanceRequest - 17, // 36: injective_accounts_rpc.InjectiveAccountsRPC.SubaccountHistory:input_type -> injective_accounts_rpc.SubaccountHistoryRequest - 22, // 37: injective_accounts_rpc.InjectiveAccountsRPC.SubaccountOrderSummary:input_type -> injective_accounts_rpc.SubaccountOrderSummaryRequest - 24, // 38: injective_accounts_rpc.InjectiveAccountsRPC.Rewards:input_type -> injective_accounts_rpc.RewardsRequest - 28, // 39: injective_accounts_rpc.InjectiveAccountsRPC.StreamAccountData:input_type -> injective_accounts_rpc.StreamAccountDataRequest - 1, // 40: injective_accounts_rpc.InjectiveAccountsRPC.Portfolio:output_type -> injective_accounts_rpc.PortfolioResponse - 5, // 41: injective_accounts_rpc.InjectiveAccountsRPC.OrderStates:output_type -> injective_accounts_rpc.OrderStatesResponse - 8, // 42: injective_accounts_rpc.InjectiveAccountsRPC.SubaccountsList:output_type -> injective_accounts_rpc.SubaccountsListResponse - 10, // 43: injective_accounts_rpc.InjectiveAccountsRPC.SubaccountBalancesList:output_type -> injective_accounts_rpc.SubaccountBalancesListResponse - 14, // 44: injective_accounts_rpc.InjectiveAccountsRPC.SubaccountBalanceEndpoint:output_type -> injective_accounts_rpc.SubaccountBalanceEndpointResponse - 16, // 45: injective_accounts_rpc.InjectiveAccountsRPC.StreamSubaccountBalance:output_type -> injective_accounts_rpc.StreamSubaccountBalanceResponse - 18, // 46: injective_accounts_rpc.InjectiveAccountsRPC.SubaccountHistory:output_type -> injective_accounts_rpc.SubaccountHistoryResponse - 23, // 47: injective_accounts_rpc.InjectiveAccountsRPC.SubaccountOrderSummary:output_type -> injective_accounts_rpc.SubaccountOrderSummaryResponse - 25, // 48: injective_accounts_rpc.InjectiveAccountsRPC.Rewards:output_type -> injective_accounts_rpc.RewardsResponse - 29, // 49: injective_accounts_rpc.InjectiveAccountsRPC.StreamAccountData:output_type -> injective_accounts_rpc.StreamAccountDataResponse - 40, // [40:50] is the sub-list for method output_type - 30, // [30:40] is the sub-list for method input_type - 30, // [30:30] is the sub-list for extension type_name - 30, // [30:30] is the sub-list for extension extendee - 0, // [0:30] is the sub-list for field type_name -} - -func init() { file_goadesign_goagen_injective_accounts_rpc_proto_init() } -func file_goadesign_goagen_injective_accounts_rpc_proto_init() { - if File_goadesign_goagen_injective_accounts_rpc_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PortfolioRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PortfolioResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AccountPortfolio); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubaccountPortfolio); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OrderStatesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OrderStatesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OrderStateRecord); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubaccountsListRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubaccountsListResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubaccountBalancesListRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubaccountBalancesListResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubaccountBalance); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubaccountDeposit); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubaccountBalanceEndpointRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubaccountBalanceEndpointResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StreamSubaccountBalanceRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StreamSubaccountBalanceResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubaccountHistoryRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubaccountHistoryResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubaccountBalanceTransfer); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CosmosCoin); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Paging); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubaccountOrderSummaryRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubaccountOrderSummaryResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RewardsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RewardsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Reward); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Coin); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StreamAccountDataRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StreamAccountDataResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubaccountBalanceResult); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PositionsResult); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Position); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TradeResult); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SpotTrade); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PriceLevel); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DerivativeTrade); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PositionDelta); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OrderResult); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SpotLimitOrder); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DerivativeLimitOrder); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OrderHistoryResult); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SpotOrderHistory); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DerivativeOrderHistory); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FundingPaymentResult); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FundingPayment); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[33].OneofWrappers = []interface{}{ - (*TradeResult_SpotTrade)(nil), - (*TradeResult_DerivativeTrade)(nil), - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[38].OneofWrappers = []interface{}{ - (*OrderResult_SpotOrder)(nil), - (*OrderResult_DerivativeOrder)(nil), - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[41].OneofWrappers = []interface{}{ - (*OrderHistoryResult_SpotOrderHistory)(nil), - (*OrderHistoryResult_DerivativeOrderHistory)(nil), - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_goadesign_goagen_injective_accounts_rpc_proto_rawDesc, - NumEnums: 0, - NumMessages: 46, - NumExtensions: 0, - NumServices: 1, - }, - GoTypes: file_goadesign_goagen_injective_accounts_rpc_proto_goTypes, - DependencyIndexes: file_goadesign_goagen_injective_accounts_rpc_proto_depIdxs, - MessageInfos: file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes, - }.Build() - File_goadesign_goagen_injective_accounts_rpc_proto = out.File - file_goadesign_goagen_injective_accounts_rpc_proto_rawDesc = nil - file_goadesign_goagen_injective_accounts_rpc_proto_goTypes = nil - file_goadesign_goagen_injective_accounts_rpc_proto_depIdxs = nil -} diff --git a/exchange/accounts_rpc/pb/pb/goadesign_goagen_injective_accounts_rpc_grpc.pb.go b/exchange/accounts_rpc/pb/pb/goadesign_goagen_injective_accounts_rpc_grpc.pb.go deleted file mode 100644 index ceb634f9..00000000 --- a/exchange/accounts_rpc/pb/pb/goadesign_goagen_injective_accounts_rpc_grpc.pb.go +++ /dev/null @@ -1,508 +0,0 @@ -// Code generated by protoc-gen-go-grpc. DO NOT EDIT. -// versions: -// - protoc-gen-go-grpc v1.2.0 -// - protoc v3.19.4 -// source: goadesign_goagen_injective_accounts_rpc.proto - -package injective_accounts_rpcpb - -import ( - context "context" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" -) - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 - -// InjectiveAccountsRPCClient is the client API for InjectiveAccountsRPC service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. -type InjectiveAccountsRPCClient interface { - // Provide the account's portfolio value in USD. - Portfolio(ctx context.Context, in *PortfolioRequest, opts ...grpc.CallOption) (*PortfolioResponse, error) - // List order states by order hashes - OrderStates(ctx context.Context, in *OrderStatesRequest, opts ...grpc.CallOption) (*OrderStatesResponse, error) - // List all subaccounts IDs of an account address - SubaccountsList(ctx context.Context, in *SubaccountsListRequest, opts ...grpc.CallOption) (*SubaccountsListResponse, error) - // List subaccount balances for the provided denoms. - SubaccountBalancesList(ctx context.Context, in *SubaccountBalancesListRequest, opts ...grpc.CallOption) (*SubaccountBalancesListResponse, error) - // Gets a balance for specific coin denom - SubaccountBalanceEndpoint(ctx context.Context, in *SubaccountBalanceEndpointRequest, opts ...grpc.CallOption) (*SubaccountBalanceEndpointResponse, error) - // StreamSubaccountBalance streams new balance changes for a specified - // subaccount and denoms. If no denoms are provided, all denom changes are - // streamed. - StreamSubaccountBalance(ctx context.Context, in *StreamSubaccountBalanceRequest, opts ...grpc.CallOption) (InjectiveAccountsRPC_StreamSubaccountBalanceClient, error) - // Get subaccount's deposits and withdrawals history - SubaccountHistory(ctx context.Context, in *SubaccountHistoryRequest, opts ...grpc.CallOption) (*SubaccountHistoryResponse, error) - // Get subaccount's orders summary - SubaccountOrderSummary(ctx context.Context, in *SubaccountOrderSummaryRequest, opts ...grpc.CallOption) (*SubaccountOrderSummaryResponse, error) - // Provide historical trading rewards - Rewards(ctx context.Context, in *RewardsRequest, opts ...grpc.CallOption) (*RewardsResponse, error) - // Stream live data for an account and respective data - StreamAccountData(ctx context.Context, in *StreamAccountDataRequest, opts ...grpc.CallOption) (InjectiveAccountsRPC_StreamAccountDataClient, error) -} - -type injectiveAccountsRPCClient struct { - cc grpc.ClientConnInterface -} - -func NewInjectiveAccountsRPCClient(cc grpc.ClientConnInterface) InjectiveAccountsRPCClient { - return &injectiveAccountsRPCClient{cc} -} - -func (c *injectiveAccountsRPCClient) Portfolio(ctx context.Context, in *PortfolioRequest, opts ...grpc.CallOption) (*PortfolioResponse, error) { - out := new(PortfolioResponse) - err := c.cc.Invoke(ctx, "/injective_accounts_rpc.InjectiveAccountsRPC/Portfolio", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *injectiveAccountsRPCClient) OrderStates(ctx context.Context, in *OrderStatesRequest, opts ...grpc.CallOption) (*OrderStatesResponse, error) { - out := new(OrderStatesResponse) - err := c.cc.Invoke(ctx, "/injective_accounts_rpc.InjectiveAccountsRPC/OrderStates", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *injectiveAccountsRPCClient) SubaccountsList(ctx context.Context, in *SubaccountsListRequest, opts ...grpc.CallOption) (*SubaccountsListResponse, error) { - out := new(SubaccountsListResponse) - err := c.cc.Invoke(ctx, "/injective_accounts_rpc.InjectiveAccountsRPC/SubaccountsList", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *injectiveAccountsRPCClient) SubaccountBalancesList(ctx context.Context, in *SubaccountBalancesListRequest, opts ...grpc.CallOption) (*SubaccountBalancesListResponse, error) { - out := new(SubaccountBalancesListResponse) - err := c.cc.Invoke(ctx, "/injective_accounts_rpc.InjectiveAccountsRPC/SubaccountBalancesList", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *injectiveAccountsRPCClient) SubaccountBalanceEndpoint(ctx context.Context, in *SubaccountBalanceEndpointRequest, opts ...grpc.CallOption) (*SubaccountBalanceEndpointResponse, error) { - out := new(SubaccountBalanceEndpointResponse) - err := c.cc.Invoke(ctx, "/injective_accounts_rpc.InjectiveAccountsRPC/SubaccountBalanceEndpoint", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *injectiveAccountsRPCClient) StreamSubaccountBalance(ctx context.Context, in *StreamSubaccountBalanceRequest, opts ...grpc.CallOption) (InjectiveAccountsRPC_StreamSubaccountBalanceClient, error) { - stream, err := c.cc.NewStream(ctx, &InjectiveAccountsRPC_ServiceDesc.Streams[0], "/injective_accounts_rpc.InjectiveAccountsRPC/StreamSubaccountBalance", opts...) - if err != nil { - return nil, err - } - x := &injectiveAccountsRPCStreamSubaccountBalanceClient{stream} - if err := x.ClientStream.SendMsg(in); err != nil { - return nil, err - } - if err := x.ClientStream.CloseSend(); err != nil { - return nil, err - } - return x, nil -} - -type InjectiveAccountsRPC_StreamSubaccountBalanceClient interface { - Recv() (*StreamSubaccountBalanceResponse, error) - grpc.ClientStream -} - -type injectiveAccountsRPCStreamSubaccountBalanceClient struct { - grpc.ClientStream -} - -func (x *injectiveAccountsRPCStreamSubaccountBalanceClient) Recv() (*StreamSubaccountBalanceResponse, error) { - m := new(StreamSubaccountBalanceResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func (c *injectiveAccountsRPCClient) SubaccountHistory(ctx context.Context, in *SubaccountHistoryRequest, opts ...grpc.CallOption) (*SubaccountHistoryResponse, error) { - out := new(SubaccountHistoryResponse) - err := c.cc.Invoke(ctx, "/injective_accounts_rpc.InjectiveAccountsRPC/SubaccountHistory", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *injectiveAccountsRPCClient) SubaccountOrderSummary(ctx context.Context, in *SubaccountOrderSummaryRequest, opts ...grpc.CallOption) (*SubaccountOrderSummaryResponse, error) { - out := new(SubaccountOrderSummaryResponse) - err := c.cc.Invoke(ctx, "/injective_accounts_rpc.InjectiveAccountsRPC/SubaccountOrderSummary", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *injectiveAccountsRPCClient) Rewards(ctx context.Context, in *RewardsRequest, opts ...grpc.CallOption) (*RewardsResponse, error) { - out := new(RewardsResponse) - err := c.cc.Invoke(ctx, "/injective_accounts_rpc.InjectiveAccountsRPC/Rewards", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *injectiveAccountsRPCClient) StreamAccountData(ctx context.Context, in *StreamAccountDataRequest, opts ...grpc.CallOption) (InjectiveAccountsRPC_StreamAccountDataClient, error) { - stream, err := c.cc.NewStream(ctx, &InjectiveAccountsRPC_ServiceDesc.Streams[1], "/injective_accounts_rpc.InjectiveAccountsRPC/StreamAccountData", opts...) - if err != nil { - return nil, err - } - x := &injectiveAccountsRPCStreamAccountDataClient{stream} - if err := x.ClientStream.SendMsg(in); err != nil { - return nil, err - } - if err := x.ClientStream.CloseSend(); err != nil { - return nil, err - } - return x, nil -} - -type InjectiveAccountsRPC_StreamAccountDataClient interface { - Recv() (*StreamAccountDataResponse, error) - grpc.ClientStream -} - -type injectiveAccountsRPCStreamAccountDataClient struct { - grpc.ClientStream -} - -func (x *injectiveAccountsRPCStreamAccountDataClient) Recv() (*StreamAccountDataResponse, error) { - m := new(StreamAccountDataResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -// InjectiveAccountsRPCServer is the server API for InjectiveAccountsRPC service. -// All implementations must embed UnimplementedInjectiveAccountsRPCServer -// for forward compatibility -type InjectiveAccountsRPCServer interface { - // Provide the account's portfolio value in USD. - Portfolio(context.Context, *PortfolioRequest) (*PortfolioResponse, error) - // List order states by order hashes - OrderStates(context.Context, *OrderStatesRequest) (*OrderStatesResponse, error) - // List all subaccounts IDs of an account address - SubaccountsList(context.Context, *SubaccountsListRequest) (*SubaccountsListResponse, error) - // List subaccount balances for the provided denoms. - SubaccountBalancesList(context.Context, *SubaccountBalancesListRequest) (*SubaccountBalancesListResponse, error) - // Gets a balance for specific coin denom - SubaccountBalanceEndpoint(context.Context, *SubaccountBalanceEndpointRequest) (*SubaccountBalanceEndpointResponse, error) - // StreamSubaccountBalance streams new balance changes for a specified - // subaccount and denoms. If no denoms are provided, all denom changes are - // streamed. - StreamSubaccountBalance(*StreamSubaccountBalanceRequest, InjectiveAccountsRPC_StreamSubaccountBalanceServer) error - // Get subaccount's deposits and withdrawals history - SubaccountHistory(context.Context, *SubaccountHistoryRequest) (*SubaccountHistoryResponse, error) - // Get subaccount's orders summary - SubaccountOrderSummary(context.Context, *SubaccountOrderSummaryRequest) (*SubaccountOrderSummaryResponse, error) - // Provide historical trading rewards - Rewards(context.Context, *RewardsRequest) (*RewardsResponse, error) - // Stream live data for an account and respective data - StreamAccountData(*StreamAccountDataRequest, InjectiveAccountsRPC_StreamAccountDataServer) error - mustEmbedUnimplementedInjectiveAccountsRPCServer() -} - -// UnimplementedInjectiveAccountsRPCServer must be embedded to have forward compatible implementations. -type UnimplementedInjectiveAccountsRPCServer struct { -} - -func (UnimplementedInjectiveAccountsRPCServer) Portfolio(context.Context, *PortfolioRequest) (*PortfolioResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Portfolio not implemented") -} -func (UnimplementedInjectiveAccountsRPCServer) OrderStates(context.Context, *OrderStatesRequest) (*OrderStatesResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method OrderStates not implemented") -} -func (UnimplementedInjectiveAccountsRPCServer) SubaccountsList(context.Context, *SubaccountsListRequest) (*SubaccountsListResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method SubaccountsList not implemented") -} -func (UnimplementedInjectiveAccountsRPCServer) SubaccountBalancesList(context.Context, *SubaccountBalancesListRequest) (*SubaccountBalancesListResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method SubaccountBalancesList not implemented") -} -func (UnimplementedInjectiveAccountsRPCServer) SubaccountBalanceEndpoint(context.Context, *SubaccountBalanceEndpointRequest) (*SubaccountBalanceEndpointResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method SubaccountBalanceEndpoint not implemented") -} -func (UnimplementedInjectiveAccountsRPCServer) StreamSubaccountBalance(*StreamSubaccountBalanceRequest, InjectiveAccountsRPC_StreamSubaccountBalanceServer) error { - return status.Errorf(codes.Unimplemented, "method StreamSubaccountBalance not implemented") -} -func (UnimplementedInjectiveAccountsRPCServer) SubaccountHistory(context.Context, *SubaccountHistoryRequest) (*SubaccountHistoryResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method SubaccountHistory not implemented") -} -func (UnimplementedInjectiveAccountsRPCServer) SubaccountOrderSummary(context.Context, *SubaccountOrderSummaryRequest) (*SubaccountOrderSummaryResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method SubaccountOrderSummary not implemented") -} -func (UnimplementedInjectiveAccountsRPCServer) Rewards(context.Context, *RewardsRequest) (*RewardsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Rewards not implemented") -} -func (UnimplementedInjectiveAccountsRPCServer) StreamAccountData(*StreamAccountDataRequest, InjectiveAccountsRPC_StreamAccountDataServer) error { - return status.Errorf(codes.Unimplemented, "method StreamAccountData not implemented") -} -func (UnimplementedInjectiveAccountsRPCServer) mustEmbedUnimplementedInjectiveAccountsRPCServer() {} - -// UnsafeInjectiveAccountsRPCServer may be embedded to opt out of forward compatibility for this service. -// Use of this interface is not recommended, as added methods to InjectiveAccountsRPCServer will -// result in compilation errors. -type UnsafeInjectiveAccountsRPCServer interface { - mustEmbedUnimplementedInjectiveAccountsRPCServer() -} - -func RegisterInjectiveAccountsRPCServer(s grpc.ServiceRegistrar, srv InjectiveAccountsRPCServer) { - s.RegisterService(&InjectiveAccountsRPC_ServiceDesc, srv) -} - -func _InjectiveAccountsRPC_Portfolio_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(PortfolioRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(InjectiveAccountsRPCServer).Portfolio(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/injective_accounts_rpc.InjectiveAccountsRPC/Portfolio", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(InjectiveAccountsRPCServer).Portfolio(ctx, req.(*PortfolioRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _InjectiveAccountsRPC_OrderStates_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(OrderStatesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(InjectiveAccountsRPCServer).OrderStates(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/injective_accounts_rpc.InjectiveAccountsRPC/OrderStates", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(InjectiveAccountsRPCServer).OrderStates(ctx, req.(*OrderStatesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _InjectiveAccountsRPC_SubaccountsList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SubaccountsListRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(InjectiveAccountsRPCServer).SubaccountsList(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/injective_accounts_rpc.InjectiveAccountsRPC/SubaccountsList", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(InjectiveAccountsRPCServer).SubaccountsList(ctx, req.(*SubaccountsListRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _InjectiveAccountsRPC_SubaccountBalancesList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SubaccountBalancesListRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(InjectiveAccountsRPCServer).SubaccountBalancesList(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/injective_accounts_rpc.InjectiveAccountsRPC/SubaccountBalancesList", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(InjectiveAccountsRPCServer).SubaccountBalancesList(ctx, req.(*SubaccountBalancesListRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _InjectiveAccountsRPC_SubaccountBalanceEndpoint_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SubaccountBalanceEndpointRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(InjectiveAccountsRPCServer).SubaccountBalanceEndpoint(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/injective_accounts_rpc.InjectiveAccountsRPC/SubaccountBalanceEndpoint", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(InjectiveAccountsRPCServer).SubaccountBalanceEndpoint(ctx, req.(*SubaccountBalanceEndpointRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _InjectiveAccountsRPC_StreamSubaccountBalance_Handler(srv interface{}, stream grpc.ServerStream) error { - m := new(StreamSubaccountBalanceRequest) - if err := stream.RecvMsg(m); err != nil { - return err - } - return srv.(InjectiveAccountsRPCServer).StreamSubaccountBalance(m, &injectiveAccountsRPCStreamSubaccountBalanceServer{stream}) -} - -type InjectiveAccountsRPC_StreamSubaccountBalanceServer interface { - Send(*StreamSubaccountBalanceResponse) error - grpc.ServerStream -} - -type injectiveAccountsRPCStreamSubaccountBalanceServer struct { - grpc.ServerStream -} - -func (x *injectiveAccountsRPCStreamSubaccountBalanceServer) Send(m *StreamSubaccountBalanceResponse) error { - return x.ServerStream.SendMsg(m) -} - -func _InjectiveAccountsRPC_SubaccountHistory_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SubaccountHistoryRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(InjectiveAccountsRPCServer).SubaccountHistory(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/injective_accounts_rpc.InjectiveAccountsRPC/SubaccountHistory", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(InjectiveAccountsRPCServer).SubaccountHistory(ctx, req.(*SubaccountHistoryRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _InjectiveAccountsRPC_SubaccountOrderSummary_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SubaccountOrderSummaryRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(InjectiveAccountsRPCServer).SubaccountOrderSummary(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/injective_accounts_rpc.InjectiveAccountsRPC/SubaccountOrderSummary", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(InjectiveAccountsRPCServer).SubaccountOrderSummary(ctx, req.(*SubaccountOrderSummaryRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _InjectiveAccountsRPC_Rewards_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(RewardsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(InjectiveAccountsRPCServer).Rewards(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/injective_accounts_rpc.InjectiveAccountsRPC/Rewards", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(InjectiveAccountsRPCServer).Rewards(ctx, req.(*RewardsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _InjectiveAccountsRPC_StreamAccountData_Handler(srv interface{}, stream grpc.ServerStream) error { - m := new(StreamAccountDataRequest) - if err := stream.RecvMsg(m); err != nil { - return err - } - return srv.(InjectiveAccountsRPCServer).StreamAccountData(m, &injectiveAccountsRPCStreamAccountDataServer{stream}) -} - -type InjectiveAccountsRPC_StreamAccountDataServer interface { - Send(*StreamAccountDataResponse) error - grpc.ServerStream -} - -type injectiveAccountsRPCStreamAccountDataServer struct { - grpc.ServerStream -} - -func (x *injectiveAccountsRPCStreamAccountDataServer) Send(m *StreamAccountDataResponse) error { - return x.ServerStream.SendMsg(m) -} - -// InjectiveAccountsRPC_ServiceDesc is the grpc.ServiceDesc for InjectiveAccountsRPC service. -// It's only intended for direct use with grpc.RegisterService, -// and not to be introspected or modified (even as a copy) -var InjectiveAccountsRPC_ServiceDesc = grpc.ServiceDesc{ - ServiceName: "injective_accounts_rpc.InjectiveAccountsRPC", - HandlerType: (*InjectiveAccountsRPCServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "Portfolio", - Handler: _InjectiveAccountsRPC_Portfolio_Handler, - }, - { - MethodName: "OrderStates", - Handler: _InjectiveAccountsRPC_OrderStates_Handler, - }, - { - MethodName: "SubaccountsList", - Handler: _InjectiveAccountsRPC_SubaccountsList_Handler, - }, - { - MethodName: "SubaccountBalancesList", - Handler: _InjectiveAccountsRPC_SubaccountBalancesList_Handler, - }, - { - MethodName: "SubaccountBalanceEndpoint", - Handler: _InjectiveAccountsRPC_SubaccountBalanceEndpoint_Handler, - }, - { - MethodName: "SubaccountHistory", - Handler: _InjectiveAccountsRPC_SubaccountHistory_Handler, - }, - { - MethodName: "SubaccountOrderSummary", - Handler: _InjectiveAccountsRPC_SubaccountOrderSummary_Handler, - }, - { - MethodName: "Rewards", - Handler: _InjectiveAccountsRPC_Rewards_Handler, - }, - }, - Streams: []grpc.StreamDesc{ - { - StreamName: "StreamSubaccountBalance", - Handler: _InjectiveAccountsRPC_StreamSubaccountBalance_Handler, - ServerStreams: true, - }, - { - StreamName: "StreamAccountData", - Handler: _InjectiveAccountsRPC_StreamAccountData_Handler, - ServerStreams: true, - }, - }, - Metadata: "goadesign_goagen_injective_accounts_rpc.proto", -} diff --git a/exchange/accounts_rpc/pb/pb/injective_accounts_rpc.pb.gw.go b/exchange/accounts_rpc/pb/pb/injective_accounts_rpc.pb.gw.go deleted file mode 100644 index 4ceab949..00000000 --- a/exchange/accounts_rpc/pb/pb/injective_accounts_rpc.pb.gw.go +++ /dev/null @@ -1,882 +0,0 @@ -// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT. -// source: injective_accounts_rpc.proto - -/* -Package injective_accounts_rpcpb is a reverse proxy. - -It translates gRPC into RESTful JSON APIs. -*/ -package injective_accounts_rpcpb - -import ( - "context" - "io" - "net/http" - - "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" - "github.com/grpc-ecosystem/grpc-gateway/v2/utilities" - "google.golang.org/grpc" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/grpclog" - "google.golang.org/grpc/metadata" - "google.golang.org/grpc/status" - "google.golang.org/protobuf/proto" -) - -// Suppress "imported and not used" errors -var _ codes.Code -var _ io.Reader -var _ status.Status -var _ = runtime.String -var _ = utilities.NewDoubleArray -var _ = metadata.Join - -func request_InjectiveAccountsRPC_Portfolio_0(ctx context.Context, marshaler runtime.Marshaler, client InjectiveAccountsRPCClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq PortfolioRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.Portfolio(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_InjectiveAccountsRPC_Portfolio_0(ctx context.Context, marshaler runtime.Marshaler, server InjectiveAccountsRPCServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq PortfolioRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.Portfolio(ctx, &protoReq) - return msg, metadata, err - -} - -func request_InjectiveAccountsRPC_OrderStates_0(ctx context.Context, marshaler runtime.Marshaler, client InjectiveAccountsRPCClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq OrderStatesRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.OrderStates(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_InjectiveAccountsRPC_OrderStates_0(ctx context.Context, marshaler runtime.Marshaler, server InjectiveAccountsRPCServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq OrderStatesRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.OrderStates(ctx, &protoReq) - return msg, metadata, err - -} - -func request_InjectiveAccountsRPC_SubaccountsList_0(ctx context.Context, marshaler runtime.Marshaler, client InjectiveAccountsRPCClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SubaccountsListRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.SubaccountsList(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_InjectiveAccountsRPC_SubaccountsList_0(ctx context.Context, marshaler runtime.Marshaler, server InjectiveAccountsRPCServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SubaccountsListRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.SubaccountsList(ctx, &protoReq) - return msg, metadata, err - -} - -func request_InjectiveAccountsRPC_SubaccountBalancesList_0(ctx context.Context, marshaler runtime.Marshaler, client InjectiveAccountsRPCClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SubaccountBalancesListRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.SubaccountBalancesList(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_InjectiveAccountsRPC_SubaccountBalancesList_0(ctx context.Context, marshaler runtime.Marshaler, server InjectiveAccountsRPCServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SubaccountBalancesListRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.SubaccountBalancesList(ctx, &protoReq) - return msg, metadata, err - -} - -func request_InjectiveAccountsRPC_SubaccountBalanceEndpoint_0(ctx context.Context, marshaler runtime.Marshaler, client InjectiveAccountsRPCClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SubaccountBalanceEndpointRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.SubaccountBalanceEndpoint(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_InjectiveAccountsRPC_SubaccountBalanceEndpoint_0(ctx context.Context, marshaler runtime.Marshaler, server InjectiveAccountsRPCServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SubaccountBalanceEndpointRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.SubaccountBalanceEndpoint(ctx, &protoReq) - return msg, metadata, err - -} - -func request_InjectiveAccountsRPC_StreamSubaccountBalance_0(ctx context.Context, marshaler runtime.Marshaler, client InjectiveAccountsRPCClient, req *http.Request, pathParams map[string]string) (InjectiveAccountsRPC_StreamSubaccountBalanceClient, runtime.ServerMetadata, error) { - var protoReq StreamSubaccountBalanceRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - stream, err := client.StreamSubaccountBalance(ctx, &protoReq) - if err != nil { - return nil, metadata, err - } - header, err := stream.Header() - if err != nil { - return nil, metadata, err - } - metadata.HeaderMD = header - return stream, metadata, nil - -} - -func request_InjectiveAccountsRPC_SubaccountHistory_0(ctx context.Context, marshaler runtime.Marshaler, client InjectiveAccountsRPCClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SubaccountHistoryRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.SubaccountHistory(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_InjectiveAccountsRPC_SubaccountHistory_0(ctx context.Context, marshaler runtime.Marshaler, server InjectiveAccountsRPCServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SubaccountHistoryRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.SubaccountHistory(ctx, &protoReq) - return msg, metadata, err - -} - -func request_InjectiveAccountsRPC_SubaccountOrderSummary_0(ctx context.Context, marshaler runtime.Marshaler, client InjectiveAccountsRPCClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SubaccountOrderSummaryRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.SubaccountOrderSummary(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_InjectiveAccountsRPC_SubaccountOrderSummary_0(ctx context.Context, marshaler runtime.Marshaler, server InjectiveAccountsRPCServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SubaccountOrderSummaryRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.SubaccountOrderSummary(ctx, &protoReq) - return msg, metadata, err - -} - -func request_InjectiveAccountsRPC_Rewards_0(ctx context.Context, marshaler runtime.Marshaler, client InjectiveAccountsRPCClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq RewardsRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.Rewards(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_InjectiveAccountsRPC_Rewards_0(ctx context.Context, marshaler runtime.Marshaler, server InjectiveAccountsRPCServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq RewardsRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.Rewards(ctx, &protoReq) - return msg, metadata, err - -} - -func request_InjectiveAccountsRPC_StreamAccountData_0(ctx context.Context, marshaler runtime.Marshaler, client InjectiveAccountsRPCClient, req *http.Request, pathParams map[string]string) (InjectiveAccountsRPC_StreamAccountDataClient, runtime.ServerMetadata, error) { - var protoReq StreamAccountDataRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - stream, err := client.StreamAccountData(ctx, &protoReq) - if err != nil { - return nil, metadata, err - } - header, err := stream.Header() - if err != nil { - return nil, metadata, err - } - metadata.HeaderMD = header - return stream, metadata, nil - -} - -// RegisterInjectiveAccountsRPCHandlerServer registers the http handlers for service InjectiveAccountsRPC to "mux". -// UnaryRPC :call InjectiveAccountsRPCServer directly. -// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. -// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterInjectiveAccountsRPCHandlerFromEndpoint instead. -func RegisterInjectiveAccountsRPCHandlerServer(ctx context.Context, mux *runtime.ServeMux, server InjectiveAccountsRPCServer) error { - - mux.Handle("POST", pattern_InjectiveAccountsRPC_Portfolio_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/injective_accounts_rpc.InjectiveAccountsRPC/Portfolio", runtime.WithHTTPPathPattern("/injective_accounts_rpc.InjectiveAccountsRPC/Portfolio")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_InjectiveAccountsRPC_Portfolio_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_InjectiveAccountsRPC_Portfolio_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_InjectiveAccountsRPC_OrderStates_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/injective_accounts_rpc.InjectiveAccountsRPC/OrderStates", runtime.WithHTTPPathPattern("/injective_accounts_rpc.InjectiveAccountsRPC/OrderStates")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_InjectiveAccountsRPC_OrderStates_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_InjectiveAccountsRPC_OrderStates_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_InjectiveAccountsRPC_SubaccountsList_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/injective_accounts_rpc.InjectiveAccountsRPC/SubaccountsList", runtime.WithHTTPPathPattern("/injective_accounts_rpc.InjectiveAccountsRPC/SubaccountsList")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_InjectiveAccountsRPC_SubaccountsList_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_InjectiveAccountsRPC_SubaccountsList_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_InjectiveAccountsRPC_SubaccountBalancesList_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/injective_accounts_rpc.InjectiveAccountsRPC/SubaccountBalancesList", runtime.WithHTTPPathPattern("/injective_accounts_rpc.InjectiveAccountsRPC/SubaccountBalancesList")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_InjectiveAccountsRPC_SubaccountBalancesList_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_InjectiveAccountsRPC_SubaccountBalancesList_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_InjectiveAccountsRPC_SubaccountBalanceEndpoint_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/injective_accounts_rpc.InjectiveAccountsRPC/SubaccountBalanceEndpoint", runtime.WithHTTPPathPattern("/injective_accounts_rpc.InjectiveAccountsRPC/SubaccountBalanceEndpoint")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_InjectiveAccountsRPC_SubaccountBalanceEndpoint_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_InjectiveAccountsRPC_SubaccountBalanceEndpoint_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_InjectiveAccountsRPC_StreamSubaccountBalance_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - err := status.Error(codes.Unimplemented, "streaming calls are not yet supported in the in-process transport") - _, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - }) - - mux.Handle("POST", pattern_InjectiveAccountsRPC_SubaccountHistory_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/injective_accounts_rpc.InjectiveAccountsRPC/SubaccountHistory", runtime.WithHTTPPathPattern("/injective_accounts_rpc.InjectiveAccountsRPC/SubaccountHistory")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_InjectiveAccountsRPC_SubaccountHistory_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_InjectiveAccountsRPC_SubaccountHistory_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_InjectiveAccountsRPC_SubaccountOrderSummary_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/injective_accounts_rpc.InjectiveAccountsRPC/SubaccountOrderSummary", runtime.WithHTTPPathPattern("/injective_accounts_rpc.InjectiveAccountsRPC/SubaccountOrderSummary")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_InjectiveAccountsRPC_SubaccountOrderSummary_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_InjectiveAccountsRPC_SubaccountOrderSummary_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_InjectiveAccountsRPC_Rewards_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/injective_accounts_rpc.InjectiveAccountsRPC/Rewards", runtime.WithHTTPPathPattern("/injective_accounts_rpc.InjectiveAccountsRPC/Rewards")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_InjectiveAccountsRPC_Rewards_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_InjectiveAccountsRPC_Rewards_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_InjectiveAccountsRPC_StreamAccountData_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - err := status.Error(codes.Unimplemented, "streaming calls are not yet supported in the in-process transport") - _, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - }) - - return nil -} - -// RegisterInjectiveAccountsRPCHandlerFromEndpoint is same as RegisterInjectiveAccountsRPCHandler but -// automatically dials to "endpoint" and closes the connection when "ctx" gets done. -func RegisterInjectiveAccountsRPCHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { - conn, err := grpc.Dial(endpoint, opts...) - if err != nil { - return err - } - defer func() { - if err != nil { - if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) - } - return - } - go func() { - <-ctx.Done() - if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) - } - }() - }() - - return RegisterInjectiveAccountsRPCHandler(ctx, mux, conn) -} - -// RegisterInjectiveAccountsRPCHandler registers the http handlers for service InjectiveAccountsRPC to "mux". -// The handlers forward requests to the grpc endpoint over "conn". -func RegisterInjectiveAccountsRPCHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error { - return RegisterInjectiveAccountsRPCHandlerClient(ctx, mux, NewInjectiveAccountsRPCClient(conn)) -} - -// RegisterInjectiveAccountsRPCHandlerClient registers the http handlers for service InjectiveAccountsRPC -// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "InjectiveAccountsRPCClient". -// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "InjectiveAccountsRPCClient" -// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "InjectiveAccountsRPCClient" to call the correct interceptors. -func RegisterInjectiveAccountsRPCHandlerClient(ctx context.Context, mux *runtime.ServeMux, client InjectiveAccountsRPCClient) error { - - mux.Handle("POST", pattern_InjectiveAccountsRPC_Portfolio_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/injective_accounts_rpc.InjectiveAccountsRPC/Portfolio", runtime.WithHTTPPathPattern("/injective_accounts_rpc.InjectiveAccountsRPC/Portfolio")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_InjectiveAccountsRPC_Portfolio_0(annotatedContext, inboundMarshaler, client, req, pathParams) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_InjectiveAccountsRPC_Portfolio_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_InjectiveAccountsRPC_OrderStates_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/injective_accounts_rpc.InjectiveAccountsRPC/OrderStates", runtime.WithHTTPPathPattern("/injective_accounts_rpc.InjectiveAccountsRPC/OrderStates")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_InjectiveAccountsRPC_OrderStates_0(annotatedContext, inboundMarshaler, client, req, pathParams) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_InjectiveAccountsRPC_OrderStates_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_InjectiveAccountsRPC_SubaccountsList_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/injective_accounts_rpc.InjectiveAccountsRPC/SubaccountsList", runtime.WithHTTPPathPattern("/injective_accounts_rpc.InjectiveAccountsRPC/SubaccountsList")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_InjectiveAccountsRPC_SubaccountsList_0(annotatedContext, inboundMarshaler, client, req, pathParams) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_InjectiveAccountsRPC_SubaccountsList_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_InjectiveAccountsRPC_SubaccountBalancesList_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/injective_accounts_rpc.InjectiveAccountsRPC/SubaccountBalancesList", runtime.WithHTTPPathPattern("/injective_accounts_rpc.InjectiveAccountsRPC/SubaccountBalancesList")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_InjectiveAccountsRPC_SubaccountBalancesList_0(annotatedContext, inboundMarshaler, client, req, pathParams) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_InjectiveAccountsRPC_SubaccountBalancesList_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_InjectiveAccountsRPC_SubaccountBalanceEndpoint_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/injective_accounts_rpc.InjectiveAccountsRPC/SubaccountBalanceEndpoint", runtime.WithHTTPPathPattern("/injective_accounts_rpc.InjectiveAccountsRPC/SubaccountBalanceEndpoint")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_InjectiveAccountsRPC_SubaccountBalanceEndpoint_0(annotatedContext, inboundMarshaler, client, req, pathParams) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_InjectiveAccountsRPC_SubaccountBalanceEndpoint_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_InjectiveAccountsRPC_StreamSubaccountBalance_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/injective_accounts_rpc.InjectiveAccountsRPC/StreamSubaccountBalance", runtime.WithHTTPPathPattern("/injective_accounts_rpc.InjectiveAccountsRPC/StreamSubaccountBalance")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_InjectiveAccountsRPC_StreamSubaccountBalance_0(annotatedContext, inboundMarshaler, client, req, pathParams) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_InjectiveAccountsRPC_StreamSubaccountBalance_0(annotatedContext, mux, outboundMarshaler, w, req, func() (proto.Message, error) { return resp.Recv() }, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_InjectiveAccountsRPC_SubaccountHistory_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/injective_accounts_rpc.InjectiveAccountsRPC/SubaccountHistory", runtime.WithHTTPPathPattern("/injective_accounts_rpc.InjectiveAccountsRPC/SubaccountHistory")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_InjectiveAccountsRPC_SubaccountHistory_0(annotatedContext, inboundMarshaler, client, req, pathParams) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_InjectiveAccountsRPC_SubaccountHistory_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_InjectiveAccountsRPC_SubaccountOrderSummary_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/injective_accounts_rpc.InjectiveAccountsRPC/SubaccountOrderSummary", runtime.WithHTTPPathPattern("/injective_accounts_rpc.InjectiveAccountsRPC/SubaccountOrderSummary")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_InjectiveAccountsRPC_SubaccountOrderSummary_0(annotatedContext, inboundMarshaler, client, req, pathParams) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_InjectiveAccountsRPC_SubaccountOrderSummary_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_InjectiveAccountsRPC_Rewards_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/injective_accounts_rpc.InjectiveAccountsRPC/Rewards", runtime.WithHTTPPathPattern("/injective_accounts_rpc.InjectiveAccountsRPC/Rewards")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_InjectiveAccountsRPC_Rewards_0(annotatedContext, inboundMarshaler, client, req, pathParams) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_InjectiveAccountsRPC_Rewards_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_InjectiveAccountsRPC_StreamAccountData_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/injective_accounts_rpc.InjectiveAccountsRPC/StreamAccountData", runtime.WithHTTPPathPattern("/injective_accounts_rpc.InjectiveAccountsRPC/StreamAccountData")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_InjectiveAccountsRPC_StreamAccountData_0(annotatedContext, inboundMarshaler, client, req, pathParams) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_InjectiveAccountsRPC_StreamAccountData_0(annotatedContext, mux, outboundMarshaler, w, req, func() (proto.Message, error) { return resp.Recv() }, mux.GetForwardResponseOptions()...) - - }) - - return nil -} - -var ( - pattern_InjectiveAccountsRPC_Portfolio_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"injective_accounts_rpc.InjectiveAccountsRPC", "Portfolio"}, "")) - - pattern_InjectiveAccountsRPC_OrderStates_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"injective_accounts_rpc.InjectiveAccountsRPC", "OrderStates"}, "")) - - pattern_InjectiveAccountsRPC_SubaccountsList_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"injective_accounts_rpc.InjectiveAccountsRPC", "SubaccountsList"}, "")) - - pattern_InjectiveAccountsRPC_SubaccountBalancesList_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"injective_accounts_rpc.InjectiveAccountsRPC", "SubaccountBalancesList"}, "")) - - pattern_InjectiveAccountsRPC_SubaccountBalanceEndpoint_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"injective_accounts_rpc.InjectiveAccountsRPC", "SubaccountBalanceEndpoint"}, "")) - - pattern_InjectiveAccountsRPC_StreamSubaccountBalance_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"injective_accounts_rpc.InjectiveAccountsRPC", "StreamSubaccountBalance"}, "")) - - pattern_InjectiveAccountsRPC_SubaccountHistory_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"injective_accounts_rpc.InjectiveAccountsRPC", "SubaccountHistory"}, "")) - - pattern_InjectiveAccountsRPC_SubaccountOrderSummary_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"injective_accounts_rpc.InjectiveAccountsRPC", "SubaccountOrderSummary"}, "")) - - pattern_InjectiveAccountsRPC_Rewards_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"injective_accounts_rpc.InjectiveAccountsRPC", "Rewards"}, "")) - - pattern_InjectiveAccountsRPC_StreamAccountData_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"injective_accounts_rpc.InjectiveAccountsRPC", "StreamAccountData"}, "")) -) - -var ( - forward_InjectiveAccountsRPC_Portfolio_0 = runtime.ForwardResponseMessage - - forward_InjectiveAccountsRPC_OrderStates_0 = runtime.ForwardResponseMessage - - forward_InjectiveAccountsRPC_SubaccountsList_0 = runtime.ForwardResponseMessage - - forward_InjectiveAccountsRPC_SubaccountBalancesList_0 = runtime.ForwardResponseMessage - - forward_InjectiveAccountsRPC_SubaccountBalanceEndpoint_0 = runtime.ForwardResponseMessage - - forward_InjectiveAccountsRPC_StreamSubaccountBalance_0 = runtime.ForwardResponseStream - - forward_InjectiveAccountsRPC_SubaccountHistory_0 = runtime.ForwardResponseMessage - - forward_InjectiveAccountsRPC_SubaccountOrderSummary_0 = runtime.ForwardResponseMessage - - forward_InjectiveAccountsRPC_Rewards_0 = runtime.ForwardResponseMessage - - forward_InjectiveAccountsRPC_StreamAccountData_0 = runtime.ForwardResponseStream -) diff --git a/exchange/accounts_rpc/pb/pb/injective_accounts_rpc.proto b/exchange/accounts_rpc/pb/pb/injective_accounts_rpc.proto deleted file mode 100644 index e28956da..00000000 --- a/exchange/accounts_rpc/pb/pb/injective_accounts_rpc.proto +++ /dev/null @@ -1,623 +0,0 @@ -// Code generated with goa v3.7.0, DO NOT EDIT. -// -// InjectiveAccountsRPC protocol buffer definition -// -// Command: -// $ goa gen github.com/InjectiveLabs/injective-indexer/api/design -o ../ - -syntax = "proto3"; - -package injective_accounts_rpc; - -option go_package = "/injective_accounts_rpcpb"; - -// InjectiveAccountsRPC defines API of Exchange Accounts provider. -service InjectiveAccountsRPC { - // Provide the account's portfolio value in USD. - rpc Portfolio (PortfolioRequest) returns (PortfolioResponse); - // List order states by order hashes - rpc OrderStates (OrderStatesRequest) returns (OrderStatesResponse); - // List all subaccounts IDs of an account address - rpc SubaccountsList (SubaccountsListRequest) returns (SubaccountsListResponse); - // List subaccount balances for the provided denoms. - rpc SubaccountBalancesList (SubaccountBalancesListRequest) returns (SubaccountBalancesListResponse); - // Gets a balance for specific coin denom - rpc SubaccountBalanceEndpoint (SubaccountBalanceEndpointRequest) returns (SubaccountBalanceEndpointResponse); - // StreamSubaccountBalance streams new balance changes for a specified -// subaccount and denoms. If no denoms are provided, all denom changes are -// streamed. - rpc StreamSubaccountBalance (StreamSubaccountBalanceRequest) returns (stream StreamSubaccountBalanceResponse); - // Get subaccount's deposits and withdrawals history - rpc SubaccountHistory (SubaccountHistoryRequest) returns (SubaccountHistoryResponse); - // Get subaccount's orders summary - rpc SubaccountOrderSummary (SubaccountOrderSummaryRequest) returns (SubaccountOrderSummaryResponse); - // Provide historical trading rewards - rpc Rewards (RewardsRequest) returns (RewardsResponse); - // Stream live data for an account and respective data - rpc StreamAccountData (StreamAccountDataRequest) returns (stream StreamAccountDataResponse); -} - -message PortfolioRequest { - // Account address - string account_address = 1; -} - -message PortfolioResponse { - // The portfolio of this account - AccountPortfolio portfolio = 1; -} - -message AccountPortfolio { - // The account's portfolio value in USD. - string portfolio_value = 1; - // The account's available balance value in USD. - string available_balance = 2; - // The account's locked balance value in USD. - string locked_balance = 3; - // The account's total unrealized PnL value in USD. - string unrealized_pnl = 4; - // List of all subaccounts' portfolio - repeated SubaccountPortfolio subaccounts = 5; -} - -message SubaccountPortfolio { - // The ID of this subaccount - string subaccount_id = 1; - // The subaccount's available balance value in USD. - string available_balance = 2; - // The subaccount's locked balance value in USD. - string locked_balance = 3; - // The subaccount's total unrealized PnL value in USD. - string unrealized_pnl = 4; -} - -message OrderStatesRequest { - repeated string spot_order_hashes = 1; - repeated string derivative_order_hashes = 2; -} - -message OrderStatesResponse { - // List of the spot order state records - repeated OrderStateRecord spot_order_states = 1; - // List of the derivative order state records - repeated OrderStateRecord derivative_order_states = 2; -} - -message OrderStateRecord { - // Hash of the order - string order_hash = 1; - // The subaccountId that this order belongs to - string subaccount_id = 2; - // The Market ID of the order - string market_id = 3; - // The type of the order - string order_type = 4; - // The side of the order - string order_side = 5; - // The state (status) of the order - string state = 6; - // The filled quantity of the order - string quantity_filled = 7; - // The filled quantity of the order - string quantity_remaining = 8; - // Order committed timestamp in UNIX millis. - sint64 created_at = 9; - // Order updated timestamp in UNIX millis. - sint64 updated_at = 10; - // Order prices - string price = 11; - // Margin for derivative order - string margin = 12; -} - -message SubaccountsListRequest { - // Account address, the subaccounts owner - string account_address = 1; -} - -message SubaccountsListResponse { - repeated string subaccounts = 1; -} - -message SubaccountBalancesListRequest { - // SubaccountId of the trader we want to get the trades from - string subaccount_id = 1; - // Filter balances by denoms. If not set, the balances of all the denoms for -// the subaccount are provided. - repeated string denoms = 2; -} - -message SubaccountBalancesListResponse { - // List of subaccount balances - repeated SubaccountBalance balances = 1; -} - -message SubaccountBalance { - // Related subaccount ID - string subaccount_id = 1; - // Account address, owner of this subaccount - string account_address = 2; - // Coin denom on the chain. - string denom = 3; - SubaccountDeposit deposit = 4; -} - -message SubaccountDeposit { - string total_balance = 1; - string available_balance = 2; -} - -message SubaccountBalanceEndpointRequest { - // SubaccountId of the trader we want to get the trades from - string subaccount_id = 1; - // Specify denom to get balance - string denom = 2; -} - -message SubaccountBalanceEndpointResponse { - // Subaccount balance - SubaccountBalance balance = 1; -} - -message StreamSubaccountBalanceRequest { - // SubaccountId of the trader we want to get the trades from - string subaccount_id = 1; - // Filter balances by denoms. If not set, the balances of all the denoms for -// the subaccount are provided. - repeated string denoms = 2; -} - -message StreamSubaccountBalanceResponse { - // Subaccount balance - SubaccountBalance balance = 1; - // Operation timestamp in UNIX millis. - sint64 timestamp = 2; -} - -message SubaccountHistoryRequest { - // SubaccountId of the trader we want to get the history from - string subaccount_id = 1; - // Filter history by denom - string denom = 2; - // Filter history by transfer type - repeated string transfer_types = 3; - // Skip will skip the first n item from the result - uint64 skip = 4; - // Limit is used to specify the maximum number of items to be returned - sint32 limit = 5; - // Upper bound of account transfer history's executedAt - sint64 end_time = 6; -} - -message SubaccountHistoryResponse { - // List of subaccount transfers - repeated SubaccountBalanceTransfer transfers = 1; - Paging paging = 2; -} - -message SubaccountBalanceTransfer { - // Type of the subaccount balance transfer - string transfer_type = 1; - // Subaccount ID of the sending side - string src_subaccount_id = 2; - // Account address of the sending side - string src_account_address = 3; - // Subaccount ID of the receiving side - string dst_subaccount_id = 4; - // Account address of the receiving side - string dst_account_address = 5; - // Coin amount of the transfer - CosmosCoin amount = 6; - // Timestamp of the transfer in UNIX millis - sint64 executed_at = 7; -} - -message CosmosCoin { - // Coin denominator - string denom = 1; - // Coin amount (big int) - string amount = 2; -} -// Paging defines the structure for required params for handling pagination -message Paging { - // total number of txs saved in database - sint64 total = 1; - // can be either block height or index num - sint32 from = 2; - // can be either block height or index num - sint32 to = 3; - // count entries by subaccount, serving some places on helix - sint64 count_by_subaccount = 4; - // array of tokens to navigate to the next pages - repeated string next = 5; -} - -message SubaccountOrderSummaryRequest { - // SubaccountId of the trader we want to get the summary from - string subaccount_id = 1; - // MarketId is limiting order summary to specific market only - string market_id = 2; - // Filter by direction of the orders - string order_direction = 3; -} - -message SubaccountOrderSummaryResponse { - // Total count of subaccount's spot orders in given market and direction - sint64 spot_orders_total = 1; - // Total count of subaccount's derivative orders in given market and direction - sint64 derivative_orders_total = 2; -} - -message RewardsRequest { - // The distribution epoch sequence number. -1 for latest. - sint64 epoch = 1; - // Account address for the rewards distribution - string account_address = 2; -} - -message RewardsResponse { - // The trading rewards distributed - repeated Reward rewards = 1; -} - -message Reward { - // Account address - string account_address = 1; - // Reward coins distributed - repeated Coin rewards = 2; - // Rewards distribution timestamp in UNIX millis. - sint64 distributed_at = 3; -} - -message Coin { - // Denom of the coin - string denom = 1; - string amount = 2; -} - -message StreamAccountDataRequest { - // account address - string account_address = 1; -} - -message StreamAccountDataResponse { - SubaccountBalanceResult subaccount_balance = 1; - PositionsResult position = 2; - TradeResult trade = 3; - OrderResult order = 4; - OrderHistoryResult order_history = 5; - FundingPaymentResult funding_payment = 6; -} - -message SubaccountBalanceResult { - // Subaccount balance - SubaccountBalance balance = 1; - // Operation timestamp in UNIX millis. - sint64 timestamp = 2; -} - -message PositionsResult { - // Updated derivative Position - Position position = 1; - // Operation timestamp in UNIX millis. - sint64 timestamp = 2; -} - -message Position { - // Ticker of the derivative market - string ticker = 1; - // Derivative Market ID - string market_id = 2; - // The subaccountId that the position belongs to - string subaccount_id = 3; - // Direction of the position - string direction = 4; - // Quantity of the position - string quantity = 5; - // Price of the position - string entry_price = 6; - // Margin of the position - string margin = 7; - // LiquidationPrice of the position - string liquidation_price = 8; - // MarkPrice of the position - string mark_price = 9; - // Position updated timestamp in UNIX millis. - sint64 updated_at = 10; - // Position created timestamp in UNIX millis. - sint64 created_at = 11; -} - -message TradeResult { - oneof trade { - // New spot market trade - SpotTrade spot_trade = 1; - // New derivative market trade - DerivativeTrade derivative_trade = 2; - } - // Executed trades update type - string operation_type = 3; - // Operation timestamp in UNIX millis. - sint64 timestamp = 4; -} - -message SpotTrade { - // Maker order hash. - string order_hash = 1; - // The subaccountId that executed the trade - string subaccount_id = 2; - // The ID of the market that this trade is in - string market_id = 3; - // The execution type of the trade - string trade_execution_type = 4; - // The direction the trade - string trade_direction = 5; - // Price level at which trade has been executed - PriceLevel price = 6; - // The fee associated with the trade (quote asset denom) - string fee = 7; - // Timestamp of trade execution in UNIX millis - sint64 executed_at = 8; - // Fee recipient address - string fee_recipient = 9; - // A unique string that helps differentiate between trades - string trade_id = 10; - // Trade's execution side, marker/taker - string execution_side = 11; - // Custom client order ID - string cid = 12; -} - -message PriceLevel { - // Price number of the price level. - string price = 1; - // Quantity of the price level. - string quantity = 2; - // Price level last updated timestamp in UNIX millis. - sint64 timestamp = 3; -} - -message DerivativeTrade { - // Order hash. - string order_hash = 1; - // The subaccountId that executed the trade - string subaccount_id = 2; - // The ID of the market that this trade is in - string market_id = 3; - // The execution type of the trade - string trade_execution_type = 4; - // True if the trade is a liquidation - bool is_liquidation = 5; - // Position Delta from the trade - PositionDelta position_delta = 6; - // The payout associated with the trade - string payout = 7; - // The fee associated with the trade - string fee = 8; - // Timestamp of trade execution in UNIX millis - sint64 executed_at = 9; - // Fee recipient address - string fee_recipient = 10; - // A unique string that helps differentiate between trades - string trade_id = 11; - // Trade's execution side, marker/taker - string execution_side = 12; - // Custom client order ID - string cid = 13; -} - -message PositionDelta { - // The direction the trade - string trade_direction = 1; - // Execution Price of the trade. - string execution_price = 2; - // Execution Quantity of the trade. - string execution_quantity = 3; - // Execution Margin of the trade. - string execution_margin = 4; -} - -message OrderResult { - oneof order { - // Updated spot market order - SpotLimitOrder spot_order = 1; - // Updated derivative market order - DerivativeLimitOrder derivative_order = 2; - } - // Executed orders update type - string operation_type = 3; - // Operation timestamp in UNIX millis. - sint64 timestamp = 4; -} - -message SpotLimitOrder { - // Hash of the order - string order_hash = 1; - // The side of the order - string order_side = 2; - // Spot Market ID is keccak265(baseDenom + quoteDenom) - string market_id = 3; - // The subaccountId that this order belongs to - string subaccount_id = 4; - // Price of the order - string price = 5; - // Quantity of the order - string quantity = 6; - // The amount of the quantity remaining unfilled - string unfilled_quantity = 7; - // Trigger price is the trigger price used by stop/take orders. 0 if the -// trigger price is not set. - string trigger_price = 8; - // Fee recipient address - string fee_recipient = 9; - // Order state - string state = 10; - // Order committed timestamp in UNIX millis. - sint64 created_at = 11; - // Order updated timestamp in UNIX millis. - sint64 updated_at = 12; - // Transaction Hash where order is created. Not all orders have this field - string tx_hash = 13; - // Custom client order ID - string cid = 14; -} - -message DerivativeLimitOrder { - // Hash of the order - string order_hash = 1; - // The side of the order - string order_side = 2; - // Derivative Market ID - string market_id = 3; - // The subaccountId that this order belongs to - string subaccount_id = 4; - // True if the order is a reduce-only order - bool is_reduce_only = 5; - // Margin of the order - string margin = 6; - // Price of the order - string price = 7; - // Quantity of the order - string quantity = 8; - // The amount of the quantity remaining unfilled - string unfilled_quantity = 9; - // Trigger price is the trigger price used by stop/take orders - string trigger_price = 10; - // Fee recipient address - string fee_recipient = 11; - // Order state - string state = 12; - // Order committed timestamp in UNIX millis. - sint64 created_at = 13; - // Order updated timestamp in UNIX millis. - sint64 updated_at = 14; - // Order number of subaccount - sint64 order_number = 15; - // Order type - string order_type = 16; - // Order type - bool is_conditional = 17; - // Trigger timestamp, only exists for conditional orders - uint64 trigger_at = 18; - // OrderHash of order that is triggered by this conditional order - string placed_order_hash = 19; - // Execution type of conditional order - string execution_type = 20; - // Transaction Hash where order is created. Not all orders have this field - string tx_hash = 21; - // Custom client order ID - string cid = 22; -} - -message OrderHistoryResult { - oneof order_history { - // Spot order history - SpotOrderHistory spot_order_history = 1; - // Derivative order history - DerivativeOrderHistory derivative_order_history = 2; - } - // Order update type - string operation_type = 3; - // Operation timestamp in UNIX millis. - sint64 timestamp = 4; -} - -message SpotOrderHistory { - // Hash of the order - string order_hash = 1; - // Spot Market ID is keccak265(baseDenom + quoteDenom) - string market_id = 2; - // active state of the order - bool is_active = 3; - // The subaccountId that this order belongs to - string subaccount_id = 4; - // The execution type - string execution_type = 5; - // The side of the order - string order_type = 6; - // Price of the order - string price = 7; - // Trigger price - string trigger_price = 8; - // Quantity of the order - string quantity = 9; - // Filled amount - string filled_quantity = 10; - // Order state - string state = 11; - // Order committed timestamp in UNIX millis. - sint64 created_at = 12; - // Order updated timestamp in UNIX millis. - sint64 updated_at = 13; - // Order direction (order side) - string direction = 14; - // Transaction Hash where order is created. Not all orders have this field - string tx_hash = 15; - // Custom client order ID - string cid = 16; -} - -message DerivativeOrderHistory { - // Hash of the order - string order_hash = 1; - // Spot Market ID is keccak265(baseDenom + quoteDenom) - string market_id = 2; - // active state of the order - bool is_active = 3; - // The subaccountId that this order belongs to - string subaccount_id = 4; - // The execution type - string execution_type = 5; - // The side of the order - string order_type = 6; - // Price of the order - string price = 7; - // Trigger price - string trigger_price = 8; - // Quantity of the order - string quantity = 9; - // Filled amount - string filled_quantity = 10; - // Order state - string state = 11; - // Order committed timestamp in UNIX millis. - sint64 created_at = 12; - // Order updated timestamp in UNIX millis. - sint64 updated_at = 13; - // True if an order is reduce only - bool is_reduce_only = 14; - // Order direction (order side) - string direction = 15; - // True if this is conditional order, otherwise false - bool is_conditional = 16; - // Trigger timestamp in unix milli - uint64 trigger_at = 17; - // Order hash placed when this triggers - string placed_order_hash = 18; - // Order's margin - string margin = 19; - // Transaction Hash where order is created. Not all orders have this field - string tx_hash = 20; - // Custom client order ID - string cid = 21; -} - -message FundingPaymentResult { - // Funding payments of the account - FundingPayment funding_payments = 1; - // Funding payments type - string operation_type = 2; - // Operation timestamp in UNIX millis. - sint64 timestamp = 4; -} - -message FundingPayment { - // Derivative Market ID - string market_id = 1; - // The subaccountId that the position belongs to - string subaccount_id = 2; - // Amount of the funding payment - string amount = 3; - // Timestamp of funding payment in UNIX millis - sint64 timestamp = 4; -} diff --git a/exchange/auction_rpc/pb/goadesign_goagen_injective_auction_rpc.pb.go b/exchange/auction_rpc/pb/goadesign_goagen_injective_auction_rpc.pb.go index 865f0882..0640a809 100644 --- a/exchange/auction_rpc/pb/goadesign_goagen_injective_auction_rpc.pb.go +++ b/exchange/auction_rpc/pb/goadesign_goagen_injective_auction_rpc.pb.go @@ -8,7 +8,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.30.0 -// protoc v3.19.4 +// protoc v3.21.12 // source: goadesign_goagen_injective_auction_rpc.proto package injective_auction_rpcpb diff --git a/exchange/auction_rpc/pb/goadesign_goagen_injective_auction_rpc_grpc.pb.go b/exchange/auction_rpc/pb/goadesign_goagen_injective_auction_rpc_grpc.pb.go index 4100ffbf..3c89d6b5 100644 --- a/exchange/auction_rpc/pb/goadesign_goagen_injective_auction_rpc_grpc.pb.go +++ b/exchange/auction_rpc/pb/goadesign_goagen_injective_auction_rpc_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.2.0 -// - protoc v3.19.4 +// - protoc v3.21.12 // source: goadesign_goagen_injective_auction_rpc.proto package injective_auction_rpcpb diff --git a/exchange/campaign_rpc/pb/goadesign_goagen_injective_campaign_rpc.pb.go b/exchange/campaign_rpc/pb/goadesign_goagen_injective_campaign_rpc.pb.go index da99cb0b..cb9eacab 100644 --- a/exchange/campaign_rpc/pb/goadesign_goagen_injective_campaign_rpc.pb.go +++ b/exchange/campaign_rpc/pb/goadesign_goagen_injective_campaign_rpc.pb.go @@ -8,7 +8,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.30.0 -// protoc v3.19.4 +// protoc v3.21.12 // source: goadesign_goagen_injective_campaign_rpc.proto package injective_campaign_rpcpb @@ -792,12 +792,23 @@ type CampaignsV2Request struct { // Campaign type Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` - // Whether the campaign is active + // Whether the campaign is active. + // Deprecated: use status instead. Active bool `protobuf:"varint,2,opt,name=active,proto3" json:"active,omitempty"` // Limit number of returned campaigns Limit int32 `protobuf:"zigzag32,3,opt,name=limit,proto3" json:"limit,omitempty"` // Cursor for pagination Cursor string `protobuf:"bytes,4,opt,name=cursor,proto3" json:"cursor,omitempty"` + // Filter campaigns by start date greater than this value in milliseconds + FromStartDate int64 `protobuf:"zigzag64,5,opt,name=from_start_date,json=fromStartDate,proto3" json:"from_start_date,omitempty"` + // Filter campaigns by start date lower than this value in milliseconds + ToStartDate int64 `protobuf:"zigzag64,6,opt,name=to_start_date,json=toStartDate,proto3" json:"to_start_date,omitempty"` + // Filter campaigns by end date greater than this value in milliseconds + FromEndDate int64 `protobuf:"zigzag64,7,opt,name=from_end_date,json=fromEndDate,proto3" json:"from_end_date,omitempty"` + // Filter campaigns by end date lower than this value in milliseconds + ToEndDate int64 `protobuf:"zigzag64,8,opt,name=to_end_date,json=toEndDate,proto3" json:"to_end_date,omitempty"` + // Filter campaigns by status + Status string `protobuf:"bytes,9,opt,name=status,proto3" json:"status,omitempty"` } func (x *CampaignsV2Request) Reset() { @@ -860,6 +871,41 @@ func (x *CampaignsV2Request) GetCursor() string { return "" } +func (x *CampaignsV2Request) GetFromStartDate() int64 { + if x != nil { + return x.FromStartDate + } + return 0 +} + +func (x *CampaignsV2Request) GetToStartDate() int64 { + if x != nil { + return x.ToStartDate + } + return 0 +} + +func (x *CampaignsV2Request) GetFromEndDate() int64 { + if x != nil { + return x.FromEndDate + } + return 0 +} + +func (x *CampaignsV2Request) GetToEndDate() int64 { + if x != nil { + return x.ToEndDate + } + return 0 +} + +func (x *CampaignsV2Request) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + type CampaignsV2Response struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2085,246 +2131,256 @@ var file_goadesign_goagen_injective_campaign_rpc_proto_rawDesc = []byte{ 0x75, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x11, 0x52, 0x0b, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x22, 0x6e, 0x0a, 0x12, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x56, - 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, - 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x61, 0x63, - 0x74, 0x69, 0x76, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, - 0x72, 0x73, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, - 0x6f, 0x72, 0x22, 0x6f, 0x0a, 0x13, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x56, - 0x32, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x40, 0x0a, 0x09, 0x63, 0x61, 0x6d, - 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x69, + 0x6e, 0x74, 0x22, 0x96, 0x02, 0x0a, 0x12, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, + 0x56, 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, + 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x61, + 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x63, + 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, + 0x73, 0x6f, 0x72, 0x12, 0x26, 0x0a, 0x0f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0d, 0x66, 0x72, + 0x6f, 0x6d, 0x53, 0x74, 0x61, 0x72, 0x74, 0x44, 0x61, 0x74, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x74, + 0x6f, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x12, 0x52, 0x0b, 0x74, 0x6f, 0x53, 0x74, 0x61, 0x72, 0x74, 0x44, 0x61, 0x74, 0x65, 0x12, + 0x22, 0x0a, 0x0d, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0b, 0x66, 0x72, 0x6f, 0x6d, 0x45, 0x6e, 0x64, 0x44, + 0x61, 0x74, 0x65, 0x12, 0x1e, 0x0a, 0x0b, 0x74, 0x6f, 0x5f, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x61, + 0x74, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x74, 0x6f, 0x45, 0x6e, 0x64, 0x44, + 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x6f, 0x0a, 0x13, 0x43, + 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x56, 0x32, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x40, 0x0a, 0x09, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, + 0x65, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, + 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x56, 0x32, 0x52, 0x09, 0x63, 0x61, 0x6d, 0x70, 0x61, + 0x69, 0x67, 0x6e, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0xc3, 0x04, 0x0a, + 0x0a, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x56, 0x32, 0x12, 0x1f, 0x0a, 0x0b, 0x63, + 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, + 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x74, + 0x61, 0x6c, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x44, 0x61, 0x74, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x64, + 0x61, 0x74, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x12, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x44, 0x61, + 0x74, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x73, 0x5f, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x61, 0x62, + 0x6c, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x73, 0x43, 0x6c, 0x61, 0x69, + 0x6d, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x69, + 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x11, 0x52, 0x07, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x49, 0x64, + 0x12, 0x29, 0x0a, 0x10, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x74, + 0x72, 0x61, 0x63, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6d, 0x61, 0x6e, 0x61, + 0x67, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x12, 0x36, 0x0a, 0x07, 0x72, + 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, - 0x6e, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x56, 0x32, - 0x52, 0x09, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x63, - 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, - 0x73, 0x6f, 0x72, 0x22, 0xc3, 0x04, 0x0a, 0x0a, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, - 0x56, 0x32, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, - 0x6e, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, - 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x63, 0x6f, 0x72, - 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, - 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, - 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x12, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x44, 0x61, 0x74, 0x65, 0x12, 0x19, - 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x12, - 0x52, 0x07, 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x73, 0x5f, - 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x0b, 0x69, 0x73, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x19, 0x0a, 0x08, - 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x11, 0x52, 0x07, - 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x49, 0x64, 0x12, 0x29, 0x0a, 0x10, 0x6d, 0x61, 0x6e, 0x61, 0x67, - 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, - 0x63, 0x74, 0x12, 0x36, 0x0a, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x0c, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, - 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x69, - 0x6e, 0x52, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0x30, 0x0a, 0x14, 0x73, 0x75, - 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x5f, 0x73, 0x75, 0x66, 0x66, - 0x69, 0x78, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x53, 0x75, 0x66, 0x66, 0x69, 0x78, 0x12, 0x27, 0x0a, 0x0f, - 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x18, - 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x6e, - 0x74, 0x72, 0x61, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0f, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x83, 0x01, 0x0a, 0x11, 0x4c, 0x69, - 0x73, 0x74, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x2b, 0x0a, 0x11, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x74, - 0x72, 0x61, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x61, 0x6d, 0x70, - 0x61, 0x69, 0x67, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x12, 0x14, 0x0a, 0x05, - 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, 0x69, 0x6d, - 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x11, - 0x52, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x62, - 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x6f, 0x72, 0x74, 0x42, 0x79, 0x22, - 0xf6, 0x01, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x06, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, - 0x76, 0x65, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x72, 0x70, 0x63, 0x2e, - 0x47, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x06, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x12, 0x36, 0x0a, - 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, - 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, - 0x67, 0x6e, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x70, - 0x61, 0x67, 0x69, 0x6e, 0x67, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, - 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x64, 0x41, 0x74, 0x12, 0x52, 0x0a, 0x10, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, - 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, - 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, - 0x69, 0x67, 0x6e, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, - 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x0f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, - 0x6e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x22, 0xe5, 0x03, 0x0a, 0x05, 0x47, 0x75, 0x69, - 0x6c, 0x64, 0x12, 0x2b, 0x0a, 0x11, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x63, - 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, - 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x12, - 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x6d, 0x61, - 0x73, 0x74, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0d, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, - 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, - 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x76, 0x6c, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x76, 0x6c, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x21, 0x0a, - 0x0c, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, - 0x12, 0x24, 0x0a, 0x0e, 0x72, 0x61, 0x6e, 0x6b, 0x5f, 0x62, 0x79, 0x5f, 0x76, 0x6f, 0x6c, 0x75, - 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x11, 0x52, 0x0c, 0x72, 0x61, 0x6e, 0x6b, 0x42, 0x79, - 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0b, 0x72, 0x61, 0x6e, 0x6b, 0x5f, 0x62, - 0x79, 0x5f, 0x74, 0x76, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x11, 0x52, 0x09, 0x72, 0x61, 0x6e, - 0x6b, 0x42, 0x79, 0x54, 0x76, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x6f, 0x67, 0x6f, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6c, 0x6f, 0x67, 0x6f, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x6f, - 0x74, 0x61, 0x6c, 0x5f, 0x74, 0x76, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, - 0x6f, 0x74, 0x61, 0x6c, 0x54, 0x76, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0e, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x73, - 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, - 0x73, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x6d, 0x61, 0x73, 0x74, 0x65, - 0x72, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0d, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x20, - 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x10, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x22, 0x82, 0x03, 0x0a, 0x0f, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x53, 0x75, 0x6d, - 0x6d, 0x61, 0x72, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x61, 0x6d, 0x70, 0x61, - 0x69, 0x67, 0x6e, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x11, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, - 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x10, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, - 0x63, 0x74, 0x12, 0x2c, 0x0a, 0x12, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x67, 0x75, 0x69, 0x6c, - 0x64, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x11, 0x52, 0x10, - 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x74, 0x76, 0x6c, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x54, 0x76, 0x6c, 0x12, 0x2a, 0x0a, - 0x11, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x74, - 0x76, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x41, - 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x54, 0x76, 0x6c, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x6f, 0x74, - 0x61, 0x6c, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, - 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x12, - 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x2e, 0x0a, 0x13, 0x74, - 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x11, 0x52, 0x11, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x4d, - 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, - 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x12, 0x52, - 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, - 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x12, 0x52, 0x07, 0x65, 0x6e, - 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xd2, 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x75, - 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x2b, 0x0a, 0x11, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x63, 0x6f, - 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x61, - 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x12, 0x19, - 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, - 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, - 0x12, 0x0a, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x11, 0x52, 0x04, 0x73, - 0x6b, 0x69, 0x70, 0x12, 0x2c, 0x0a, 0x12, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x67, - 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x10, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x6e, 0x66, - 0x6f, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x62, 0x79, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x73, 0x6f, 0x72, 0x74, 0x42, 0x79, 0x22, 0xcf, 0x01, 0x0a, 0x18, 0x4c, - 0x69, 0x73, 0x74, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, - 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, - 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x72, 0x70, - 0x63, 0x2e, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x07, 0x6d, - 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x36, 0x0a, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, + 0x6e, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x07, 0x72, 0x65, 0x77, 0x61, + 0x72, 0x64, 0x73, 0x12, 0x30, 0x0a, 0x14, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x5f, 0x69, 0x64, 0x5f, 0x73, 0x75, 0x66, 0x66, 0x69, 0x78, 0x18, 0x0d, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x12, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x53, + 0x75, 0x66, 0x66, 0x69, 0x78, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, + 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, + 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x12, 0x12, + 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, + 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x10, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x22, 0x83, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x75, 0x69, 0x6c, 0x64, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x11, 0x63, 0x61, 0x6d, 0x70, + 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x43, 0x6f, 0x6e, + 0x74, 0x72, 0x61, 0x63, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, + 0x6b, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x11, 0x52, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x12, + 0x17, 0x0a, 0x07, 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x62, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x73, 0x6f, 0x72, 0x74, 0x42, 0x79, 0x22, 0xf6, 0x01, 0x0a, 0x12, 0x4c, 0x69, 0x73, + 0x74, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x35, 0x0a, 0x06, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1d, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x61, 0x6d, 0x70, + 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x06, + 0x67, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x12, 0x36, 0x0a, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x72, 0x70, 0x63, 0x2e, - 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x12, 0x3c, - 0x0a, 0x0a, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, - 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x75, 0x69, 0x6c, - 0x64, 0x52, 0x09, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xd3, 0x03, 0x0a, - 0x0b, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x2b, 0x0a, 0x11, - 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, - 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, - 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x75, 0x69, - 0x6c, 0x64, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1b, - 0x0a, 0x09, 0x6a, 0x6f, 0x69, 0x6e, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x12, 0x52, 0x08, 0x6a, 0x6f, 0x69, 0x6e, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x74, - 0x76, 0x6c, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x74, 0x76, 0x6c, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x76, 0x6f, 0x6c, 0x75, - 0x6d, 0x65, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, - 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x74, - 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x74, 0x76, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x54, 0x76, 0x6c, 0x12, 0x36, 0x0a, 0x17, 0x76, 0x6f, 0x6c, 0x75, - 0x6d, 0x65, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, - 0x61, 0x67, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x01, 0x52, 0x15, 0x76, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, - 0x12, 0x30, 0x0a, 0x14, 0x74, 0x76, 0x6c, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x70, 0x65, - 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x01, 0x52, 0x12, - 0x74, 0x76, 0x6c, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, - 0x67, 0x65, 0x12, 0x3b, 0x0a, 0x0a, 0x74, 0x76, 0x6c, 0x5f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, - 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, - 0x76, 0x65, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x72, 0x70, 0x63, 0x2e, - 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x09, 0x74, 0x76, 0x6c, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, - 0x41, 0x0a, 0x0d, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, - 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, - 0x76, 0x65, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x72, 0x70, 0x63, 0x2e, - 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x0c, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x77, 0x61, - 0x72, 0x64, 0x22, 0x5e, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, - 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x11, 0x63, + 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x12, 0x1d, + 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x12, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x52, 0x0a, + 0x10, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, + 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, + 0x69, 0x76, 0x65, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x72, 0x70, 0x63, + 0x2e, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, + 0x52, 0x0f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, + 0x79, 0x22, 0xe5, 0x03, 0x0a, 0x05, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x12, 0x2b, 0x0a, 0x11, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, - 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, - 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, - 0x73, 0x73, 0x22, 0x51, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, - 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x04, - 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x69, 0x6e, 0x6a, + 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, + 0x64, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, + 0x64, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x61, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6d, 0x61, 0x73, + 0x74, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x76, 0x6c, + 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x76, + 0x6c, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, + 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x76, 0x6f, + 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x72, 0x61, 0x6e, + 0x6b, 0x5f, 0x62, 0x79, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x11, 0x52, 0x0c, 0x72, 0x61, 0x6e, 0x6b, 0x42, 0x79, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, + 0x1e, 0x0a, 0x0b, 0x72, 0x61, 0x6e, 0x6b, 0x5f, 0x62, 0x79, 0x5f, 0x74, 0x76, 0x6c, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x11, 0x52, 0x09, 0x72, 0x61, 0x6e, 0x6b, 0x42, 0x79, 0x54, 0x76, 0x6c, 0x12, + 0x12, 0x0a, 0x04, 0x6c, 0x6f, 0x67, 0x6f, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6c, + 0x6f, 0x67, 0x6f, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x74, 0x76, 0x6c, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x54, 0x76, 0x6c, + 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0b, + 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, + 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x73, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x12, 0x25, 0x0a, 0x0e, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, + 0x63, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, + 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x82, 0x03, 0x0a, 0x0f, 0x43, 0x61, + 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x1f, 0x0a, + 0x0b, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x49, 0x64, 0x12, 0x2b, + 0x0a, 0x11, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, + 0x61, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x61, 0x6d, 0x70, 0x61, + 0x69, 0x67, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x12, 0x2c, 0x0a, 0x12, 0x74, + 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x11, 0x52, 0x10, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x47, 0x75, + 0x69, 0x6c, 0x64, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x6f, 0x74, + 0x61, 0x6c, 0x5f, 0x74, 0x76, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x6f, + 0x74, 0x61, 0x6c, 0x54, 0x76, 0x6c, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, + 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x76, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x41, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x54, + 0x76, 0x6c, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x76, 0x6f, 0x6c, 0x75, + 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x56, + 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, + 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x64, 0x41, 0x74, 0x12, 0x2e, 0x0a, 0x13, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x6d, 0x65, + 0x6d, 0x62, 0x65, 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x11, 0x52, 0x11, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, + 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, + 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x12, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xd2, + 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x6d, 0x62, + 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x11, 0x63, 0x61, + 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x43, + 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, + 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, + 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x11, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6b, 0x69, 0x70, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x11, 0x52, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x12, 0x2c, 0x0a, 0x12, + 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x6e, + 0x66, 0x6f, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, + 0x65, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x6f, + 0x72, 0x74, 0x5f, 0x62, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x6f, 0x72, + 0x74, 0x42, 0x79, 0x22, 0xcf, 0x01, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x75, 0x69, 0x6c, + 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x3d, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x23, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x61, + 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x75, 0x69, 0x6c, 0x64, + 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, + 0x36, 0x0a, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1e, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x61, 0x6d, 0x70, + 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x52, + 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x12, 0x3c, 0x0a, 0x0a, 0x67, 0x75, 0x69, 0x6c, 0x64, + 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x69, 0x6e, + 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, + 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x09, 0x67, 0x75, 0x69, 0x6c, + 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xd3, 0x03, 0x0a, 0x0b, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4d, + 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x2b, 0x0a, 0x11, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, + 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x10, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, + 0x63, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x18, 0x0a, + 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6a, 0x6f, 0x69, 0x6e, 0x65, + 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x12, 0x52, 0x08, 0x6a, 0x6f, 0x69, 0x6e, + 0x65, 0x64, 0x41, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x76, 0x6c, 0x5f, 0x73, 0x63, 0x6f, 0x72, + 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x76, 0x6c, 0x53, 0x63, 0x6f, 0x72, + 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x73, 0x63, 0x6f, 0x72, + 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, + 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x74, 0x76, + 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x54, 0x76, + 0x6c, 0x12, 0x36, 0x0a, 0x17, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x73, 0x63, 0x6f, 0x72, + 0x65, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x01, 0x52, 0x15, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x50, + 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x74, 0x76, 0x6c, + 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, + 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x01, 0x52, 0x12, 0x74, 0x76, 0x6c, 0x53, 0x63, 0x6f, 0x72, + 0x65, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x12, 0x3b, 0x0a, 0x0a, 0x74, + 0x76, 0x6c, 0x5f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1c, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x61, 0x6d, 0x70, + 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x09, 0x74, + 0x76, 0x6c, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x41, 0x0a, 0x0d, 0x76, 0x6f, 0x6c, 0x75, + 0x6d, 0x65, 0x5f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1c, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x61, 0x6d, 0x70, + 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x0c, 0x76, + 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x22, 0x5e, 0x0a, 0x15, 0x47, + 0x65, 0x74, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x11, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, + 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x10, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, + 0x74, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x51, 0x0a, 0x16, 0x47, + 0x65, 0x74, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, + 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x75, 0x69, + 0x6c, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x32, 0x89, + 0x05, 0x0a, 0x14, 0x49, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x61, 0x6d, 0x70, + 0x61, 0x69, 0x67, 0x6e, 0x52, 0x50, 0x43, 0x12, 0x5a, 0x0a, 0x07, 0x52, 0x61, 0x6e, 0x6b, 0x69, + 0x6e, 0x67, 0x12, 0x26, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, + 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x61, 0x6e, 0x6b, + 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, - 0x72, 0x70, 0x63, 0x2e, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, - 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x32, 0x89, 0x05, 0x0a, 0x14, 0x49, 0x6e, 0x6a, 0x65, 0x63, 0x74, - 0x69, 0x76, 0x65, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x52, 0x50, 0x43, 0x12, 0x5a, - 0x0a, 0x07, 0x52, 0x61, 0x6e, 0x6b, 0x69, 0x6e, 0x67, 0x12, 0x26, 0x2e, 0x69, 0x6e, 0x6a, 0x65, - 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x72, - 0x70, 0x63, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x27, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x61, - 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x69, - 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x60, 0x0a, 0x09, 0x43, 0x61, - 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x12, 0x28, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, - 0x69, 0x76, 0x65, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x72, 0x70, 0x63, - 0x2e, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x29, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x61, - 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x61, 0x6d, 0x70, 0x61, - 0x69, 0x67, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x66, 0x0a, 0x0b, - 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x56, 0x32, 0x12, 0x2a, 0x2e, 0x69, 0x6e, + 0x72, 0x70, 0x63, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x60, 0x0a, 0x09, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, + 0x12, 0x28, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x61, 0x6d, + 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, + 0x67, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x69, 0x6e, 0x6a, + 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, + 0x72, 0x70, 0x63, 0x2e, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x66, 0x0a, 0x0b, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, + 0x6e, 0x73, 0x56, 0x32, 0x12, 0x2a, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x61, + 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x56, 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x2b, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x61, 0x6d, + 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, + 0x67, 0x6e, 0x73, 0x56, 0x32, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x63, 0x0a, + 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x12, 0x29, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, - 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x56, 0x32, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, + 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, + 0x76, 0x65, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x72, 0x70, 0x63, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x75, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4d, + 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x2f, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, + 0x76, 0x65, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x72, 0x70, 0x63, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x72, 0x70, 0x63, - 0x2e, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x56, 0x32, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x63, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x75, 0x69, 0x6c, - 0x64, 0x73, 0x12, 0x29, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, - 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x47, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, - 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, - 0x67, 0x6e, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x75, 0x69, 0x6c, 0x64, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x75, 0x0a, 0x10, 0x4c, 0x69, 0x73, - 0x74, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x2f, 0x2e, - 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, - 0x67, 0x6e, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x75, 0x69, 0x6c, 0x64, - 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, - 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, - 0x69, 0x67, 0x6e, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x75, 0x69, 0x6c, - 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x6f, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x6d, 0x62, - 0x65, 0x72, 0x12, 0x2d, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, - 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x47, - 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x2e, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x61, - 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x75, - 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x42, 0x1b, 0x5a, 0x19, 0x2f, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, - 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x72, 0x70, 0x63, 0x70, 0x62, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6f, 0x0a, 0x0e, 0x47, 0x65, 0x74, + 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x2d, 0x2e, 0x69, 0x6e, + 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, + 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x6d, + 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x69, 0x6e, 0x6a, + 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, + 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x6d, 0x62, + 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x1b, 0x5a, 0x19, 0x2f, 0x69, + 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, + 0x6e, 0x5f, 0x72, 0x70, 0x63, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/exchange/campaign_rpc/pb/goadesign_goagen_injective_campaign_rpc_grpc.pb.go b/exchange/campaign_rpc/pb/goadesign_goagen_injective_campaign_rpc_grpc.pb.go index f45711c2..7b8d6047 100644 --- a/exchange/campaign_rpc/pb/goadesign_goagen_injective_campaign_rpc_grpc.pb.go +++ b/exchange/campaign_rpc/pb/goadesign_goagen_injective_campaign_rpc_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.2.0 -// - protoc v3.19.4 +// - protoc v3.21.12 // source: goadesign_goagen_injective_campaign_rpc.proto package injective_campaign_rpcpb diff --git a/exchange/campaign_rpc/pb/injective_campaign_rpc.proto b/exchange/campaign_rpc/pb/injective_campaign_rpc.proto index f5095311..13acc8b2 100644 --- a/exchange/campaign_rpc/pb/injective_campaign_rpc.proto +++ b/exchange/campaign_rpc/pb/injective_campaign_rpc.proto @@ -149,12 +149,23 @@ message CampaignsResponse { message CampaignsV2Request { // Campaign type string type = 1; - // Whether the campaign is active + // Whether the campaign is active. +// Deprecated: use status instead. bool active = 2; // Limit number of returned campaigns sint32 limit = 3; // Cursor for pagination string cursor = 4; + // Filter campaigns by start date greater than this value in milliseconds + sint64 from_start_date = 5; + // Filter campaigns by start date lower than this value in milliseconds + sint64 to_start_date = 6; + // Filter campaigns by end date greater than this value in milliseconds + sint64 from_end_date = 7; + // Filter campaigns by end date lower than this value in milliseconds + sint64 to_end_date = 8; + // Filter campaigns by status + string status = 9; } message CampaignsV2Response { diff --git a/exchange/derivative_exchange_rpc/pb/goadesign_goagen_injective_derivative_exchange_rpc.pb.go b/exchange/derivative_exchange_rpc/pb/goadesign_goagen_injective_derivative_exchange_rpc.pb.go index 98af60fa..cae3c64a 100644 --- a/exchange/derivative_exchange_rpc/pb/goadesign_goagen_injective_derivative_exchange_rpc.pb.go +++ b/exchange/derivative_exchange_rpc/pb/goadesign_goagen_injective_derivative_exchange_rpc.pb.go @@ -8,7 +8,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.30.0 -// protoc v3.19.4 +// protoc v3.21.12 // source: goadesign_goagen_injective_derivative_exchange_rpc.proto package injective_derivative_exchange_rpcpb @@ -170,7 +170,7 @@ type DerivativeMarketInfo struct { MaintenanceMarginRatio string `protobuf:"bytes,9,opt,name=maintenance_margin_ratio,json=maintenanceMarginRatio,proto3" json:"maintenance_margin_ratio,omitempty"` // Coin denom used for the quote asset. QuoteDenom string `protobuf:"bytes,10,opt,name=quote_denom,json=quoteDenom,proto3" json:"quote_denom,omitempty"` - // Token metadata for quote asset, only for Ethereum-based assets + // Token metadata for quote asset QuoteTokenMeta *TokenMeta `protobuf:"bytes,11,opt,name=quote_token_meta,json=quoteTokenMeta,proto3" json:"quote_token_meta,omitempty"` // Defines the fee percentage makers pay when trading (in quote asset) MakerFeeRate string `protobuf:"bytes,12,opt,name=maker_fee_rate,json=makerFeeRate,proto3" json:"maker_fee_rate,omitempty"` @@ -377,7 +377,7 @@ type TokenMeta struct { // Token full name Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // Token Ethereum contract address + // Token contract address (native or not) Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"` // Token symbol short name Symbol string `protobuf:"bytes,3,opt,name=symbol,proto3" json:"symbol,omitempty"` @@ -1033,7 +1033,7 @@ type BinaryOptionsMarketInfo struct { SettlementTimestamp int64 `protobuf:"zigzag64,9,opt,name=settlement_timestamp,json=settlementTimestamp,proto3" json:"settlement_timestamp,omitempty"` // Coin denom used for the quote asset. QuoteDenom string `protobuf:"bytes,10,opt,name=quote_denom,json=quoteDenom,proto3" json:"quote_denom,omitempty"` - // Token metadata for quote asset, only for Ethereum-based assets + // Token metadata for quote asset QuoteTokenMeta *TokenMeta `protobuf:"bytes,11,opt,name=quote_token_meta,json=quoteTokenMeta,proto3" json:"quote_token_meta,omitempty"` // Defines the fee percentage makers pay when trading (in quote asset) MakerFeeRate string `protobuf:"bytes,12,opt,name=maker_fee_rate,json=makerFeeRate,proto3" json:"maker_fee_rate,omitempty"` @@ -4256,6 +4256,8 @@ type TradesRequest struct { AccountAddress string `protobuf:"bytes,13,opt,name=account_address,json=accountAddress,proto3" json:"account_address,omitempty"` // Client order ID Cid string `protobuf:"bytes,14,opt,name=cid,proto3" json:"cid,omitempty"` + // Filter by fee recipient + FeeRecipient string `protobuf:"bytes,15,opt,name=fee_recipient,json=feeRecipient,proto3" json:"fee_recipient,omitempty"` } func (x *TradesRequest) Reset() { @@ -4388,6 +4390,13 @@ func (x *TradesRequest) GetCid() string { return "" } +func (x *TradesRequest) GetFeeRecipient() string { + if x != nil { + return x.FeeRecipient + } + return "" +} + type TradesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -4710,6 +4719,8 @@ type TradesV2Request struct { AccountAddress string `protobuf:"bytes,13,opt,name=account_address,json=accountAddress,proto3" json:"account_address,omitempty"` // Client order ID Cid string `protobuf:"bytes,14,opt,name=cid,proto3" json:"cid,omitempty"` + // Filter by fee recipient + FeeRecipient string `protobuf:"bytes,15,opt,name=fee_recipient,json=feeRecipient,proto3" json:"fee_recipient,omitempty"` } func (x *TradesV2Request) Reset() { @@ -4842,6 +4853,13 @@ func (x *TradesV2Request) GetCid() string { return "" } +func (x *TradesV2Request) GetFeeRecipient() string { + if x != nil { + return x.FeeRecipient + } + return "" +} + type TradesV2Response struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -4933,6 +4951,8 @@ type StreamTradesRequest struct { AccountAddress string `protobuf:"bytes,13,opt,name=account_address,json=accountAddress,proto3" json:"account_address,omitempty"` // Client order ID Cid string `protobuf:"bytes,14,opt,name=cid,proto3" json:"cid,omitempty"` + // Filter by fee recipient + FeeRecipient string `protobuf:"bytes,15,opt,name=fee_recipient,json=feeRecipient,proto3" json:"fee_recipient,omitempty"` } func (x *StreamTradesRequest) Reset() { @@ -5065,6 +5085,13 @@ func (x *StreamTradesRequest) GetCid() string { return "" } +func (x *StreamTradesRequest) GetFeeRecipient() string { + if x != nil { + return x.FeeRecipient + } + return "" +} + type StreamTradesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -5166,6 +5193,8 @@ type StreamTradesV2Request struct { AccountAddress string `protobuf:"bytes,13,opt,name=account_address,json=accountAddress,proto3" json:"account_address,omitempty"` // Client order ID Cid string `protobuf:"bytes,14,opt,name=cid,proto3" json:"cid,omitempty"` + // Filter by fee recipient + FeeRecipient string `protobuf:"bytes,15,opt,name=fee_recipient,json=feeRecipient,proto3" json:"fee_recipient,omitempty"` } func (x *StreamTradesV2Request) Reset() { @@ -5298,6 +5327,13 @@ func (x *StreamTradesV2Request) GetCid() string { return "" } +func (x *StreamTradesV2Request) GetFeeRecipient() string { + if x != nil { + return x.FeeRecipient + } + return "" +} + type StreamTradesV2Response struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -6952,7 +6988,7 @@ var file_goadesign_goagen_injective_derivative_exchange_rpc_proto_rawDesc = []by 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x12, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0xbf, + 0x01, 0x28, 0x12, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0xe4, 0x03, 0x0a, 0x0d, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x25, 0x0a, @@ -6981,542 +7017,551 @@ var file_goadesign_goagen_injective_derivative_exchange_rpc_proto_rawDesc = []by 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x69, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, 0x69, 0x64, - 0x22, 0x9f, 0x01, 0x0a, 0x0e, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x4a, 0x0a, 0x06, 0x74, 0x72, 0x61, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, - 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, - 0x76, 0x65, 0x54, 0x72, 0x61, 0x64, 0x65, 0x52, 0x06, 0x74, 0x72, 0x61, 0x64, 0x65, 0x73, 0x12, - 0x41, 0x0a, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x29, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, - 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, - 0x72, 0x70, 0x63, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x70, 0x61, 0x67, 0x69, - 0x6e, 0x67, 0x22, 0xe8, 0x03, 0x0a, 0x0f, 0x44, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, - 0x65, 0x54, 0x72, 0x61, 0x64, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, - 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x72, 0x64, 0x65, - 0x72, 0x48, 0x61, 0x73, 0x68, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, - 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, - 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, - 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x74, 0x72, 0x61, 0x64, 0x65, - 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x74, 0x72, 0x61, 0x64, 0x65, 0x45, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x69, 0x73, 0x5f, - 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x0d, 0x69, 0x73, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x57, 0x0a, 0x0e, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x65, 0x6c, - 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, + 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x65, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, + 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x66, 0x65, 0x65, 0x52, 0x65, 0x63, 0x69, + 0x70, 0x69, 0x65, 0x6e, 0x74, 0x22, 0x9f, 0x01, 0x0a, 0x0e, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4a, 0x0a, 0x06, 0x74, 0x72, 0x61, 0x64, + 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, - 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x6f, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x52, 0x0d, 0x70, 0x6f, 0x73, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x61, 0x79, - 0x6f, 0x75, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x61, 0x79, 0x6f, 0x75, - 0x74, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x65, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x66, 0x65, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x64, 0x5f, - 0x61, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0a, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, - 0x65, 0x64, 0x41, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x65, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x69, - 0x70, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x66, 0x65, 0x65, - 0x52, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x72, 0x61, - 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x72, 0x61, - 0x64, 0x65, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x78, - 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x69, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x63, - 0x69, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, 0x69, 0x64, 0x22, 0xbb, 0x01, - 0x0a, 0x0d, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x12, - 0x27, 0x0a, 0x0f, 0x74, 0x72, 0x61, 0x64, 0x65, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x74, 0x72, 0x61, 0x64, 0x65, 0x44, - 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x65, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x69, 0x63, - 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x71, - 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x65, - 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, - 0x12, 0x29, 0x0a, 0x10, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, - 0x72, 0x67, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x65, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x22, 0xc1, 0x03, 0x0a, 0x0f, - 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x56, 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, - 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, - 0x69, 0x64, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, - 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, - 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, - 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, - 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x12, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, - 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, - 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x75, 0x62, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x73, - 0x12, 0x27, 0x0a, 0x0f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, - 0x70, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x72, 0x61, - 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x72, 0x61, - 0x64, 0x65, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, - 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x10, 0x0a, - 0x03, 0x63, 0x69, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, 0x69, 0x64, 0x22, - 0xa1, 0x01, 0x0a, 0x10, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x56, 0x32, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4a, 0x0a, 0x06, 0x74, 0x72, 0x61, 0x64, 0x65, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x65, 0x72, + 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x54, 0x72, 0x61, 0x64, 0x65, 0x52, 0x06, 0x74, 0x72, + 0x61, 0x64, 0x65, 0x73, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, - 0x69, 0x76, 0x65, 0x54, 0x72, 0x61, 0x64, 0x65, 0x52, 0x06, 0x74, 0x72, 0x61, 0x64, 0x65, 0x73, - 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x29, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, - 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x70, 0x61, 0x67, - 0x69, 0x6e, 0x67, 0x22, 0xc5, 0x03, 0x0a, 0x13, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x72, - 0x61, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6d, - 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0d, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x69, 0x64, 0x65, 0x12, - 0x1c, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, - 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1d, 0x0a, 0x0a, - 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x12, - 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, - 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x12, 0x52, 0x07, 0x65, - 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, - 0x5f, 0x69, 0x64, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x61, 0x72, 0x6b, - 0x65, 0x74, 0x49, 0x64, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x73, - 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x73, 0x12, 0x27, 0x0a, 0x0f, - 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, - 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x72, 0x61, 0x64, 0x65, 0x5f, 0x69, - 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x72, 0x61, 0x64, 0x65, 0x49, 0x64, - 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, - 0x65, 0x73, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x69, 0x64, - 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, 0x69, 0x64, 0x22, 0xa5, 0x01, 0x0a, 0x14, - 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x05, 0x74, 0x72, 0x61, 0x64, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, - 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, - 0x76, 0x65, 0x54, 0x72, 0x61, 0x64, 0x65, 0x52, 0x05, 0x74, 0x72, 0x61, 0x64, 0x65, 0x12, 0x25, - 0x0a, 0x0e, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x22, 0xc7, 0x03, 0x0a, 0x15, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x72, - 0x61, 0x64, 0x65, 0x73, 0x56, 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, - 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x78, - 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0d, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x69, 0x64, - 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, - 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1d, - 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x12, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, - 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x12, 0x52, - 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x72, 0x6b, - 0x65, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x61, - 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x75, 0x62, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x73, 0x12, 0x27, - 0x0a, 0x0f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, - 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, - 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x72, 0x61, 0x64, 0x65, - 0x5f, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x72, 0x61, 0x64, 0x65, - 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x64, - 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x63, - 0x69, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, 0x69, 0x64, 0x22, 0xa7, 0x01, - 0x0a, 0x16, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x56, 0x32, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x05, 0x74, 0x72, 0x61, 0x64, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, - 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, - 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x65, 0x72, 0x69, - 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x54, 0x72, 0x61, 0x64, 0x65, 0x52, 0x05, 0x74, 0x72, 0x61, - 0x64, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x70, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x74, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0x89, 0x01, 0x0a, 0x1b, 0x53, 0x75, 0x62, 0x61, + 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x52, + 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x22, 0xe8, 0x03, 0x0a, 0x0f, 0x44, 0x65, 0x72, 0x69, + 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x54, 0x72, 0x61, 0x64, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, + 0x72, 0x64, 0x65, 0x72, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x48, 0x61, 0x73, 0x68, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, + 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, + 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x14, + 0x74, 0x72, 0x61, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x74, 0x72, 0x61, 0x64, + 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x25, + 0x0a, 0x0e, 0x69, 0x73, 0x5f, 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x69, 0x73, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x57, 0x0a, 0x0e, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, + 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, + 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, + 0x63, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x52, + 0x0d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x12, 0x16, + 0x0a, 0x06, 0x70, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x70, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x65, 0x65, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x66, 0x65, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x78, 0x65, 0x63, + 0x75, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0a, 0x65, + 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x65, 0x65, + 0x5f, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0c, 0x66, 0x65, 0x65, 0x52, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x19, + 0x0a, 0x08, 0x74, 0x72, 0x61, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x74, 0x72, 0x61, 0x64, 0x65, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x78, 0x65, + 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0d, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x69, 0x64, 0x65, + 0x12, 0x10, 0x0a, 0x03, 0x63, 0x69, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, + 0x69, 0x64, 0x22, 0xbb, 0x01, 0x0a, 0x0d, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, + 0x65, 0x6c, 0x74, 0x61, 0x12, 0x27, 0x0a, 0x0f, 0x74, 0x72, 0x61, 0x64, 0x65, 0x5f, 0x64, 0x69, + 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x74, + 0x72, 0x61, 0x64, 0x65, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, + 0x0f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x11, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x61, + 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x29, 0x0a, 0x10, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, + 0x22, 0xe6, 0x03, 0x0a, 0x0f, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x56, 0x32, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, + 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, + 0x69, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x78, 0x65, 0x63, 0x75, + 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x69, 0x64, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x69, 0x72, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, + 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73, + 0x6b, 0x69, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x12, + 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, + 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, + 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x12, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, + 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x09, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x73, 0x12, 0x25, + 0x0a, 0x0e, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x73, + 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x49, 0x64, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, + 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x19, + 0x0a, 0x08, 0x74, 0x72, 0x61, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x74, 0x72, 0x61, 0x64, 0x65, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x0d, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x69, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x63, 0x69, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x65, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x69, + 0x70, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x66, 0x65, 0x65, + 0x52, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x22, 0xa1, 0x01, 0x0a, 0x10, 0x54, 0x72, + 0x61, 0x64, 0x65, 0x73, 0x56, 0x32, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4a, + 0x0a, 0x06, 0x74, 0x72, 0x61, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, + 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, + 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, + 0x70, 0x63, 0x2e, 0x44, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x54, 0x72, 0x61, + 0x64, 0x65, 0x52, 0x06, 0x74, 0x72, 0x61, 0x64, 0x65, 0x73, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, + 0x67, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x69, 0x6e, 0x6a, + 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, + 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, + 0x61, 0x67, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x22, 0xea, 0x03, + 0x0a, 0x13, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, + 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x73, 0x69, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x78, 0x65, 0x63, + 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x69, 0x64, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x69, 0x72, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x69, + 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, + 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, + 0x73, 0x6b, 0x69, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6b, 0x69, 0x70, + 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x11, 0x52, + 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, + 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, + 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x12, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, + 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x09, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x73, 0x12, + 0x25, 0x0a, 0x0e, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, + 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x49, 0x64, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, + 0x19, 0x0a, 0x08, 0x74, 0x72, 0x61, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x74, 0x72, 0x61, 0x64, 0x65, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x0d, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x69, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x63, 0x69, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x65, 0x65, 0x5f, 0x72, 0x65, 0x63, + 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x66, 0x65, + 0x65, 0x52, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x22, 0xa5, 0x01, 0x0a, 0x14, 0x53, + 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x05, 0x74, 0x72, 0x61, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, + 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, + 0x65, 0x54, 0x72, 0x61, 0x64, 0x65, 0x52, 0x05, 0x74, 0x72, 0x61, 0x64, 0x65, 0x12, 0x25, 0x0a, + 0x0e, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x22, 0xec, 0x03, 0x0a, 0x15, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x72, 0x61, + 0x64, 0x65, 0x73, 0x56, 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, + 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x78, 0x65, + 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0d, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x69, 0x64, 0x65, + 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, + 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1d, 0x0a, + 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x12, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, + 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x12, 0x52, 0x07, + 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x72, 0x6b, 0x65, + 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x61, 0x72, + 0x6b, 0x65, 0x74, 0x49, 0x64, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, + 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x73, 0x12, 0x27, 0x0a, + 0x0f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, + 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x72, 0x61, 0x64, 0x65, 0x5f, + 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x72, 0x61, 0x64, 0x65, 0x49, + 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x69, + 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, 0x69, 0x64, 0x12, 0x23, 0x0a, 0x0d, + 0x66, 0x65, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x0f, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0c, 0x66, 0x65, 0x65, 0x52, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, + 0x74, 0x22, 0xa7, 0x01, 0x0a, 0x16, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x64, + 0x65, 0x73, 0x56, 0x32, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x05, + 0x74, 0x72, 0x61, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x69, 0x6e, + 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, + 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, + 0x44, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x54, 0x72, 0x61, 0x64, 0x65, 0x52, + 0x05, 0x74, 0x72, 0x61, 0x64, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, + 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, + 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x12, + 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0x89, 0x01, 0x0a, 0x1b, + 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, + 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x73, + 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, + 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, + 0x04, 0x73, 0x6b, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6b, 0x69, + 0x70, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x11, + 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0xb2, 0x01, 0x0a, 0x1c, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x4c, 0x69, 0x73, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, - 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, - 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6b, 0x69, - 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x12, 0x14, 0x0a, - 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, 0x69, - 0x6d, 0x69, 0x74, 0x22, 0xb2, 0x01, 0x0a, 0x1c, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x06, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, - 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, - 0x69, 0x76, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x06, 0x6f, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x06, 0x6f, 0x72, 0x64, 0x65, + 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, + 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, + 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x65, 0x72, + 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4f, 0x72, 0x64, 0x65, + 0x72, 0x52, 0x06, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x67, + 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x69, 0x6e, 0x6a, 0x65, + 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, + 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x61, + 0x67, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x22, 0xce, 0x01, 0x0a, + 0x1b, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, + 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, + 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, + 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x25, + 0x0a, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0x6a, 0x0a, + 0x1c, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, + 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4a, 0x0a, + 0x06, 0x74, 0x72, 0x61, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, + 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, + 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, + 0x63, 0x2e, 0x44, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x54, 0x72, 0x61, 0x64, + 0x65, 0x52, 0x06, 0x74, 0x72, 0x61, 0x64, 0x65, 0x73, 0x22, 0xfc, 0x03, 0x0a, 0x14, 0x4f, 0x72, + 0x64, 0x65, 0x72, 0x73, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x61, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, + 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, + 0x65, 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, + 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1f, + 0x0a, 0x0b, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x05, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, + 0x1c, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, + 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x12, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, + 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x12, 0x52, 0x07, + 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x69, 0x73, 0x5f, 0x63, 0x6f, + 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0d, 0x69, 0x73, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x12, 0x1d, + 0x0a, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0a, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, + 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, + 0x61, 0x74, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x78, + 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x0a, + 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x74, + 0x72, 0x61, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, + 0x72, 0x61, 0x64, 0x65, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x13, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x0f, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x11, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x4d, 0x61, 0x72, 0x6b, 0x65, + 0x74, 0x73, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x69, 0x64, 0x18, 0x10, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, 0x69, 0x64, 0x22, 0xad, 0x01, 0x0a, 0x15, 0x4f, 0x72, 0x64, + 0x65, 0x72, 0x73, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x51, 0x0a, 0x06, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, + 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, + 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x06, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, - 0x52, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x22, 0xce, 0x01, 0x0a, 0x1b, 0x53, 0x75, 0x62, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x4c, 0x69, 0x73, - 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x61, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0c, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, - 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x78, - 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0d, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, + 0x52, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x22, 0xa9, 0x05, 0x0a, 0x16, 0x44, 0x65, 0x72, + 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x48, 0x69, 0x73, 0x74, + 0x6f, 0x72, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x68, 0x61, 0x73, + 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x48, 0x61, + 0x73, 0x68, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, + 0x1b, 0x0a, 0x09, 0x69, 0x73, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x23, 0x0a, 0x0d, + 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, + 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x78, 0x65, 0x63, 0x75, + 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x72, 0x64, 0x65, + 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x72, + 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x23, 0x0a, + 0x0d, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x50, 0x72, 0x69, + 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x27, + 0x0a, 0x0f, 0x66, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x5f, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, + 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x66, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x51, + 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x0a, + 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, + 0x12, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x12, + 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x24, 0x0a, 0x0e, 0x69, + 0x73, 0x5f, 0x72, 0x65, 0x64, 0x75, 0x63, 0x65, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x0e, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0c, 0x69, 0x73, 0x52, 0x65, 0x64, 0x75, 0x63, 0x65, 0x4f, 0x6e, 0x6c, + 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x12, 0x0a, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, - 0x6b, 0x69, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x11, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0x6a, 0x0a, 0x1c, 0x53, 0x75, 0x62, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x4c, 0x69, 0x73, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4a, 0x0a, 0x06, 0x74, 0x72, 0x61, - 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x69, 0x6e, 0x6a, 0x65, - 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, - 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x65, - 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x54, 0x72, 0x61, 0x64, 0x65, 0x52, 0x06, 0x74, - 0x72, 0x61, 0x64, 0x65, 0x73, 0x22, 0xfc, 0x03, 0x0a, 0x14, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, - 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, - 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, - 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, - 0x73, 0x6b, 0x69, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x72, - 0x64, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x64, - 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x73, - 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, - 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x12, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, - 0x69, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x69, 0x73, 0x43, - 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x72, - 0x64, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x6f, 0x72, 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, - 0x74, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, - 0x27, 0x0a, 0x0f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, - 0x65, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x72, 0x6b, - 0x65, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x61, - 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x72, 0x61, 0x64, 0x65, - 0x5f, 0x69, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x72, 0x61, 0x64, 0x65, - 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x13, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x6d, 0x61, 0x72, - 0x6b, 0x65, 0x74, 0x73, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x11, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x4f, 0x6e, - 0x6c, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x69, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x63, 0x69, 0x64, 0x22, 0xad, 0x01, 0x0a, 0x15, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x48, - 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x51, - 0x0a, 0x06, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, - 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, - 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, - 0x70, 0x63, 0x2e, 0x44, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x4f, 0x72, 0x64, - 0x65, 0x72, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x06, 0x6f, 0x72, 0x64, 0x65, 0x72, - 0x73, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x29, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, - 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x70, 0x61, - 0x67, 0x69, 0x6e, 0x67, 0x22, 0xa9, 0x05, 0x0a, 0x16, 0x44, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, - 0x69, 0x76, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, - 0x1d, 0x0a, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x48, 0x61, 0x73, 0x68, 0x12, 0x1b, - 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x69, - 0x73, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, - 0x69, 0x73, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x61, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0c, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x25, 0x0a, - 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x74, 0x72, 0x69, - 0x67, 0x67, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0c, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x1a, - 0x0a, 0x08, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x66, 0x69, - 0x6c, 0x6c, 0x65, 0x64, 0x5f, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x0a, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0e, 0x66, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x51, 0x75, 0x61, 0x6e, 0x74, - 0x69, 0x74, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0b, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x75, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x24, 0x0a, 0x0e, 0x69, 0x73, 0x5f, 0x72, 0x65, - 0x64, 0x75, 0x63, 0x65, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x0c, 0x69, 0x73, 0x52, 0x65, 0x64, 0x75, 0x63, 0x65, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x1c, 0x0a, - 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x0e, 0x69, - 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x18, 0x10, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x0d, 0x69, 0x73, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x61, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x5f, 0x61, 0x74, - 0x18, 0x11, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x41, - 0x74, 0x12, 0x2a, 0x0a, 0x11, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x64, 0x5f, 0x6f, 0x72, 0x64, 0x65, - 0x72, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x6c, - 0x61, 0x63, 0x65, 0x64, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x48, 0x61, 0x73, 0x68, 0x12, 0x16, 0x0a, - 0x06, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, - 0x61, 0x72, 0x67, 0x69, 0x6e, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x78, 0x5f, 0x68, 0x61, 0x73, 0x68, - 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x12, 0x10, - 0x0a, 0x03, 0x63, 0x69, 0x64, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, 0x69, 0x64, - 0x22, 0xdc, 0x01, 0x0a, 0x1a, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, - 0x73, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, - 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, - 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x22, - 0xb3, 0x01, 0x0a, 0x1b, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, - 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x4f, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, + 0x25, 0x0a, 0x0e, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, + 0x6c, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x69, 0x73, 0x43, 0x6f, 0x6e, 0x64, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, + 0x72, 0x5f, 0x61, 0x74, 0x18, 0x11, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x74, 0x72, 0x69, 0x67, + 0x67, 0x65, 0x72, 0x41, 0x74, 0x12, 0x2a, 0x0a, 0x11, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x64, 0x5f, + 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0f, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x64, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x48, 0x61, 0x73, + 0x68, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x18, 0x13, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x78, 0x5f, + 0x68, 0x61, 0x73, 0x68, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x78, 0x48, 0x61, + 0x73, 0x68, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x69, 0x64, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x63, 0x69, 0x64, 0x22, 0xdc, 0x01, 0x0a, 0x1a, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, + 0x72, 0x64, 0x65, 0x72, 0x73, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, + 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, + 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x72, 0x64, 0x65, + 0x72, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x65, 0x78, + 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x06, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, + 0x70, 0x65, 0x73, 0x22, 0xb3, 0x01, 0x0a, 0x1b, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, + 0x64, 0x65, 0x72, 0x73, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, + 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, + 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x05, 0x6f, + 0x72, 0x64, 0x65, 0x72, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, + 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x32, 0xc4, 0x1a, 0x0a, 0x1e, 0x49, 0x6e, + 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, + 0x65, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x50, 0x43, 0x12, 0x70, 0x0a, 0x07, + 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x31, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, + 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, + 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4d, 0x61, 0x72, 0x6b, + 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x69, 0x6e, 0x6a, + 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, + 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4d, + 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6d, + 0x0a, 0x06, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x12, 0x30, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, + 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, + 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4d, 0x61, 0x72, + 0x6b, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x69, 0x6e, 0x6a, + 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, + 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4d, + 0x61, 0x72, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x81, 0x01, + 0x0a, 0x0c, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x12, 0x36, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, - 0x70, 0x63, 0x2e, 0x44, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x4f, 0x72, 0x64, - 0x65, 0x72, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, - 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x32, 0xc4, 0x1a, 0x0a, 0x1e, 0x49, 0x6e, 0x6a, 0x65, 0x63, 0x74, - 0x69, 0x76, 0x65, 0x44, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x45, 0x78, 0x63, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x50, 0x43, 0x12, 0x70, 0x0a, 0x07, 0x4d, 0x61, 0x72, 0x6b, - 0x65, 0x74, 0x73, 0x12, 0x31, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, - 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, - 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, - 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, - 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6d, 0x0a, 0x06, 0x4d, 0x61, - 0x72, 0x6b, 0x65, 0x74, 0x12, 0x30, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, - 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, + 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, - 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x81, 0x01, 0x0a, 0x0c, 0x53, 0x74, - 0x72, 0x65, 0x61, 0x6d, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x12, 0x36, 0x2e, 0x69, 0x6e, 0x6a, + 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, + 0x6d, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, + 0x01, 0x12, 0x97, 0x01, 0x0a, 0x14, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x4f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x3e, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, - 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, - 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, + 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x42, + 0x69, 0x6e, 0x61, 0x72, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4d, 0x61, 0x72, 0x6b, + 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3f, 0x2e, 0x69, 0x6e, 0x6a, + 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, + 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x42, + 0x69, 0x6e, 0x61, 0x72, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4d, 0x61, 0x72, 0x6b, + 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x94, 0x01, 0x0a, 0x13, + 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4d, 0x61, 0x72, + 0x6b, 0x65, 0x74, 0x12, 0x3d, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, + 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x4f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x3e, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4d, 0x61, 0x72, - 0x6b, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x97, 0x01, - 0x0a, 0x14, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4d, - 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x3e, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, - 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, - 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x42, 0x69, 0x6e, 0x61, 0x72, - 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3f, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, - 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, - 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x42, 0x69, 0x6e, 0x61, 0x72, - 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x94, 0x01, 0x0a, 0x13, 0x42, 0x69, 0x6e, 0x61, - 0x72, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x12, - 0x3d, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, - 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, - 0x72, 0x70, 0x63, 0x2e, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3e, + 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x4f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x7c, 0x0a, 0x0b, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x56, + 0x32, 0x12, 0x35, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, + 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x56, + 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, + 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, + 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4f, 0x72, 0x64, + 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x56, 0x32, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x7f, 0x0a, 0x0c, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x56, 0x32, + 0x12, 0x36, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, + 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x56, + 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, + 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, + 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4f, 0x72, 0x64, + 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x56, 0x32, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x90, 0x01, 0x0a, 0x11, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, + 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x56, 0x32, 0x12, 0x3b, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, + 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, + 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x56, 0x32, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, + 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x56, 0x32, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x30, 0x01, 0x12, 0x9c, 0x01, 0x0a, 0x15, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, + 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x3f, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, - 0x70, 0x63, 0x2e, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7c, - 0x0a, 0x0b, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x56, 0x32, 0x12, 0x35, 0x2e, + 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, + 0x6f, 0x6b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x40, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, + 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, + 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, + 0x6f, 0x6f, 0x6b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x30, 0x01, 0x12, 0x6d, 0x0a, 0x06, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x30, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, - 0x63, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x56, 0x32, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, - 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, - 0x6f, 0x6b, 0x56, 0x32, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7f, 0x0a, 0x0c, - 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x56, 0x32, 0x12, 0x36, 0x2e, 0x69, - 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, - 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, - 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x56, 0x32, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x63, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x31, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, + 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, + 0x72, 0x70, 0x63, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x76, 0x0a, 0x09, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x33, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, + 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, + 0x72, 0x70, 0x63, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, - 0x6f, 0x6b, 0x73, 0x56, 0x32, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x90, 0x01, - 0x0a, 0x11, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, - 0x6b, 0x56, 0x32, 0x12, 0x3b, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, - 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, - 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x56, 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x3c, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, - 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, - 0x62, 0x6f, 0x6f, 0x6b, 0x56, 0x32, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, - 0x12, 0x9c, 0x01, 0x0a, 0x15, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, - 0x62, 0x6f, 0x6f, 0x6b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x3f, 0x2e, 0x69, 0x6e, 0x6a, - 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, - 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, - 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x40, 0x2e, 0x69, 0x6e, - 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, - 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, - 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, - 0x6d, 0x0a, 0x06, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x30, 0x2e, 0x69, 0x6e, 0x6a, 0x65, + 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7c, 0x0a, 0x0b, 0x50, 0x6f, + 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x56, 0x32, 0x12, 0x35, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, - 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4f, 0x72, - 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x69, 0x6e, - 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, - 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, - 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x76, - 0x0a, 0x09, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x33, 0x2e, 0x69, 0x6e, - 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, - 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, - 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x34, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, + 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x6f, + 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x56, 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x36, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7c, 0x0a, 0x0b, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x56, 0x32, 0x12, 0x35, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, - 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x56, 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x69, - 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, - 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, - 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x56, 0x32, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x94, 0x01, 0x0a, 0x13, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x61, - 0x62, 0x6c, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3d, 0x2e, 0x69, - 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, - 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, - 0x2e, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3e, 0x2e, 0x69, 0x6e, - 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, - 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, - 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x88, 0x01, 0x0a, 0x0f, - 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, - 0x39, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, + 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x56, 0x32, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x94, 0x01, 0x0a, 0x13, 0x4c, 0x69, 0x71, + 0x75, 0x69, 0x64, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x12, 0x3d, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, + 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x61, 0x62, 0x6c, 0x65, 0x50, + 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x3e, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, - 0x72, 0x70, 0x63, 0x2e, 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x79, 0x6d, 0x65, - 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x69, 0x6e, 0x6a, + 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x6f, + 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x88, 0x01, 0x0a, 0x0f, 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x79, 0x6d, 0x65, + 0x6e, 0x74, 0x73, 0x12, 0x39, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, + 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, + 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3a, + 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, + 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, + 0x70, 0x63, 0x2e, 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, + 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7f, 0x0a, 0x0c, 0x46, 0x75, + 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x61, 0x74, 0x65, 0x73, 0x12, 0x36, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x46, - 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7f, 0x0a, 0x0c, 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, - 0x67, 0x52, 0x61, 0x74, 0x65, 0x73, 0x12, 0x36, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, + 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, + 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x61, + 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8a, 0x01, 0x0a, 0x0f, + 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x39, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, + 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, + 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x69, 0x6e, 0x6a, + 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, + 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, + 0x74, 0x72, 0x65, 0x61, 0x6d, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x81, 0x01, 0x0a, 0x0c, 0x53, 0x74, 0x72, + 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x36, 0x2e, 0x69, 0x6e, 0x6a, 0x65, + 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, + 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, + 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x37, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, + 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, + 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x6d, 0x0a, 0x06, + 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x12, 0x30, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, - 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x46, 0x75, 0x6e, 0x64, 0x69, - 0x6e, 0x67, 0x52, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, - 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, - 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, - 0x70, 0x63, 0x2e, 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x61, 0x74, 0x65, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8a, 0x01, 0x0a, 0x0f, 0x53, 0x74, 0x72, 0x65, - 0x61, 0x6d, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x39, 0x2e, 0x69, 0x6e, + 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x72, 0x61, 0x64, 0x65, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, + 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, + 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x72, 0x61, + 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x73, 0x0a, 0x08, 0x54, + 0x72, 0x61, 0x64, 0x65, 0x73, 0x56, 0x32, 0x12, 0x32, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, + 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, + 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x72, 0x61, 0x64, + 0x65, 0x73, 0x56, 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, - 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, - 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, - 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, - 0x6d, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x30, 0x01, 0x12, 0x81, 0x01, 0x0a, 0x0c, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, - 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x36, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, - 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, - 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, - 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, - 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, - 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x6d, 0x0a, 0x06, 0x54, 0x72, 0x61, 0x64, - 0x65, 0x73, 0x12, 0x30, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, - 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, - 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x73, 0x0a, 0x08, 0x54, 0x72, 0x61, 0x64, 0x65, - 0x73, 0x56, 0x32, 0x12, 0x32, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, - 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x56, 0x32, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, + 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x56, 0x32, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x81, 0x01, 0x0a, 0x0c, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x64, 0x65, + 0x73, 0x12, 0x36, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, + 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x64, + 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x69, 0x6e, 0x6a, 0x65, + 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, + 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, + 0x72, 0x65, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x30, 0x01, 0x12, 0x87, 0x01, 0x0a, 0x0e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, + 0x72, 0x61, 0x64, 0x65, 0x73, 0x56, 0x32, 0x12, 0x38, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, - 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x72, 0x61, 0x64, - 0x65, 0x73, 0x56, 0x32, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x81, 0x01, 0x0a, - 0x0c, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x12, 0x36, 0x2e, - 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, - 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, - 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, - 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, - 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, - 0x12, 0x87, 0x01, 0x0a, 0x0e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x64, 0x65, - 0x73, 0x56, 0x32, 0x12, 0x38, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, - 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x72, - 0x61, 0x64, 0x65, 0x73, 0x56, 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, - 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, - 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, - 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x56, 0x32, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x97, 0x01, 0x0a, 0x14, 0x53, - 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x4c, - 0x69, 0x73, 0x74, 0x12, 0x3e, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, - 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x3f, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, - 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x97, 0x01, 0x0a, 0x14, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x3e, 0x2e, - 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, - 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, - 0x63, 0x2e, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x64, - 0x65, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3f, 0x2e, + 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x56, 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x39, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, + 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x64, + 0x65, 0x73, 0x56, 0x32, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x97, + 0x01, 0x0a, 0x14, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4f, 0x72, 0x64, + 0x65, 0x72, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x3e, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, + 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, + 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x75, 0x62, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x4c, 0x69, 0x73, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3f, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, + 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, + 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x75, 0x62, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x4c, 0x69, 0x73, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x97, 0x01, 0x0a, 0x14, 0x53, 0x75, 0x62, + 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x4c, 0x69, 0x73, + 0x74, 0x12, 0x3e, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, + 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x3f, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, + 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x82, 0x01, 0x0a, 0x0d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x48, 0x69, 0x73, + 0x74, 0x6f, 0x72, 0x79, 0x12, 0x37, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x48, + 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, - 0x63, 0x2e, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x64, - 0x65, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x82, - 0x01, 0x0a, 0x0d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, - 0x12, 0x37, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, - 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x48, 0x69, 0x73, 0x74, 0x6f, - 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x69, 0x6e, 0x6a, 0x65, - 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, - 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4f, 0x72, - 0x64, 0x65, 0x72, 0x73, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x96, 0x01, 0x0a, 0x13, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, - 0x64, 0x65, 0x72, 0x73, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x3d, 0x2e, 0x69, 0x6e, - 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, - 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, - 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x48, 0x69, 0x73, 0x74, - 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3e, 0x2e, 0x69, 0x6e, 0x6a, - 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, - 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, - 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x48, 0x69, 0x73, 0x74, 0x6f, - 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x42, 0x26, 0x5a, 0x24, - 0x2f, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, + 0x63, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x96, 0x01, 0x0a, 0x13, 0x53, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, + 0x3d, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, + 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, + 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, + 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3e, + 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, - 0x70, 0x63, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x48, + 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, + 0x42, 0x26, 0x5a, 0x24, 0x2f, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, + 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/exchange/derivative_exchange_rpc/pb/goadesign_goagen_injective_derivative_exchange_rpc_grpc.pb.go b/exchange/derivative_exchange_rpc/pb/goadesign_goagen_injective_derivative_exchange_rpc_grpc.pb.go index 3fe28e50..4ca27953 100644 --- a/exchange/derivative_exchange_rpc/pb/goadesign_goagen_injective_derivative_exchange_rpc_grpc.pb.go +++ b/exchange/derivative_exchange_rpc/pb/goadesign_goagen_injective_derivative_exchange_rpc_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.2.0 -// - protoc v3.19.4 +// - protoc v3.21.12 // source: goadesign_goagen_injective_derivative_exchange_rpc.proto package injective_derivative_exchange_rpcpb diff --git a/exchange/derivative_exchange_rpc/pb/injective_derivative_exchange_rpc.proto b/exchange/derivative_exchange_rpc/pb/injective_derivative_exchange_rpc.proto index 468da6c6..b65d2df4 100644 --- a/exchange/derivative_exchange_rpc/pb/injective_derivative_exchange_rpc.proto +++ b/exchange/derivative_exchange_rpc/pb/injective_derivative_exchange_rpc.proto @@ -107,7 +107,7 @@ message DerivativeMarketInfo { string maintenance_margin_ratio = 9; // Coin denom used for the quote asset. string quote_denom = 10; - // Token metadata for quote asset, only for Ethereum-based assets + // Token metadata for quote asset TokenMeta quote_token_meta = 11; // Defines the fee percentage makers pay when trading (in quote asset) string maker_fee_rate = 12; @@ -131,7 +131,7 @@ message DerivativeMarketInfo { message TokenMeta { // Token full name string name = 1; - // Token Ethereum contract address + // Token contract address (native or not) string address = 2; // Token symbol short name string symbol = 3; @@ -238,7 +238,7 @@ message BinaryOptionsMarketInfo { sint64 settlement_timestamp = 9; // Coin denom used for the quote asset. string quote_denom = 10; - // Token metadata for quote asset, only for Ethereum-based assets + // Token metadata for quote asset TokenMeta quote_token_meta = 11; // Defines the fee percentage makers pay when trading (in quote asset) string maker_fee_rate = 12; @@ -755,6 +755,8 @@ message TradesRequest { string account_address = 13; // Client order ID string cid = 14; + // Filter by fee recipient + string fee_recipient = 15; } message TradesResponse { @@ -834,6 +836,8 @@ message TradesV2Request { string account_address = 13; // Client order ID string cid = 14; + // Filter by fee recipient + string fee_recipient = 15; } message TradesV2Response { @@ -873,6 +877,8 @@ message StreamTradesRequest { string account_address = 13; // Client order ID string cid = 14; + // Filter by fee recipient + string fee_recipient = 15; } message StreamTradesResponse { @@ -915,6 +921,8 @@ message StreamTradesV2Request { string account_address = 13; // Client order ID string cid = 14; + // Filter by fee recipient + string fee_recipient = 15; } message StreamTradesV2Response { diff --git a/exchange/event_provider_api/pb/event_provider_api.pb.gw.go b/exchange/event_provider_api/pb/event_provider_api.pb.gw.go new file mode 100644 index 00000000..03cf7f4d --- /dev/null +++ b/exchange/event_provider_api/pb/event_provider_api.pb.gw.go @@ -0,0 +1,569 @@ +// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT. +// source: event_provider_api.proto + +/* +Package event_provider_apipb is a reverse proxy. + +It translates gRPC into RESTful JSON APIs. +*/ +package event_provider_apipb + +import ( + "context" + "io" + "net/http" + + "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" + "github.com/grpc-ecosystem/grpc-gateway/v2/utilities" + "google.golang.org/grpc" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/grpclog" + "google.golang.org/grpc/metadata" + "google.golang.org/grpc/status" + "google.golang.org/protobuf/proto" +) + +// Suppress "imported and not used" errors +var _ codes.Code +var _ io.Reader +var _ status.Status +var _ = runtime.String +var _ = utilities.NewDoubleArray +var _ = metadata.Join + +func request_EventProviderAPI_GetLatestHeight_0(ctx context.Context, marshaler runtime.Marshaler, client EventProviderAPIClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetLatestHeightRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.GetLatestHeight(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_EventProviderAPI_GetLatestHeight_0(ctx context.Context, marshaler runtime.Marshaler, server EventProviderAPIServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetLatestHeightRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.GetLatestHeight(ctx, &protoReq) + return msg, metadata, err + +} + +func request_EventProviderAPI_StreamBlockEvents_0(ctx context.Context, marshaler runtime.Marshaler, client EventProviderAPIClient, req *http.Request, pathParams map[string]string) (EventProviderAPI_StreamBlockEventsClient, runtime.ServerMetadata, error) { + var protoReq StreamBlockEventsRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + stream, err := client.StreamBlockEvents(ctx, &protoReq) + if err != nil { + return nil, metadata, err + } + header, err := stream.Header() + if err != nil { + return nil, metadata, err + } + metadata.HeaderMD = header + return stream, metadata, nil + +} + +func request_EventProviderAPI_GetBlockEventsRPC_0(ctx context.Context, marshaler runtime.Marshaler, client EventProviderAPIClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetBlockEventsRPCRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.GetBlockEventsRPC(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_EventProviderAPI_GetBlockEventsRPC_0(ctx context.Context, marshaler runtime.Marshaler, server EventProviderAPIServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetBlockEventsRPCRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.GetBlockEventsRPC(ctx, &protoReq) + return msg, metadata, err + +} + +func request_EventProviderAPI_GetCustomEventsRPC_0(ctx context.Context, marshaler runtime.Marshaler, client EventProviderAPIClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetCustomEventsRPCRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.GetCustomEventsRPC(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_EventProviderAPI_GetCustomEventsRPC_0(ctx context.Context, marshaler runtime.Marshaler, server EventProviderAPIServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetCustomEventsRPCRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.GetCustomEventsRPC(ctx, &protoReq) + return msg, metadata, err + +} + +func request_EventProviderAPI_GetABCIBlockEvents_0(ctx context.Context, marshaler runtime.Marshaler, client EventProviderAPIClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetABCIBlockEventsRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.GetABCIBlockEvents(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_EventProviderAPI_GetABCIBlockEvents_0(ctx context.Context, marshaler runtime.Marshaler, server EventProviderAPIServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetABCIBlockEventsRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.GetABCIBlockEvents(ctx, &protoReq) + return msg, metadata, err + +} + +func request_EventProviderAPI_GetABCIBlockEventsAtHeight_0(ctx context.Context, marshaler runtime.Marshaler, client EventProviderAPIClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetABCIBlockEventsAtHeightRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.GetABCIBlockEventsAtHeight(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_EventProviderAPI_GetABCIBlockEventsAtHeight_0(ctx context.Context, marshaler runtime.Marshaler, server EventProviderAPIServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetABCIBlockEventsAtHeightRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.GetABCIBlockEventsAtHeight(ctx, &protoReq) + return msg, metadata, err + +} + +// RegisterEventProviderAPIHandlerServer registers the http handlers for service EventProviderAPI to "mux". +// UnaryRPC :call EventProviderAPIServer directly. +// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. +// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterEventProviderAPIHandlerFromEndpoint instead. +func RegisterEventProviderAPIHandlerServer(ctx context.Context, mux *runtime.ServeMux, server EventProviderAPIServer) error { + + mux.Handle("POST", pattern_EventProviderAPI_GetLatestHeight_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/event_provider_api.EventProviderAPI/GetLatestHeight", runtime.WithHTTPPathPattern("/event_provider_api.EventProviderAPI/GetLatestHeight")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_EventProviderAPI_GetLatestHeight_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_EventProviderAPI_GetLatestHeight_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_EventProviderAPI_StreamBlockEvents_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + err := status.Error(codes.Unimplemented, "streaming calls are not yet supported in the in-process transport") + _, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + }) + + mux.Handle("POST", pattern_EventProviderAPI_GetBlockEventsRPC_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/event_provider_api.EventProviderAPI/GetBlockEventsRPC", runtime.WithHTTPPathPattern("/event_provider_api.EventProviderAPI/GetBlockEventsRPC")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_EventProviderAPI_GetBlockEventsRPC_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_EventProviderAPI_GetBlockEventsRPC_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_EventProviderAPI_GetCustomEventsRPC_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/event_provider_api.EventProviderAPI/GetCustomEventsRPC", runtime.WithHTTPPathPattern("/event_provider_api.EventProviderAPI/GetCustomEventsRPC")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_EventProviderAPI_GetCustomEventsRPC_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_EventProviderAPI_GetCustomEventsRPC_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_EventProviderAPI_GetABCIBlockEvents_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/event_provider_api.EventProviderAPI/GetABCIBlockEvents", runtime.WithHTTPPathPattern("/event_provider_api.EventProviderAPI/GetABCIBlockEvents")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_EventProviderAPI_GetABCIBlockEvents_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_EventProviderAPI_GetABCIBlockEvents_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_EventProviderAPI_GetABCIBlockEventsAtHeight_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/event_provider_api.EventProviderAPI/GetABCIBlockEventsAtHeight", runtime.WithHTTPPathPattern("/event_provider_api.EventProviderAPI/GetABCIBlockEventsAtHeight")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_EventProviderAPI_GetABCIBlockEventsAtHeight_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_EventProviderAPI_GetABCIBlockEventsAtHeight_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + return nil +} + +// RegisterEventProviderAPIHandlerFromEndpoint is same as RegisterEventProviderAPIHandler but +// automatically dials to "endpoint" and closes the connection when "ctx" gets done. +func RegisterEventProviderAPIHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { + conn, err := grpc.Dial(endpoint, opts...) + if err != nil { + return err + } + defer func() { + if err != nil { + if cerr := conn.Close(); cerr != nil { + grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + } + return + } + go func() { + <-ctx.Done() + if cerr := conn.Close(); cerr != nil { + grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + } + }() + }() + + return RegisterEventProviderAPIHandler(ctx, mux, conn) +} + +// RegisterEventProviderAPIHandler registers the http handlers for service EventProviderAPI to "mux". +// The handlers forward requests to the grpc endpoint over "conn". +func RegisterEventProviderAPIHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error { + return RegisterEventProviderAPIHandlerClient(ctx, mux, NewEventProviderAPIClient(conn)) +} + +// RegisterEventProviderAPIHandlerClient registers the http handlers for service EventProviderAPI +// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "EventProviderAPIClient". +// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "EventProviderAPIClient" +// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in +// "EventProviderAPIClient" to call the correct interceptors. +func RegisterEventProviderAPIHandlerClient(ctx context.Context, mux *runtime.ServeMux, client EventProviderAPIClient) error { + + mux.Handle("POST", pattern_EventProviderAPI_GetLatestHeight_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/event_provider_api.EventProviderAPI/GetLatestHeight", runtime.WithHTTPPathPattern("/event_provider_api.EventProviderAPI/GetLatestHeight")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_EventProviderAPI_GetLatestHeight_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_EventProviderAPI_GetLatestHeight_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_EventProviderAPI_StreamBlockEvents_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/event_provider_api.EventProviderAPI/StreamBlockEvents", runtime.WithHTTPPathPattern("/event_provider_api.EventProviderAPI/StreamBlockEvents")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_EventProviderAPI_StreamBlockEvents_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_EventProviderAPI_StreamBlockEvents_0(annotatedContext, mux, outboundMarshaler, w, req, func() (proto.Message, error) { return resp.Recv() }, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_EventProviderAPI_GetBlockEventsRPC_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/event_provider_api.EventProviderAPI/GetBlockEventsRPC", runtime.WithHTTPPathPattern("/event_provider_api.EventProviderAPI/GetBlockEventsRPC")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_EventProviderAPI_GetBlockEventsRPC_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_EventProviderAPI_GetBlockEventsRPC_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_EventProviderAPI_GetCustomEventsRPC_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/event_provider_api.EventProviderAPI/GetCustomEventsRPC", runtime.WithHTTPPathPattern("/event_provider_api.EventProviderAPI/GetCustomEventsRPC")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_EventProviderAPI_GetCustomEventsRPC_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_EventProviderAPI_GetCustomEventsRPC_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_EventProviderAPI_GetABCIBlockEvents_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/event_provider_api.EventProviderAPI/GetABCIBlockEvents", runtime.WithHTTPPathPattern("/event_provider_api.EventProviderAPI/GetABCIBlockEvents")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_EventProviderAPI_GetABCIBlockEvents_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_EventProviderAPI_GetABCIBlockEvents_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_EventProviderAPI_GetABCIBlockEventsAtHeight_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/event_provider_api.EventProviderAPI/GetABCIBlockEventsAtHeight", runtime.WithHTTPPathPattern("/event_provider_api.EventProviderAPI/GetABCIBlockEventsAtHeight")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_EventProviderAPI_GetABCIBlockEventsAtHeight_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_EventProviderAPI_GetABCIBlockEventsAtHeight_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + return nil +} + +var ( + pattern_EventProviderAPI_GetLatestHeight_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"event_provider_api.EventProviderAPI", "GetLatestHeight"}, "")) + + pattern_EventProviderAPI_StreamBlockEvents_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"event_provider_api.EventProviderAPI", "StreamBlockEvents"}, "")) + + pattern_EventProviderAPI_GetBlockEventsRPC_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"event_provider_api.EventProviderAPI", "GetBlockEventsRPC"}, "")) + + pattern_EventProviderAPI_GetCustomEventsRPC_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"event_provider_api.EventProviderAPI", "GetCustomEventsRPC"}, "")) + + pattern_EventProviderAPI_GetABCIBlockEvents_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"event_provider_api.EventProviderAPI", "GetABCIBlockEvents"}, "")) + + pattern_EventProviderAPI_GetABCIBlockEventsAtHeight_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"event_provider_api.EventProviderAPI", "GetABCIBlockEventsAtHeight"}, "")) +) + +var ( + forward_EventProviderAPI_GetLatestHeight_0 = runtime.ForwardResponseMessage + + forward_EventProviderAPI_StreamBlockEvents_0 = runtime.ForwardResponseStream + + forward_EventProviderAPI_GetBlockEventsRPC_0 = runtime.ForwardResponseMessage + + forward_EventProviderAPI_GetCustomEventsRPC_0 = runtime.ForwardResponseMessage + + forward_EventProviderAPI_GetABCIBlockEvents_0 = runtime.ForwardResponseMessage + + forward_EventProviderAPI_GetABCIBlockEventsAtHeight_0 = runtime.ForwardResponseMessage +) diff --git a/exchange/event_provider_api/pb/event_provider_api.proto b/exchange/event_provider_api/pb/event_provider_api.proto new file mode 100644 index 00000000..7b85e866 --- /dev/null +++ b/exchange/event_provider_api/pb/event_provider_api.proto @@ -0,0 +1,180 @@ +// Code generated with goa v3.7.0, DO NOT EDIT. +// +// EventProviderAPI protocol buffer definition +// +// Command: +// $ goa gen github.com/InjectiveLabs/injective-indexer/api/design -o ../ + +syntax = "proto3"; + +package event_provider_api; + +option go_package = "/event_provider_apipb"; + +// EventProviderAPI provides processed block events for different backends. +service EventProviderAPI { + // Get latest block from event provider + rpc GetLatestHeight (GetLatestHeightRequest) returns (GetLatestHeightResponse); + // Stream processed block events for selected backend + rpc StreamBlockEvents (StreamBlockEventsRequest) returns (stream StreamBlockEventsResponse); + // Get processed block events for selected backend + rpc GetBlockEventsRPC (GetBlockEventsRPCRequest) returns (GetBlockEventsRPCResponse); + // Get custom processed block events for selected backend + rpc GetCustomEventsRPC (GetCustomEventsRPCRequest) returns (GetCustomEventsRPCResponse); + // Get raw block events for selected height + rpc GetABCIBlockEvents (GetABCIBlockEventsRequest) returns (GetABCIBlockEventsResponse); + // Get all raw block events for selected height + rpc GetABCIBlockEventsAtHeight (GetABCIBlockEventsAtHeightRequest) returns (GetABCIBlockEventsAtHeightResponse); +} + +message GetLatestHeightRequest { +} + +message GetLatestHeightResponse { + // Response version. + string v = 1; + // Status of the response. + string s = 2; + // Error message. + string e = 3; + LatestBlockHeight data = 4; +} +// Latest block height from event provider db +message LatestBlockHeight { + uint64 height = 1; +} + +message StreamBlockEventsRequest { + // Select backend processor + string backend = 1; + sint32 height = 2; +} + +message StreamBlockEventsResponse { + repeated Block blocks = 1; +} + +message Block { + sint64 height = 1; + string version = 2; + // Processed block events in the block + repeated BlockEvent events = 3; + // Indicates whether the block is the latest one available in the event provider + bool in_sync = 4; +} + +message BlockEvent { + // Event type + string type_url = 1; + // Event data + bytes value = 2; + // TX hash + bytes tx_hash = 3; + // Set only if it's a BeginBlock or EndBlock event + string mode = 4; +} + +message GetBlockEventsRPCRequest { + // Select backend processor + string backend = 1; + sint32 height = 2; + bool human_readable = 3; +} + +message GetBlockEventsRPCResponse { + // Response version. + string v = 1; + // Status of the response. + string s = 2; + // Error message. + string e = 3; + BlockEventsRPC data = 4; +} +// Processed block events for backend processor to consume +message BlockEventsRPC { + // Array of event types + repeated string types = 1; + // Array of parsed events + repeated bytes events = 2; + // Map of event index - tx hash + map tx_hashes = 3; +} + +message GetCustomEventsRPCRequest { + // Select backend processor + string backend = 1; + sint32 height = 2; + // Specify custom events to get + string events = 3; +} + +message GetCustomEventsRPCResponse { + // Response version. + string v = 1; + // Status of the response. + string s = 2; + // Error message. + string e = 3; + BlockEventsRPC data = 4; +} + +message GetABCIBlockEventsRequest { + sint32 height = 1; + // Array of event types + repeated string event_types = 2; +} + +message GetABCIBlockEventsResponse { + // Response version. + string v = 1; + // Status of the response. + string s = 2; + // Error message. + string e = 3; + RawBlock raw_block = 4; +} + +message RawBlock { + sint64 height = 1; + string block_time = 5; + // Block timestamp in UNIX millis. + sint64 block_timestamp = 6; + repeated ABCIResponseDeliverTx txs_results = 2; + repeated ABCIEvent begin_block_events = 3; + repeated ABCIEvent end_block_events = 4; +} + +message ABCIResponseDeliverTx { + sint32 code = 1; + string log = 2; + string info = 3; + sint64 gas_wanted = 4; + sint64 gas_used = 5; + repeated ABCIEvent events = 6; + string codespace = 7; + bytes tx_hash = 8; +} + +message ABCIEvent { + string type = 1; + repeated ABCIAttribute attributes = 2; +} + +message ABCIAttribute { + string key = 1; + string value = 2; +} + +message GetABCIBlockEventsAtHeightRequest { + sint32 height = 1; +} + +message GetABCIBlockEventsAtHeightResponse { + // Response version. + string v = 1; + // Status of the response. + string s = 2; + // Error message. + string e = 3; + RawBlock raw_block = 4; +} diff --git a/exchange/event_provider_api/pb/event_provider_api_grpc.pb_mock.go b/exchange/event_provider_api/pb/event_provider_api_grpc.pb_mock.go new file mode 100644 index 00000000..2acb375b --- /dev/null +++ b/exchange/event_provider_api/pb/event_provider_api_grpc.pb_mock.go @@ -0,0 +1,563 @@ +// Code generated by MockGen. DO NOT EDIT. +// Source: api/gen/grpc/event_provider_api/pb/goadesign_goagen_event_provider_api_grpc.pb.go +// +// Generated by this command: +// +// mockgen -source=api/gen/grpc/event_provider_api/pb/goadesign_goagen_event_provider_api_grpc.pb.go -destination=api/gen/grpc/event_provider_api/pb/event_provider_api_grpc.pb_mock.go -package=event_provider_apipb +// + +// Package event_provider_apipb is a generated GoMock package. +package event_provider_apipb + +import ( + context "context" + reflect "reflect" + + gomock "go.uber.org/mock/gomock" + grpc "google.golang.org/grpc" + metadata "google.golang.org/grpc/metadata" +) + +// MockEventProviderAPIClient is a mock of EventProviderAPIClient interface. +type MockEventProviderAPIClient struct { + ctrl *gomock.Controller + recorder *MockEventProviderAPIClientMockRecorder +} + +// MockEventProviderAPIClientMockRecorder is the mock recorder for MockEventProviderAPIClient. +type MockEventProviderAPIClientMockRecorder struct { + mock *MockEventProviderAPIClient +} + +// NewMockEventProviderAPIClient creates a new mock instance. +func NewMockEventProviderAPIClient(ctrl *gomock.Controller) *MockEventProviderAPIClient { + mock := &MockEventProviderAPIClient{ctrl: ctrl} + mock.recorder = &MockEventProviderAPIClientMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockEventProviderAPIClient) EXPECT() *MockEventProviderAPIClientMockRecorder { + return m.recorder +} + +// GetABCIBlockEvents mocks base method. +func (m *MockEventProviderAPIClient) GetABCIBlockEvents(ctx context.Context, in *GetABCIBlockEventsRequest, opts ...grpc.CallOption) (*GetABCIBlockEventsResponse, error) { + m.ctrl.T.Helper() + varargs := []any{ctx, in} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "GetABCIBlockEvents", varargs...) + ret0, _ := ret[0].(*GetABCIBlockEventsResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetABCIBlockEvents indicates an expected call of GetABCIBlockEvents. +func (mr *MockEventProviderAPIClientMockRecorder) GetABCIBlockEvents(ctx, in any, opts ...any) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]any{ctx, in}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetABCIBlockEvents", reflect.TypeOf((*MockEventProviderAPIClient)(nil).GetABCIBlockEvents), varargs...) +} + +// GetABCIBlockEventsAtHeight mocks base method. +func (m *MockEventProviderAPIClient) GetABCIBlockEventsAtHeight(ctx context.Context, in *GetABCIBlockEventsAtHeightRequest, opts ...grpc.CallOption) (*GetABCIBlockEventsAtHeightResponse, error) { + m.ctrl.T.Helper() + varargs := []any{ctx, in} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "GetABCIBlockEventsAtHeight", varargs...) + ret0, _ := ret[0].(*GetABCIBlockEventsAtHeightResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetABCIBlockEventsAtHeight indicates an expected call of GetABCIBlockEventsAtHeight. +func (mr *MockEventProviderAPIClientMockRecorder) GetABCIBlockEventsAtHeight(ctx, in any, opts ...any) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]any{ctx, in}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetABCIBlockEventsAtHeight", reflect.TypeOf((*MockEventProviderAPIClient)(nil).GetABCIBlockEventsAtHeight), varargs...) +} + +// GetBlockEventsRPC mocks base method. +func (m *MockEventProviderAPIClient) GetBlockEventsRPC(ctx context.Context, in *GetBlockEventsRPCRequest, opts ...grpc.CallOption) (*GetBlockEventsRPCResponse, error) { + m.ctrl.T.Helper() + varargs := []any{ctx, in} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "GetBlockEventsRPC", varargs...) + ret0, _ := ret[0].(*GetBlockEventsRPCResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetBlockEventsRPC indicates an expected call of GetBlockEventsRPC. +func (mr *MockEventProviderAPIClientMockRecorder) GetBlockEventsRPC(ctx, in any, opts ...any) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]any{ctx, in}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetBlockEventsRPC", reflect.TypeOf((*MockEventProviderAPIClient)(nil).GetBlockEventsRPC), varargs...) +} + +// GetCustomEventsRPC mocks base method. +func (m *MockEventProviderAPIClient) GetCustomEventsRPC(ctx context.Context, in *GetCustomEventsRPCRequest, opts ...grpc.CallOption) (*GetCustomEventsRPCResponse, error) { + m.ctrl.T.Helper() + varargs := []any{ctx, in} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "GetCustomEventsRPC", varargs...) + ret0, _ := ret[0].(*GetCustomEventsRPCResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetCustomEventsRPC indicates an expected call of GetCustomEventsRPC. +func (mr *MockEventProviderAPIClientMockRecorder) GetCustomEventsRPC(ctx, in any, opts ...any) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]any{ctx, in}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetCustomEventsRPC", reflect.TypeOf((*MockEventProviderAPIClient)(nil).GetCustomEventsRPC), varargs...) +} + +// GetLatestHeight mocks base method. +func (m *MockEventProviderAPIClient) GetLatestHeight(ctx context.Context, in *GetLatestHeightRequest, opts ...grpc.CallOption) (*GetLatestHeightResponse, error) { + m.ctrl.T.Helper() + varargs := []any{ctx, in} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "GetLatestHeight", varargs...) + ret0, _ := ret[0].(*GetLatestHeightResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetLatestHeight indicates an expected call of GetLatestHeight. +func (mr *MockEventProviderAPIClientMockRecorder) GetLatestHeight(ctx, in any, opts ...any) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]any{ctx, in}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetLatestHeight", reflect.TypeOf((*MockEventProviderAPIClient)(nil).GetLatestHeight), varargs...) +} + +// StreamBlockEvents mocks base method. +func (m *MockEventProviderAPIClient) StreamBlockEvents(ctx context.Context, in *StreamBlockEventsRequest, opts ...grpc.CallOption) (EventProviderAPI_StreamBlockEventsClient, error) { + m.ctrl.T.Helper() + varargs := []any{ctx, in} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "StreamBlockEvents", varargs...) + ret0, _ := ret[0].(EventProviderAPI_StreamBlockEventsClient) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// StreamBlockEvents indicates an expected call of StreamBlockEvents. +func (mr *MockEventProviderAPIClientMockRecorder) StreamBlockEvents(ctx, in any, opts ...any) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]any{ctx, in}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "StreamBlockEvents", reflect.TypeOf((*MockEventProviderAPIClient)(nil).StreamBlockEvents), varargs...) +} + +// MockEventProviderAPI_StreamBlockEventsClient is a mock of EventProviderAPI_StreamBlockEventsClient interface. +type MockEventProviderAPI_StreamBlockEventsClient struct { + ctrl *gomock.Controller + recorder *MockEventProviderAPI_StreamBlockEventsClientMockRecorder +} + +// MockEventProviderAPI_StreamBlockEventsClientMockRecorder is the mock recorder for MockEventProviderAPI_StreamBlockEventsClient. +type MockEventProviderAPI_StreamBlockEventsClientMockRecorder struct { + mock *MockEventProviderAPI_StreamBlockEventsClient +} + +// NewMockEventProviderAPI_StreamBlockEventsClient creates a new mock instance. +func NewMockEventProviderAPI_StreamBlockEventsClient(ctrl *gomock.Controller) *MockEventProviderAPI_StreamBlockEventsClient { + mock := &MockEventProviderAPI_StreamBlockEventsClient{ctrl: ctrl} + mock.recorder = &MockEventProviderAPI_StreamBlockEventsClientMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockEventProviderAPI_StreamBlockEventsClient) EXPECT() *MockEventProviderAPI_StreamBlockEventsClientMockRecorder { + return m.recorder +} + +// CloseSend mocks base method. +func (m *MockEventProviderAPI_StreamBlockEventsClient) CloseSend() error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "CloseSend") + ret0, _ := ret[0].(error) + return ret0 +} + +// CloseSend indicates an expected call of CloseSend. +func (mr *MockEventProviderAPI_StreamBlockEventsClientMockRecorder) CloseSend() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CloseSend", reflect.TypeOf((*MockEventProviderAPI_StreamBlockEventsClient)(nil).CloseSend)) +} + +// Context mocks base method. +func (m *MockEventProviderAPI_StreamBlockEventsClient) Context() context.Context { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Context") + ret0, _ := ret[0].(context.Context) + return ret0 +} + +// Context indicates an expected call of Context. +func (mr *MockEventProviderAPI_StreamBlockEventsClientMockRecorder) Context() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Context", reflect.TypeOf((*MockEventProviderAPI_StreamBlockEventsClient)(nil).Context)) +} + +// Header mocks base method. +func (m *MockEventProviderAPI_StreamBlockEventsClient) Header() (metadata.MD, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Header") + ret0, _ := ret[0].(metadata.MD) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// Header indicates an expected call of Header. +func (mr *MockEventProviderAPI_StreamBlockEventsClientMockRecorder) Header() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Header", reflect.TypeOf((*MockEventProviderAPI_StreamBlockEventsClient)(nil).Header)) +} + +// Recv mocks base method. +func (m *MockEventProviderAPI_StreamBlockEventsClient) Recv() (*StreamBlockEventsResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Recv") + ret0, _ := ret[0].(*StreamBlockEventsResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// Recv indicates an expected call of Recv. +func (mr *MockEventProviderAPI_StreamBlockEventsClientMockRecorder) Recv() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Recv", reflect.TypeOf((*MockEventProviderAPI_StreamBlockEventsClient)(nil).Recv)) +} + +// RecvMsg mocks base method. +func (m_2 *MockEventProviderAPI_StreamBlockEventsClient) RecvMsg(m any) error { + m_2.ctrl.T.Helper() + ret := m_2.ctrl.Call(m_2, "RecvMsg", m) + ret0, _ := ret[0].(error) + return ret0 +} + +// RecvMsg indicates an expected call of RecvMsg. +func (mr *MockEventProviderAPI_StreamBlockEventsClientMockRecorder) RecvMsg(m any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RecvMsg", reflect.TypeOf((*MockEventProviderAPI_StreamBlockEventsClient)(nil).RecvMsg), m) +} + +// SendMsg mocks base method. +func (m_2 *MockEventProviderAPI_StreamBlockEventsClient) SendMsg(m any) error { + m_2.ctrl.T.Helper() + ret := m_2.ctrl.Call(m_2, "SendMsg", m) + ret0, _ := ret[0].(error) + return ret0 +} + +// SendMsg indicates an expected call of SendMsg. +func (mr *MockEventProviderAPI_StreamBlockEventsClientMockRecorder) SendMsg(m any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SendMsg", reflect.TypeOf((*MockEventProviderAPI_StreamBlockEventsClient)(nil).SendMsg), m) +} + +// Trailer mocks base method. +func (m *MockEventProviderAPI_StreamBlockEventsClient) Trailer() metadata.MD { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Trailer") + ret0, _ := ret[0].(metadata.MD) + return ret0 +} + +// Trailer indicates an expected call of Trailer. +func (mr *MockEventProviderAPI_StreamBlockEventsClientMockRecorder) Trailer() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Trailer", reflect.TypeOf((*MockEventProviderAPI_StreamBlockEventsClient)(nil).Trailer)) +} + +// MockEventProviderAPIServer is a mock of EventProviderAPIServer interface. +type MockEventProviderAPIServer struct { + ctrl *gomock.Controller + recorder *MockEventProviderAPIServerMockRecorder +} + +// MockEventProviderAPIServerMockRecorder is the mock recorder for MockEventProviderAPIServer. +type MockEventProviderAPIServerMockRecorder struct { + mock *MockEventProviderAPIServer +} + +// NewMockEventProviderAPIServer creates a new mock instance. +func NewMockEventProviderAPIServer(ctrl *gomock.Controller) *MockEventProviderAPIServer { + mock := &MockEventProviderAPIServer{ctrl: ctrl} + mock.recorder = &MockEventProviderAPIServerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockEventProviderAPIServer) EXPECT() *MockEventProviderAPIServerMockRecorder { + return m.recorder +} + +// GetABCIBlockEvents mocks base method. +func (m *MockEventProviderAPIServer) GetABCIBlockEvents(arg0 context.Context, arg1 *GetABCIBlockEventsRequest) (*GetABCIBlockEventsResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetABCIBlockEvents", arg0, arg1) + ret0, _ := ret[0].(*GetABCIBlockEventsResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetABCIBlockEvents indicates an expected call of GetABCIBlockEvents. +func (mr *MockEventProviderAPIServerMockRecorder) GetABCIBlockEvents(arg0, arg1 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetABCIBlockEvents", reflect.TypeOf((*MockEventProviderAPIServer)(nil).GetABCIBlockEvents), arg0, arg1) +} + +// GetABCIBlockEventsAtHeight mocks base method. +func (m *MockEventProviderAPIServer) GetABCIBlockEventsAtHeight(arg0 context.Context, arg1 *GetABCIBlockEventsAtHeightRequest) (*GetABCIBlockEventsAtHeightResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetABCIBlockEventsAtHeight", arg0, arg1) + ret0, _ := ret[0].(*GetABCIBlockEventsAtHeightResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetABCIBlockEventsAtHeight indicates an expected call of GetABCIBlockEventsAtHeight. +func (mr *MockEventProviderAPIServerMockRecorder) GetABCIBlockEventsAtHeight(arg0, arg1 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetABCIBlockEventsAtHeight", reflect.TypeOf((*MockEventProviderAPIServer)(nil).GetABCIBlockEventsAtHeight), arg0, arg1) +} + +// GetBlockEventsRPC mocks base method. +func (m *MockEventProviderAPIServer) GetBlockEventsRPC(arg0 context.Context, arg1 *GetBlockEventsRPCRequest) (*GetBlockEventsRPCResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetBlockEventsRPC", arg0, arg1) + ret0, _ := ret[0].(*GetBlockEventsRPCResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetBlockEventsRPC indicates an expected call of GetBlockEventsRPC. +func (mr *MockEventProviderAPIServerMockRecorder) GetBlockEventsRPC(arg0, arg1 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetBlockEventsRPC", reflect.TypeOf((*MockEventProviderAPIServer)(nil).GetBlockEventsRPC), arg0, arg1) +} + +// GetCustomEventsRPC mocks base method. +func (m *MockEventProviderAPIServer) GetCustomEventsRPC(arg0 context.Context, arg1 *GetCustomEventsRPCRequest) (*GetCustomEventsRPCResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetCustomEventsRPC", arg0, arg1) + ret0, _ := ret[0].(*GetCustomEventsRPCResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetCustomEventsRPC indicates an expected call of GetCustomEventsRPC. +func (mr *MockEventProviderAPIServerMockRecorder) GetCustomEventsRPC(arg0, arg1 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetCustomEventsRPC", reflect.TypeOf((*MockEventProviderAPIServer)(nil).GetCustomEventsRPC), arg0, arg1) +} + +// GetLatestHeight mocks base method. +func (m *MockEventProviderAPIServer) GetLatestHeight(arg0 context.Context, arg1 *GetLatestHeightRequest) (*GetLatestHeightResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetLatestHeight", arg0, arg1) + ret0, _ := ret[0].(*GetLatestHeightResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetLatestHeight indicates an expected call of GetLatestHeight. +func (mr *MockEventProviderAPIServerMockRecorder) GetLatestHeight(arg0, arg1 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetLatestHeight", reflect.TypeOf((*MockEventProviderAPIServer)(nil).GetLatestHeight), arg0, arg1) +} + +// StreamBlockEvents mocks base method. +func (m *MockEventProviderAPIServer) StreamBlockEvents(arg0 *StreamBlockEventsRequest, arg1 EventProviderAPI_StreamBlockEventsServer) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "StreamBlockEvents", arg0, arg1) + ret0, _ := ret[0].(error) + return ret0 +} + +// StreamBlockEvents indicates an expected call of StreamBlockEvents. +func (mr *MockEventProviderAPIServerMockRecorder) StreamBlockEvents(arg0, arg1 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "StreamBlockEvents", reflect.TypeOf((*MockEventProviderAPIServer)(nil).StreamBlockEvents), arg0, arg1) +} + +// mustEmbedUnimplementedEventProviderAPIServer mocks base method. +func (m *MockEventProviderAPIServer) mustEmbedUnimplementedEventProviderAPIServer() { + m.ctrl.T.Helper() + m.ctrl.Call(m, "mustEmbedUnimplementedEventProviderAPIServer") +} + +// mustEmbedUnimplementedEventProviderAPIServer indicates an expected call of mustEmbedUnimplementedEventProviderAPIServer. +func (mr *MockEventProviderAPIServerMockRecorder) mustEmbedUnimplementedEventProviderAPIServer() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "mustEmbedUnimplementedEventProviderAPIServer", reflect.TypeOf((*MockEventProviderAPIServer)(nil).mustEmbedUnimplementedEventProviderAPIServer)) +} + +// MockUnsafeEventProviderAPIServer is a mock of UnsafeEventProviderAPIServer interface. +type MockUnsafeEventProviderAPIServer struct { + ctrl *gomock.Controller + recorder *MockUnsafeEventProviderAPIServerMockRecorder +} + +// MockUnsafeEventProviderAPIServerMockRecorder is the mock recorder for MockUnsafeEventProviderAPIServer. +type MockUnsafeEventProviderAPIServerMockRecorder struct { + mock *MockUnsafeEventProviderAPIServer +} + +// NewMockUnsafeEventProviderAPIServer creates a new mock instance. +func NewMockUnsafeEventProviderAPIServer(ctrl *gomock.Controller) *MockUnsafeEventProviderAPIServer { + mock := &MockUnsafeEventProviderAPIServer{ctrl: ctrl} + mock.recorder = &MockUnsafeEventProviderAPIServerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockUnsafeEventProviderAPIServer) EXPECT() *MockUnsafeEventProviderAPIServerMockRecorder { + return m.recorder +} + +// mustEmbedUnimplementedEventProviderAPIServer mocks base method. +func (m *MockUnsafeEventProviderAPIServer) mustEmbedUnimplementedEventProviderAPIServer() { + m.ctrl.T.Helper() + m.ctrl.Call(m, "mustEmbedUnimplementedEventProviderAPIServer") +} + +// mustEmbedUnimplementedEventProviderAPIServer indicates an expected call of mustEmbedUnimplementedEventProviderAPIServer. +func (mr *MockUnsafeEventProviderAPIServerMockRecorder) mustEmbedUnimplementedEventProviderAPIServer() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "mustEmbedUnimplementedEventProviderAPIServer", reflect.TypeOf((*MockUnsafeEventProviderAPIServer)(nil).mustEmbedUnimplementedEventProviderAPIServer)) +} + +// MockEventProviderAPI_StreamBlockEventsServer is a mock of EventProviderAPI_StreamBlockEventsServer interface. +type MockEventProviderAPI_StreamBlockEventsServer struct { + ctrl *gomock.Controller + recorder *MockEventProviderAPI_StreamBlockEventsServerMockRecorder +} + +// MockEventProviderAPI_StreamBlockEventsServerMockRecorder is the mock recorder for MockEventProviderAPI_StreamBlockEventsServer. +type MockEventProviderAPI_StreamBlockEventsServerMockRecorder struct { + mock *MockEventProviderAPI_StreamBlockEventsServer +} + +// NewMockEventProviderAPI_StreamBlockEventsServer creates a new mock instance. +func NewMockEventProviderAPI_StreamBlockEventsServer(ctrl *gomock.Controller) *MockEventProviderAPI_StreamBlockEventsServer { + mock := &MockEventProviderAPI_StreamBlockEventsServer{ctrl: ctrl} + mock.recorder = &MockEventProviderAPI_StreamBlockEventsServerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockEventProviderAPI_StreamBlockEventsServer) EXPECT() *MockEventProviderAPI_StreamBlockEventsServerMockRecorder { + return m.recorder +} + +// Context mocks base method. +func (m *MockEventProviderAPI_StreamBlockEventsServer) Context() context.Context { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Context") + ret0, _ := ret[0].(context.Context) + return ret0 +} + +// Context indicates an expected call of Context. +func (mr *MockEventProviderAPI_StreamBlockEventsServerMockRecorder) Context() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Context", reflect.TypeOf((*MockEventProviderAPI_StreamBlockEventsServer)(nil).Context)) +} + +// RecvMsg mocks base method. +func (m_2 *MockEventProviderAPI_StreamBlockEventsServer) RecvMsg(m any) error { + m_2.ctrl.T.Helper() + ret := m_2.ctrl.Call(m_2, "RecvMsg", m) + ret0, _ := ret[0].(error) + return ret0 +} + +// RecvMsg indicates an expected call of RecvMsg. +func (mr *MockEventProviderAPI_StreamBlockEventsServerMockRecorder) RecvMsg(m any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RecvMsg", reflect.TypeOf((*MockEventProviderAPI_StreamBlockEventsServer)(nil).RecvMsg), m) +} + +// Send mocks base method. +func (m *MockEventProviderAPI_StreamBlockEventsServer) Send(arg0 *StreamBlockEventsResponse) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Send", arg0) + ret0, _ := ret[0].(error) + return ret0 +} + +// Send indicates an expected call of Send. +func (mr *MockEventProviderAPI_StreamBlockEventsServerMockRecorder) Send(arg0 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Send", reflect.TypeOf((*MockEventProviderAPI_StreamBlockEventsServer)(nil).Send), arg0) +} + +// SendHeader mocks base method. +func (m *MockEventProviderAPI_StreamBlockEventsServer) SendHeader(arg0 metadata.MD) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "SendHeader", arg0) + ret0, _ := ret[0].(error) + return ret0 +} + +// SendHeader indicates an expected call of SendHeader. +func (mr *MockEventProviderAPI_StreamBlockEventsServerMockRecorder) SendHeader(arg0 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SendHeader", reflect.TypeOf((*MockEventProviderAPI_StreamBlockEventsServer)(nil).SendHeader), arg0) +} + +// SendMsg mocks base method. +func (m_2 *MockEventProviderAPI_StreamBlockEventsServer) SendMsg(m any) error { + m_2.ctrl.T.Helper() + ret := m_2.ctrl.Call(m_2, "SendMsg", m) + ret0, _ := ret[0].(error) + return ret0 +} + +// SendMsg indicates an expected call of SendMsg. +func (mr *MockEventProviderAPI_StreamBlockEventsServerMockRecorder) SendMsg(m any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SendMsg", reflect.TypeOf((*MockEventProviderAPI_StreamBlockEventsServer)(nil).SendMsg), m) +} + +// SetHeader mocks base method. +func (m *MockEventProviderAPI_StreamBlockEventsServer) SetHeader(arg0 metadata.MD) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "SetHeader", arg0) + ret0, _ := ret[0].(error) + return ret0 +} + +// SetHeader indicates an expected call of SetHeader. +func (mr *MockEventProviderAPI_StreamBlockEventsServerMockRecorder) SetHeader(arg0 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetHeader", reflect.TypeOf((*MockEventProviderAPI_StreamBlockEventsServer)(nil).SetHeader), arg0) +} + +// SetTrailer mocks base method. +func (m *MockEventProviderAPI_StreamBlockEventsServer) SetTrailer(arg0 metadata.MD) { + m.ctrl.T.Helper() + m.ctrl.Call(m, "SetTrailer", arg0) +} + +// SetTrailer indicates an expected call of SetTrailer. +func (mr *MockEventProviderAPI_StreamBlockEventsServerMockRecorder) SetTrailer(arg0 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetTrailer", reflect.TypeOf((*MockEventProviderAPI_StreamBlockEventsServer)(nil).SetTrailer), arg0) +} diff --git a/exchange/event_provider_api/pb/goadesign_goagen_event_provider_api.pb.go b/exchange/event_provider_api/pb/goadesign_goagen_event_provider_api.pb.go new file mode 100644 index 00000000..1389f949 --- /dev/null +++ b/exchange/event_provider_api/pb/goadesign_goagen_event_provider_api.pb.go @@ -0,0 +1,1881 @@ +// Code generated with goa v3.7.0, DO NOT EDIT. +// +// EventProviderAPI protocol buffer definition +// +// Command: +// $ goa gen github.com/InjectiveLabs/injective-indexer/api/design -o ../ + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.30.0 +// protoc v3.21.12 +// source: goadesign_goagen_event_provider_api.proto + +package event_provider_apipb + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type GetLatestHeightRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *GetLatestHeightRequest) Reset() { + *x = GetLatestHeightRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetLatestHeightRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetLatestHeightRequest) ProtoMessage() {} + +func (x *GetLatestHeightRequest) ProtoReflect() protoreflect.Message { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetLatestHeightRequest.ProtoReflect.Descriptor instead. +func (*GetLatestHeightRequest) Descriptor() ([]byte, []int) { + return file_goadesign_goagen_event_provider_api_proto_rawDescGZIP(), []int{0} +} + +type GetLatestHeightResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Response version. + V string `protobuf:"bytes,1,opt,name=v,proto3" json:"v,omitempty"` + // Status of the response. + S string `protobuf:"bytes,2,opt,name=s,proto3" json:"s,omitempty"` + // Error message. + E string `protobuf:"bytes,3,opt,name=e,proto3" json:"e,omitempty"` + Data *LatestBlockHeight `protobuf:"bytes,4,opt,name=data,proto3" json:"data,omitempty"` +} + +func (x *GetLatestHeightResponse) Reset() { + *x = GetLatestHeightResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetLatestHeightResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetLatestHeightResponse) ProtoMessage() {} + +func (x *GetLatestHeightResponse) ProtoReflect() protoreflect.Message { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetLatestHeightResponse.ProtoReflect.Descriptor instead. +func (*GetLatestHeightResponse) Descriptor() ([]byte, []int) { + return file_goadesign_goagen_event_provider_api_proto_rawDescGZIP(), []int{1} +} + +func (x *GetLatestHeightResponse) GetV() string { + if x != nil { + return x.V + } + return "" +} + +func (x *GetLatestHeightResponse) GetS() string { + if x != nil { + return x.S + } + return "" +} + +func (x *GetLatestHeightResponse) GetE() string { + if x != nil { + return x.E + } + return "" +} + +func (x *GetLatestHeightResponse) GetData() *LatestBlockHeight { + if x != nil { + return x.Data + } + return nil +} + +// Latest block height from event provider db +type LatestBlockHeight struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Height uint64 `protobuf:"varint,1,opt,name=height,proto3" json:"height,omitempty"` +} + +func (x *LatestBlockHeight) Reset() { + *x = LatestBlockHeight{} + if protoimpl.UnsafeEnabled { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LatestBlockHeight) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LatestBlockHeight) ProtoMessage() {} + +func (x *LatestBlockHeight) ProtoReflect() protoreflect.Message { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LatestBlockHeight.ProtoReflect.Descriptor instead. +func (*LatestBlockHeight) Descriptor() ([]byte, []int) { + return file_goadesign_goagen_event_provider_api_proto_rawDescGZIP(), []int{2} +} + +func (x *LatestBlockHeight) GetHeight() uint64 { + if x != nil { + return x.Height + } + return 0 +} + +type StreamBlockEventsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Select backend processor + Backend string `protobuf:"bytes,1,opt,name=backend,proto3" json:"backend,omitempty"` + Height int32 `protobuf:"zigzag32,2,opt,name=height,proto3" json:"height,omitempty"` +} + +func (x *StreamBlockEventsRequest) Reset() { + *x = StreamBlockEventsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StreamBlockEventsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StreamBlockEventsRequest) ProtoMessage() {} + +func (x *StreamBlockEventsRequest) ProtoReflect() protoreflect.Message { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StreamBlockEventsRequest.ProtoReflect.Descriptor instead. +func (*StreamBlockEventsRequest) Descriptor() ([]byte, []int) { + return file_goadesign_goagen_event_provider_api_proto_rawDescGZIP(), []int{3} +} + +func (x *StreamBlockEventsRequest) GetBackend() string { + if x != nil { + return x.Backend + } + return "" +} + +func (x *StreamBlockEventsRequest) GetHeight() int32 { + if x != nil { + return x.Height + } + return 0 +} + +type StreamBlockEventsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Blocks []*Block `protobuf:"bytes,1,rep,name=blocks,proto3" json:"blocks,omitempty"` +} + +func (x *StreamBlockEventsResponse) Reset() { + *x = StreamBlockEventsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StreamBlockEventsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StreamBlockEventsResponse) ProtoMessage() {} + +func (x *StreamBlockEventsResponse) ProtoReflect() protoreflect.Message { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StreamBlockEventsResponse.ProtoReflect.Descriptor instead. +func (*StreamBlockEventsResponse) Descriptor() ([]byte, []int) { + return file_goadesign_goagen_event_provider_api_proto_rawDescGZIP(), []int{4} +} + +func (x *StreamBlockEventsResponse) GetBlocks() []*Block { + if x != nil { + return x.Blocks + } + return nil +} + +type Block struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Height int64 `protobuf:"zigzag64,1,opt,name=height,proto3" json:"height,omitempty"` + Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` + // Processed block events in the block + Events []*BlockEvent `protobuf:"bytes,3,rep,name=events,proto3" json:"events,omitempty"` + // Indicates whether the block is the latest one available in the event provider + InSync bool `protobuf:"varint,4,opt,name=in_sync,json=inSync,proto3" json:"in_sync,omitempty"` +} + +func (x *Block) Reset() { + *x = Block{} + if protoimpl.UnsafeEnabled { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Block) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Block) ProtoMessage() {} + +func (x *Block) ProtoReflect() protoreflect.Message { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Block.ProtoReflect.Descriptor instead. +func (*Block) Descriptor() ([]byte, []int) { + return file_goadesign_goagen_event_provider_api_proto_rawDescGZIP(), []int{5} +} + +func (x *Block) GetHeight() int64 { + if x != nil { + return x.Height + } + return 0 +} + +func (x *Block) GetVersion() string { + if x != nil { + return x.Version + } + return "" +} + +func (x *Block) GetEvents() []*BlockEvent { + if x != nil { + return x.Events + } + return nil +} + +func (x *Block) GetInSync() bool { + if x != nil { + return x.InSync + } + return false +} + +type BlockEvent struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Event type + TypeUrl string `protobuf:"bytes,1,opt,name=type_url,json=typeUrl,proto3" json:"type_url,omitempty"` + // Event data + Value []byte `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` + // TX hash + TxHash []byte `protobuf:"bytes,3,opt,name=tx_hash,json=txHash,proto3" json:"tx_hash,omitempty"` + // Set only if it's a BeginBlock or EndBlock event + Mode string `protobuf:"bytes,4,opt,name=mode,proto3" json:"mode,omitempty"` +} + +func (x *BlockEvent) Reset() { + *x = BlockEvent{} + if protoimpl.UnsafeEnabled { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlockEvent) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlockEvent) ProtoMessage() {} + +func (x *BlockEvent) ProtoReflect() protoreflect.Message { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlockEvent.ProtoReflect.Descriptor instead. +func (*BlockEvent) Descriptor() ([]byte, []int) { + return file_goadesign_goagen_event_provider_api_proto_rawDescGZIP(), []int{6} +} + +func (x *BlockEvent) GetTypeUrl() string { + if x != nil { + return x.TypeUrl + } + return "" +} + +func (x *BlockEvent) GetValue() []byte { + if x != nil { + return x.Value + } + return nil +} + +func (x *BlockEvent) GetTxHash() []byte { + if x != nil { + return x.TxHash + } + return nil +} + +func (x *BlockEvent) GetMode() string { + if x != nil { + return x.Mode + } + return "" +} + +type GetBlockEventsRPCRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Select backend processor + Backend string `protobuf:"bytes,1,opt,name=backend,proto3" json:"backend,omitempty"` + Height int32 `protobuf:"zigzag32,2,opt,name=height,proto3" json:"height,omitempty"` + HumanReadable bool `protobuf:"varint,3,opt,name=human_readable,json=humanReadable,proto3" json:"human_readable,omitempty"` +} + +func (x *GetBlockEventsRPCRequest) Reset() { + *x = GetBlockEventsRPCRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetBlockEventsRPCRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetBlockEventsRPCRequest) ProtoMessage() {} + +func (x *GetBlockEventsRPCRequest) ProtoReflect() protoreflect.Message { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetBlockEventsRPCRequest.ProtoReflect.Descriptor instead. +func (*GetBlockEventsRPCRequest) Descriptor() ([]byte, []int) { + return file_goadesign_goagen_event_provider_api_proto_rawDescGZIP(), []int{7} +} + +func (x *GetBlockEventsRPCRequest) GetBackend() string { + if x != nil { + return x.Backend + } + return "" +} + +func (x *GetBlockEventsRPCRequest) GetHeight() int32 { + if x != nil { + return x.Height + } + return 0 +} + +func (x *GetBlockEventsRPCRequest) GetHumanReadable() bool { + if x != nil { + return x.HumanReadable + } + return false +} + +type GetBlockEventsRPCResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Response version. + V string `protobuf:"bytes,1,opt,name=v,proto3" json:"v,omitempty"` + // Status of the response. + S string `protobuf:"bytes,2,opt,name=s,proto3" json:"s,omitempty"` + // Error message. + E string `protobuf:"bytes,3,opt,name=e,proto3" json:"e,omitempty"` + Data *BlockEventsRPC `protobuf:"bytes,4,opt,name=data,proto3" json:"data,omitempty"` +} + +func (x *GetBlockEventsRPCResponse) Reset() { + *x = GetBlockEventsRPCResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetBlockEventsRPCResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetBlockEventsRPCResponse) ProtoMessage() {} + +func (x *GetBlockEventsRPCResponse) ProtoReflect() protoreflect.Message { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetBlockEventsRPCResponse.ProtoReflect.Descriptor instead. +func (*GetBlockEventsRPCResponse) Descriptor() ([]byte, []int) { + return file_goadesign_goagen_event_provider_api_proto_rawDescGZIP(), []int{8} +} + +func (x *GetBlockEventsRPCResponse) GetV() string { + if x != nil { + return x.V + } + return "" +} + +func (x *GetBlockEventsRPCResponse) GetS() string { + if x != nil { + return x.S + } + return "" +} + +func (x *GetBlockEventsRPCResponse) GetE() string { + if x != nil { + return x.E + } + return "" +} + +func (x *GetBlockEventsRPCResponse) GetData() *BlockEventsRPC { + if x != nil { + return x.Data + } + return nil +} + +// Processed block events for backend processor to consume +type BlockEventsRPC struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Array of event types + Types []string `protobuf:"bytes,1,rep,name=types,proto3" json:"types,omitempty"` + // Array of parsed events + Events [][]byte `protobuf:"bytes,2,rep,name=events,proto3" json:"events,omitempty"` + // Map of event index - tx hash + TxHashes map[int32][]byte `protobuf:"bytes,3,rep,name=tx_hashes,json=txHashes,proto3" json:"tx_hashes,omitempty" protobuf_key:"zigzag32,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` +} + +func (x *BlockEventsRPC) Reset() { + *x = BlockEventsRPC{} + if protoimpl.UnsafeEnabled { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlockEventsRPC) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlockEventsRPC) ProtoMessage() {} + +func (x *BlockEventsRPC) ProtoReflect() protoreflect.Message { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlockEventsRPC.ProtoReflect.Descriptor instead. +func (*BlockEventsRPC) Descriptor() ([]byte, []int) { + return file_goadesign_goagen_event_provider_api_proto_rawDescGZIP(), []int{9} +} + +func (x *BlockEventsRPC) GetTypes() []string { + if x != nil { + return x.Types + } + return nil +} + +func (x *BlockEventsRPC) GetEvents() [][]byte { + if x != nil { + return x.Events + } + return nil +} + +func (x *BlockEventsRPC) GetTxHashes() map[int32][]byte { + if x != nil { + return x.TxHashes + } + return nil +} + +type GetCustomEventsRPCRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Select backend processor + Backend string `protobuf:"bytes,1,opt,name=backend,proto3" json:"backend,omitempty"` + Height int32 `protobuf:"zigzag32,2,opt,name=height,proto3" json:"height,omitempty"` + // Specify custom events to get + Events string `protobuf:"bytes,3,opt,name=events,proto3" json:"events,omitempty"` +} + +func (x *GetCustomEventsRPCRequest) Reset() { + *x = GetCustomEventsRPCRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetCustomEventsRPCRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetCustomEventsRPCRequest) ProtoMessage() {} + +func (x *GetCustomEventsRPCRequest) ProtoReflect() protoreflect.Message { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetCustomEventsRPCRequest.ProtoReflect.Descriptor instead. +func (*GetCustomEventsRPCRequest) Descriptor() ([]byte, []int) { + return file_goadesign_goagen_event_provider_api_proto_rawDescGZIP(), []int{10} +} + +func (x *GetCustomEventsRPCRequest) GetBackend() string { + if x != nil { + return x.Backend + } + return "" +} + +func (x *GetCustomEventsRPCRequest) GetHeight() int32 { + if x != nil { + return x.Height + } + return 0 +} + +func (x *GetCustomEventsRPCRequest) GetEvents() string { + if x != nil { + return x.Events + } + return "" +} + +type GetCustomEventsRPCResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Response version. + V string `protobuf:"bytes,1,opt,name=v,proto3" json:"v,omitempty"` + // Status of the response. + S string `protobuf:"bytes,2,opt,name=s,proto3" json:"s,omitempty"` + // Error message. + E string `protobuf:"bytes,3,opt,name=e,proto3" json:"e,omitempty"` + Data *BlockEventsRPC `protobuf:"bytes,4,opt,name=data,proto3" json:"data,omitempty"` +} + +func (x *GetCustomEventsRPCResponse) Reset() { + *x = GetCustomEventsRPCResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetCustomEventsRPCResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetCustomEventsRPCResponse) ProtoMessage() {} + +func (x *GetCustomEventsRPCResponse) ProtoReflect() protoreflect.Message { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetCustomEventsRPCResponse.ProtoReflect.Descriptor instead. +func (*GetCustomEventsRPCResponse) Descriptor() ([]byte, []int) { + return file_goadesign_goagen_event_provider_api_proto_rawDescGZIP(), []int{11} +} + +func (x *GetCustomEventsRPCResponse) GetV() string { + if x != nil { + return x.V + } + return "" +} + +func (x *GetCustomEventsRPCResponse) GetS() string { + if x != nil { + return x.S + } + return "" +} + +func (x *GetCustomEventsRPCResponse) GetE() string { + if x != nil { + return x.E + } + return "" +} + +func (x *GetCustomEventsRPCResponse) GetData() *BlockEventsRPC { + if x != nil { + return x.Data + } + return nil +} + +type GetABCIBlockEventsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Height int32 `protobuf:"zigzag32,1,opt,name=height,proto3" json:"height,omitempty"` + // Array of event types + EventTypes []string `protobuf:"bytes,2,rep,name=event_types,json=eventTypes,proto3" json:"event_types,omitempty"` +} + +func (x *GetABCIBlockEventsRequest) Reset() { + *x = GetABCIBlockEventsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetABCIBlockEventsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetABCIBlockEventsRequest) ProtoMessage() {} + +func (x *GetABCIBlockEventsRequest) ProtoReflect() protoreflect.Message { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetABCIBlockEventsRequest.ProtoReflect.Descriptor instead. +func (*GetABCIBlockEventsRequest) Descriptor() ([]byte, []int) { + return file_goadesign_goagen_event_provider_api_proto_rawDescGZIP(), []int{12} +} + +func (x *GetABCIBlockEventsRequest) GetHeight() int32 { + if x != nil { + return x.Height + } + return 0 +} + +func (x *GetABCIBlockEventsRequest) GetEventTypes() []string { + if x != nil { + return x.EventTypes + } + return nil +} + +type GetABCIBlockEventsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Response version. + V string `protobuf:"bytes,1,opt,name=v,proto3" json:"v,omitempty"` + // Status of the response. + S string `protobuf:"bytes,2,opt,name=s,proto3" json:"s,omitempty"` + // Error message. + E string `protobuf:"bytes,3,opt,name=e,proto3" json:"e,omitempty"` + RawBlock *RawBlock `protobuf:"bytes,4,opt,name=raw_block,json=rawBlock,proto3" json:"raw_block,omitempty"` +} + +func (x *GetABCIBlockEventsResponse) Reset() { + *x = GetABCIBlockEventsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetABCIBlockEventsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetABCIBlockEventsResponse) ProtoMessage() {} + +func (x *GetABCIBlockEventsResponse) ProtoReflect() protoreflect.Message { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetABCIBlockEventsResponse.ProtoReflect.Descriptor instead. +func (*GetABCIBlockEventsResponse) Descriptor() ([]byte, []int) { + return file_goadesign_goagen_event_provider_api_proto_rawDescGZIP(), []int{13} +} + +func (x *GetABCIBlockEventsResponse) GetV() string { + if x != nil { + return x.V + } + return "" +} + +func (x *GetABCIBlockEventsResponse) GetS() string { + if x != nil { + return x.S + } + return "" +} + +func (x *GetABCIBlockEventsResponse) GetE() string { + if x != nil { + return x.E + } + return "" +} + +func (x *GetABCIBlockEventsResponse) GetRawBlock() *RawBlock { + if x != nil { + return x.RawBlock + } + return nil +} + +type RawBlock struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Height int64 `protobuf:"zigzag64,1,opt,name=height,proto3" json:"height,omitempty"` + BlockTime string `protobuf:"bytes,5,opt,name=block_time,json=blockTime,proto3" json:"block_time,omitempty"` + // Block timestamp in UNIX millis. + BlockTimestamp int64 `protobuf:"zigzag64,6,opt,name=block_timestamp,json=blockTimestamp,proto3" json:"block_timestamp,omitempty"` + TxsResults []*ABCIResponseDeliverTx `protobuf:"bytes,2,rep,name=txs_results,json=txsResults,proto3" json:"txs_results,omitempty"` + BeginBlockEvents []*ABCIEvent `protobuf:"bytes,3,rep,name=begin_block_events,json=beginBlockEvents,proto3" json:"begin_block_events,omitempty"` + EndBlockEvents []*ABCIEvent `protobuf:"bytes,4,rep,name=end_block_events,json=endBlockEvents,proto3" json:"end_block_events,omitempty"` +} + +func (x *RawBlock) Reset() { + *x = RawBlock{} + if protoimpl.UnsafeEnabled { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RawBlock) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RawBlock) ProtoMessage() {} + +func (x *RawBlock) ProtoReflect() protoreflect.Message { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[14] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RawBlock.ProtoReflect.Descriptor instead. +func (*RawBlock) Descriptor() ([]byte, []int) { + return file_goadesign_goagen_event_provider_api_proto_rawDescGZIP(), []int{14} +} + +func (x *RawBlock) GetHeight() int64 { + if x != nil { + return x.Height + } + return 0 +} + +func (x *RawBlock) GetBlockTime() string { + if x != nil { + return x.BlockTime + } + return "" +} + +func (x *RawBlock) GetBlockTimestamp() int64 { + if x != nil { + return x.BlockTimestamp + } + return 0 +} + +func (x *RawBlock) GetTxsResults() []*ABCIResponseDeliverTx { + if x != nil { + return x.TxsResults + } + return nil +} + +func (x *RawBlock) GetBeginBlockEvents() []*ABCIEvent { + if x != nil { + return x.BeginBlockEvents + } + return nil +} + +func (x *RawBlock) GetEndBlockEvents() []*ABCIEvent { + if x != nil { + return x.EndBlockEvents + } + return nil +} + +type ABCIResponseDeliverTx struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Code int32 `protobuf:"zigzag32,1,opt,name=code,proto3" json:"code,omitempty"` + Log string `protobuf:"bytes,2,opt,name=log,proto3" json:"log,omitempty"` + Info string `protobuf:"bytes,3,opt,name=info,proto3" json:"info,omitempty"` + GasWanted int64 `protobuf:"zigzag64,4,opt,name=gas_wanted,json=gasWanted,proto3" json:"gas_wanted,omitempty"` + GasUsed int64 `protobuf:"zigzag64,5,opt,name=gas_used,json=gasUsed,proto3" json:"gas_used,omitempty"` + Events []*ABCIEvent `protobuf:"bytes,6,rep,name=events,proto3" json:"events,omitempty"` + Codespace string `protobuf:"bytes,7,opt,name=codespace,proto3" json:"codespace,omitempty"` + TxHash []byte `protobuf:"bytes,8,opt,name=tx_hash,json=txHash,proto3" json:"tx_hash,omitempty"` +} + +func (x *ABCIResponseDeliverTx) Reset() { + *x = ABCIResponseDeliverTx{} + if protoimpl.UnsafeEnabled { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ABCIResponseDeliverTx) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ABCIResponseDeliverTx) ProtoMessage() {} + +func (x *ABCIResponseDeliverTx) ProtoReflect() protoreflect.Message { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[15] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ABCIResponseDeliverTx.ProtoReflect.Descriptor instead. +func (*ABCIResponseDeliverTx) Descriptor() ([]byte, []int) { + return file_goadesign_goagen_event_provider_api_proto_rawDescGZIP(), []int{15} +} + +func (x *ABCIResponseDeliverTx) GetCode() int32 { + if x != nil { + return x.Code + } + return 0 +} + +func (x *ABCIResponseDeliverTx) GetLog() string { + if x != nil { + return x.Log + } + return "" +} + +func (x *ABCIResponseDeliverTx) GetInfo() string { + if x != nil { + return x.Info + } + return "" +} + +func (x *ABCIResponseDeliverTx) GetGasWanted() int64 { + if x != nil { + return x.GasWanted + } + return 0 +} + +func (x *ABCIResponseDeliverTx) GetGasUsed() int64 { + if x != nil { + return x.GasUsed + } + return 0 +} + +func (x *ABCIResponseDeliverTx) GetEvents() []*ABCIEvent { + if x != nil { + return x.Events + } + return nil +} + +func (x *ABCIResponseDeliverTx) GetCodespace() string { + if x != nil { + return x.Codespace + } + return "" +} + +func (x *ABCIResponseDeliverTx) GetTxHash() []byte { + if x != nil { + return x.TxHash + } + return nil +} + +type ABCIEvent struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` + Attributes []*ABCIAttribute `protobuf:"bytes,2,rep,name=attributes,proto3" json:"attributes,omitempty"` +} + +func (x *ABCIEvent) Reset() { + *x = ABCIEvent{} + if protoimpl.UnsafeEnabled { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ABCIEvent) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ABCIEvent) ProtoMessage() {} + +func (x *ABCIEvent) ProtoReflect() protoreflect.Message { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[16] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ABCIEvent.ProtoReflect.Descriptor instead. +func (*ABCIEvent) Descriptor() ([]byte, []int) { + return file_goadesign_goagen_event_provider_api_proto_rawDescGZIP(), []int{16} +} + +func (x *ABCIEvent) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +func (x *ABCIEvent) GetAttributes() []*ABCIAttribute { + if x != nil { + return x.Attributes + } + return nil +} + +type ABCIAttribute struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` +} + +func (x *ABCIAttribute) Reset() { + *x = ABCIAttribute{} + if protoimpl.UnsafeEnabled { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ABCIAttribute) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ABCIAttribute) ProtoMessage() {} + +func (x *ABCIAttribute) ProtoReflect() protoreflect.Message { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[17] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ABCIAttribute.ProtoReflect.Descriptor instead. +func (*ABCIAttribute) Descriptor() ([]byte, []int) { + return file_goadesign_goagen_event_provider_api_proto_rawDescGZIP(), []int{17} +} + +func (x *ABCIAttribute) GetKey() string { + if x != nil { + return x.Key + } + return "" +} + +func (x *ABCIAttribute) GetValue() string { + if x != nil { + return x.Value + } + return "" +} + +type GetABCIBlockEventsAtHeightRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Height int32 `protobuf:"zigzag32,1,opt,name=height,proto3" json:"height,omitempty"` +} + +func (x *GetABCIBlockEventsAtHeightRequest) Reset() { + *x = GetABCIBlockEventsAtHeightRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetABCIBlockEventsAtHeightRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetABCIBlockEventsAtHeightRequest) ProtoMessage() {} + +func (x *GetABCIBlockEventsAtHeightRequest) ProtoReflect() protoreflect.Message { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[18] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetABCIBlockEventsAtHeightRequest.ProtoReflect.Descriptor instead. +func (*GetABCIBlockEventsAtHeightRequest) Descriptor() ([]byte, []int) { + return file_goadesign_goagen_event_provider_api_proto_rawDescGZIP(), []int{18} +} + +func (x *GetABCIBlockEventsAtHeightRequest) GetHeight() int32 { + if x != nil { + return x.Height + } + return 0 +} + +type GetABCIBlockEventsAtHeightResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Response version. + V string `protobuf:"bytes,1,opt,name=v,proto3" json:"v,omitempty"` + // Status of the response. + S string `protobuf:"bytes,2,opt,name=s,proto3" json:"s,omitempty"` + // Error message. + E string `protobuf:"bytes,3,opt,name=e,proto3" json:"e,omitempty"` + RawBlock *RawBlock `protobuf:"bytes,4,opt,name=raw_block,json=rawBlock,proto3" json:"raw_block,omitempty"` +} + +func (x *GetABCIBlockEventsAtHeightResponse) Reset() { + *x = GetABCIBlockEventsAtHeightResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetABCIBlockEventsAtHeightResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetABCIBlockEventsAtHeightResponse) ProtoMessage() {} + +func (x *GetABCIBlockEventsAtHeightResponse) ProtoReflect() protoreflect.Message { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[19] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetABCIBlockEventsAtHeightResponse.ProtoReflect.Descriptor instead. +func (*GetABCIBlockEventsAtHeightResponse) Descriptor() ([]byte, []int) { + return file_goadesign_goagen_event_provider_api_proto_rawDescGZIP(), []int{19} +} + +func (x *GetABCIBlockEventsAtHeightResponse) GetV() string { + if x != nil { + return x.V + } + return "" +} + +func (x *GetABCIBlockEventsAtHeightResponse) GetS() string { + if x != nil { + return x.S + } + return "" +} + +func (x *GetABCIBlockEventsAtHeightResponse) GetE() string { + if x != nil { + return x.E + } + return "" +} + +func (x *GetABCIBlockEventsAtHeightResponse) GetRawBlock() *RawBlock { + if x != nil { + return x.RawBlock + } + return nil +} + +var File_goadesign_goagen_event_provider_api_proto protoreflect.FileDescriptor + +var file_goadesign_goagen_event_provider_api_proto_rawDesc = []byte{ + 0x0a, 0x29, 0x67, 0x6f, 0x61, 0x64, 0x65, 0x73, 0x69, 0x67, 0x6e, 0x5f, 0x67, 0x6f, 0x61, 0x67, + 0x65, 0x6e, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, + 0x72, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x65, 0x76, 0x65, + 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x22, + 0x18, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x48, 0x65, 0x69, 0x67, + 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x7e, 0x0a, 0x17, 0x47, 0x65, 0x74, + 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0c, 0x0a, 0x01, 0x76, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x01, 0x76, 0x12, 0x0c, 0x0a, 0x01, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x01, 0x73, + 0x12, 0x0c, 0x0a, 0x01, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x01, 0x65, 0x12, 0x39, + 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x65, + 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x61, 0x70, + 0x69, 0x2e, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, + 0x67, 0x68, 0x74, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x2b, 0x0a, 0x11, 0x4c, 0x61, 0x74, + 0x65, 0x73, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x16, + 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, + 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0x4c, 0x0a, 0x18, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, + 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x12, 0x16, 0x0a, 0x06, + 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x11, 0x52, 0x06, 0x68, 0x65, + 0x69, 0x67, 0x68, 0x74, 0x22, 0x4e, 0x0a, 0x19, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x42, 0x6c, + 0x6f, 0x63, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x31, 0x0a, 0x06, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x19, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, + 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x06, 0x62, 0x6c, + 0x6f, 0x63, 0x6b, 0x73, 0x22, 0x8a, 0x01, 0x0a, 0x05, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x16, + 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x12, 0x52, 0x06, + 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x12, 0x36, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x1e, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, + 0x72, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x6e, 0x5f, 0x73, + 0x79, 0x6e, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x69, 0x6e, 0x53, 0x79, 0x6e, + 0x63, 0x22, 0x6a, 0x0a, 0x0a, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, + 0x19, 0x0a, 0x08, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x74, 0x79, 0x70, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x12, 0x17, 0x0a, 0x07, 0x74, 0x78, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x06, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x6f, 0x64, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0x73, 0x0a, + 0x18, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, + 0x50, 0x43, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x61, 0x63, + 0x6b, 0x65, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x61, 0x63, 0x6b, + 0x65, 0x6e, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x11, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x68, + 0x75, 0x6d, 0x61, 0x6e, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0d, 0x68, 0x75, 0x6d, 0x61, 0x6e, 0x52, 0x65, 0x61, 0x64, 0x61, 0x62, + 0x6c, 0x65, 0x22, 0x7d, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x73, 0x52, 0x50, 0x43, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x0c, 0x0a, 0x01, 0x76, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x01, 0x76, 0x12, 0x0c, 0x0a, + 0x01, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x01, 0x73, 0x12, 0x0c, 0x0a, 0x01, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x01, 0x65, 0x12, 0x36, 0x0a, 0x04, 0x64, 0x61, 0x74, + 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, + 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x42, 0x6c, 0x6f, + 0x63, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x50, 0x43, 0x52, 0x04, 0x64, 0x61, 0x74, + 0x61, 0x22, 0xca, 0x01, 0x0a, 0x0e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x73, 0x52, 0x50, 0x43, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x76, + 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, + 0x74, 0x73, 0x12, 0x4d, 0x0a, 0x09, 0x74, 0x78, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x65, 0x73, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x72, + 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x50, 0x43, 0x2e, 0x54, 0x78, 0x48, 0x61, 0x73, 0x68, + 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x65, + 0x73, 0x1a, 0x3b, 0x0a, 0x0d, 0x54, 0x78, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x11, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x65, + 0x0a, 0x19, 0x47, 0x65, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x73, 0x52, 0x50, 0x43, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x62, + 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x61, + 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x11, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x16, 0x0a, + 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, + 0x76, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x7e, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x43, 0x75, 0x73, 0x74, + 0x6f, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x50, 0x43, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x0c, 0x0a, 0x01, 0x76, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x01, + 0x76, 0x12, 0x0c, 0x0a, 0x01, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x01, 0x73, 0x12, + 0x0c, 0x0a, 0x01, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x01, 0x65, 0x12, 0x36, 0x0a, + 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x65, 0x76, + 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, + 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x50, 0x43, 0x52, + 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x54, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x41, 0x42, 0x43, 0x49, + 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x11, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x76, + 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x0a, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x73, 0x22, 0x81, 0x01, 0x0a, 0x1a, + 0x47, 0x65, 0x74, 0x41, 0x42, 0x43, 0x49, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0c, 0x0a, 0x01, 0x76, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x01, 0x76, 0x12, 0x0c, 0x0a, 0x01, 0x73, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x01, 0x73, 0x12, 0x0c, 0x0a, 0x01, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x01, 0x65, 0x12, 0x39, 0x0a, 0x09, 0x72, 0x61, 0x77, 0x5f, 0x62, 0x6c, 0x6f, 0x63, + 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, + 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x61, 0x77, + 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x08, 0x72, 0x61, 0x77, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x22, + 0xcc, 0x02, 0x0a, 0x08, 0x52, 0x61, 0x77, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x16, 0x0a, 0x06, + 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x12, 0x52, 0x06, 0x68, 0x65, + 0x69, 0x67, 0x68, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x74, 0x69, + 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x54, + 0x69, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x74, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0e, 0x62, 0x6c, + 0x6f, 0x63, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x4a, 0x0a, 0x0b, + 0x74, 0x78, 0x73, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x29, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, + 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x41, 0x42, 0x43, 0x49, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x44, 0x65, 0x6c, 0x69, 0x76, 0x65, 0x72, 0x54, 0x78, 0x52, 0x0a, 0x74, 0x78, + 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x4b, 0x0a, 0x12, 0x62, 0x65, 0x67, 0x69, + 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x6f, + 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x41, 0x42, 0x43, 0x49, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x52, 0x10, 0x62, 0x65, 0x67, 0x69, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x47, 0x0a, 0x10, 0x65, 0x6e, 0x64, 0x5f, 0x62, 0x6c, 0x6f, + 0x63, 0x6b, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1d, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, + 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x41, 0x42, 0x43, 0x49, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x0e, + 0x65, 0x6e, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x22, 0xf9, + 0x01, 0x0a, 0x15, 0x41, 0x42, 0x43, 0x49, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x44, + 0x65, 0x6c, 0x69, 0x76, 0x65, 0x72, 0x54, 0x78, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x11, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, + 0x6c, 0x6f, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6c, 0x6f, 0x67, 0x12, 0x12, + 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x69, 0x6e, + 0x66, 0x6f, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x61, 0x73, 0x5f, 0x77, 0x61, 0x6e, 0x74, 0x65, 0x64, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x67, 0x61, 0x73, 0x57, 0x61, 0x6e, 0x74, 0x65, + 0x64, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x61, 0x73, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x12, 0x52, 0x07, 0x67, 0x61, 0x73, 0x55, 0x73, 0x65, 0x64, 0x12, 0x35, 0x0a, 0x06, + 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x65, + 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x61, 0x70, + 0x69, 0x2e, 0x41, 0x42, 0x43, 0x49, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, + 0x6e, 0x74, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x78, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x06, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x22, 0x62, 0x0a, 0x09, 0x41, 0x42, + 0x43, 0x49, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x41, 0x0a, 0x0a, 0x61, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x21, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, + 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x41, 0x42, 0x43, 0x49, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x22, 0x37, + 0x0a, 0x0d, 0x41, 0x42, 0x43, 0x49, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, + 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x3b, 0x0a, 0x21, 0x47, 0x65, 0x74, 0x41, 0x42, + 0x43, 0x49, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x41, 0x74, 0x48, + 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, + 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x11, 0x52, 0x06, 0x68, 0x65, + 0x69, 0x67, 0x68, 0x74, 0x22, 0x89, 0x01, 0x0a, 0x22, 0x47, 0x65, 0x74, 0x41, 0x42, 0x43, 0x49, + 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x41, 0x74, 0x48, 0x65, 0x69, + 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0c, 0x0a, 0x01, 0x76, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x01, 0x76, 0x12, 0x0c, 0x0a, 0x01, 0x73, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x01, 0x73, 0x12, 0x0c, 0x0a, 0x01, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x01, 0x65, 0x12, 0x39, 0x0a, 0x09, 0x72, 0x61, 0x77, 0x5f, 0x62, 0x6c, 0x6f, + 0x63, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, + 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x61, + 0x77, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x08, 0x72, 0x61, 0x77, 0x42, 0x6c, 0x6f, 0x63, 0x6b, + 0x32, 0xdc, 0x05, 0x0a, 0x10, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, + 0x65, 0x72, 0x41, 0x50, 0x49, 0x12, 0x6a, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, + 0x73, 0x74, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x2a, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, + 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, + 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x6f, + 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, + 0x65, 0x73, 0x74, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x72, 0x0a, 0x11, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x2c, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x70, + 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x6f, + 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, + 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x70, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, + 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x50, 0x43, 0x12, 0x2c, 0x2e, 0x65, 0x76, 0x65, + 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x2e, + 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x50, + 0x43, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, + 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, + 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x50, 0x43, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x73, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x43, 0x75, + 0x73, 0x74, 0x6f, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x50, 0x43, 0x12, 0x2d, 0x2e, + 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x61, + 0x70, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x73, 0x52, 0x50, 0x43, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x65, + 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x61, 0x70, + 0x69, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x73, 0x52, 0x50, 0x43, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x73, 0x0a, 0x12, + 0x47, 0x65, 0x74, 0x41, 0x42, 0x43, 0x49, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x73, 0x12, 0x2d, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, + 0x64, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x42, 0x43, 0x49, 0x42, + 0x6c, 0x6f, 0x63, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x2e, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, + 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x42, 0x43, 0x49, 0x42, 0x6c, + 0x6f, 0x63, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x8b, 0x01, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x41, 0x42, 0x43, 0x49, 0x42, 0x6c, 0x6f, + 0x63, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x41, 0x74, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x12, 0x35, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, + 0x72, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x42, 0x43, 0x49, 0x42, 0x6c, 0x6f, + 0x63, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x41, 0x74, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, + 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, 0x74, + 0x41, 0x42, 0x43, 0x49, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x41, + 0x74, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, + 0x17, 0x5a, 0x15, 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, + 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_goadesign_goagen_event_provider_api_proto_rawDescOnce sync.Once + file_goadesign_goagen_event_provider_api_proto_rawDescData = file_goadesign_goagen_event_provider_api_proto_rawDesc +) + +func file_goadesign_goagen_event_provider_api_proto_rawDescGZIP() []byte { + file_goadesign_goagen_event_provider_api_proto_rawDescOnce.Do(func() { + file_goadesign_goagen_event_provider_api_proto_rawDescData = protoimpl.X.CompressGZIP(file_goadesign_goagen_event_provider_api_proto_rawDescData) + }) + return file_goadesign_goagen_event_provider_api_proto_rawDescData +} + +var file_goadesign_goagen_event_provider_api_proto_msgTypes = make([]protoimpl.MessageInfo, 21) +var file_goadesign_goagen_event_provider_api_proto_goTypes = []interface{}{ + (*GetLatestHeightRequest)(nil), // 0: event_provider_api.GetLatestHeightRequest + (*GetLatestHeightResponse)(nil), // 1: event_provider_api.GetLatestHeightResponse + (*LatestBlockHeight)(nil), // 2: event_provider_api.LatestBlockHeight + (*StreamBlockEventsRequest)(nil), // 3: event_provider_api.StreamBlockEventsRequest + (*StreamBlockEventsResponse)(nil), // 4: event_provider_api.StreamBlockEventsResponse + (*Block)(nil), // 5: event_provider_api.Block + (*BlockEvent)(nil), // 6: event_provider_api.BlockEvent + (*GetBlockEventsRPCRequest)(nil), // 7: event_provider_api.GetBlockEventsRPCRequest + (*GetBlockEventsRPCResponse)(nil), // 8: event_provider_api.GetBlockEventsRPCResponse + (*BlockEventsRPC)(nil), // 9: event_provider_api.BlockEventsRPC + (*GetCustomEventsRPCRequest)(nil), // 10: event_provider_api.GetCustomEventsRPCRequest + (*GetCustomEventsRPCResponse)(nil), // 11: event_provider_api.GetCustomEventsRPCResponse + (*GetABCIBlockEventsRequest)(nil), // 12: event_provider_api.GetABCIBlockEventsRequest + (*GetABCIBlockEventsResponse)(nil), // 13: event_provider_api.GetABCIBlockEventsResponse + (*RawBlock)(nil), // 14: event_provider_api.RawBlock + (*ABCIResponseDeliverTx)(nil), // 15: event_provider_api.ABCIResponseDeliverTx + (*ABCIEvent)(nil), // 16: event_provider_api.ABCIEvent + (*ABCIAttribute)(nil), // 17: event_provider_api.ABCIAttribute + (*GetABCIBlockEventsAtHeightRequest)(nil), // 18: event_provider_api.GetABCIBlockEventsAtHeightRequest + (*GetABCIBlockEventsAtHeightResponse)(nil), // 19: event_provider_api.GetABCIBlockEventsAtHeightResponse + nil, // 20: event_provider_api.BlockEventsRPC.TxHashesEntry +} +var file_goadesign_goagen_event_provider_api_proto_depIdxs = []int32{ + 2, // 0: event_provider_api.GetLatestHeightResponse.data:type_name -> event_provider_api.LatestBlockHeight + 5, // 1: event_provider_api.StreamBlockEventsResponse.blocks:type_name -> event_provider_api.Block + 6, // 2: event_provider_api.Block.events:type_name -> event_provider_api.BlockEvent + 9, // 3: event_provider_api.GetBlockEventsRPCResponse.data:type_name -> event_provider_api.BlockEventsRPC + 20, // 4: event_provider_api.BlockEventsRPC.tx_hashes:type_name -> event_provider_api.BlockEventsRPC.TxHashesEntry + 9, // 5: event_provider_api.GetCustomEventsRPCResponse.data:type_name -> event_provider_api.BlockEventsRPC + 14, // 6: event_provider_api.GetABCIBlockEventsResponse.raw_block:type_name -> event_provider_api.RawBlock + 15, // 7: event_provider_api.RawBlock.txs_results:type_name -> event_provider_api.ABCIResponseDeliverTx + 16, // 8: event_provider_api.RawBlock.begin_block_events:type_name -> event_provider_api.ABCIEvent + 16, // 9: event_provider_api.RawBlock.end_block_events:type_name -> event_provider_api.ABCIEvent + 16, // 10: event_provider_api.ABCIResponseDeliverTx.events:type_name -> event_provider_api.ABCIEvent + 17, // 11: event_provider_api.ABCIEvent.attributes:type_name -> event_provider_api.ABCIAttribute + 14, // 12: event_provider_api.GetABCIBlockEventsAtHeightResponse.raw_block:type_name -> event_provider_api.RawBlock + 0, // 13: event_provider_api.EventProviderAPI.GetLatestHeight:input_type -> event_provider_api.GetLatestHeightRequest + 3, // 14: event_provider_api.EventProviderAPI.StreamBlockEvents:input_type -> event_provider_api.StreamBlockEventsRequest + 7, // 15: event_provider_api.EventProviderAPI.GetBlockEventsRPC:input_type -> event_provider_api.GetBlockEventsRPCRequest + 10, // 16: event_provider_api.EventProviderAPI.GetCustomEventsRPC:input_type -> event_provider_api.GetCustomEventsRPCRequest + 12, // 17: event_provider_api.EventProviderAPI.GetABCIBlockEvents:input_type -> event_provider_api.GetABCIBlockEventsRequest + 18, // 18: event_provider_api.EventProviderAPI.GetABCIBlockEventsAtHeight:input_type -> event_provider_api.GetABCIBlockEventsAtHeightRequest + 1, // 19: event_provider_api.EventProviderAPI.GetLatestHeight:output_type -> event_provider_api.GetLatestHeightResponse + 4, // 20: event_provider_api.EventProviderAPI.StreamBlockEvents:output_type -> event_provider_api.StreamBlockEventsResponse + 8, // 21: event_provider_api.EventProviderAPI.GetBlockEventsRPC:output_type -> event_provider_api.GetBlockEventsRPCResponse + 11, // 22: event_provider_api.EventProviderAPI.GetCustomEventsRPC:output_type -> event_provider_api.GetCustomEventsRPCResponse + 13, // 23: event_provider_api.EventProviderAPI.GetABCIBlockEvents:output_type -> event_provider_api.GetABCIBlockEventsResponse + 19, // 24: event_provider_api.EventProviderAPI.GetABCIBlockEventsAtHeight:output_type -> event_provider_api.GetABCIBlockEventsAtHeightResponse + 19, // [19:25] is the sub-list for method output_type + 13, // [13:19] is the sub-list for method input_type + 13, // [13:13] is the sub-list for extension type_name + 13, // [13:13] is the sub-list for extension extendee + 0, // [0:13] is the sub-list for field type_name +} + +func init() { file_goadesign_goagen_event_provider_api_proto_init() } +func file_goadesign_goagen_event_provider_api_proto_init() { + if File_goadesign_goagen_event_provider_api_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_goadesign_goagen_event_provider_api_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetLatestHeightRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_goadesign_goagen_event_provider_api_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetLatestHeightResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_goadesign_goagen_event_provider_api_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LatestBlockHeight); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_goadesign_goagen_event_provider_api_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StreamBlockEventsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_goadesign_goagen_event_provider_api_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StreamBlockEventsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_goadesign_goagen_event_provider_api_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Block); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_goadesign_goagen_event_provider_api_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlockEvent); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_goadesign_goagen_event_provider_api_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetBlockEventsRPCRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_goadesign_goagen_event_provider_api_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetBlockEventsRPCResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_goadesign_goagen_event_provider_api_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlockEventsRPC); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_goadesign_goagen_event_provider_api_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetCustomEventsRPCRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_goadesign_goagen_event_provider_api_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetCustomEventsRPCResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_goadesign_goagen_event_provider_api_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetABCIBlockEventsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_goadesign_goagen_event_provider_api_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetABCIBlockEventsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_goadesign_goagen_event_provider_api_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RawBlock); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_goadesign_goagen_event_provider_api_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ABCIResponseDeliverTx); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_goadesign_goagen_event_provider_api_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ABCIEvent); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_goadesign_goagen_event_provider_api_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ABCIAttribute); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_goadesign_goagen_event_provider_api_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetABCIBlockEventsAtHeightRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_goadesign_goagen_event_provider_api_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetABCIBlockEventsAtHeightResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_goadesign_goagen_event_provider_api_proto_rawDesc, + NumEnums: 0, + NumMessages: 21, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_goadesign_goagen_event_provider_api_proto_goTypes, + DependencyIndexes: file_goadesign_goagen_event_provider_api_proto_depIdxs, + MessageInfos: file_goadesign_goagen_event_provider_api_proto_msgTypes, + }.Build() + File_goadesign_goagen_event_provider_api_proto = out.File + file_goadesign_goagen_event_provider_api_proto_rawDesc = nil + file_goadesign_goagen_event_provider_api_proto_goTypes = nil + file_goadesign_goagen_event_provider_api_proto_depIdxs = nil +} diff --git a/exchange/event_provider_api/pb/goadesign_goagen_event_provider_api_grpc.pb.go b/exchange/event_provider_api/pb/goadesign_goagen_event_provider_api_grpc.pb.go new file mode 100644 index 00000000..d83f56c5 --- /dev/null +++ b/exchange/event_provider_api/pb/goadesign_goagen_event_provider_api_grpc.pb.go @@ -0,0 +1,325 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.2.0 +// - protoc v3.21.12 +// source: goadesign_goagen_event_provider_api.proto + +package event_provider_apipb + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +// EventProviderAPIClient is the client API for EventProviderAPI service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type EventProviderAPIClient interface { + // Get latest block from event provider + GetLatestHeight(ctx context.Context, in *GetLatestHeightRequest, opts ...grpc.CallOption) (*GetLatestHeightResponse, error) + // Stream processed block events for selected backend + StreamBlockEvents(ctx context.Context, in *StreamBlockEventsRequest, opts ...grpc.CallOption) (EventProviderAPI_StreamBlockEventsClient, error) + // Get processed block events for selected backend + GetBlockEventsRPC(ctx context.Context, in *GetBlockEventsRPCRequest, opts ...grpc.CallOption) (*GetBlockEventsRPCResponse, error) + // Get custom processed block events for selected backend + GetCustomEventsRPC(ctx context.Context, in *GetCustomEventsRPCRequest, opts ...grpc.CallOption) (*GetCustomEventsRPCResponse, error) + // Get raw block events for selected height + GetABCIBlockEvents(ctx context.Context, in *GetABCIBlockEventsRequest, opts ...grpc.CallOption) (*GetABCIBlockEventsResponse, error) + // Get all raw block events for selected height + GetABCIBlockEventsAtHeight(ctx context.Context, in *GetABCIBlockEventsAtHeightRequest, opts ...grpc.CallOption) (*GetABCIBlockEventsAtHeightResponse, error) +} + +type eventProviderAPIClient struct { + cc grpc.ClientConnInterface +} + +func NewEventProviderAPIClient(cc grpc.ClientConnInterface) EventProviderAPIClient { + return &eventProviderAPIClient{cc} +} + +func (c *eventProviderAPIClient) GetLatestHeight(ctx context.Context, in *GetLatestHeightRequest, opts ...grpc.CallOption) (*GetLatestHeightResponse, error) { + out := new(GetLatestHeightResponse) + err := c.cc.Invoke(ctx, "/event_provider_api.EventProviderAPI/GetLatestHeight", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *eventProviderAPIClient) StreamBlockEvents(ctx context.Context, in *StreamBlockEventsRequest, opts ...grpc.CallOption) (EventProviderAPI_StreamBlockEventsClient, error) { + stream, err := c.cc.NewStream(ctx, &EventProviderAPI_ServiceDesc.Streams[0], "/event_provider_api.EventProviderAPI/StreamBlockEvents", opts...) + if err != nil { + return nil, err + } + x := &eventProviderAPIStreamBlockEventsClient{stream} + if err := x.ClientStream.SendMsg(in); err != nil { + return nil, err + } + if err := x.ClientStream.CloseSend(); err != nil { + return nil, err + } + return x, nil +} + +type EventProviderAPI_StreamBlockEventsClient interface { + Recv() (*StreamBlockEventsResponse, error) + grpc.ClientStream +} + +type eventProviderAPIStreamBlockEventsClient struct { + grpc.ClientStream +} + +func (x *eventProviderAPIStreamBlockEventsClient) Recv() (*StreamBlockEventsResponse, error) { + m := new(StreamBlockEventsResponse) + if err := x.ClientStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + +func (c *eventProviderAPIClient) GetBlockEventsRPC(ctx context.Context, in *GetBlockEventsRPCRequest, opts ...grpc.CallOption) (*GetBlockEventsRPCResponse, error) { + out := new(GetBlockEventsRPCResponse) + err := c.cc.Invoke(ctx, "/event_provider_api.EventProviderAPI/GetBlockEventsRPC", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *eventProviderAPIClient) GetCustomEventsRPC(ctx context.Context, in *GetCustomEventsRPCRequest, opts ...grpc.CallOption) (*GetCustomEventsRPCResponse, error) { + out := new(GetCustomEventsRPCResponse) + err := c.cc.Invoke(ctx, "/event_provider_api.EventProviderAPI/GetCustomEventsRPC", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *eventProviderAPIClient) GetABCIBlockEvents(ctx context.Context, in *GetABCIBlockEventsRequest, opts ...grpc.CallOption) (*GetABCIBlockEventsResponse, error) { + out := new(GetABCIBlockEventsResponse) + err := c.cc.Invoke(ctx, "/event_provider_api.EventProviderAPI/GetABCIBlockEvents", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *eventProviderAPIClient) GetABCIBlockEventsAtHeight(ctx context.Context, in *GetABCIBlockEventsAtHeightRequest, opts ...grpc.CallOption) (*GetABCIBlockEventsAtHeightResponse, error) { + out := new(GetABCIBlockEventsAtHeightResponse) + err := c.cc.Invoke(ctx, "/event_provider_api.EventProviderAPI/GetABCIBlockEventsAtHeight", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// EventProviderAPIServer is the server API for EventProviderAPI service. +// All implementations must embed UnimplementedEventProviderAPIServer +// for forward compatibility +type EventProviderAPIServer interface { + // Get latest block from event provider + GetLatestHeight(context.Context, *GetLatestHeightRequest) (*GetLatestHeightResponse, error) + // Stream processed block events for selected backend + StreamBlockEvents(*StreamBlockEventsRequest, EventProviderAPI_StreamBlockEventsServer) error + // Get processed block events for selected backend + GetBlockEventsRPC(context.Context, *GetBlockEventsRPCRequest) (*GetBlockEventsRPCResponse, error) + // Get custom processed block events for selected backend + GetCustomEventsRPC(context.Context, *GetCustomEventsRPCRequest) (*GetCustomEventsRPCResponse, error) + // Get raw block events for selected height + GetABCIBlockEvents(context.Context, *GetABCIBlockEventsRequest) (*GetABCIBlockEventsResponse, error) + // Get all raw block events for selected height + GetABCIBlockEventsAtHeight(context.Context, *GetABCIBlockEventsAtHeightRequest) (*GetABCIBlockEventsAtHeightResponse, error) + mustEmbedUnimplementedEventProviderAPIServer() +} + +// UnimplementedEventProviderAPIServer must be embedded to have forward compatible implementations. +type UnimplementedEventProviderAPIServer struct { +} + +func (UnimplementedEventProviderAPIServer) GetLatestHeight(context.Context, *GetLatestHeightRequest) (*GetLatestHeightResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetLatestHeight not implemented") +} +func (UnimplementedEventProviderAPIServer) StreamBlockEvents(*StreamBlockEventsRequest, EventProviderAPI_StreamBlockEventsServer) error { + return status.Errorf(codes.Unimplemented, "method StreamBlockEvents not implemented") +} +func (UnimplementedEventProviderAPIServer) GetBlockEventsRPC(context.Context, *GetBlockEventsRPCRequest) (*GetBlockEventsRPCResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetBlockEventsRPC not implemented") +} +func (UnimplementedEventProviderAPIServer) GetCustomEventsRPC(context.Context, *GetCustomEventsRPCRequest) (*GetCustomEventsRPCResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetCustomEventsRPC not implemented") +} +func (UnimplementedEventProviderAPIServer) GetABCIBlockEvents(context.Context, *GetABCIBlockEventsRequest) (*GetABCIBlockEventsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetABCIBlockEvents not implemented") +} +func (UnimplementedEventProviderAPIServer) GetABCIBlockEventsAtHeight(context.Context, *GetABCIBlockEventsAtHeightRequest) (*GetABCIBlockEventsAtHeightResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetABCIBlockEventsAtHeight not implemented") +} +func (UnimplementedEventProviderAPIServer) mustEmbedUnimplementedEventProviderAPIServer() {} + +// UnsafeEventProviderAPIServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to EventProviderAPIServer will +// result in compilation errors. +type UnsafeEventProviderAPIServer interface { + mustEmbedUnimplementedEventProviderAPIServer() +} + +func RegisterEventProviderAPIServer(s grpc.ServiceRegistrar, srv EventProviderAPIServer) { + s.RegisterService(&EventProviderAPI_ServiceDesc, srv) +} + +func _EventProviderAPI_GetLatestHeight_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetLatestHeightRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(EventProviderAPIServer).GetLatestHeight(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/event_provider_api.EventProviderAPI/GetLatestHeight", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(EventProviderAPIServer).GetLatestHeight(ctx, req.(*GetLatestHeightRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _EventProviderAPI_StreamBlockEvents_Handler(srv interface{}, stream grpc.ServerStream) error { + m := new(StreamBlockEventsRequest) + if err := stream.RecvMsg(m); err != nil { + return err + } + return srv.(EventProviderAPIServer).StreamBlockEvents(m, &eventProviderAPIStreamBlockEventsServer{stream}) +} + +type EventProviderAPI_StreamBlockEventsServer interface { + Send(*StreamBlockEventsResponse) error + grpc.ServerStream +} + +type eventProviderAPIStreamBlockEventsServer struct { + grpc.ServerStream +} + +func (x *eventProviderAPIStreamBlockEventsServer) Send(m *StreamBlockEventsResponse) error { + return x.ServerStream.SendMsg(m) +} + +func _EventProviderAPI_GetBlockEventsRPC_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetBlockEventsRPCRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(EventProviderAPIServer).GetBlockEventsRPC(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/event_provider_api.EventProviderAPI/GetBlockEventsRPC", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(EventProviderAPIServer).GetBlockEventsRPC(ctx, req.(*GetBlockEventsRPCRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _EventProviderAPI_GetCustomEventsRPC_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetCustomEventsRPCRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(EventProviderAPIServer).GetCustomEventsRPC(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/event_provider_api.EventProviderAPI/GetCustomEventsRPC", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(EventProviderAPIServer).GetCustomEventsRPC(ctx, req.(*GetCustomEventsRPCRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _EventProviderAPI_GetABCIBlockEvents_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetABCIBlockEventsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(EventProviderAPIServer).GetABCIBlockEvents(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/event_provider_api.EventProviderAPI/GetABCIBlockEvents", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(EventProviderAPIServer).GetABCIBlockEvents(ctx, req.(*GetABCIBlockEventsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _EventProviderAPI_GetABCIBlockEventsAtHeight_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetABCIBlockEventsAtHeightRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(EventProviderAPIServer).GetABCIBlockEventsAtHeight(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/event_provider_api.EventProviderAPI/GetABCIBlockEventsAtHeight", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(EventProviderAPIServer).GetABCIBlockEventsAtHeight(ctx, req.(*GetABCIBlockEventsAtHeightRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// EventProviderAPI_ServiceDesc is the grpc.ServiceDesc for EventProviderAPI service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var EventProviderAPI_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "event_provider_api.EventProviderAPI", + HandlerType: (*EventProviderAPIServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "GetLatestHeight", + Handler: _EventProviderAPI_GetLatestHeight_Handler, + }, + { + MethodName: "GetBlockEventsRPC", + Handler: _EventProviderAPI_GetBlockEventsRPC_Handler, + }, + { + MethodName: "GetCustomEventsRPC", + Handler: _EventProviderAPI_GetCustomEventsRPC_Handler, + }, + { + MethodName: "GetABCIBlockEvents", + Handler: _EventProviderAPI_GetABCIBlockEvents_Handler, + }, + { + MethodName: "GetABCIBlockEventsAtHeight", + Handler: _EventProviderAPI_GetABCIBlockEventsAtHeight_Handler, + }, + }, + Streams: []grpc.StreamDesc{ + { + StreamName: "StreamBlockEvents", + Handler: _EventProviderAPI_StreamBlockEvents_Handler, + ServerStreams: true, + }, + }, + Metadata: "goadesign_goagen_event_provider_api.proto", +} diff --git a/exchange/exchange_rpc/pb/goadesign_goagen_injective_exchange_rpc.pb.go b/exchange/exchange_rpc/pb/goadesign_goagen_injective_exchange_rpc.pb.go index 9011281f..9b02dbe9 100644 --- a/exchange/exchange_rpc/pb/goadesign_goagen_injective_exchange_rpc.pb.go +++ b/exchange/exchange_rpc/pb/goadesign_goagen_injective_exchange_rpc.pb.go @@ -8,7 +8,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.30.0 -// protoc v3.19.4 +// protoc v3.21.12 // source: goadesign_goagen_injective_exchange_rpc.proto package injective_exchange_rpcpb @@ -206,7 +206,7 @@ type PrepareTxRequest struct { Fee *CosmosTxFee `protobuf:"bytes,6,opt,name=fee,proto3" json:"fee,omitempty"` // List of Cosmos proto3-encoded Msgs to include in a single tx Msgs [][]byte `protobuf:"bytes,7,rep,name=msgs,proto3" json:"msgs,omitempty"` - // The wrapper of the EIP712 message, V1 or V2 + // The wrapper of the EIP712 message, 'v1'/'v2' or 'V1'/'V2' Eip712Wrapper string `protobuf:"bytes,8,opt,name=eip712_wrapper,json=eip712Wrapper,proto3" json:"eip712_wrapper,omitempty"` } @@ -515,6 +515,174 @@ func (x *PrepareTxResponse) GetFeePayerSig() string { return "" } +type PrepareEip712Request struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Specify chainID for the target tx + ChainId uint64 `protobuf:"varint,1,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"` + // Specify Ethereum address of a signer + SignerAddress string `protobuf:"bytes,2,opt,name=signer_address,json=signerAddress,proto3" json:"signer_address,omitempty"` + // Sequence number of the transaction signer + Sequence uint64 `protobuf:"varint,3,opt,name=sequence,proto3" json:"sequence,omitempty"` + // Account number of the transaction signer + AccountNumber uint64 `protobuf:"varint,4,opt,name=account_number,json=accountNumber,proto3" json:"account_number,omitempty"` + // Textual memo information to attach with tx + Memo string `protobuf:"bytes,5,opt,name=memo,proto3" json:"memo,omitempty"` + // Block height until which the transaction is valid. + TimeoutHeight uint64 `protobuf:"varint,6,opt,name=timeout_height,json=timeoutHeight,proto3" json:"timeout_height,omitempty"` + // Transaction fee details. + Fee *CosmosTxFee `protobuf:"bytes,7,opt,name=fee,proto3" json:"fee,omitempty"` + // List of Cosmos proto3-encoded Msgs to include in a single tx + Msgs [][]byte `protobuf:"bytes,8,rep,name=msgs,proto3" json:"msgs,omitempty"` + // The wrapper of the EIP712 message, 'v1'/'v2' or 'V1'/'V2' + Eip712Wrapper string `protobuf:"bytes,9,opt,name=eip712_wrapper,json=eip712Wrapper,proto3" json:"eip712_wrapper,omitempty"` +} + +func (x *PrepareEip712Request) Reset() { + *x = PrepareEip712Request{} + if protoimpl.UnsafeEnabled { + mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PrepareEip712Request) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PrepareEip712Request) ProtoMessage() {} + +func (x *PrepareEip712Request) ProtoReflect() protoreflect.Message { + mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PrepareEip712Request.ProtoReflect.Descriptor instead. +func (*PrepareEip712Request) Descriptor() ([]byte, []int) { + return file_goadesign_goagen_injective_exchange_rpc_proto_rawDescGZIP(), []int{6} +} + +func (x *PrepareEip712Request) GetChainId() uint64 { + if x != nil { + return x.ChainId + } + return 0 +} + +func (x *PrepareEip712Request) GetSignerAddress() string { + if x != nil { + return x.SignerAddress + } + return "" +} + +func (x *PrepareEip712Request) GetSequence() uint64 { + if x != nil { + return x.Sequence + } + return 0 +} + +func (x *PrepareEip712Request) GetAccountNumber() uint64 { + if x != nil { + return x.AccountNumber + } + return 0 +} + +func (x *PrepareEip712Request) GetMemo() string { + if x != nil { + return x.Memo + } + return "" +} + +func (x *PrepareEip712Request) GetTimeoutHeight() uint64 { + if x != nil { + return x.TimeoutHeight + } + return 0 +} + +func (x *PrepareEip712Request) GetFee() *CosmosTxFee { + if x != nil { + return x.Fee + } + return nil +} + +func (x *PrepareEip712Request) GetMsgs() [][]byte { + if x != nil { + return x.Msgs + } + return nil +} + +func (x *PrepareEip712Request) GetEip712Wrapper() string { + if x != nil { + return x.Eip712Wrapper + } + return "" +} + +type PrepareEip712Response struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // EIP712-compatible message suitable for signing with eth_signTypedData_v4 + Data string `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` +} + +func (x *PrepareEip712Response) Reset() { + *x = PrepareEip712Response{} + if protoimpl.UnsafeEnabled { + mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PrepareEip712Response) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PrepareEip712Response) ProtoMessage() {} + +func (x *PrepareEip712Response) ProtoReflect() protoreflect.Message { + mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PrepareEip712Response.ProtoReflect.Descriptor instead. +func (*PrepareEip712Response) Descriptor() ([]byte, []int) { + return file_goadesign_goagen_injective_exchange_rpc_proto_rawDescGZIP(), []int{7} +} + +func (x *PrepareEip712Response) GetData() string { + if x != nil { + return x.Data + } + return "" +} + type BroadcastTxRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -541,7 +709,7 @@ type BroadcastTxRequest struct { func (x *BroadcastTxRequest) Reset() { *x = BroadcastTxRequest{} if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[6] + mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -554,7 +722,7 @@ func (x *BroadcastTxRequest) String() string { func (*BroadcastTxRequest) ProtoMessage() {} func (x *BroadcastTxRequest) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[6] + mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -567,7 +735,7 @@ func (x *BroadcastTxRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use BroadcastTxRequest.ProtoReflect.Descriptor instead. func (*BroadcastTxRequest) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_exchange_rpc_proto_rawDescGZIP(), []int{6} + return file_goadesign_goagen_injective_exchange_rpc_proto_rawDescGZIP(), []int{8} } func (x *BroadcastTxRequest) GetChainId() uint64 { @@ -640,7 +808,7 @@ type CosmosPubKey struct { func (x *CosmosPubKey) Reset() { *x = CosmosPubKey{} if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[7] + mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -653,7 +821,7 @@ func (x *CosmosPubKey) String() string { func (*CosmosPubKey) ProtoMessage() {} func (x *CosmosPubKey) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[7] + mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -666,7 +834,7 @@ func (x *CosmosPubKey) ProtoReflect() protoreflect.Message { // Deprecated: Use CosmosPubKey.ProtoReflect.Descriptor instead. func (*CosmosPubKey) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_exchange_rpc_proto_rawDescGZIP(), []int{7} + return file_goadesign_goagen_injective_exchange_rpc_proto_rawDescGZIP(), []int{9} } func (x *CosmosPubKey) GetType() string { @@ -710,7 +878,7 @@ type BroadcastTxResponse struct { func (x *BroadcastTxResponse) Reset() { *x = BroadcastTxResponse{} if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[8] + mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -723,7 +891,7 @@ func (x *BroadcastTxResponse) String() string { func (*BroadcastTxResponse) ProtoMessage() {} func (x *BroadcastTxResponse) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[8] + mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -736,7 +904,7 @@ func (x *BroadcastTxResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use BroadcastTxResponse.ProtoReflect.Descriptor instead. func (*BroadcastTxResponse) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_exchange_rpc_proto_rawDescGZIP(), []int{8} + return file_goadesign_goagen_injective_exchange_rpc_proto_rawDescGZIP(), []int{10} } func (x *BroadcastTxResponse) GetTxHash() string { @@ -817,7 +985,7 @@ type PrepareCosmosTxRequest struct { func (x *PrepareCosmosTxRequest) Reset() { *x = PrepareCosmosTxRequest{} if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[9] + mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -830,7 +998,7 @@ func (x *PrepareCosmosTxRequest) String() string { func (*PrepareCosmosTxRequest) ProtoMessage() {} func (x *PrepareCosmosTxRequest) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[9] + mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -843,7 +1011,7 @@ func (x *PrepareCosmosTxRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use PrepareCosmosTxRequest.ProtoReflect.Descriptor instead. func (*PrepareCosmosTxRequest) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_exchange_rpc_proto_rawDescGZIP(), []int{9} + return file_goadesign_goagen_injective_exchange_rpc_proto_rawDescGZIP(), []int{11} } func (x *PrepareCosmosTxRequest) GetChainId() uint64 { @@ -910,7 +1078,7 @@ type PrepareCosmosTxResponse struct { func (x *PrepareCosmosTxResponse) Reset() { *x = PrepareCosmosTxResponse{} if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[10] + mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -923,7 +1091,7 @@ func (x *PrepareCosmosTxResponse) String() string { func (*PrepareCosmosTxResponse) ProtoMessage() {} func (x *PrepareCosmosTxResponse) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[10] + mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -936,7 +1104,7 @@ func (x *PrepareCosmosTxResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use PrepareCosmosTxResponse.ProtoReflect.Descriptor instead. func (*PrepareCosmosTxResponse) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_exchange_rpc_proto_rawDescGZIP(), []int{10} + return file_goadesign_goagen_injective_exchange_rpc_proto_rawDescGZIP(), []int{12} } func (x *PrepareCosmosTxResponse) GetTx() []byte { @@ -999,7 +1167,7 @@ type BroadcastCosmosTxRequest struct { func (x *BroadcastCosmosTxRequest) Reset() { *x = BroadcastCosmosTxRequest{} if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[11] + mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1012,7 +1180,7 @@ func (x *BroadcastCosmosTxRequest) String() string { func (*BroadcastCosmosTxRequest) ProtoMessage() {} func (x *BroadcastCosmosTxRequest) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[11] + mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1025,7 +1193,7 @@ func (x *BroadcastCosmosTxRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use BroadcastCosmosTxRequest.ProtoReflect.Descriptor instead. func (*BroadcastCosmosTxRequest) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_exchange_rpc_proto_rawDescGZIP(), []int{11} + return file_goadesign_goagen_injective_exchange_rpc_proto_rawDescGZIP(), []int{13} } func (x *BroadcastCosmosTxRequest) GetTx() []byte { @@ -1083,7 +1251,7 @@ type BroadcastCosmosTxResponse struct { func (x *BroadcastCosmosTxResponse) Reset() { *x = BroadcastCosmosTxResponse{} if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[12] + mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1096,7 +1264,7 @@ func (x *BroadcastCosmosTxResponse) String() string { func (*BroadcastCosmosTxResponse) ProtoMessage() {} func (x *BroadcastCosmosTxResponse) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[12] + mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1109,7 +1277,7 @@ func (x *BroadcastCosmosTxResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use BroadcastCosmosTxResponse.ProtoReflect.Descriptor instead. func (*BroadcastCosmosTxResponse) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_exchange_rpc_proto_rawDescGZIP(), []int{12} + return file_goadesign_goagen_injective_exchange_rpc_proto_rawDescGZIP(), []int{14} } func (x *BroadcastCosmosTxResponse) GetTxHash() string { @@ -1177,7 +1345,7 @@ type GetFeePayerRequest struct { func (x *GetFeePayerRequest) Reset() { *x = GetFeePayerRequest{} if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[13] + mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1190,7 +1358,7 @@ func (x *GetFeePayerRequest) String() string { func (*GetFeePayerRequest) ProtoMessage() {} func (x *GetFeePayerRequest) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[13] + mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1203,7 +1371,7 @@ func (x *GetFeePayerRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetFeePayerRequest.ProtoReflect.Descriptor instead. func (*GetFeePayerRequest) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_exchange_rpc_proto_rawDescGZIP(), []int{13} + return file_goadesign_goagen_injective_exchange_rpc_proto_rawDescGZIP(), []int{15} } type GetFeePayerResponse struct { @@ -1220,7 +1388,7 @@ type GetFeePayerResponse struct { func (x *GetFeePayerResponse) Reset() { *x = GetFeePayerResponse{} if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[14] + mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1233,7 +1401,7 @@ func (x *GetFeePayerResponse) String() string { func (*GetFeePayerResponse) ProtoMessage() {} func (x *GetFeePayerResponse) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[14] + mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1246,7 +1414,7 @@ func (x *GetFeePayerResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetFeePayerResponse.ProtoReflect.Descriptor instead. func (*GetFeePayerResponse) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_exchange_rpc_proto_rawDescGZIP(), []int{14} + return file_goadesign_goagen_injective_exchange_rpc_proto_rawDescGZIP(), []int{16} } func (x *GetFeePayerResponse) GetFeePayer() string { @@ -1328,148 +1496,179 @@ var file_goadesign_goagen_injective_exchange_rpc_proto_rawDesc = []byte{ 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x65, 0x65, 0x50, 0x61, 0x79, 0x65, 0x72, 0x12, 0x22, 0x0a, 0x0d, 0x66, 0x65, 0x65, 0x5f, 0x70, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x73, 0x69, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66, 0x65, 0x65, 0x50, 0x61, 0x79, 0x65, 0x72, 0x53, 0x69, - 0x67, 0x22, 0x85, 0x02, 0x0a, 0x12, 0x42, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x54, - 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x68, 0x61, 0x69, - 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x63, 0x68, 0x61, 0x69, - 0x6e, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, - 0x02, 0x74, 0x78, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x73, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x0c, 0x52, 0x04, 0x6d, 0x73, 0x67, 0x73, 0x12, 0x3d, 0x0a, 0x07, 0x70, 0x75, 0x62, 0x5f, 0x6b, - 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, - 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, - 0x63, 0x2e, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x52, 0x06, - 0x70, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, - 0x75, 0x72, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, - 0x74, 0x75, 0x72, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x65, 0x65, 0x5f, 0x70, 0x61, 0x79, 0x65, - 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x65, 0x65, 0x50, 0x61, 0x79, 0x65, - 0x72, 0x12, 0x22, 0x0a, 0x0d, 0x66, 0x65, 0x65, 0x5f, 0x70, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x73, - 0x69, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66, 0x65, 0x65, 0x50, 0x61, 0x79, - 0x65, 0x72, 0x53, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0x34, 0x0a, 0x0c, 0x43, 0x6f, 0x73, - 0x6d, 0x6f, 0x73, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, - 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x22, - 0xd9, 0x01, 0x0a, 0x13, 0x42, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x54, 0x78, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x78, 0x5f, 0x68, 0x61, - 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, - 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x12, - 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1c, - 0x0a, 0x09, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, - 0x63, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, - 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, - 0x64, 0x61, 0x74, 0x61, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x61, 0x77, 0x5f, 0x6c, 0x6f, 0x67, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x61, 0x77, 0x4c, 0x6f, 0x67, 0x12, 0x1c, 0x0a, - 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0xe0, 0x01, 0x0a, 0x16, - 0x50, 0x72, 0x65, 0x70, 0x61, 0x72, 0x65, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x54, 0x78, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x49, - 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, - 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x65, 0x6e, 0x64, 0x65, - 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x65, 0x6d, 0x6f, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6d, 0x65, 0x6d, 0x6f, 0x12, 0x25, 0x0a, 0x0e, - 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x48, 0x65, 0x69, - 0x67, 0x68, 0x74, 0x12, 0x35, 0x0a, 0x03, 0x66, 0x65, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x23, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, + 0x67, 0x22, 0xc8, 0x02, 0x0a, 0x14, 0x50, 0x72, 0x65, 0x70, 0x61, 0x72, 0x65, 0x45, 0x69, 0x70, + 0x37, 0x31, 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x68, + 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x63, 0x68, + 0x61, 0x69, 0x6e, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x5f, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, + 0x69, 0x67, 0x6e, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1a, 0x0a, 0x08, + 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, + 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x0d, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, + 0x12, 0x0a, 0x04, 0x6d, 0x65, 0x6d, 0x6f, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6d, + 0x65, 0x6d, 0x6f, 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x68, + 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x74, 0x69, 0x6d, + 0x65, 0x6f, 0x75, 0x74, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x35, 0x0a, 0x03, 0x66, 0x65, + 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, + 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, + 0x2e, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x54, 0x78, 0x46, 0x65, 0x65, 0x52, 0x03, 0x66, 0x65, + 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x73, 0x67, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0c, 0x52, + 0x04, 0x6d, 0x73, 0x67, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x69, 0x70, 0x37, 0x31, 0x32, 0x5f, + 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, + 0x69, 0x70, 0x37, 0x31, 0x32, 0x57, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x22, 0x2b, 0x0a, 0x15, + 0x50, 0x72, 0x65, 0x70, 0x61, 0x72, 0x65, 0x45, 0x69, 0x70, 0x37, 0x31, 0x32, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x85, 0x02, 0x0a, 0x12, 0x42, 0x72, + 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x54, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x19, 0x0a, 0x08, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x07, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x74, + 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x02, 0x74, 0x78, 0x12, 0x12, 0x0a, 0x04, 0x6d, + 0x73, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x04, 0x6d, 0x73, 0x67, 0x73, 0x12, + 0x3d, 0x0a, 0x07, 0x70, 0x75, 0x62, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x24, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, - 0x54, 0x78, 0x46, 0x65, 0x65, 0x52, 0x03, 0x66, 0x65, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x73, - 0x67, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x04, 0x6d, 0x73, 0x67, 0x73, 0x22, 0xfa, - 0x01, 0x0a, 0x17, 0x50, 0x72, 0x65, 0x70, 0x61, 0x72, 0x65, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, - 0x54, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x78, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x02, 0x74, 0x78, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x69, - 0x67, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, - 0x69, 0x67, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x20, 0x0a, 0x0c, 0x70, 0x75, 0x62, 0x5f, 0x6b, - 0x65, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, - 0x75, 0x62, 0x4b, 0x65, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x65, 0x65, - 0x5f, 0x70, 0x61, 0x79, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x65, - 0x65, 0x50, 0x61, 0x79, 0x65, 0x72, 0x12, 0x22, 0x0a, 0x0d, 0x66, 0x65, 0x65, 0x5f, 0x70, 0x61, - 0x79, 0x65, 0x72, 0x5f, 0x73, 0x69, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66, - 0x65, 0x65, 0x50, 0x61, 0x79, 0x65, 0x72, 0x53, 0x69, 0x67, 0x12, 0x4f, 0x0a, 0x11, 0x66, 0x65, - 0x65, 0x5f, 0x70, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x70, 0x75, 0x62, 0x5f, 0x6b, 0x65, 0x79, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, - 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, - 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x52, 0x0e, 0x66, 0x65, 0x65, - 0x50, 0x61, 0x79, 0x65, 0x72, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x22, 0xae, 0x01, 0x0a, 0x18, - 0x42, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x54, - 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x78, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0c, 0x52, 0x02, 0x74, 0x78, 0x12, 0x3d, 0x0a, 0x07, 0x70, 0x75, 0x62, 0x5f, - 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x69, 0x6e, 0x6a, 0x65, - 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, - 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x52, - 0x06, 0x70, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, - 0x74, 0x75, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, - 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x5f, - 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, - 0x65, 0x6e, 0x64, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0xdf, 0x01, 0x0a, - 0x19, 0x42, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, - 0x54, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x78, - 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x78, 0x48, - 0x61, 0x73, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x12, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, - 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x63, - 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x61, 0x77, 0x5f, 0x6c, - 0x6f, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x61, 0x77, 0x4c, 0x6f, 0x67, - 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0x14, - 0x0a, 0x12, 0x47, 0x65, 0x74, 0x46, 0x65, 0x65, 0x50, 0x61, 0x79, 0x65, 0x72, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x22, 0x83, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x46, 0x65, 0x65, 0x50, - 0x61, 0x79, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x09, - 0x66, 0x65, 0x65, 0x5f, 0x70, 0x61, 0x79, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x66, 0x65, 0x65, 0x50, 0x61, 0x79, 0x65, 0x72, 0x12, 0x4f, 0x0a, 0x11, 0x66, 0x65, 0x65, - 0x5f, 0x70, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x70, 0x75, 0x62, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, - 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, - 0x73, 0x6d, 0x6f, 0x73, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x52, 0x0e, 0x66, 0x65, 0x65, 0x50, - 0x61, 0x79, 0x65, 0x72, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x32, 0x8c, 0x05, 0x0a, 0x14, 0x49, - 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x52, 0x50, 0x43, 0x12, 0x54, 0x0a, 0x05, 0x47, 0x65, 0x74, 0x54, 0x78, 0x12, 0x24, 0x2e, 0x69, + 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x52, 0x06, 0x70, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x12, 0x1c, + 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x1b, 0x0a, 0x09, + 0x66, 0x65, 0x65, 0x5f, 0x70, 0x61, 0x79, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x66, 0x65, 0x65, 0x50, 0x61, 0x79, 0x65, 0x72, 0x12, 0x22, 0x0a, 0x0d, 0x66, 0x65, 0x65, + 0x5f, 0x70, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x73, 0x69, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x66, 0x65, 0x65, 0x50, 0x61, 0x79, 0x65, 0x72, 0x53, 0x69, 0x67, 0x12, 0x12, 0x0a, + 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6d, 0x6f, 0x64, + 0x65, 0x22, 0x34, 0x0a, 0x0c, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x50, 0x75, 0x62, 0x4b, 0x65, + 0x79, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x22, 0xd9, 0x01, 0x0a, 0x13, 0x42, 0x72, 0x6f, 0x61, + 0x64, 0x63, 0x61, 0x73, 0x74, 0x54, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x17, 0x0a, 0x07, 0x74, 0x78, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, + 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x12, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x64, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x17, 0x0a, 0x07, + 0x72, 0x61, 0x77, 0x5f, 0x6c, 0x6f, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, + 0x61, 0x77, 0x4c, 0x6f, 0x67, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x22, 0xe0, 0x01, 0x0a, 0x16, 0x50, 0x72, 0x65, 0x70, 0x61, 0x72, 0x65, 0x43, + 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x54, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, + 0x0a, 0x08, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x07, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x65, 0x6e, + 0x64, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0d, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x65, 0x6d, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6d, 0x65, 0x6d, 0x6f, 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, + 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x74, 0x69, + 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x35, 0x0a, 0x03, 0x66, + 0x65, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, + 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, + 0x63, 0x2e, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x54, 0x78, 0x46, 0x65, 0x65, 0x52, 0x03, 0x66, + 0x65, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x73, 0x67, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0c, + 0x52, 0x04, 0x6d, 0x73, 0x67, 0x73, 0x22, 0xfa, 0x01, 0x0a, 0x17, 0x50, 0x72, 0x65, 0x70, 0x61, + 0x72, 0x65, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x54, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x02, + 0x74, 0x78, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x69, 0x67, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x12, + 0x20, 0x0a, 0x0c, 0x70, 0x75, 0x62, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x65, 0x65, 0x5f, 0x70, 0x61, 0x79, 0x65, 0x72, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x65, 0x65, 0x50, 0x61, 0x79, 0x65, 0x72, 0x12, 0x22, + 0x0a, 0x0d, 0x66, 0x65, 0x65, 0x5f, 0x70, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x73, 0x69, 0x67, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66, 0x65, 0x65, 0x50, 0x61, 0x79, 0x65, 0x72, 0x53, + 0x69, 0x67, 0x12, 0x4f, 0x0a, 0x11, 0x66, 0x65, 0x65, 0x5f, 0x70, 0x61, 0x79, 0x65, 0x72, 0x5f, + 0x70, 0x75, 0x62, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, + 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x50, 0x75, 0x62, + 0x4b, 0x65, 0x79, 0x52, 0x0e, 0x66, 0x65, 0x65, 0x50, 0x61, 0x79, 0x65, 0x72, 0x50, 0x75, 0x62, + 0x4b, 0x65, 0x79, 0x22, 0xae, 0x01, 0x0a, 0x18, 0x42, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, + 0x74, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x54, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x02, 0x74, 0x78, + 0x12, 0x3d, 0x0a, 0x07, 0x70, 0x75, 0x62, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x24, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, + 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x52, 0x06, 0x70, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x12, + 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x25, 0x0a, + 0x0e, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x41, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x22, 0xdf, 0x01, 0x0a, 0x19, 0x42, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, + 0x73, 0x74, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x54, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x78, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x68, + 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x12, 0x52, 0x06, 0x68, 0x65, 0x69, + 0x67, 0x68, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x64, + 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, + 0x64, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, + 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, + 0x17, 0x0a, 0x07, 0x72, 0x61, 0x77, 0x5f, 0x6c, 0x6f, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x72, 0x61, 0x77, 0x4c, 0x6f, 0x67, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0x14, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x46, 0x65, 0x65, + 0x50, 0x61, 0x79, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x83, 0x01, 0x0a, + 0x13, 0x47, 0x65, 0x74, 0x46, 0x65, 0x65, 0x50, 0x61, 0x79, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x65, 0x65, 0x5f, 0x70, 0x61, 0x79, 0x65, + 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x65, 0x65, 0x50, 0x61, 0x79, 0x65, + 0x72, 0x12, 0x4f, 0x0a, 0x11, 0x66, 0x65, 0x65, 0x5f, 0x70, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x70, + 0x75, 0x62, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, - 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x54, - 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x60, 0x0a, 0x09, 0x50, 0x72, 0x65, - 0x70, 0x61, 0x72, 0x65, 0x54, 0x78, 0x12, 0x28, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, - 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, - 0x50, 0x72, 0x65, 0x70, 0x61, 0x72, 0x65, 0x54, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x29, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x72, 0x65, 0x70, 0x61, 0x72, - 0x65, 0x54, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x66, 0x0a, 0x0b, 0x42, - 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x54, 0x78, 0x12, 0x2a, 0x2e, 0x69, 0x6e, 0x6a, + 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x50, 0x75, 0x62, 0x4b, + 0x65, 0x79, 0x52, 0x0e, 0x66, 0x65, 0x65, 0x50, 0x61, 0x79, 0x65, 0x72, 0x50, 0x75, 0x62, 0x4b, + 0x65, 0x79, 0x32, 0xfa, 0x05, 0x0a, 0x14, 0x49, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x50, 0x43, 0x12, 0x54, 0x0a, 0x05, 0x47, + 0x65, 0x74, 0x54, 0x78, 0x12, 0x24, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, + 0x74, 0x54, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, - 0x72, 0x70, 0x63, 0x2e, 0x42, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x54, 0x78, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, - 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, - 0x42, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x54, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x72, 0x0a, 0x0f, 0x50, 0x72, 0x65, 0x70, 0x61, 0x72, 0x65, 0x43, 0x6f, - 0x73, 0x6d, 0x6f, 0x73, 0x54, 0x78, 0x12, 0x2e, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, - 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, - 0x50, 0x72, 0x65, 0x70, 0x61, 0x72, 0x65, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x54, 0x78, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, - 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, - 0x50, 0x72, 0x65, 0x70, 0x61, 0x72, 0x65, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x54, 0x78, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x78, 0x0a, 0x11, 0x42, 0x72, 0x6f, 0x61, 0x64, - 0x63, 0x61, 0x73, 0x74, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x54, 0x78, 0x12, 0x30, 0x2e, 0x69, - 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x42, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x43, - 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x54, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, + 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x60, 0x0a, 0x09, 0x50, 0x72, 0x65, 0x70, 0x61, 0x72, 0x65, 0x54, 0x78, 0x12, 0x28, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x42, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, - 0x74, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x54, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x66, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x46, 0x65, 0x65, 0x50, 0x61, 0x79, 0x65, 0x72, + 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x72, 0x65, 0x70, 0x61, 0x72, 0x65, 0x54, + 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, + 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, + 0x63, 0x2e, 0x50, 0x72, 0x65, 0x70, 0x61, 0x72, 0x65, 0x54, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x6c, 0x0a, 0x0d, 0x50, 0x72, 0x65, 0x70, 0x61, 0x72, 0x65, 0x45, 0x69, + 0x70, 0x37, 0x31, 0x32, 0x12, 0x2c, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x72, + 0x65, 0x70, 0x61, 0x72, 0x65, 0x45, 0x69, 0x70, 0x37, 0x31, 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, + 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x72, 0x65, 0x70, + 0x61, 0x72, 0x65, 0x45, 0x69, 0x70, 0x37, 0x31, 0x32, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x66, 0x0a, 0x0b, 0x42, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x54, 0x78, 0x12, 0x2a, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x65, 0x65, - 0x50, 0x61, 0x79, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x69, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x42, 0x72, 0x6f, 0x61, 0x64, 0x63, + 0x61, 0x73, 0x74, 0x54, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x69, + 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x42, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x54, + 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x72, 0x0a, 0x0f, 0x50, 0x72, 0x65, + 0x70, 0x61, 0x72, 0x65, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x54, 0x78, 0x12, 0x2e, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x65, 0x65, 0x50, 0x61, 0x79, 0x65, - 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x1b, 0x5a, 0x19, 0x2f, 0x69, 0x6e, - 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x5f, 0x72, 0x70, 0x63, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x72, 0x65, 0x70, 0x61, 0x72, 0x65, 0x43, 0x6f, 0x73, + 0x6d, 0x6f, 0x73, 0x54, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x69, + 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x72, 0x65, 0x70, 0x61, 0x72, 0x65, 0x43, 0x6f, 0x73, + 0x6d, 0x6f, 0x73, 0x54, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x78, 0x0a, + 0x11, 0x42, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x54, 0x78, 0x12, 0x30, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, + 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x42, 0x72, 0x6f, 0x61, + 0x64, 0x63, 0x61, 0x73, 0x74, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x54, 0x78, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x42, 0x72, + 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x54, 0x78, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x66, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x46, 0x65, + 0x65, 0x50, 0x61, 0x79, 0x65, 0x72, 0x12, 0x2a, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, + 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, + 0x47, 0x65, 0x74, 0x46, 0x65, 0x65, 0x50, 0x61, 0x79, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, + 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x46, + 0x65, 0x65, 0x50, 0x61, 0x79, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, + 0x1b, 0x5a, 0x19, 0x2f, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, + 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1484,7 +1683,7 @@ func file_goadesign_goagen_injective_exchange_rpc_proto_rawDescGZIP() []byte { return file_goadesign_goagen_injective_exchange_rpc_proto_rawDescData } -var file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes = make([]protoimpl.MessageInfo, 15) +var file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes = make([]protoimpl.MessageInfo, 17) var file_goadesign_goagen_injective_exchange_rpc_proto_goTypes = []interface{}{ (*GetTxRequest)(nil), // 0: injective_exchange_rpc.GetTxRequest (*GetTxResponse)(nil), // 1: injective_exchange_rpc.GetTxResponse @@ -1492,41 +1691,46 @@ var file_goadesign_goagen_injective_exchange_rpc_proto_goTypes = []interface{}{ (*CosmosTxFee)(nil), // 3: injective_exchange_rpc.CosmosTxFee (*CosmosCoin)(nil), // 4: injective_exchange_rpc.CosmosCoin (*PrepareTxResponse)(nil), // 5: injective_exchange_rpc.PrepareTxResponse - (*BroadcastTxRequest)(nil), // 6: injective_exchange_rpc.BroadcastTxRequest - (*CosmosPubKey)(nil), // 7: injective_exchange_rpc.CosmosPubKey - (*BroadcastTxResponse)(nil), // 8: injective_exchange_rpc.BroadcastTxResponse - (*PrepareCosmosTxRequest)(nil), // 9: injective_exchange_rpc.PrepareCosmosTxRequest - (*PrepareCosmosTxResponse)(nil), // 10: injective_exchange_rpc.PrepareCosmosTxResponse - (*BroadcastCosmosTxRequest)(nil), // 11: injective_exchange_rpc.BroadcastCosmosTxRequest - (*BroadcastCosmosTxResponse)(nil), // 12: injective_exchange_rpc.BroadcastCosmosTxResponse - (*GetFeePayerRequest)(nil), // 13: injective_exchange_rpc.GetFeePayerRequest - (*GetFeePayerResponse)(nil), // 14: injective_exchange_rpc.GetFeePayerResponse + (*PrepareEip712Request)(nil), // 6: injective_exchange_rpc.PrepareEip712Request + (*PrepareEip712Response)(nil), // 7: injective_exchange_rpc.PrepareEip712Response + (*BroadcastTxRequest)(nil), // 8: injective_exchange_rpc.BroadcastTxRequest + (*CosmosPubKey)(nil), // 9: injective_exchange_rpc.CosmosPubKey + (*BroadcastTxResponse)(nil), // 10: injective_exchange_rpc.BroadcastTxResponse + (*PrepareCosmosTxRequest)(nil), // 11: injective_exchange_rpc.PrepareCosmosTxRequest + (*PrepareCosmosTxResponse)(nil), // 12: injective_exchange_rpc.PrepareCosmosTxResponse + (*BroadcastCosmosTxRequest)(nil), // 13: injective_exchange_rpc.BroadcastCosmosTxRequest + (*BroadcastCosmosTxResponse)(nil), // 14: injective_exchange_rpc.BroadcastCosmosTxResponse + (*GetFeePayerRequest)(nil), // 15: injective_exchange_rpc.GetFeePayerRequest + (*GetFeePayerResponse)(nil), // 16: injective_exchange_rpc.GetFeePayerResponse } var file_goadesign_goagen_injective_exchange_rpc_proto_depIdxs = []int32{ 3, // 0: injective_exchange_rpc.PrepareTxRequest.fee:type_name -> injective_exchange_rpc.CosmosTxFee 4, // 1: injective_exchange_rpc.CosmosTxFee.price:type_name -> injective_exchange_rpc.CosmosCoin - 7, // 2: injective_exchange_rpc.BroadcastTxRequest.pub_key:type_name -> injective_exchange_rpc.CosmosPubKey - 3, // 3: injective_exchange_rpc.PrepareCosmosTxRequest.fee:type_name -> injective_exchange_rpc.CosmosTxFee - 7, // 4: injective_exchange_rpc.PrepareCosmosTxResponse.fee_payer_pub_key:type_name -> injective_exchange_rpc.CosmosPubKey - 7, // 5: injective_exchange_rpc.BroadcastCosmosTxRequest.pub_key:type_name -> injective_exchange_rpc.CosmosPubKey - 7, // 6: injective_exchange_rpc.GetFeePayerResponse.fee_payer_pub_key:type_name -> injective_exchange_rpc.CosmosPubKey - 0, // 7: injective_exchange_rpc.InjectiveExchangeRPC.GetTx:input_type -> injective_exchange_rpc.GetTxRequest - 2, // 8: injective_exchange_rpc.InjectiveExchangeRPC.PrepareTx:input_type -> injective_exchange_rpc.PrepareTxRequest - 6, // 9: injective_exchange_rpc.InjectiveExchangeRPC.BroadcastTx:input_type -> injective_exchange_rpc.BroadcastTxRequest - 9, // 10: injective_exchange_rpc.InjectiveExchangeRPC.PrepareCosmosTx:input_type -> injective_exchange_rpc.PrepareCosmosTxRequest - 11, // 11: injective_exchange_rpc.InjectiveExchangeRPC.BroadcastCosmosTx:input_type -> injective_exchange_rpc.BroadcastCosmosTxRequest - 13, // 12: injective_exchange_rpc.InjectiveExchangeRPC.GetFeePayer:input_type -> injective_exchange_rpc.GetFeePayerRequest - 1, // 13: injective_exchange_rpc.InjectiveExchangeRPC.GetTx:output_type -> injective_exchange_rpc.GetTxResponse - 5, // 14: injective_exchange_rpc.InjectiveExchangeRPC.PrepareTx:output_type -> injective_exchange_rpc.PrepareTxResponse - 8, // 15: injective_exchange_rpc.InjectiveExchangeRPC.BroadcastTx:output_type -> injective_exchange_rpc.BroadcastTxResponse - 10, // 16: injective_exchange_rpc.InjectiveExchangeRPC.PrepareCosmosTx:output_type -> injective_exchange_rpc.PrepareCosmosTxResponse - 12, // 17: injective_exchange_rpc.InjectiveExchangeRPC.BroadcastCosmosTx:output_type -> injective_exchange_rpc.BroadcastCosmosTxResponse - 14, // 18: injective_exchange_rpc.InjectiveExchangeRPC.GetFeePayer:output_type -> injective_exchange_rpc.GetFeePayerResponse - 13, // [13:19] is the sub-list for method output_type - 7, // [7:13] is the sub-list for method input_type - 7, // [7:7] is the sub-list for extension type_name - 7, // [7:7] is the sub-list for extension extendee - 0, // [0:7] is the sub-list for field type_name + 3, // 2: injective_exchange_rpc.PrepareEip712Request.fee:type_name -> injective_exchange_rpc.CosmosTxFee + 9, // 3: injective_exchange_rpc.BroadcastTxRequest.pub_key:type_name -> injective_exchange_rpc.CosmosPubKey + 3, // 4: injective_exchange_rpc.PrepareCosmosTxRequest.fee:type_name -> injective_exchange_rpc.CosmosTxFee + 9, // 5: injective_exchange_rpc.PrepareCosmosTxResponse.fee_payer_pub_key:type_name -> injective_exchange_rpc.CosmosPubKey + 9, // 6: injective_exchange_rpc.BroadcastCosmosTxRequest.pub_key:type_name -> injective_exchange_rpc.CosmosPubKey + 9, // 7: injective_exchange_rpc.GetFeePayerResponse.fee_payer_pub_key:type_name -> injective_exchange_rpc.CosmosPubKey + 0, // 8: injective_exchange_rpc.InjectiveExchangeRPC.GetTx:input_type -> injective_exchange_rpc.GetTxRequest + 2, // 9: injective_exchange_rpc.InjectiveExchangeRPC.PrepareTx:input_type -> injective_exchange_rpc.PrepareTxRequest + 6, // 10: injective_exchange_rpc.InjectiveExchangeRPC.PrepareEip712:input_type -> injective_exchange_rpc.PrepareEip712Request + 8, // 11: injective_exchange_rpc.InjectiveExchangeRPC.BroadcastTx:input_type -> injective_exchange_rpc.BroadcastTxRequest + 11, // 12: injective_exchange_rpc.InjectiveExchangeRPC.PrepareCosmosTx:input_type -> injective_exchange_rpc.PrepareCosmosTxRequest + 13, // 13: injective_exchange_rpc.InjectiveExchangeRPC.BroadcastCosmosTx:input_type -> injective_exchange_rpc.BroadcastCosmosTxRequest + 15, // 14: injective_exchange_rpc.InjectiveExchangeRPC.GetFeePayer:input_type -> injective_exchange_rpc.GetFeePayerRequest + 1, // 15: injective_exchange_rpc.InjectiveExchangeRPC.GetTx:output_type -> injective_exchange_rpc.GetTxResponse + 5, // 16: injective_exchange_rpc.InjectiveExchangeRPC.PrepareTx:output_type -> injective_exchange_rpc.PrepareTxResponse + 7, // 17: injective_exchange_rpc.InjectiveExchangeRPC.PrepareEip712:output_type -> injective_exchange_rpc.PrepareEip712Response + 10, // 18: injective_exchange_rpc.InjectiveExchangeRPC.BroadcastTx:output_type -> injective_exchange_rpc.BroadcastTxResponse + 12, // 19: injective_exchange_rpc.InjectiveExchangeRPC.PrepareCosmosTx:output_type -> injective_exchange_rpc.PrepareCosmosTxResponse + 14, // 20: injective_exchange_rpc.InjectiveExchangeRPC.BroadcastCosmosTx:output_type -> injective_exchange_rpc.BroadcastCosmosTxResponse + 16, // 21: injective_exchange_rpc.InjectiveExchangeRPC.GetFeePayer:output_type -> injective_exchange_rpc.GetFeePayerResponse + 15, // [15:22] is the sub-list for method output_type + 8, // [8:15] is the sub-list for method input_type + 8, // [8:8] is the sub-list for extension type_name + 8, // [8:8] is the sub-list for extension extendee + 0, // [0:8] is the sub-list for field type_name } func init() { file_goadesign_goagen_injective_exchange_rpc_proto_init() } @@ -1608,7 +1812,7 @@ func file_goadesign_goagen_injective_exchange_rpc_proto_init() { } } file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BroadcastTxRequest); i { + switch v := v.(*PrepareEip712Request); i { case 0: return &v.state case 1: @@ -1620,7 +1824,7 @@ func file_goadesign_goagen_injective_exchange_rpc_proto_init() { } } file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CosmosPubKey); i { + switch v := v.(*PrepareEip712Response); i { case 0: return &v.state case 1: @@ -1632,7 +1836,7 @@ func file_goadesign_goagen_injective_exchange_rpc_proto_init() { } } file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BroadcastTxResponse); i { + switch v := v.(*BroadcastTxRequest); i { case 0: return &v.state case 1: @@ -1644,7 +1848,7 @@ func file_goadesign_goagen_injective_exchange_rpc_proto_init() { } } file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PrepareCosmosTxRequest); i { + switch v := v.(*CosmosPubKey); i { case 0: return &v.state case 1: @@ -1656,7 +1860,7 @@ func file_goadesign_goagen_injective_exchange_rpc_proto_init() { } } file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PrepareCosmosTxResponse); i { + switch v := v.(*BroadcastTxResponse); i { case 0: return &v.state case 1: @@ -1668,7 +1872,7 @@ func file_goadesign_goagen_injective_exchange_rpc_proto_init() { } } file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BroadcastCosmosTxRequest); i { + switch v := v.(*PrepareCosmosTxRequest); i { case 0: return &v.state case 1: @@ -1680,7 +1884,7 @@ func file_goadesign_goagen_injective_exchange_rpc_proto_init() { } } file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BroadcastCosmosTxResponse); i { + switch v := v.(*PrepareCosmosTxResponse); i { case 0: return &v.state case 1: @@ -1692,7 +1896,7 @@ func file_goadesign_goagen_injective_exchange_rpc_proto_init() { } } file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetFeePayerRequest); i { + switch v := v.(*BroadcastCosmosTxRequest); i { case 0: return &v.state case 1: @@ -1704,6 +1908,30 @@ func file_goadesign_goagen_injective_exchange_rpc_proto_init() { } } file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BroadcastCosmosTxResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetFeePayerRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetFeePayerResponse); i { case 0: return &v.state @@ -1722,7 +1950,7 @@ func file_goadesign_goagen_injective_exchange_rpc_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_goadesign_goagen_injective_exchange_rpc_proto_rawDesc, NumEnums: 0, - NumMessages: 15, + NumMessages: 17, NumExtensions: 0, NumServices: 1, }, diff --git a/exchange/exchange_rpc/pb/goadesign_goagen_injective_exchange_rpc_grpc.pb.go b/exchange/exchange_rpc/pb/goadesign_goagen_injective_exchange_rpc_grpc.pb.go index c7e2827d..721f4ef7 100644 --- a/exchange/exchange_rpc/pb/goadesign_goagen_injective_exchange_rpc_grpc.pb.go +++ b/exchange/exchange_rpc/pb/goadesign_goagen_injective_exchange_rpc_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.2.0 -// - protoc v3.19.4 +// - protoc v3.21.12 // source: goadesign_goagen_injective_exchange_rpc.proto package injective_exchange_rpcpb @@ -26,6 +26,8 @@ type InjectiveExchangeRPCClient interface { GetTx(ctx context.Context, in *GetTxRequest, opts ...grpc.CallOption) (*GetTxResponse, error) // PrepareTx generates a Web3-signable body for a Cosmos transaction PrepareTx(ctx context.Context, in *PrepareTxRequest, opts ...grpc.CallOption) (*PrepareTxResponse, error) + // prepareEip712 generates EIP712 for an Injective Message + PrepareEip712(ctx context.Context, in *PrepareEip712Request, opts ...grpc.CallOption) (*PrepareEip712Response, error) // BroadcastTx broadcasts a signed Web3 transaction BroadcastTx(ctx context.Context, in *BroadcastTxRequest, opts ...grpc.CallOption) (*BroadcastTxResponse, error) // PrepareCosmosTx generates a Web3-signable body for a Cosmos transaction @@ -62,6 +64,15 @@ func (c *injectiveExchangeRPCClient) PrepareTx(ctx context.Context, in *PrepareT return out, nil } +func (c *injectiveExchangeRPCClient) PrepareEip712(ctx context.Context, in *PrepareEip712Request, opts ...grpc.CallOption) (*PrepareEip712Response, error) { + out := new(PrepareEip712Response) + err := c.cc.Invoke(ctx, "/injective_exchange_rpc.InjectiveExchangeRPC/PrepareEip712", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *injectiveExchangeRPCClient) BroadcastTx(ctx context.Context, in *BroadcastTxRequest, opts ...grpc.CallOption) (*BroadcastTxResponse, error) { out := new(BroadcastTxResponse) err := c.cc.Invoke(ctx, "/injective_exchange_rpc.InjectiveExchangeRPC/BroadcastTx", in, out, opts...) @@ -106,6 +117,8 @@ type InjectiveExchangeRPCServer interface { GetTx(context.Context, *GetTxRequest) (*GetTxResponse, error) // PrepareTx generates a Web3-signable body for a Cosmos transaction PrepareTx(context.Context, *PrepareTxRequest) (*PrepareTxResponse, error) + // prepareEip712 generates EIP712 for an Injective Message + PrepareEip712(context.Context, *PrepareEip712Request) (*PrepareEip712Response, error) // BroadcastTx broadcasts a signed Web3 transaction BroadcastTx(context.Context, *BroadcastTxRequest) (*BroadcastTxResponse, error) // PrepareCosmosTx generates a Web3-signable body for a Cosmos transaction @@ -127,6 +140,9 @@ func (UnimplementedInjectiveExchangeRPCServer) GetTx(context.Context, *GetTxRequ func (UnimplementedInjectiveExchangeRPCServer) PrepareTx(context.Context, *PrepareTxRequest) (*PrepareTxResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method PrepareTx not implemented") } +func (UnimplementedInjectiveExchangeRPCServer) PrepareEip712(context.Context, *PrepareEip712Request) (*PrepareEip712Response, error) { + return nil, status.Errorf(codes.Unimplemented, "method PrepareEip712 not implemented") +} func (UnimplementedInjectiveExchangeRPCServer) BroadcastTx(context.Context, *BroadcastTxRequest) (*BroadcastTxResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method BroadcastTx not implemented") } @@ -188,6 +204,24 @@ func _InjectiveExchangeRPC_PrepareTx_Handler(srv interface{}, ctx context.Contex return interceptor(ctx, in, info, handler) } +func _InjectiveExchangeRPC_PrepareEip712_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(PrepareEip712Request) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(InjectiveExchangeRPCServer).PrepareEip712(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/injective_exchange_rpc.InjectiveExchangeRPC/PrepareEip712", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(InjectiveExchangeRPCServer).PrepareEip712(ctx, req.(*PrepareEip712Request)) + } + return interceptor(ctx, in, info, handler) +} + func _InjectiveExchangeRPC_BroadcastTx_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(BroadcastTxRequest) if err := dec(in); err != nil { @@ -275,6 +309,10 @@ var InjectiveExchangeRPC_ServiceDesc = grpc.ServiceDesc{ MethodName: "PrepareTx", Handler: _InjectiveExchangeRPC_PrepareTx_Handler, }, + { + MethodName: "PrepareEip712", + Handler: _InjectiveExchangeRPC_PrepareEip712_Handler, + }, { MethodName: "BroadcastTx", Handler: _InjectiveExchangeRPC_BroadcastTx_Handler, diff --git a/exchange/exchange_rpc/pb/injective_exchange_rpc.pb.gw.go b/exchange/exchange_rpc/pb/injective_exchange_rpc.pb.gw.go index d5d28a2a..11748a98 100644 --- a/exchange/exchange_rpc/pb/injective_exchange_rpc.pb.gw.go +++ b/exchange/exchange_rpc/pb/injective_exchange_rpc.pb.gw.go @@ -99,6 +99,40 @@ func local_request_InjectiveExchangeRPC_PrepareTx_0(ctx context.Context, marshal } +func request_InjectiveExchangeRPC_PrepareEip712_0(ctx context.Context, marshaler runtime.Marshaler, client InjectiveExchangeRPCClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq PrepareEip712Request + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.PrepareEip712(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_InjectiveExchangeRPC_PrepareEip712_0(ctx context.Context, marshaler runtime.Marshaler, server InjectiveExchangeRPCServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq PrepareEip712Request + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.PrepareEip712(ctx, &protoReq) + return msg, metadata, err + +} + func request_InjectiveExchangeRPC_BroadcastTx_0(ctx context.Context, marshaler runtime.Marshaler, client InjectiveExchangeRPCClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq BroadcastTxRequest var metadata runtime.ServerMetadata @@ -291,6 +325,31 @@ func RegisterInjectiveExchangeRPCHandlerServer(ctx context.Context, mux *runtime }) + mux.Handle("POST", pattern_InjectiveExchangeRPC_PrepareEip712_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/injective_exchange_rpc.InjectiveExchangeRPC/PrepareEip712", runtime.WithHTTPPathPattern("/injective_exchange_rpc.InjectiveExchangeRPC/PrepareEip712")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_InjectiveExchangeRPC_PrepareEip712_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_InjectiveExchangeRPC_PrepareEip712_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("POST", pattern_InjectiveExchangeRPC_BroadcastTx_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -476,6 +535,28 @@ func RegisterInjectiveExchangeRPCHandlerClient(ctx context.Context, mux *runtime }) + mux.Handle("POST", pattern_InjectiveExchangeRPC_PrepareEip712_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/injective_exchange_rpc.InjectiveExchangeRPC/PrepareEip712", runtime.WithHTTPPathPattern("/injective_exchange_rpc.InjectiveExchangeRPC/PrepareEip712")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_InjectiveExchangeRPC_PrepareEip712_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_InjectiveExchangeRPC_PrepareEip712_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("POST", pattern_InjectiveExchangeRPC_BroadcastTx_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -572,6 +653,8 @@ var ( pattern_InjectiveExchangeRPC_PrepareTx_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"injective_exchange_rpc.InjectiveExchangeRPC", "PrepareTx"}, "")) + pattern_InjectiveExchangeRPC_PrepareEip712_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"injective_exchange_rpc.InjectiveExchangeRPC", "PrepareEip712"}, "")) + pattern_InjectiveExchangeRPC_BroadcastTx_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"injective_exchange_rpc.InjectiveExchangeRPC", "BroadcastTx"}, "")) pattern_InjectiveExchangeRPC_PrepareCosmosTx_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"injective_exchange_rpc.InjectiveExchangeRPC", "PrepareCosmosTx"}, "")) @@ -586,6 +669,8 @@ var ( forward_InjectiveExchangeRPC_PrepareTx_0 = runtime.ForwardResponseMessage + forward_InjectiveExchangeRPC_PrepareEip712_0 = runtime.ForwardResponseMessage + forward_InjectiveExchangeRPC_BroadcastTx_0 = runtime.ForwardResponseMessage forward_InjectiveExchangeRPC_PrepareCosmosTx_0 = runtime.ForwardResponseMessage diff --git a/exchange/exchange_rpc/pb/injective_exchange_rpc.proto b/exchange/exchange_rpc/pb/injective_exchange_rpc.proto index 54536b59..5c6a877d 100644 --- a/exchange/exchange_rpc/pb/injective_exchange_rpc.proto +++ b/exchange/exchange_rpc/pb/injective_exchange_rpc.proto @@ -17,6 +17,8 @@ service InjectiveExchangeRPC { rpc GetTx (GetTxRequest) returns (GetTxResponse); // PrepareTx generates a Web3-signable body for a Cosmos transaction rpc PrepareTx (PrepareTxRequest) returns (PrepareTxResponse); + // prepareEip712 generates EIP712 for an Injective Message + rpc PrepareEip712 (PrepareEip712Request) returns (PrepareEip712Response); // BroadcastTx broadcasts a signed Web3 transaction rpc BroadcastTx (BroadcastTxRequest) returns (BroadcastTxResponse); // PrepareCosmosTx generates a Web3-signable body for a Cosmos transaction @@ -67,7 +69,7 @@ message PrepareTxRequest { CosmosTxFee fee = 6; // List of Cosmos proto3-encoded Msgs to include in a single tx repeated bytes msgs = 7; - // The wrapper of the EIP712 message, V1 or V2 + // The wrapper of the EIP712 message, 'v1'/'v2' or 'V1'/'V2' string eip712_wrapper = 8; } @@ -103,6 +105,32 @@ message PrepareTxResponse { string fee_payer_sig = 6; } +message PrepareEip712Request { + // Specify chainID for the target tx + uint64 chain_id = 1; + // Specify Ethereum address of a signer + string signer_address = 2; + // Sequence number of the transaction signer + uint64 sequence = 3; + // Account number of the transaction signer + uint64 account_number = 4; + // Textual memo information to attach with tx + string memo = 5; + // Block height until which the transaction is valid. + uint64 timeout_height = 6; + // Transaction fee details. + CosmosTxFee fee = 7; + // List of Cosmos proto3-encoded Msgs to include in a single tx + repeated bytes msgs = 8; + // The wrapper of the EIP712 message, 'v1'/'v2' or 'V1'/'V2' + string eip712_wrapper = 9; +} + +message PrepareEip712Response { + // EIP712-compatible message suitable for signing with eth_signTypedData_v4 + string data = 1; +} + message BroadcastTxRequest { // Specify Web3 chainID (from prepateTx) for the target Tx uint64 chain_id = 1; diff --git a/exchange/explorer_rpc/pb/goadesign_goagen_injective_explorer_rpc.pb.go b/exchange/explorer_rpc/pb/goadesign_goagen_injective_explorer_rpc.pb.go index d59b7740..c63dc9a5 100644 --- a/exchange/explorer_rpc/pb/goadesign_goagen_injective_explorer_rpc.pb.go +++ b/exchange/explorer_rpc/pb/goadesign_goagen_injective_explorer_rpc.pb.go @@ -8,7 +8,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.30.0 -// protoc v3.19.4 +// protoc v3.21.12 // source: goadesign_goagen_injective_explorer_rpc.proto package injective_explorer_rpcpb @@ -1679,7 +1679,8 @@ type TxData struct { // transaction event logs Logs []byte `protobuf:"bytes,11,opt,name=logs,proto3" json:"logs,omitempty"` // peggy bridge claim id, non-zero if tx contains MsgDepositClaim - ClaimIds []int64 `protobuf:"zigzag64,12,rep,packed,name=claim_ids,json=claimIds,proto3" json:"claim_ids,omitempty"` + ClaimIds []int64 `protobuf:"zigzag64,12,rep,packed,name=claim_ids,json=claimIds,proto3" json:"claim_ids,omitempty"` + Signatures []*Signature `protobuf:"bytes,13,rep,name=signatures,proto3" json:"signatures,omitempty"` } func (x *TxData) Reset() { @@ -1798,6 +1799,13 @@ func (x *TxData) GetClaimIds() []int64 { return nil } +func (x *TxData) GetSignatures() []*Signature { + if x != nil { + return x.Signatures + } + return nil +} + type GetValidatorsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -6253,6 +6261,164 @@ func (x *StreamBlocksResponse) GetTimestamp() string { return "" } +type GetStatsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *GetStatsRequest) Reset() { + *x = GetStatsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_goadesign_goagen_injective_explorer_rpc_proto_msgTypes[74] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetStatsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetStatsRequest) ProtoMessage() {} + +func (x *GetStatsRequest) ProtoReflect() protoreflect.Message { + mi := &file_goadesign_goagen_injective_explorer_rpc_proto_msgTypes[74] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetStatsRequest.ProtoReflect.Descriptor instead. +func (*GetStatsRequest) Descriptor() ([]byte, []int) { + return file_goadesign_goagen_injective_explorer_rpc_proto_rawDescGZIP(), []int{74} +} + +type GetStatsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Total of unique addresses + Addresses uint64 `protobuf:"varint,1,opt,name=addresses,proto3" json:"addresses,omitempty"` + // Total number of assets + Assets uint64 `protobuf:"varint,2,opt,name=assets,proto3" json:"assets,omitempty"` + // Total circulating supply of INJ + InjSupply uint64 `protobuf:"varint,3,opt,name=inj_supply,json=injSupply,proto3" json:"inj_supply,omitempty"` + // Avg of TX per second in the past 24hs + TxsPs24H uint64 `protobuf:"varint,4,opt,name=txs_ps24_h,json=txsPs24H,proto3" json:"txs_ps24_h,omitempty"` + // Avg of TX per second in the 100 blocks + TxsPs100B uint64 `protobuf:"varint,5,opt,name=txs_ps100_b,json=txsPs100B,proto3" json:"txs_ps100_b,omitempty"` + // Total number of TXs + TxsTotal uint64 `protobuf:"varint,6,opt,name=txs_total,json=txsTotal,proto3" json:"txs_total,omitempty"` + // Total number of TXs in the past 24hs + Txs24H uint64 `protobuf:"varint,7,opt,name=txs24_h,json=txs24H,proto3" json:"txs24_h,omitempty"` + // Total number of TXs in the past 30 days + Txs30D uint64 `protobuf:"varint,8,opt,name=txs30_d,json=txs30D,proto3" json:"txs30_d,omitempty"` + // Number of blocks produced in the past 24hs + BlockCount24H uint64 `protobuf:"varint,9,opt,name=block_count24_h,json=blockCount24H,proto3" json:"block_count24_h,omitempty"` +} + +func (x *GetStatsResponse) Reset() { + *x = GetStatsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_goadesign_goagen_injective_explorer_rpc_proto_msgTypes[75] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetStatsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetStatsResponse) ProtoMessage() {} + +func (x *GetStatsResponse) ProtoReflect() protoreflect.Message { + mi := &file_goadesign_goagen_injective_explorer_rpc_proto_msgTypes[75] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetStatsResponse.ProtoReflect.Descriptor instead. +func (*GetStatsResponse) Descriptor() ([]byte, []int) { + return file_goadesign_goagen_injective_explorer_rpc_proto_rawDescGZIP(), []int{75} +} + +func (x *GetStatsResponse) GetAddresses() uint64 { + if x != nil { + return x.Addresses + } + return 0 +} + +func (x *GetStatsResponse) GetAssets() uint64 { + if x != nil { + return x.Assets + } + return 0 +} + +func (x *GetStatsResponse) GetInjSupply() uint64 { + if x != nil { + return x.InjSupply + } + return 0 +} + +func (x *GetStatsResponse) GetTxsPs24H() uint64 { + if x != nil { + return x.TxsPs24H + } + return 0 +} + +func (x *GetStatsResponse) GetTxsPs100B() uint64 { + if x != nil { + return x.TxsPs100B + } + return 0 +} + +func (x *GetStatsResponse) GetTxsTotal() uint64 { + if x != nil { + return x.TxsTotal + } + return 0 +} + +func (x *GetStatsResponse) GetTxs24H() uint64 { + if x != nil { + return x.Txs24H + } + return 0 +} + +func (x *GetStatsResponse) GetTxs30D() uint64 { + if x != nil { + return x.Txs30D + } + return 0 +} + +func (x *GetStatsResponse) GetBlockCount24H() uint64 { + if x != nil { + return x.BlockCount24H + } + return 0 +} + var File_goadesign_goagen_injective_explorer_rpc_proto protoreflect.FileDescriptor var file_goadesign_goagen_injective_explorer_rpc_proto_rawDesc = []byte{ @@ -6491,7 +6657,7 @@ var file_goadesign_goagen_injective_explorer_rpc_proto_rawDesc = []byte{ 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x78, 0x44, 0x61, 0x74, 0x61, 0x52, 0x03, 0x74, 0x78, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0xd3, 0x02, 0x0a, 0x06, 0x54, 0x78, 0x44, 0x61, 0x74, 0x61, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0x96, 0x03, 0x0a, 0x06, 0x54, 0x78, 0x44, 0x61, 0x74, 0x61, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x75, 0x6d, @@ -6512,817 +6678,846 @@ var file_goadesign_goagen_injective_explorer_rpc_proto_rawDesc = []byte{ 0x74, 0x78, 0x4d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x6f, 0x67, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x6c, 0x6f, 0x67, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, - 0x12, 0x52, 0x08, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x49, 0x64, 0x73, 0x22, 0x16, 0x0a, 0x14, 0x47, - 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x22, 0x74, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, - 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0c, 0x0a, 0x01, - 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x01, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, - 0x72, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6d, - 0x73, 0x67, 0x12, 0x35, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x21, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, - 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, - 0x74, 0x6f, 0x72, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xb5, 0x07, 0x0a, 0x09, 0x56, 0x61, - 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x6f, 0x6e, 0x69, 0x6b, - 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x6f, 0x6e, 0x69, 0x6b, 0x65, - 0x72, 0x12, 0x29, 0x0a, 0x10, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, - 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x2b, 0x0a, 0x11, - 0x63, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, - 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, - 0x75, 0x73, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x6a, 0x61, 0x69, - 0x6c, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x6a, 0x61, 0x69, 0x6c, 0x65, - 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x11, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x6f, 0x6b, - 0x65, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x6f, 0x6b, 0x65, 0x6e, - 0x73, 0x12, 0x29, 0x0a, 0x10, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x73, - 0x68, 0x61, 0x72, 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x65, 0x6c, - 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x68, 0x61, 0x72, 0x65, 0x73, 0x12, 0x4e, 0x0a, 0x0b, - 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x2c, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, - 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, - 0x61, 0x74, 0x6f, 0x72, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, - 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, - 0x18, 0x0a, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0f, 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, - 0x67, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x75, 0x6e, 0x62, 0x6f, 0x6e, - 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0d, 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x27, - 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x61, 0x74, - 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x12, 0x2e, 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x6d, 0x69, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x0d, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x4d, 0x61, 0x78, 0x52, 0x61, 0x74, 0x65, 0x12, 0x3b, 0x0a, 0x1a, 0x63, 0x6f, 0x6d, 0x6d, 0x69, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, 0x63, 0x6f, 0x6d, - 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x78, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x52, 0x61, 0x74, 0x65, 0x12, 0x34, 0x0a, 0x16, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0f, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, - 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x70, 0x72, - 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, - 0x18, 0x11, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x12, 0x16, - 0x0a, 0x06, 0x6d, 0x69, 0x73, 0x73, 0x65, 0x64, 0x18, 0x12, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, - 0x6d, 0x69, 0x73, 0x73, 0x65, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x12, 0x41, 0x0a, 0x07, 0x75, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x18, - 0x14, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, - 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x56, - 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x52, 0x07, - 0x75, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x4e, 0x0a, 0x0f, 0x73, 0x6c, 0x61, 0x73, 0x68, - 0x69, 0x6e, 0x67, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x15, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x25, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, - 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x69, - 0x6e, 0x67, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x0e, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, - 0x67, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x75, 0x70, 0x74, 0x69, 0x6d, - 0x65, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, 0x16, 0x20, 0x01, - 0x28, 0x01, 0x52, 0x10, 0x75, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, - 0x74, 0x61, 0x67, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x75, 0x72, - 0x6c, 0x18, 0x17, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x72, - 0x6c, 0x22, 0xc8, 0x01, 0x0a, 0x14, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x44, - 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x6f, - 0x6e, 0x69, 0x6b, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x6f, 0x6e, - 0x69, 0x6b, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, - 0x12, 0x18, 0x0a, 0x07, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x73, 0x65, - 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x6f, - 0x6e, 0x74, 0x61, 0x63, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, - 0x1b, 0x0a, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x72, 0x6c, 0x22, 0x4c, 0x0a, 0x0f, - 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x12, + 0x12, 0x52, 0x08, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x49, 0x64, 0x73, 0x12, 0x41, 0x0a, 0x0a, 0x73, + 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x21, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, + 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, + 0x72, 0x65, 0x52, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x22, 0x16, + 0x0a, 0x14, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x74, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, + 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x0c, 0x0a, 0x01, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x01, 0x73, 0x12, 0x16, 0x0a, + 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, + 0x72, 0x72, 0x6d, 0x73, 0x67, 0x12, 0x35, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, + 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x56, 0x61, 0x6c, + 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xb5, 0x07, 0x0a, + 0x09, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x6f, + 0x6e, 0x69, 0x6b, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x6f, 0x6e, + 0x69, 0x6b, 0x65, 0x72, 0x12, 0x29, 0x0a, 0x10, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, + 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, + 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, + 0x2b, 0x0a, 0x11, 0x63, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x5f, 0x61, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x6f, 0x6e, 0x73, + 0x65, 0x6e, 0x73, 0x75, 0x73, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x16, 0x0a, 0x06, + 0x6a, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x6a, 0x61, + 0x69, 0x6c, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x11, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, + 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, + 0x72, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, + 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x68, 0x61, 0x72, 0x65, 0x73, 0x12, + 0x4e, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x56, 0x61, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x29, 0x0a, 0x10, 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x68, 0x65, 0x69, + 0x67, 0x68, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0f, 0x75, 0x6e, 0x62, 0x6f, 0x6e, + 0x64, 0x69, 0x6e, 0x67, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x75, 0x6e, + 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0d, 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d, + 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, + 0x72, 0x61, 0x74, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x6d, + 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x12, 0x2e, 0x0a, 0x13, 0x63, 0x6f, + 0x6d, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x61, 0x74, + 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x78, 0x52, 0x61, 0x74, 0x65, 0x12, 0x3b, 0x0a, 0x1a, 0x63, 0x6f, + 0x6d, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x63, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, + 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x78, 0x43, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x52, 0x61, 0x74, 0x65, 0x12, 0x34, 0x0a, 0x16, 0x63, 0x6f, 0x6d, 0x6d, 0x69, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, + 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a, + 0x08, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x08, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x69, 0x67, + 0x6e, 0x65, 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x73, 0x69, 0x67, 0x6e, 0x65, + 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x69, 0x73, 0x73, 0x65, 0x64, 0x18, 0x12, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x06, 0x6d, 0x69, 0x73, 0x73, 0x65, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x41, 0x0a, 0x07, 0x75, 0x70, 0x74, 0x69, 0x6d, + 0x65, 0x73, 0x18, 0x14, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, + 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, + 0x63, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x70, 0x74, 0x69, 0x6d, + 0x65, 0x52, 0x07, 0x75, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x4e, 0x0a, 0x0f, 0x73, 0x6c, + 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x15, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, + 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x6c, 0x61, + 0x73, 0x68, 0x69, 0x6e, 0x67, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x0e, 0x73, 0x6c, 0x61, 0x73, + 0x68, 0x69, 0x6e, 0x67, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x75, 0x70, + 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, + 0x16, 0x20, 0x01, 0x28, 0x01, 0x52, 0x10, 0x75, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x50, 0x65, 0x72, + 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, + 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x17, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6d, 0x61, 0x67, + 0x65, 0x55, 0x72, 0x6c, 0x22, 0xc8, 0x01, 0x0a, 0x14, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x6f, 0x72, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, + 0x07, 0x6d, 0x6f, 0x6e, 0x69, 0x6b, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x6d, 0x6f, 0x6e, 0x69, 0x6b, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x74, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x12, 0x29, 0x0a, + 0x10, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, + 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, + 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x72, 0x6c, 0x22, + 0x4c, 0x0a, 0x0f, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x70, 0x74, 0x69, + 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xe0, 0x01, + 0x0a, 0x0d, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, - 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xe0, 0x01, 0x0a, 0x0d, 0x53, - 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x0c, - 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, - 0x27, 0x0a, 0x0f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x54, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, - 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, - 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x05, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, - 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, - 0x12, 0x16, 0x0a, 0x06, 0x6a, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x6a, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x69, 0x73, 0x73, - 0x65, 0x64, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x0c, 0x6d, 0x69, 0x73, 0x73, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x22, 0x2f, 0x0a, - 0x13, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x73, - 0x0a, 0x14, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0c, 0x0a, 0x01, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x01, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x12, 0x35, 0x0a, 0x04, - 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x69, 0x6e, 0x6a, - 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, - 0x72, 0x70, 0x63, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x04, 0x64, - 0x61, 0x74, 0x61, 0x22, 0x35, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, - 0x74, 0x6f, 0x72, 0x55, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x7f, 0x0a, 0x1a, 0x47, 0x65, - 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x70, 0x74, 0x69, 0x6d, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0c, 0x0a, 0x01, 0x73, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x01, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x12, 0x3b, - 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x69, + 0x65, 0x72, 0x12, 0x27, 0x0a, 0x0f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x74, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x62, 0x6c, 0x6f, + 0x63, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x61, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x72, + 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, + 0x73, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x6a, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x6a, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x6d, + 0x69, 0x73, 0x73, 0x65, 0x64, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x0c, 0x6d, 0x69, 0x73, 0x73, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, + 0x22, 0x2f, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x22, 0x73, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, + 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0c, 0x0a, 0x01, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x01, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, + 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x12, + 0x35, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, + 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, + 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, + 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x35, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, + 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x7f, 0x0a, + 0x1a, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x70, 0x74, + 0x69, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0c, 0x0a, 0x01, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x01, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72, + 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, + 0x67, 0x12, 0x3b, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x27, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, + 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x6f, 0x72, 0x55, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xa3, + 0x02, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x54, 0x78, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x16, 0x0a, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x66, 0x74, 0x65, + 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0x12, 0x14, + 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, + 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, + 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x6f, + 0x64, 0x75, 0x6c, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x6e, 0x75, 0x6d, + 0x62, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x4e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x6f, 0x5f, 0x6e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x12, 0x52, 0x08, 0x74, 0x6f, 0x4e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, + 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x12, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x22, 0x7c, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x54, 0x78, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, + 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, + 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x12, 0x32, + 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, - 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x55, - 0x70, 0x74, 0x69, 0x6d, 0x65, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xa3, 0x02, 0x0a, 0x0d, - 0x47, 0x65, 0x74, 0x54, 0x78, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, - 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x62, - 0x65, 0x66, 0x6f, 0x72, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6c, - 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, - 0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x04, 0x73, 0x6b, 0x69, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x6f, 0x64, - 0x75, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x6f, 0x64, 0x75, 0x6c, - 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x4e, 0x75, 0x6d, 0x62, - 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x6f, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x12, 0x52, 0x08, 0x74, 0x6f, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, - 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, - 0x01, 0x28, 0x12, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, - 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x12, - 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x22, 0x7c, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x54, 0x78, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, - 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x61, 0x67, - 0x69, 0x6e, 0x67, 0x52, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x12, 0x32, 0x0a, 0x04, 0x64, - 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x69, 0x6e, 0x6a, 0x65, - 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, - 0x70, 0x63, 0x2e, 0x54, 0x78, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, - 0x2a, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x54, 0x78, 0x42, 0x79, 0x54, 0x78, 0x48, 0x61, 0x73, 0x68, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x22, 0x77, 0x0a, 0x15, 0x47, - 0x65, 0x74, 0x54, 0x78, 0x42, 0x79, 0x54, 0x78, 0x48, 0x61, 0x73, 0x68, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0c, 0x0a, 0x01, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x01, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x12, 0x38, 0x0a, 0x04, 0x64, 0x61, - 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, + 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x78, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, + 0x74, 0x61, 0x22, 0x2a, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x54, 0x78, 0x42, 0x79, 0x54, 0x78, 0x48, + 0x61, 0x73, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x61, + 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x22, 0x77, + 0x0a, 0x15, 0x47, 0x65, 0x74, 0x54, 0x78, 0x42, 0x79, 0x54, 0x78, 0x48, 0x61, 0x73, 0x68, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0c, 0x0a, 0x01, 0x73, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x01, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x12, 0x38, 0x0a, + 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x69, 0x6e, + 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, + 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x78, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x44, 0x61, 0x74, + 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x79, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x50, 0x65, + 0x67, 0x67, 0x79, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x54, 0x78, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, + 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, + 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, + 0x0a, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6b, + 0x69, 0x70, 0x22, 0x5a, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x50, 0x65, 0x67, 0x67, 0x79, 0x44, 0x65, + 0x70, 0x6f, 0x73, 0x69, 0x74, 0x54, 0x78, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x3c, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x26, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, + 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x65, 0x67, 0x67, 0x79, 0x44, 0x65, + 0x70, 0x6f, 0x73, 0x69, 0x74, 0x54, 0x78, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x22, 0xf9, + 0x02, 0x0a, 0x0e, 0x50, 0x65, 0x67, 0x67, 0x79, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x54, + 0x78, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x63, + 0x65, 0x69, 0x76, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x63, + 0x65, 0x69, 0x76, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x6e, + 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x65, 0x76, 0x65, 0x6e, + 0x74, 0x4e, 0x6f, 0x6e, 0x63, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, + 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x65, 0x76, + 0x65, 0x6e, 0x74, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, + 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, + 0x74, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x12, 0x31, 0x0a, 0x14, 0x6f, 0x72, 0x63, 0x68, 0x65, + 0x73, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, + 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, + 0x61, 0x74, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, + 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x11, 0x52, 0x09, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x1b, 0x0a, 0x09, 0x74, 0x78, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x08, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x0a, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x7c, 0x0a, 0x1c, 0x47, 0x65, + 0x74, 0x50, 0x65, 0x67, 0x67, 0x79, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, + 0x54, 0x78, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, + 0x6e, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x6e, 0x64, + 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x12, 0x14, + 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, + 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x22, 0x60, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x50, + 0x65, 0x67, 0x67, 0x79, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x54, 0x78, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x05, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, - 0x63, 0x2e, 0x54, 0x78, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, - 0x64, 0x61, 0x74, 0x61, 0x22, 0x79, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x50, 0x65, 0x67, 0x67, 0x79, - 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x54, 0x78, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x63, 0x2e, 0x50, 0x65, 0x67, 0x67, 0x79, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, + 0x6c, 0x54, 0x78, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x22, 0x87, 0x04, 0x0a, 0x11, 0x50, + 0x65, 0x67, 0x67, 0x79, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x54, 0x78, + 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x63, 0x65, + 0x69, 0x76, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x63, 0x65, + 0x69, 0x76, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, + 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x64, 0x65, 0x6e, + 0x6f, 0x6d, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x66, 0x65, 0x65, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x46, 0x65, + 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x78, + 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x6f, 0x75, 0x74, 0x67, 0x6f, + 0x69, 0x6e, 0x67, 0x54, 0x78, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x62, 0x61, 0x74, 0x63, 0x68, + 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, + 0x62, 0x61, 0x74, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x1f, 0x0a, 0x0b, + 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x0a, 0x62, 0x61, 0x74, 0x63, 0x68, 0x4e, 0x6f, 0x6e, 0x63, 0x65, 0x12, 0x31, 0x0a, + 0x14, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x6f, 0x72, 0x63, + 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x4e, 0x6f, 0x6e, 0x63, + 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, + 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x65, + 0x69, 0x67, 0x68, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0c, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, + 0x61, 0x69, 0x6d, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x11, 0x52, 0x09, + 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x78, 0x5f, + 0x68, 0x61, 0x73, 0x68, 0x65, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x74, 0x78, + 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, + 0x5f, 0x61, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x64, 0x41, 0x74, 0x22, 0xf4, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x49, 0x42, 0x43, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x78, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x63, - 0x65, 0x69, 0x76, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, - 0x6b, 0x69, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x22, - 0x5a, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x50, 0x65, 0x67, 0x67, 0x79, 0x44, 0x65, 0x70, 0x6f, 0x73, - 0x69, 0x74, 0x54, 0x78, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, - 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x69, - 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, - 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x65, 0x67, 0x67, 0x79, 0x44, 0x65, 0x70, 0x6f, 0x73, - 0x69, 0x74, 0x54, 0x78, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x22, 0xf9, 0x02, 0x0a, 0x0e, - 0x50, 0x65, 0x67, 0x67, 0x79, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x54, 0x78, 0x12, 0x16, - 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, - 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, - 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x6e, 0x6f, 0x6e, 0x63, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x4e, 0x6f, - 0x6e, 0x63, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x65, 0x69, - 0x67, 0x68, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x65, 0x76, 0x65, 0x6e, 0x74, - 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x14, - 0x0a, 0x05, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x64, - 0x65, 0x6e, 0x6f, 0x6d, 0x12, 0x31, 0x0a, 0x14, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, - 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x13, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, - 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x0a, - 0x0a, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x11, 0x52, 0x09, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, - 0x74, 0x78, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x08, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x7c, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x50, 0x65, - 0x67, 0x67, 0x79, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x54, 0x78, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, + 0x65, 0x69, 0x76, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x72, 0x63, 0x5f, 0x63, 0x68, 0x61, + 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x72, 0x63, 0x43, + 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x72, 0x63, 0x5f, 0x70, 0x6f, + 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x72, 0x63, 0x50, 0x6f, 0x72, + 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x65, 0x73, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, + 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x43, 0x68, 0x61, + 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x72, + 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x65, 0x73, 0x74, 0x50, 0x6f, 0x72, + 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x11, + 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x22, 0x58, 0x0a, 0x19, 0x47, + 0x65, 0x74, 0x49, 0x42, 0x43, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x78, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, + 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, + 0x2e, 0x49, 0x42, 0x43, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x78, 0x52, 0x05, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x22, 0x9e, 0x04, 0x0a, 0x0d, 0x49, 0x42, 0x43, 0x54, 0x72, 0x61, + 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x78, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6c, - 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, - 0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x04, 0x73, 0x6b, 0x69, 0x70, 0x22, 0x60, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x50, 0x65, 0x67, 0x67, - 0x79, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x54, 0x78, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, - 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, - 0x65, 0x67, 0x67, 0x79, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x54, 0x78, - 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x22, 0x87, 0x04, 0x0a, 0x11, 0x50, 0x65, 0x67, 0x67, - 0x79, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x54, 0x78, 0x12, 0x16, 0x0a, - 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, - 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, - 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, - 0x72, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x65, 0x6e, - 0x6f, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x12, - 0x1d, 0x0a, 0x0a, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x66, 0x65, 0x65, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x46, 0x65, 0x65, 0x12, 0x24, - 0x0a, 0x0e, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x78, 0x5f, 0x69, 0x64, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, - 0x54, 0x78, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x74, 0x69, - 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x62, 0x61, 0x74, - 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x62, 0x61, 0x74, - 0x63, 0x68, 0x5f, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, - 0x62, 0x61, 0x74, 0x63, 0x68, 0x4e, 0x6f, 0x6e, 0x63, 0x65, 0x12, 0x31, 0x0a, 0x14, 0x6f, 0x72, - 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, - 0x73, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, - 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1f, 0x0a, - 0x0b, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x0a, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x0a, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x4e, 0x6f, 0x6e, 0x63, 0x65, 0x12, 0x21, - 0x0a, 0x0c, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x0b, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x65, 0x69, 0x67, 0x68, - 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x61, 0x69, 0x6d, - 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x11, 0x52, 0x09, 0x63, 0x6c, 0x61, - 0x69, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x78, 0x5f, 0x68, 0x61, 0x73, - 0x68, 0x65, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x74, 0x78, 0x48, 0x61, 0x73, - 0x68, 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, - 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, - 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, - 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, - 0x74, 0x22, 0xf4, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x49, 0x42, 0x43, 0x54, 0x72, 0x61, 0x6e, - 0x73, 0x66, 0x65, 0x72, 0x54, 0x78, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, - 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, - 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, - 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x72, 0x63, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, - 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x72, 0x63, 0x43, 0x68, 0x61, 0x6e, - 0x6e, 0x65, 0x6c, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x72, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x72, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x21, - 0x0a, 0x0c, 0x64, 0x65, 0x73, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, - 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x65, 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x14, - 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, - 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x22, 0x58, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x49, - 0x42, 0x43, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x78, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, - 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x49, 0x42, - 0x43, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x78, 0x52, 0x05, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x22, 0x9e, 0x04, 0x0a, 0x0d, 0x49, 0x42, 0x43, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, - 0x65, 0x72, 0x54, 0x78, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, - 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0d, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, - 0x12, 0x29, 0x0a, 0x10, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x70, 0x6f, 0x72, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x65, 0x73, 0x74, - 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x2f, 0x0a, 0x13, 0x64, - 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, - 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x16, 0x0a, 0x06, - 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, - 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x69, - 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0d, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x48, 0x65, 0x69, 0x67, 0x68, - 0x74, 0x12, 0x2b, 0x0a, 0x11, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x74, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x52, 0x10, 0x74, 0x69, - 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x27, - 0x0a, 0x0f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, - 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x53, - 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x64, 0x61, 0x74, 0x61, 0x5f, - 0x68, 0x65, 0x78, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x64, 0x61, 0x74, 0x61, 0x48, - 0x65, 0x78, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x78, 0x5f, 0x68, - 0x61, 0x73, 0x68, 0x65, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x74, 0x78, 0x48, - 0x61, 0x73, 0x68, 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, - 0x5f, 0x61, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, - 0x61, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x64, 0x41, 0x74, 0x22, 0x69, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x57, 0x61, 0x73, 0x6d, 0x43, 0x6f, - 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, - 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, - 0x12, 0x1f, 0x0a, 0x0b, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x4e, 0x75, 0x6d, 0x62, 0x65, - 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x6f, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x12, 0x52, 0x08, 0x74, 0x6f, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x84, - 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x57, 0x61, 0x73, 0x6d, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, - 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, - 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, - 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x12, - 0x34, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, - 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, - 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x57, 0x61, 0x73, 0x6d, 0x43, 0x6f, 0x64, 0x65, 0x52, - 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xe2, 0x03, 0x0a, 0x08, 0x57, 0x61, 0x73, 0x6d, 0x43, 0x6f, - 0x64, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x06, 0x63, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x74, - 0x78, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x78, - 0x48, 0x61, 0x73, 0x68, 0x12, 0x3c, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, - 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, - 0x75, 0x6d, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, - 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, - 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x12, 0x4a, 0x0a, 0x0a, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, - 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, - 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x52, 0x0a, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, - 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x64, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x1b, 0x0a, - 0x09, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x63, 0x6f, 0x64, 0x65, 0x56, 0x69, 0x65, 0x77, 0x12, 0x22, 0x0a, 0x0c, 0x69, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x74, 0x69, 0x61, 0x74, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x69, 0x61, 0x74, 0x65, 0x73, 0x12, 0x18, - 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x64, 0x65, - 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0a, 0x63, - 0x6f, 0x64, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x72, 0x6f, - 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0a, - 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x49, 0x64, 0x22, 0x3c, 0x0a, 0x08, 0x43, 0x68, - 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, - 0x74, 0x68, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x6c, 0x67, 0x6f, 0x72, - 0x69, 0x74, 0x68, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x22, 0x4f, 0x0a, 0x12, 0x43, 0x6f, 0x6e, 0x74, - 0x72, 0x61, 0x63, 0x74, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1f, - 0x0a, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x11, 0x52, 0x0a, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x31, 0x0a, 0x16, 0x47, 0x65, 0x74, - 0x57, 0x61, 0x73, 0x6d, 0x43, 0x6f, 0x64, 0x65, 0x42, 0x79, 0x49, 0x44, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x12, 0x52, 0x06, 0x63, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x22, 0xf1, 0x03, 0x0a, - 0x17, 0x47, 0x65, 0x74, 0x57, 0x61, 0x73, 0x6d, 0x43, 0x6f, 0x64, 0x65, 0x42, 0x79, 0x49, 0x44, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x6f, 0x64, 0x65, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x63, 0x6f, 0x64, 0x65, 0x49, - 0x64, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x78, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x12, 0x3c, 0x0a, 0x08, 0x63, 0x68, - 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x69, - 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, - 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x52, 0x08, - 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x72, - 0x61, 0x63, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, - 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x4a, 0x0a, 0x0a, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, - 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x69, 0x6e, 0x6a, + 0x09, 0x52, 0x08, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x25, 0x0a, 0x0e, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x68, 0x61, 0x6e, + 0x6e, 0x65, 0x6c, 0x12, 0x29, 0x0a, 0x10, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x64, + 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x2f, + 0x0a, 0x13, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x68, + 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x64, 0x65, 0x73, + 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, + 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x65, 0x6e, 0x6f, 0x6d, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x12, 0x25, 0x0a, + 0x0e, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x48, 0x65, + 0x69, 0x67, 0x68, 0x74, 0x12, 0x2b, 0x0a, 0x11, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, + 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x10, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x73, 0x65, 0x71, 0x75, + 0x65, 0x6e, 0x63, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x70, 0x61, 0x63, 0x6b, + 0x65, 0x74, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x64, 0x61, + 0x74, 0x61, 0x5f, 0x68, 0x65, 0x78, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x64, 0x61, + 0x74, 0x61, 0x48, 0x65, 0x78, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0d, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x74, + 0x78, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x65, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, + 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x69, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x57, 0x61, 0x73, + 0x6d, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, + 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, 0x69, + 0x6d, 0x69, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x6e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x4e, 0x75, + 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x6f, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, + 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x12, 0x52, 0x08, 0x74, 0x6f, 0x4e, 0x75, 0x6d, 0x62, 0x65, + 0x72, 0x22, 0x84, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x57, 0x61, 0x73, 0x6d, 0x43, 0x6f, 0x64, + 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x06, 0x70, 0x61, + 0x67, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, - 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x50, 0x65, 0x72, 0x6d, - 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, - 0x61, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x64, 0x65, 0x53, 0x63, 0x68, - 0x65, 0x6d, 0x61, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x69, 0x65, 0x77, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x64, 0x65, 0x56, 0x69, 0x65, 0x77, - 0x12, 0x22, 0x0a, 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x69, 0x61, 0x74, 0x65, 0x73, - 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x69, - 0x61, 0x74, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x18, - 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x1f, - 0x0a, 0x0b, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x0c, 0x20, - 0x01, 0x28, 0x12, 0x52, 0x0a, 0x63, 0x6f, 0x64, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, - 0x1f, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x0d, - 0x20, 0x01, 0x28, 0x12, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x49, 0x64, - 0x22, 0xd1, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x57, 0x61, 0x73, 0x6d, 0x43, 0x6f, 0x6e, 0x74, - 0x72, 0x61, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, - 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, 0x69, 0x6d, - 0x69, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x12, 0x52, 0x06, 0x63, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x66, - 0x72, 0x6f, 0x6d, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x12, - 0x52, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, - 0x74, 0x6f, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x12, 0x52, - 0x08, 0x74, 0x6f, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x73, 0x73, - 0x65, 0x74, 0x73, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, - 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6b, - 0x69, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x12, 0x52, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x12, 0x14, - 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, - 0x61, 0x62, 0x65, 0x6c, 0x22, 0x8c, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x57, 0x61, 0x73, 0x6d, - 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x36, 0x0a, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1e, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, - 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, - 0x67, 0x52, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x12, 0x38, 0x0a, 0x04, 0x64, 0x61, 0x74, - 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, + 0x72, 0x70, 0x63, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x70, 0x61, 0x67, 0x69, + 0x6e, 0x67, 0x12, 0x34, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x20, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, + 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x57, 0x61, 0x73, 0x6d, 0x43, 0x6f, + 0x64, 0x65, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xe2, 0x03, 0x0a, 0x08, 0x57, 0x61, 0x73, + 0x6d, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x63, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x17, + 0x0a, 0x07, 0x74, 0x78, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x12, 0x3c, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, + 0x73, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x69, 0x6e, 0x6a, 0x65, + 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, + 0x70, 0x63, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x52, 0x08, 0x63, 0x68, 0x65, + 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x41, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6f, 0x6e, + 0x74, 0x72, 0x61, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x12, 0x4a, 0x0a, 0x0a, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, - 0x2e, 0x57, 0x61, 0x73, 0x6d, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x52, 0x04, 0x64, - 0x61, 0x74, 0x61, 0x22, 0xe9, 0x04, 0x0a, 0x0c, 0x57, 0x61, 0x73, 0x6d, 0x43, 0x6f, 0x6e, 0x74, - 0x72, 0x61, 0x63, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, - 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x78, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x12, 0x18, 0x0a, - 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x65, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x65, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x69, 0x61, - 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x69, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x74, 0x69, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x21, 0x0a, 0x0c, - 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x69, 0x6e, 0x69, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, - 0x28, 0x0a, 0x10, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x64, - 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x45, - 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x3a, 0x0a, 0x05, 0x66, 0x75, 0x6e, - 0x64, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, - 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, - 0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x46, 0x75, 0x6e, 0x64, 0x52, 0x05, - 0x66, 0x75, 0x6e, 0x64, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, - 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x63, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x14, - 0x0a, 0x05, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x12, 0x36, 0x0a, 0x17, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, - 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, - 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x4d, 0x69, - 0x67, 0x72, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x27, 0x0a, 0x0f, - 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, - 0x0d, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x4e, - 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, - 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, - 0x79, 0x70, 0x65, 0x12, 0x49, 0x0a, 0x0d, 0x63, 0x77, 0x32, 0x30, 0x5f, 0x6d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x69, 0x6e, 0x6a, + 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, + 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x64, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, + 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x64, 0x65, 0x56, 0x69, 0x65, 0x77, 0x12, 0x22, 0x0a, + 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x69, 0x61, 0x74, 0x65, 0x73, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x69, 0x61, 0x74, 0x65, + 0x73, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x0b, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x63, + 0x6f, 0x64, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x12, + 0x52, 0x0a, 0x63, 0x6f, 0x64, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0b, + 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, + 0x12, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x49, 0x64, 0x22, 0x3c, 0x0a, + 0x08, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x6c, 0x67, + 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x6c, + 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x22, 0x4f, 0x0a, 0x12, 0x43, + 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x11, 0x52, 0x0a, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x31, 0x0a, 0x16, + 0x47, 0x65, 0x74, 0x57, 0x61, 0x73, 0x6d, 0x43, 0x6f, 0x64, 0x65, 0x42, 0x79, 0x49, 0x44, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x12, 0x52, 0x06, 0x63, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x22, + 0xf1, 0x03, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x57, 0x61, 0x73, 0x6d, 0x43, 0x6f, 0x64, 0x65, 0x42, + 0x79, 0x49, 0x44, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x63, + 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x63, 0x6f, + 0x64, 0x65, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x78, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x12, 0x3c, 0x0a, + 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x20, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, + 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, + 0x6d, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x1d, 0x0a, 0x0a, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x4a, 0x0a, 0x0a, 0x70, 0x65, 0x72, + 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, + 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, + 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x50, + 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x65, 0x72, 0x6d, 0x69, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x73, 0x63, + 0x68, 0x65, 0x6d, 0x61, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x64, 0x65, + 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x76, + 0x69, 0x65, 0x77, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x64, 0x65, 0x56, + 0x69, 0x65, 0x77, 0x12, 0x22, 0x0a, 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x69, 0x61, + 0x74, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, + 0x6e, 0x74, 0x69, 0x61, 0x74, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x6f, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, + 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, + 0x18, 0x0c, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0a, 0x63, 0x6f, 0x64, 0x65, 0x4e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, 0x69, + 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, + 0x6c, 0x49, 0x64, 0x22, 0xd1, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x57, 0x61, 0x73, 0x6d, 0x43, + 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, + 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x12, 0x52, 0x06, 0x63, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x1f, + 0x0a, 0x0b, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x12, 0x52, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, + 0x1b, 0x0a, 0x09, 0x74, 0x6f, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x12, 0x52, 0x08, 0x74, 0x6f, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0b, + 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0a, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x12, 0x0a, + 0x04, 0x73, 0x6b, 0x69, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x12, 0x52, 0x04, 0x73, 0x6b, 0x69, + 0x70, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x22, 0x8c, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x57, + 0x61, 0x73, 0x6d, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x61, + 0x67, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x12, 0x38, 0x0a, 0x04, + 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, - 0x72, 0x70, 0x63, 0x2e, 0x43, 0x77, 0x32, 0x30, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x52, 0x0c, 0x63, 0x77, 0x32, 0x30, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1f, - 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x11, 0x20, - 0x01, 0x28, 0x12, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x49, 0x64, 0x22, - 0x3c, 0x0a, 0x0c, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x46, 0x75, 0x6e, 0x64, 0x12, - 0x14, 0x0a, 0x05, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xa6, 0x01, - 0x0a, 0x0c, 0x43, 0x77, 0x32, 0x30, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x44, - 0x0a, 0x0a, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, - 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x77, 0x32, 0x30, - 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x74, 0x6f, 0x6b, 0x65, 0x6e, - 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x50, 0x0a, 0x0e, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x69, 0x6e, - 0x67, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x69, - 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, - 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x77, 0x32, 0x30, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, - 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0d, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x69, - 0x6e, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x7a, 0x0a, 0x0d, 0x43, 0x77, 0x32, 0x30, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, - 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x79, 0x6d, - 0x62, 0x6f, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x73, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x12, 0x52, 0x08, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x73, 0x12, - 0x21, 0x0a, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6c, 0x79, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x75, 0x70, 0x70, - 0x6c, 0x79, 0x22, 0x81, 0x01, 0x0a, 0x11, 0x43, 0x77, 0x32, 0x30, 0x4d, 0x61, 0x72, 0x6b, 0x65, - 0x74, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x6f, 0x67, 0x6f, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x6c, 0x6f, 0x67, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, - 0x65, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x6d, 0x61, 0x72, - 0x6b, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x22, 0x4c, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x57, 0x61, 0x73, - 0x6d, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x42, 0x79, 0x41, 0x64, 0x64, 0x72, 0x65, - 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x6f, 0x6e, - 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x41, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x22, 0xfd, 0x04, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x57, 0x61, 0x73, 0x6d, - 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x42, 0x79, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, - 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, - 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x78, 0x5f, - 0x68, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x78, 0x48, 0x61, - 0x73, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x1a, 0x0a, 0x08, - 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, - 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x69, 0x6e, 0x73, 0x74, - 0x61, 0x6e, 0x74, 0x69, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x0e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x69, 0x61, 0x74, 0x65, 0x64, 0x41, - 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x6e, 0x69, 0x74, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x65, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, - 0x6c, 0x61, 0x73, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x3a, - 0x0a, 0x05, 0x66, 0x75, 0x6e, 0x64, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, + 0x72, 0x70, 0x63, 0x2e, 0x57, 0x61, 0x73, 0x6d, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, + 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xe9, 0x04, 0x0a, 0x0c, 0x57, 0x61, 0x73, 0x6d, 0x43, + 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x18, 0x0a, + 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x78, 0x5f, 0x68, 0x61, + 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, + 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, + 0x65, 0x63, 0x75, 0x74, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x65, 0x78, + 0x65, 0x63, 0x75, 0x74, 0x65, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x74, 0x69, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x0e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x69, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, + 0x21, 0x0a, 0x0c, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x6e, 0x69, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, + 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x6c, 0x61, + 0x73, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x3a, 0x0a, 0x05, + 0x66, 0x75, 0x6e, 0x64, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x69, 0x6e, + 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, + 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x46, 0x75, 0x6e, + 0x64, 0x52, 0x05, 0x66, 0x75, 0x6e, 0x64, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x6f, 0x64, 0x65, + 0x5f, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x63, 0x6f, 0x64, 0x65, 0x49, + 0x64, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x12, 0x36, 0x0a, 0x17, 0x63, 0x75, 0x72, 0x72, 0x65, + 0x6e, 0x74, 0x5f, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, + 0x74, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, + 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, + 0x63, 0x74, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x49, 0x0a, 0x0d, 0x63, 0x77, 0x32, 0x30, 0x5f, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, - 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x46, - 0x75, 0x6e, 0x64, 0x52, 0x05, 0x66, 0x75, 0x6e, 0x64, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x6f, - 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x63, 0x6f, 0x64, - 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x18, 0x0b, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x12, 0x36, 0x0a, 0x17, 0x63, 0x75, 0x72, - 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x63, 0x75, 0x72, 0x72, - 0x65, 0x6e, 0x74, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x6e, 0x75, - 0x6d, 0x62, 0x65, 0x72, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x74, - 0x72, 0x61, 0x63, 0x74, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0f, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x49, 0x0a, 0x0d, 0x63, 0x77, 0x32, 0x30, - 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x24, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, - 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x77, 0x32, 0x30, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0c, 0x63, 0x77, 0x32, 0x30, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, - 0x69, 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, - 0x61, 0x6c, 0x49, 0x64, 0x22, 0x47, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x43, 0x77, 0x32, 0x30, 0x42, - 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, - 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0x57, 0x0a, - 0x16, 0x47, 0x65, 0x74, 0x43, 0x77, 0x32, 0x30, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, - 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, - 0x57, 0x61, 0x73, 0x6d, 0x43, 0x77, 0x32, 0x30, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, - 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x22, 0xda, 0x01, 0x0a, 0x0f, 0x57, 0x61, 0x73, 0x6d, 0x43, - 0x77, 0x32, 0x30, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x6f, - 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x41, 0x64, - 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, - 0x18, 0x0a, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x75, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x49, 0x0a, 0x0d, 0x63, 0x77, 0x32, 0x30, - 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x24, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, - 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x77, 0x32, 0x30, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0c, 0x63, 0x77, 0x32, 0x30, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x22, 0x31, 0x0a, 0x0f, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0b, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, - 0x5f, 0x69, 0x5f, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x61, 0x72, - 0x6b, 0x65, 0x74, 0x49, 0x44, 0x73, 0x22, 0x50, 0x0a, 0x10, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x65, - 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x05, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x69, 0x6e, 0x6a, 0x65, - 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, - 0x70, 0x63, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, - 0x73, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x22, 0x6a, 0x0a, 0x0e, 0x52, 0x65, 0x6c, 0x61, - 0x79, 0x65, 0x72, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, - 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, - 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x3b, 0x0a, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x79, - 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x69, 0x6e, 0x6a, 0x65, + 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x77, 0x32, 0x30, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x52, 0x0c, 0x63, 0x77, 0x32, 0x30, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, 0x69, 0x64, + 0x18, 0x11, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, + 0x49, 0x64, 0x22, 0x3c, 0x0a, 0x0c, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x46, 0x75, + 0x6e, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, + 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, + 0x22, 0xa6, 0x01, 0x0a, 0x0c, 0x43, 0x77, 0x32, 0x30, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x12, 0x44, 0x0a, 0x0a, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, + 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, + 0x77, 0x32, 0x30, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x50, 0x0a, 0x0e, 0x6d, 0x61, 0x72, 0x6b, 0x65, + 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x29, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, + 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x77, 0x32, 0x30, 0x4d, 0x61, 0x72, + 0x6b, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0d, 0x6d, 0x61, 0x72, 0x6b, + 0x65, 0x74, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x7a, 0x0a, 0x0d, 0x43, 0x77, 0x32, + 0x30, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, + 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, + 0x6c, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x12, 0x52, 0x08, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, + 0x6c, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x75, 0x70, 0x70, + 0x6c, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, + 0x75, 0x70, 0x70, 0x6c, 0x79, 0x22, 0x81, 0x01, 0x0a, 0x11, 0x43, 0x77, 0x32, 0x30, 0x4d, 0x61, + 0x72, 0x6b, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x6f, 0x67, 0x6f, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6c, 0x6f, 0x67, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x6d, + 0x61, 0x72, 0x6b, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, + 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x22, 0x4c, 0x0a, 0x1f, 0x47, 0x65, 0x74, + 0x57, 0x61, 0x73, 0x6d, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x42, 0x79, 0x41, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x10, + 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, + 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0xfd, 0x04, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x57, + 0x61, 0x73, 0x6d, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x42, 0x79, 0x41, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, + 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, + 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x17, 0x0a, 0x07, + 0x74, 0x78, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, + 0x78, 0x48, 0x61, 0x73, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x12, + 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x08, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x69, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x69, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x69, 0x61, 0x74, + 0x65, 0x64, 0x41, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x6d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x6e, 0x69, 0x74, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x6c, 0x61, 0x73, 0x74, 0x5f, + 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x64, 0x41, + 0x74, 0x12, 0x3a, 0x0a, 0x05, 0x66, 0x75, 0x6e, 0x64, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x24, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, + 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, + 0x63, 0x74, 0x46, 0x75, 0x6e, 0x64, 0x52, 0x05, 0x66, 0x75, 0x6e, 0x64, 0x73, 0x12, 0x17, 0x0a, + 0x07, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, + 0x63, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x18, + 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x12, 0x36, 0x0a, 0x17, + 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x5f, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x63, + 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, + 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0e, 0x63, + 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x18, 0x0a, + 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x49, 0x0a, 0x0d, 0x63, + 0x77, 0x32, 0x30, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x10, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, + 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x77, 0x32, 0x30, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0c, 0x63, 0x77, 0x32, 0x30, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, + 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0a, 0x70, 0x72, 0x6f, + 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x49, 0x64, 0x22, 0x47, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x43, 0x77, + 0x32, 0x30, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, + 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, + 0x22, 0x57, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x43, 0x77, 0x32, 0x30, 0x42, 0x61, 0x6c, 0x61, 0x6e, + 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x05, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, - 0x70, 0x63, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x52, 0x08, 0x72, 0x65, 0x6c, 0x61, - 0x79, 0x65, 0x72, 0x73, 0x22, 0x2f, 0x0a, 0x07, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x12, - 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x63, 0x74, 0x61, 0x22, 0xbd, 0x02, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x42, 0x61, 0x6e, - 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x07, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x72, - 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x0a, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x39, 0x0a, 0x19, 0x69, - 0x73, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, - 0x5f, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, - 0x69, 0x73, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x50, 0x6f, 0x6f, 0x6c, 0x52, - 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, - 0x73, 0x6b, 0x69, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6b, 0x69, 0x70, - 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, - 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x12, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, - 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x65, 0x72, 0x5f, 0x70, 0x61, 0x67, 0x65, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x11, 0x52, 0x07, 0x70, 0x65, 0x72, 0x50, 0x61, 0x67, 0x65, 0x12, - 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x8c, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x42, 0x61, 0x6e, - 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x36, 0x0a, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, - 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x61, 0x67, 0x69, - 0x6e, 0x67, 0x52, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x12, 0x38, 0x0a, 0x04, 0x64, 0x61, - 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, - 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, - 0x63, 0x2e, 0x42, 0x61, 0x6e, 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x52, 0x04, - 0x64, 0x61, 0x74, 0x61, 0x22, 0xc8, 0x01, 0x0a, 0x0c, 0x42, 0x61, 0x6e, 0x6b, 0x54, 0x72, 0x61, - 0x6e, 0x73, 0x66, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x1c, 0x0a, - 0x09, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x36, 0x0a, 0x07, 0x61, - 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x69, - 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, - 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x07, 0x61, 0x6d, 0x6f, 0x75, - 0x6e, 0x74, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, - 0x62, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, - 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x27, 0x0a, 0x0f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, - 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, - 0x34, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x65, 0x6e, 0x6f, 0x6d, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x12, 0x16, 0x0a, - 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, - 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x12, 0x0a, 0x10, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, - 0x78, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xa8, 0x02, 0x0a, 0x11, 0x53, 0x74, - 0x72, 0x65, 0x61, 0x6d, 0x54, 0x78, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, - 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, - 0x65, 0x72, 0x12, 0x27, 0x0a, 0x0f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x74, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x68, - 0x61, 0x73, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x12, - 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1a, 0x0a, - 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x78, 0x5f, - 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x74, 0x78, - 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, - 0x6c, 0x6f, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x72, 0x72, 0x6f, 0x72, - 0x4c, 0x6f, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x61, 0x69, 0x6d, - 0x5f, 0x69, 0x64, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x12, 0x52, 0x08, 0x63, 0x6c, 0x61, 0x69, - 0x6d, 0x49, 0x64, 0x73, 0x22, 0x15, 0x0a, 0x13, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x42, 0x6c, - 0x6f, 0x63, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xb8, 0x02, 0x0a, 0x14, - 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1a, 0x0a, 0x08, - 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x6f, 0x6e, 0x69, - 0x6b, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x6f, 0x6e, 0x69, 0x6b, - 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, - 0x68, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x48, 0x61, - 0x73, 0x68, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x75, 0x6d, 0x5f, 0x70, 0x72, 0x65, 0x5f, 0x63, 0x6f, - 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0d, 0x6e, 0x75, 0x6d, - 0x50, 0x72, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x6e, 0x75, - 0x6d, 0x5f, 0x74, 0x78, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x12, 0x52, 0x06, 0x6e, 0x75, 0x6d, - 0x54, 0x78, 0x73, 0x12, 0x33, 0x0a, 0x03, 0x74, 0x78, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x21, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, - 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x78, 0x44, 0x61, 0x74, 0x61, - 0x52, 0x50, 0x43, 0x52, 0x03, 0x74, 0x78, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x32, 0xc6, 0x13, 0x0a, 0x14, 0x49, 0x6e, 0x6a, 0x65, 0x63, - 0x74, 0x69, 0x76, 0x65, 0x45, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x52, 0x50, 0x43, 0x12, - 0x6c, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x78, 0x73, - 0x12, 0x2c, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, - 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x78, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, - 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, - 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x54, 0x78, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6f, 0x0a, - 0x0e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x54, 0x78, 0x73, 0x12, - 0x2d, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, - 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, - 0x72, 0x61, 0x63, 0x74, 0x54, 0x78, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, - 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, - 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, - 0x61, 0x63, 0x74, 0x54, 0x78, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x75, - 0x0a, 0x10, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x54, 0x78, 0x73, - 0x56, 0x32, 0x12, 0x2f, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, - 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x43, - 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x54, 0x78, 0x73, 0x56, 0x32, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, - 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, - 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x54, 0x78, 0x73, 0x56, 0x32, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x60, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, - 0x6b, 0x73, 0x12, 0x28, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, - 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x69, + 0x70, 0x63, 0x2e, 0x57, 0x61, 0x73, 0x6d, 0x43, 0x77, 0x32, 0x30, 0x42, 0x61, 0x6c, 0x61, 0x6e, + 0x63, 0x65, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x22, 0xda, 0x01, 0x0a, 0x0f, 0x57, 0x61, + 0x73, 0x6d, 0x43, 0x77, 0x32, 0x30, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x29, 0x0a, + 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, + 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1d, 0x0a, 0x0a, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x12, + 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x49, 0x0a, 0x0d, 0x63, + 0x77, 0x32, 0x30, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, + 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x77, 0x32, 0x30, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0c, 0x63, 0x77, 0x32, 0x30, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x31, 0x0a, 0x0f, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x65, + 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0b, 0x6d, 0x61, 0x72, + 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x5f, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, + 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x73, 0x22, 0x50, 0x0a, 0x10, 0x52, 0x65, 0x6c, + 0x61, 0x79, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, + 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, - 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5d, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x42, 0x6c, - 0x6f, 0x63, 0x6b, 0x12, 0x27, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, - 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, - 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x69, + 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4d, 0x61, 0x72, + 0x6b, 0x65, 0x74, 0x73, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x22, 0x6a, 0x0a, 0x0e, 0x52, + 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x1b, 0x0a, + 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x3b, 0x0a, 0x08, 0x72, 0x65, + 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, - 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6c, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, - 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x2c, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, - 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, - 0x2e, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, + 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x52, 0x08, 0x72, + 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x22, 0x2f, 0x0a, 0x07, 0x52, 0x65, 0x6c, 0x61, 0x79, + 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x74, 0x61, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, 0x74, 0x61, 0x22, 0xbd, 0x02, 0x0a, 0x17, 0x47, 0x65, 0x74, + 0x42, 0x61, 0x6e, 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x12, 0x1e, + 0x0a, 0x0a, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x39, + 0x0a, 0x19, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x5f, 0x70, + 0x6f, 0x6f, 0x6c, 0x5f, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x16, 0x69, 0x73, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x50, 0x6f, + 0x6f, 0x6c, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, + 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, + 0x12, 0x0a, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, + 0x6b, 0x69, 0x70, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, + 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, + 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x12, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x18, 0x0a, + 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x65, 0x72, 0x5f, 0x70, + 0x61, 0x67, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x11, 0x52, 0x07, 0x70, 0x65, 0x72, 0x50, 0x61, + 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x8c, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, + 0x42, 0x61, 0x6e, 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, + 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, + 0x61, 0x67, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x12, 0x38, 0x0a, + 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x69, 0x6e, + 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, + 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x42, 0x61, 0x6e, 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, + 0x72, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xc8, 0x01, 0x0a, 0x0c, 0x42, 0x61, 0x6e, 0x6b, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, + 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, + 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x36, + 0x0a, 0x07, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1c, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, + 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x07, 0x61, + 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, + 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x62, 0x6c, + 0x6f, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x27, 0x0a, 0x0f, 0x62, 0x6c, 0x6f, + 0x63, 0x6b, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x22, 0x34, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x65, + 0x6e, 0x6f, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x64, 0x65, 0x6e, 0x6f, 0x6d, + 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x12, 0x0a, 0x10, 0x53, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0x54, 0x78, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xa8, 0x02, 0x0a, + 0x11, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x78, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, + 0x69, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x27, 0x0a, 0x0f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x74, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, + 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x12, + 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x61, + 0x73, 0x68, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x09, + 0x74, 0x78, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x08, 0x74, 0x78, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x72, 0x72, + 0x6f, 0x72, 0x5f, 0x6c, 0x6f, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x72, + 0x72, 0x6f, 0x72, 0x4c, 0x6f, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, + 0x61, 0x69, 0x6d, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x12, 0x52, 0x08, 0x63, + 0x6c, 0x61, 0x69, 0x6d, 0x49, 0x64, 0x73, 0x22, 0x15, 0x0a, 0x13, 0x53, 0x74, 0x72, 0x65, 0x61, + 0x6d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xb8, + 0x02, 0x0a, 0x14, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, + 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x6d, + 0x6f, 0x6e, 0x69, 0x6b, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x6f, + 0x6e, 0x69, 0x6b, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, + 0x61, 0x73, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, + 0x48, 0x61, 0x73, 0x68, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x68, + 0x61, 0x73, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x65, 0x6e, + 0x74, 0x48, 0x61, 0x73, 0x68, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x75, 0x6d, 0x5f, 0x70, 0x72, 0x65, + 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0d, + 0x6e, 0x75, 0x6d, 0x50, 0x72, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x17, 0x0a, + 0x07, 0x6e, 0x75, 0x6d, 0x5f, 0x74, 0x78, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x12, 0x52, 0x06, + 0x6e, 0x75, 0x6d, 0x54, 0x78, 0x73, 0x12, 0x33, 0x0a, 0x03, 0x74, 0x78, 0x73, 0x18, 0x08, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, + 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x78, 0x44, + 0x61, 0x74, 0x61, 0x52, 0x50, 0x43, 0x52, 0x03, 0x74, 0x78, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x74, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0x11, 0x0a, 0x0f, 0x47, 0x65, 0x74, + 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x9c, 0x02, 0x0a, + 0x10, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x12, + 0x16, 0x0a, 0x06, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x06, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6e, 0x6a, 0x5f, 0x73, + 0x75, 0x70, 0x70, 0x6c, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x69, 0x6e, 0x6a, + 0x53, 0x75, 0x70, 0x70, 0x6c, 0x79, 0x12, 0x1c, 0x0a, 0x0a, 0x74, 0x78, 0x73, 0x5f, 0x70, 0x73, + 0x32, 0x34, 0x5f, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x74, 0x78, 0x73, 0x50, + 0x73, 0x32, 0x34, 0x48, 0x12, 0x1e, 0x0a, 0x0b, 0x74, 0x78, 0x73, 0x5f, 0x70, 0x73, 0x31, 0x30, + 0x30, 0x5f, 0x62, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x74, 0x78, 0x73, 0x50, 0x73, + 0x31, 0x30, 0x30, 0x42, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x78, 0x73, 0x5f, 0x74, 0x6f, 0x74, 0x61, + 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x74, 0x78, 0x73, 0x54, 0x6f, 0x74, 0x61, + 0x6c, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x78, 0x73, 0x32, 0x34, 0x5f, 0x68, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x06, 0x74, 0x78, 0x73, 0x32, 0x34, 0x48, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x78, + 0x73, 0x33, 0x30, 0x5f, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x74, 0x78, 0x73, + 0x33, 0x30, 0x44, 0x12, 0x26, 0x0a, 0x0f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x32, 0x34, 0x5f, 0x68, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x62, 0x6c, + 0x6f, 0x63, 0x6b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x32, 0x34, 0x48, 0x32, 0xa5, 0x14, 0x0a, 0x14, + 0x49, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x45, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, + 0x72, 0x52, 0x50, 0x43, 0x12, 0x6c, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x54, 0x78, 0x73, 0x12, 0x2c, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, - 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x69, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, - 0x61, 0x74, 0x6f, 0x72, 0x12, 0x2b, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x65, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x78, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, + 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, + 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x78, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x6f, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, + 0x74, 0x54, 0x78, 0x73, 0x12, 0x2d, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, - 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x2c, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, - 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x61, - 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x7b, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x55, - 0x70, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x31, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, - 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, - 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x70, 0x74, 0x69, 0x6d, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, + 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x54, 0x78, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, + 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, + 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x54, 0x78, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x75, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, + 0x63, 0x74, 0x54, 0x78, 0x73, 0x56, 0x32, 0x12, 0x2f, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, + 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, + 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x54, 0x78, 0x73, 0x56, + 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, + 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, + 0x63, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x54, 0x78, 0x73, + 0x56, 0x32, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x60, 0x0a, 0x09, 0x47, 0x65, + 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x12, 0x28, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, + 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, + 0x2e, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x29, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, + 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x6c, + 0x6f, 0x63, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5d, 0x0a, 0x08, + 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x27, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, - 0x63, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x70, - 0x74, 0x69, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x57, 0x0a, 0x06, - 0x47, 0x65, 0x74, 0x54, 0x78, 0x73, 0x12, 0x25, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, + 0x63, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x28, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, + 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x6c, + 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6c, 0x0a, 0x0d, 0x47, + 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x2c, 0x2e, 0x69, + 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, + 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x6f, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x69, 0x6e, 0x6a, + 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, + 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x69, 0x0a, 0x0c, 0x47, 0x65, 0x74, + 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x2b, 0x2e, 0x69, 0x6e, 0x6a, 0x65, + 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, + 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, - 0x47, 0x65, 0x74, 0x54, 0x78, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, + 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7b, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, + 0x61, 0x74, 0x6f, 0x72, 0x55, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x31, 0x2e, 0x69, 0x6e, 0x6a, + 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, + 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, + 0x55, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, - 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x78, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6c, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x54, 0x78, 0x42, 0x79, - 0x54, 0x78, 0x48, 0x61, 0x73, 0x68, 0x12, 0x2c, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, + 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x6f, 0x72, 0x55, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x57, 0x0a, 0x06, 0x47, 0x65, 0x74, 0x54, 0x78, 0x73, 0x12, 0x25, 0x2e, 0x69, 0x6e, + 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, + 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x78, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, + 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x54, + 0x78, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6c, 0x0a, 0x0d, 0x47, 0x65, + 0x74, 0x54, 0x78, 0x42, 0x79, 0x54, 0x78, 0x48, 0x61, 0x73, 0x68, 0x12, 0x2c, 0x2e, 0x69, 0x6e, + 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, + 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x78, 0x42, 0x79, 0x54, 0x78, 0x48, 0x61, + 0x73, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x69, 0x6e, 0x6a, 0x65, + 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, + 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x78, 0x42, 0x79, 0x54, 0x78, 0x48, 0x61, 0x73, 0x68, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7b, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x50, + 0x65, 0x67, 0x67, 0x79, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x54, 0x78, 0x73, 0x12, 0x31, + 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, + 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x65, 0x67, 0x67, 0x79, + 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x54, 0x78, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x32, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, + 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x65, + 0x67, 0x67, 0x79, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x54, 0x78, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x84, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x50, 0x65, 0x67, + 0x67, 0x79, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x54, 0x78, 0x73, 0x12, + 0x34, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, + 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x65, 0x67, 0x67, + 0x79, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x54, 0x78, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, + 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, + 0x65, 0x74, 0x50, 0x65, 0x67, 0x67, 0x79, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, + 0x6c, 0x54, 0x78, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x78, 0x0a, 0x11, + 0x47, 0x65, 0x74, 0x49, 0x42, 0x43, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x78, + 0x73, 0x12, 0x30, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, + 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x42, + 0x43, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x78, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, + 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, + 0x49, 0x42, 0x43, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x78, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x69, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x57, 0x61, 0x73, + 0x6d, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x2b, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, - 0x47, 0x65, 0x74, 0x54, 0x78, 0x42, 0x79, 0x54, 0x78, 0x48, 0x61, 0x73, 0x68, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x47, 0x65, 0x74, 0x57, 0x61, 0x73, 0x6d, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, + 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, + 0x57, 0x61, 0x73, 0x6d, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x72, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x57, 0x61, 0x73, 0x6d, 0x43, 0x6f, 0x64, 0x65, + 0x42, 0x79, 0x49, 0x44, 0x12, 0x2e, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, - 0x74, 0x54, 0x78, 0x42, 0x79, 0x54, 0x78, 0x48, 0x61, 0x73, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x7b, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x50, 0x65, 0x67, 0x67, 0x79, 0x44, - 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x54, 0x78, 0x73, 0x12, 0x31, 0x2e, 0x69, 0x6e, 0x6a, 0x65, + 0x74, 0x57, 0x61, 0x73, 0x6d, 0x43, 0x6f, 0x64, 0x65, 0x42, 0x79, 0x49, 0x44, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, + 0x74, 0x57, 0x61, 0x73, 0x6d, 0x43, 0x6f, 0x64, 0x65, 0x42, 0x79, 0x49, 0x44, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x75, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x57, 0x61, 0x73, 0x6d, + 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x73, 0x12, 0x2f, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, - 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x65, 0x67, 0x67, 0x79, 0x44, 0x65, 0x70, 0x6f, 0x73, - 0x69, 0x74, 0x54, 0x78, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x69, - 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, - 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x65, 0x67, 0x67, 0x79, 0x44, 0x65, - 0x70, 0x6f, 0x73, 0x69, 0x74, 0x54, 0x78, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x84, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x50, 0x65, 0x67, 0x67, 0x79, 0x57, 0x69, 0x74, - 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x54, 0x78, 0x73, 0x12, 0x34, 0x2e, 0x69, 0x6e, 0x6a, + 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x61, 0x73, 0x6d, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, + 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, - 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x65, 0x67, 0x67, 0x79, 0x57, 0x69, 0x74, 0x68, - 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x54, 0x78, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x35, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, - 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x65, 0x67, - 0x67, 0x79, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x54, 0x78, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x78, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x49, 0x42, - 0x43, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x78, 0x73, 0x12, 0x30, 0x2e, 0x69, - 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, - 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x42, 0x43, 0x54, 0x72, 0x61, 0x6e, - 0x73, 0x66, 0x65, 0x72, 0x54, 0x78, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, - 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, - 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x42, 0x43, 0x54, 0x72, - 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x78, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x69, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x57, 0x61, 0x73, 0x6d, 0x43, 0x6f, 0x64, 0x65, - 0x73, 0x12, 0x2b, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, - 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x61, - 0x73, 0x6d, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, - 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, - 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x61, 0x73, 0x6d, 0x43, - 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x72, 0x0a, 0x0f, - 0x47, 0x65, 0x74, 0x57, 0x61, 0x73, 0x6d, 0x43, 0x6f, 0x64, 0x65, 0x42, 0x79, 0x49, 0x44, 0x12, - 0x2e, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, - 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x61, 0x73, 0x6d, - 0x43, 0x6f, 0x64, 0x65, 0x42, 0x79, 0x49, 0x44, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x2f, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, - 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x61, 0x73, 0x6d, - 0x43, 0x6f, 0x64, 0x65, 0x42, 0x79, 0x49, 0x44, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x75, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x57, 0x61, 0x73, 0x6d, 0x43, 0x6f, 0x6e, 0x74, 0x72, - 0x61, 0x63, 0x74, 0x73, 0x12, 0x2f, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, - 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, - 0x74, 0x57, 0x61, 0x73, 0x6d, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, - 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, - 0x65, 0x74, 0x57, 0x61, 0x73, 0x6d, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8d, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x57, + 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x61, 0x73, 0x6d, 0x43, 0x6f, 0x6e, 0x74, 0x72, + 0x61, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8d, 0x01, 0x0a, + 0x18, 0x47, 0x65, 0x74, 0x57, 0x61, 0x73, 0x6d, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, + 0x42, 0x79, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x37, 0x2e, 0x69, 0x6e, 0x6a, 0x65, + 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, + 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x61, 0x73, 0x6d, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, + 0x63, 0x74, 0x42, 0x79, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, + 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x61, 0x73, 0x6d, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x42, 0x79, 0x41, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x12, 0x37, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, - 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, - 0x74, 0x57, 0x61, 0x73, 0x6d, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x42, 0x79, 0x41, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, + 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6f, 0x0a, 0x0e, + 0x47, 0x65, 0x74, 0x43, 0x77, 0x32, 0x30, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x2d, + 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, + 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x77, 0x32, 0x30, 0x42, + 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, - 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x61, 0x73, 0x6d, 0x43, 0x6f, - 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x42, 0x79, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6f, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x43, 0x77, - 0x32, 0x30, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x2d, 0x2e, 0x69, 0x6e, 0x6a, 0x65, + 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x77, 0x32, 0x30, 0x42, 0x61, + 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5d, 0x0a, + 0x08, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x12, 0x27, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, - 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x77, 0x32, 0x30, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, - 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, - 0x63, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x77, 0x32, 0x30, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5d, 0x0a, 0x08, 0x52, 0x65, 0x6c, 0x61, - 0x79, 0x65, 0x72, 0x73, 0x12, 0x27, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, - 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, - 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, - 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, - 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x75, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x42, 0x61, - 0x6e, 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x12, 0x2f, 0x2e, 0x69, 0x6e, - 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, - 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x61, 0x6e, 0x6b, 0x54, 0x72, 0x61, 0x6e, - 0x73, 0x66, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x69, - 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, - 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x61, 0x6e, 0x6b, 0x54, 0x72, 0x61, - 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x62, - 0x0a, 0x09, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x78, 0x73, 0x12, 0x28, 0x2e, 0x69, 0x6e, - 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, - 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x78, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, - 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, - 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x78, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x30, 0x01, 0x12, 0x6b, 0x0a, 0x0c, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x42, 0x6c, 0x6f, 0x63, - 0x6b, 0x73, 0x12, 0x2b, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, - 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, - 0x61, 0x6d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x2c, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, - 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x42, - 0x1b, 0x5a, 0x19, 0x2f, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, - 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, + 0x70, 0x63, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, + 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x6c, 0x61, + 0x79, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x75, 0x0a, 0x10, + 0x47, 0x65, 0x74, 0x42, 0x61, 0x6e, 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, + 0x12, 0x2f, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, + 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x61, 0x6e, + 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x30, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, + 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x61, + 0x6e, 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x62, 0x0a, 0x09, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x78, 0x73, + 0x12, 0x28, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, + 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, + 0x54, 0x78, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x69, 0x6e, 0x6a, + 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, + 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x78, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x6b, 0x0a, 0x0c, 0x53, 0x74, 0x72, 0x65, 0x61, + 0x6d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x12, 0x2b, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, + 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, + 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, + 0x72, 0x65, 0x61, 0x6d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x30, 0x01, 0x12, 0x5d, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, + 0x12, 0x27, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, + 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, + 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x69, 0x6e, 0x6a, 0x65, + 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, + 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x42, 0x1b, 0x5a, 0x19, 0x2f, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, + 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x70, 0x62, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -7337,7 +7532,7 @@ func file_goadesign_goagen_injective_explorer_rpc_proto_rawDescGZIP() []byte { return file_goadesign_goagen_injective_explorer_rpc_proto_rawDescData } -var file_goadesign_goagen_injective_explorer_rpc_proto_msgTypes = make([]protoimpl.MessageInfo, 75) +var file_goadesign_goagen_injective_explorer_rpc_proto_msgTypes = make([]protoimpl.MessageInfo, 77) var file_goadesign_goagen_injective_explorer_rpc_proto_goTypes = []interface{}{ (*GetAccountTxsRequest)(nil), // 0: injective_explorer_rpc.GetAccountTxsRequest (*GetAccountTxsResponse)(nil), // 1: injective_explorer_rpc.GetAccountTxsResponse @@ -7413,7 +7608,9 @@ var file_goadesign_goagen_injective_explorer_rpc_proto_goTypes = []interface{}{ (*StreamTxsResponse)(nil), // 71: injective_explorer_rpc.StreamTxsResponse (*StreamBlocksRequest)(nil), // 72: injective_explorer_rpc.StreamBlocksRequest (*StreamBlocksResponse)(nil), // 73: injective_explorer_rpc.StreamBlocksResponse - nil, // 74: injective_explorer_rpc.Event.AttributesEntry + (*GetStatsRequest)(nil), // 74: injective_explorer_rpc.GetStatsRequest + (*GetStatsResponse)(nil), // 75: injective_explorer_rpc.GetStatsResponse + nil, // 76: injective_explorer_rpc.Event.AttributesEntry } var file_goadesign_goagen_injective_explorer_rpc_proto_depIdxs = []int32{ 2, // 0: injective_explorer_rpc.GetAccountTxsResponse.paging:type_name -> injective_explorer_rpc.Paging @@ -7422,7 +7619,7 @@ var file_goadesign_goagen_injective_explorer_rpc_proto_depIdxs = []int32{ 6, // 3: injective_explorer_rpc.TxDetailData.events:type_name -> injective_explorer_rpc.Event 7, // 4: injective_explorer_rpc.TxDetailData.signatures:type_name -> injective_explorer_rpc.Signature 5, // 5: injective_explorer_rpc.GasFee.amount:type_name -> injective_explorer_rpc.CosmosCoin - 74, // 6: injective_explorer_rpc.Event.attributes:type_name -> injective_explorer_rpc.Event.AttributesEntry + 76, // 6: injective_explorer_rpc.Event.attributes:type_name -> injective_explorer_rpc.Event.AttributesEntry 2, // 7: injective_explorer_rpc.GetContractTxsResponse.paging:type_name -> injective_explorer_rpc.Paging 3, // 8: injective_explorer_rpc.GetContractTxsResponse.data:type_name -> injective_explorer_rpc.TxDetailData 3, // 9: injective_explorer_rpc.GetContractTxsV2Response.data:type_name -> injective_explorer_rpc.TxDetailData @@ -7431,89 +7628,92 @@ var file_goadesign_goagen_injective_explorer_rpc_proto_depIdxs = []int32{ 15, // 12: injective_explorer_rpc.BlockInfo.txs:type_name -> injective_explorer_rpc.TxDataRPC 18, // 13: injective_explorer_rpc.GetBlockResponse.data:type_name -> injective_explorer_rpc.BlockDetailInfo 19, // 14: injective_explorer_rpc.BlockDetailInfo.txs:type_name -> injective_explorer_rpc.TxData - 22, // 15: injective_explorer_rpc.GetValidatorsResponse.data:type_name -> injective_explorer_rpc.Validator - 23, // 16: injective_explorer_rpc.Validator.description:type_name -> injective_explorer_rpc.ValidatorDescription - 24, // 17: injective_explorer_rpc.Validator.uptimes:type_name -> injective_explorer_rpc.ValidatorUptime - 25, // 18: injective_explorer_rpc.Validator.slashing_events:type_name -> injective_explorer_rpc.SlashingEvent - 22, // 19: injective_explorer_rpc.GetValidatorResponse.data:type_name -> injective_explorer_rpc.Validator - 24, // 20: injective_explorer_rpc.GetValidatorUptimeResponse.data:type_name -> injective_explorer_rpc.ValidatorUptime - 2, // 21: injective_explorer_rpc.GetTxsResponse.paging:type_name -> injective_explorer_rpc.Paging - 19, // 22: injective_explorer_rpc.GetTxsResponse.data:type_name -> injective_explorer_rpc.TxData - 3, // 23: injective_explorer_rpc.GetTxByTxHashResponse.data:type_name -> injective_explorer_rpc.TxDetailData - 36, // 24: injective_explorer_rpc.GetPeggyDepositTxsResponse.field:type_name -> injective_explorer_rpc.PeggyDepositTx - 39, // 25: injective_explorer_rpc.GetPeggyWithdrawalTxsResponse.field:type_name -> injective_explorer_rpc.PeggyWithdrawalTx - 42, // 26: injective_explorer_rpc.GetIBCTransferTxsResponse.field:type_name -> injective_explorer_rpc.IBCTransferTx - 2, // 27: injective_explorer_rpc.GetWasmCodesResponse.paging:type_name -> injective_explorer_rpc.Paging - 45, // 28: injective_explorer_rpc.GetWasmCodesResponse.data:type_name -> injective_explorer_rpc.WasmCode - 46, // 29: injective_explorer_rpc.WasmCode.checksum:type_name -> injective_explorer_rpc.Checksum - 47, // 30: injective_explorer_rpc.WasmCode.permission:type_name -> injective_explorer_rpc.ContractPermission - 46, // 31: injective_explorer_rpc.GetWasmCodeByIDResponse.checksum:type_name -> injective_explorer_rpc.Checksum - 47, // 32: injective_explorer_rpc.GetWasmCodeByIDResponse.permission:type_name -> injective_explorer_rpc.ContractPermission - 2, // 33: injective_explorer_rpc.GetWasmContractsResponse.paging:type_name -> injective_explorer_rpc.Paging - 52, // 34: injective_explorer_rpc.GetWasmContractsResponse.data:type_name -> injective_explorer_rpc.WasmContract - 53, // 35: injective_explorer_rpc.WasmContract.funds:type_name -> injective_explorer_rpc.ContractFund - 54, // 36: injective_explorer_rpc.WasmContract.cw20_metadata:type_name -> injective_explorer_rpc.Cw20Metadata - 55, // 37: injective_explorer_rpc.Cw20Metadata.token_info:type_name -> injective_explorer_rpc.Cw20TokenInfo - 56, // 38: injective_explorer_rpc.Cw20Metadata.marketing_info:type_name -> injective_explorer_rpc.Cw20MarketingInfo - 53, // 39: injective_explorer_rpc.GetWasmContractByAddressResponse.funds:type_name -> injective_explorer_rpc.ContractFund - 54, // 40: injective_explorer_rpc.GetWasmContractByAddressResponse.cw20_metadata:type_name -> injective_explorer_rpc.Cw20Metadata - 61, // 41: injective_explorer_rpc.GetCw20BalanceResponse.field:type_name -> injective_explorer_rpc.WasmCw20Balance - 54, // 42: injective_explorer_rpc.WasmCw20Balance.cw20_metadata:type_name -> injective_explorer_rpc.Cw20Metadata - 64, // 43: injective_explorer_rpc.RelayersResponse.field:type_name -> injective_explorer_rpc.RelayerMarkets - 65, // 44: injective_explorer_rpc.RelayerMarkets.relayers:type_name -> injective_explorer_rpc.Relayer - 2, // 45: injective_explorer_rpc.GetBankTransfersResponse.paging:type_name -> injective_explorer_rpc.Paging - 68, // 46: injective_explorer_rpc.GetBankTransfersResponse.data:type_name -> injective_explorer_rpc.BankTransfer - 69, // 47: injective_explorer_rpc.BankTransfer.amounts:type_name -> injective_explorer_rpc.Coin - 15, // 48: injective_explorer_rpc.StreamBlocksResponse.txs:type_name -> injective_explorer_rpc.TxDataRPC - 0, // 49: injective_explorer_rpc.InjectiveExplorerRPC.GetAccountTxs:input_type -> injective_explorer_rpc.GetAccountTxsRequest - 8, // 50: injective_explorer_rpc.InjectiveExplorerRPC.GetContractTxs:input_type -> injective_explorer_rpc.GetContractTxsRequest - 10, // 51: injective_explorer_rpc.InjectiveExplorerRPC.GetContractTxsV2:input_type -> injective_explorer_rpc.GetContractTxsV2Request - 12, // 52: injective_explorer_rpc.InjectiveExplorerRPC.GetBlocks:input_type -> injective_explorer_rpc.GetBlocksRequest - 16, // 53: injective_explorer_rpc.InjectiveExplorerRPC.GetBlock:input_type -> injective_explorer_rpc.GetBlockRequest - 20, // 54: injective_explorer_rpc.InjectiveExplorerRPC.GetValidators:input_type -> injective_explorer_rpc.GetValidatorsRequest - 26, // 55: injective_explorer_rpc.InjectiveExplorerRPC.GetValidator:input_type -> injective_explorer_rpc.GetValidatorRequest - 28, // 56: injective_explorer_rpc.InjectiveExplorerRPC.GetValidatorUptime:input_type -> injective_explorer_rpc.GetValidatorUptimeRequest - 30, // 57: injective_explorer_rpc.InjectiveExplorerRPC.GetTxs:input_type -> injective_explorer_rpc.GetTxsRequest - 32, // 58: injective_explorer_rpc.InjectiveExplorerRPC.GetTxByTxHash:input_type -> injective_explorer_rpc.GetTxByTxHashRequest - 34, // 59: injective_explorer_rpc.InjectiveExplorerRPC.GetPeggyDepositTxs:input_type -> injective_explorer_rpc.GetPeggyDepositTxsRequest - 37, // 60: injective_explorer_rpc.InjectiveExplorerRPC.GetPeggyWithdrawalTxs:input_type -> injective_explorer_rpc.GetPeggyWithdrawalTxsRequest - 40, // 61: injective_explorer_rpc.InjectiveExplorerRPC.GetIBCTransferTxs:input_type -> injective_explorer_rpc.GetIBCTransferTxsRequest - 43, // 62: injective_explorer_rpc.InjectiveExplorerRPC.GetWasmCodes:input_type -> injective_explorer_rpc.GetWasmCodesRequest - 48, // 63: injective_explorer_rpc.InjectiveExplorerRPC.GetWasmCodeByID:input_type -> injective_explorer_rpc.GetWasmCodeByIDRequest - 50, // 64: injective_explorer_rpc.InjectiveExplorerRPC.GetWasmContracts:input_type -> injective_explorer_rpc.GetWasmContractsRequest - 57, // 65: injective_explorer_rpc.InjectiveExplorerRPC.GetWasmContractByAddress:input_type -> injective_explorer_rpc.GetWasmContractByAddressRequest - 59, // 66: injective_explorer_rpc.InjectiveExplorerRPC.GetCw20Balance:input_type -> injective_explorer_rpc.GetCw20BalanceRequest - 62, // 67: injective_explorer_rpc.InjectiveExplorerRPC.Relayers:input_type -> injective_explorer_rpc.RelayersRequest - 66, // 68: injective_explorer_rpc.InjectiveExplorerRPC.GetBankTransfers:input_type -> injective_explorer_rpc.GetBankTransfersRequest - 70, // 69: injective_explorer_rpc.InjectiveExplorerRPC.StreamTxs:input_type -> injective_explorer_rpc.StreamTxsRequest - 72, // 70: injective_explorer_rpc.InjectiveExplorerRPC.StreamBlocks:input_type -> injective_explorer_rpc.StreamBlocksRequest - 1, // 71: injective_explorer_rpc.InjectiveExplorerRPC.GetAccountTxs:output_type -> injective_explorer_rpc.GetAccountTxsResponse - 9, // 72: injective_explorer_rpc.InjectiveExplorerRPC.GetContractTxs:output_type -> injective_explorer_rpc.GetContractTxsResponse - 11, // 73: injective_explorer_rpc.InjectiveExplorerRPC.GetContractTxsV2:output_type -> injective_explorer_rpc.GetContractTxsV2Response - 13, // 74: injective_explorer_rpc.InjectiveExplorerRPC.GetBlocks:output_type -> injective_explorer_rpc.GetBlocksResponse - 17, // 75: injective_explorer_rpc.InjectiveExplorerRPC.GetBlock:output_type -> injective_explorer_rpc.GetBlockResponse - 21, // 76: injective_explorer_rpc.InjectiveExplorerRPC.GetValidators:output_type -> injective_explorer_rpc.GetValidatorsResponse - 27, // 77: injective_explorer_rpc.InjectiveExplorerRPC.GetValidator:output_type -> injective_explorer_rpc.GetValidatorResponse - 29, // 78: injective_explorer_rpc.InjectiveExplorerRPC.GetValidatorUptime:output_type -> injective_explorer_rpc.GetValidatorUptimeResponse - 31, // 79: injective_explorer_rpc.InjectiveExplorerRPC.GetTxs:output_type -> injective_explorer_rpc.GetTxsResponse - 33, // 80: injective_explorer_rpc.InjectiveExplorerRPC.GetTxByTxHash:output_type -> injective_explorer_rpc.GetTxByTxHashResponse - 35, // 81: injective_explorer_rpc.InjectiveExplorerRPC.GetPeggyDepositTxs:output_type -> injective_explorer_rpc.GetPeggyDepositTxsResponse - 38, // 82: injective_explorer_rpc.InjectiveExplorerRPC.GetPeggyWithdrawalTxs:output_type -> injective_explorer_rpc.GetPeggyWithdrawalTxsResponse - 41, // 83: injective_explorer_rpc.InjectiveExplorerRPC.GetIBCTransferTxs:output_type -> injective_explorer_rpc.GetIBCTransferTxsResponse - 44, // 84: injective_explorer_rpc.InjectiveExplorerRPC.GetWasmCodes:output_type -> injective_explorer_rpc.GetWasmCodesResponse - 49, // 85: injective_explorer_rpc.InjectiveExplorerRPC.GetWasmCodeByID:output_type -> injective_explorer_rpc.GetWasmCodeByIDResponse - 51, // 86: injective_explorer_rpc.InjectiveExplorerRPC.GetWasmContracts:output_type -> injective_explorer_rpc.GetWasmContractsResponse - 58, // 87: injective_explorer_rpc.InjectiveExplorerRPC.GetWasmContractByAddress:output_type -> injective_explorer_rpc.GetWasmContractByAddressResponse - 60, // 88: injective_explorer_rpc.InjectiveExplorerRPC.GetCw20Balance:output_type -> injective_explorer_rpc.GetCw20BalanceResponse - 63, // 89: injective_explorer_rpc.InjectiveExplorerRPC.Relayers:output_type -> injective_explorer_rpc.RelayersResponse - 67, // 90: injective_explorer_rpc.InjectiveExplorerRPC.GetBankTransfers:output_type -> injective_explorer_rpc.GetBankTransfersResponse - 71, // 91: injective_explorer_rpc.InjectiveExplorerRPC.StreamTxs:output_type -> injective_explorer_rpc.StreamTxsResponse - 73, // 92: injective_explorer_rpc.InjectiveExplorerRPC.StreamBlocks:output_type -> injective_explorer_rpc.StreamBlocksResponse - 71, // [71:93] is the sub-list for method output_type - 49, // [49:71] is the sub-list for method input_type - 49, // [49:49] is the sub-list for extension type_name - 49, // [49:49] is the sub-list for extension extendee - 0, // [0:49] is the sub-list for field type_name + 7, // 15: injective_explorer_rpc.TxData.signatures:type_name -> injective_explorer_rpc.Signature + 22, // 16: injective_explorer_rpc.GetValidatorsResponse.data:type_name -> injective_explorer_rpc.Validator + 23, // 17: injective_explorer_rpc.Validator.description:type_name -> injective_explorer_rpc.ValidatorDescription + 24, // 18: injective_explorer_rpc.Validator.uptimes:type_name -> injective_explorer_rpc.ValidatorUptime + 25, // 19: injective_explorer_rpc.Validator.slashing_events:type_name -> injective_explorer_rpc.SlashingEvent + 22, // 20: injective_explorer_rpc.GetValidatorResponse.data:type_name -> injective_explorer_rpc.Validator + 24, // 21: injective_explorer_rpc.GetValidatorUptimeResponse.data:type_name -> injective_explorer_rpc.ValidatorUptime + 2, // 22: injective_explorer_rpc.GetTxsResponse.paging:type_name -> injective_explorer_rpc.Paging + 19, // 23: injective_explorer_rpc.GetTxsResponse.data:type_name -> injective_explorer_rpc.TxData + 3, // 24: injective_explorer_rpc.GetTxByTxHashResponse.data:type_name -> injective_explorer_rpc.TxDetailData + 36, // 25: injective_explorer_rpc.GetPeggyDepositTxsResponse.field:type_name -> injective_explorer_rpc.PeggyDepositTx + 39, // 26: injective_explorer_rpc.GetPeggyWithdrawalTxsResponse.field:type_name -> injective_explorer_rpc.PeggyWithdrawalTx + 42, // 27: injective_explorer_rpc.GetIBCTransferTxsResponse.field:type_name -> injective_explorer_rpc.IBCTransferTx + 2, // 28: injective_explorer_rpc.GetWasmCodesResponse.paging:type_name -> injective_explorer_rpc.Paging + 45, // 29: injective_explorer_rpc.GetWasmCodesResponse.data:type_name -> injective_explorer_rpc.WasmCode + 46, // 30: injective_explorer_rpc.WasmCode.checksum:type_name -> injective_explorer_rpc.Checksum + 47, // 31: injective_explorer_rpc.WasmCode.permission:type_name -> injective_explorer_rpc.ContractPermission + 46, // 32: injective_explorer_rpc.GetWasmCodeByIDResponse.checksum:type_name -> injective_explorer_rpc.Checksum + 47, // 33: injective_explorer_rpc.GetWasmCodeByIDResponse.permission:type_name -> injective_explorer_rpc.ContractPermission + 2, // 34: injective_explorer_rpc.GetWasmContractsResponse.paging:type_name -> injective_explorer_rpc.Paging + 52, // 35: injective_explorer_rpc.GetWasmContractsResponse.data:type_name -> injective_explorer_rpc.WasmContract + 53, // 36: injective_explorer_rpc.WasmContract.funds:type_name -> injective_explorer_rpc.ContractFund + 54, // 37: injective_explorer_rpc.WasmContract.cw20_metadata:type_name -> injective_explorer_rpc.Cw20Metadata + 55, // 38: injective_explorer_rpc.Cw20Metadata.token_info:type_name -> injective_explorer_rpc.Cw20TokenInfo + 56, // 39: injective_explorer_rpc.Cw20Metadata.marketing_info:type_name -> injective_explorer_rpc.Cw20MarketingInfo + 53, // 40: injective_explorer_rpc.GetWasmContractByAddressResponse.funds:type_name -> injective_explorer_rpc.ContractFund + 54, // 41: injective_explorer_rpc.GetWasmContractByAddressResponse.cw20_metadata:type_name -> injective_explorer_rpc.Cw20Metadata + 61, // 42: injective_explorer_rpc.GetCw20BalanceResponse.field:type_name -> injective_explorer_rpc.WasmCw20Balance + 54, // 43: injective_explorer_rpc.WasmCw20Balance.cw20_metadata:type_name -> injective_explorer_rpc.Cw20Metadata + 64, // 44: injective_explorer_rpc.RelayersResponse.field:type_name -> injective_explorer_rpc.RelayerMarkets + 65, // 45: injective_explorer_rpc.RelayerMarkets.relayers:type_name -> injective_explorer_rpc.Relayer + 2, // 46: injective_explorer_rpc.GetBankTransfersResponse.paging:type_name -> injective_explorer_rpc.Paging + 68, // 47: injective_explorer_rpc.GetBankTransfersResponse.data:type_name -> injective_explorer_rpc.BankTransfer + 69, // 48: injective_explorer_rpc.BankTransfer.amounts:type_name -> injective_explorer_rpc.Coin + 15, // 49: injective_explorer_rpc.StreamBlocksResponse.txs:type_name -> injective_explorer_rpc.TxDataRPC + 0, // 50: injective_explorer_rpc.InjectiveExplorerRPC.GetAccountTxs:input_type -> injective_explorer_rpc.GetAccountTxsRequest + 8, // 51: injective_explorer_rpc.InjectiveExplorerRPC.GetContractTxs:input_type -> injective_explorer_rpc.GetContractTxsRequest + 10, // 52: injective_explorer_rpc.InjectiveExplorerRPC.GetContractTxsV2:input_type -> injective_explorer_rpc.GetContractTxsV2Request + 12, // 53: injective_explorer_rpc.InjectiveExplorerRPC.GetBlocks:input_type -> injective_explorer_rpc.GetBlocksRequest + 16, // 54: injective_explorer_rpc.InjectiveExplorerRPC.GetBlock:input_type -> injective_explorer_rpc.GetBlockRequest + 20, // 55: injective_explorer_rpc.InjectiveExplorerRPC.GetValidators:input_type -> injective_explorer_rpc.GetValidatorsRequest + 26, // 56: injective_explorer_rpc.InjectiveExplorerRPC.GetValidator:input_type -> injective_explorer_rpc.GetValidatorRequest + 28, // 57: injective_explorer_rpc.InjectiveExplorerRPC.GetValidatorUptime:input_type -> injective_explorer_rpc.GetValidatorUptimeRequest + 30, // 58: injective_explorer_rpc.InjectiveExplorerRPC.GetTxs:input_type -> injective_explorer_rpc.GetTxsRequest + 32, // 59: injective_explorer_rpc.InjectiveExplorerRPC.GetTxByTxHash:input_type -> injective_explorer_rpc.GetTxByTxHashRequest + 34, // 60: injective_explorer_rpc.InjectiveExplorerRPC.GetPeggyDepositTxs:input_type -> injective_explorer_rpc.GetPeggyDepositTxsRequest + 37, // 61: injective_explorer_rpc.InjectiveExplorerRPC.GetPeggyWithdrawalTxs:input_type -> injective_explorer_rpc.GetPeggyWithdrawalTxsRequest + 40, // 62: injective_explorer_rpc.InjectiveExplorerRPC.GetIBCTransferTxs:input_type -> injective_explorer_rpc.GetIBCTransferTxsRequest + 43, // 63: injective_explorer_rpc.InjectiveExplorerRPC.GetWasmCodes:input_type -> injective_explorer_rpc.GetWasmCodesRequest + 48, // 64: injective_explorer_rpc.InjectiveExplorerRPC.GetWasmCodeByID:input_type -> injective_explorer_rpc.GetWasmCodeByIDRequest + 50, // 65: injective_explorer_rpc.InjectiveExplorerRPC.GetWasmContracts:input_type -> injective_explorer_rpc.GetWasmContractsRequest + 57, // 66: injective_explorer_rpc.InjectiveExplorerRPC.GetWasmContractByAddress:input_type -> injective_explorer_rpc.GetWasmContractByAddressRequest + 59, // 67: injective_explorer_rpc.InjectiveExplorerRPC.GetCw20Balance:input_type -> injective_explorer_rpc.GetCw20BalanceRequest + 62, // 68: injective_explorer_rpc.InjectiveExplorerRPC.Relayers:input_type -> injective_explorer_rpc.RelayersRequest + 66, // 69: injective_explorer_rpc.InjectiveExplorerRPC.GetBankTransfers:input_type -> injective_explorer_rpc.GetBankTransfersRequest + 70, // 70: injective_explorer_rpc.InjectiveExplorerRPC.StreamTxs:input_type -> injective_explorer_rpc.StreamTxsRequest + 72, // 71: injective_explorer_rpc.InjectiveExplorerRPC.StreamBlocks:input_type -> injective_explorer_rpc.StreamBlocksRequest + 74, // 72: injective_explorer_rpc.InjectiveExplorerRPC.GetStats:input_type -> injective_explorer_rpc.GetStatsRequest + 1, // 73: injective_explorer_rpc.InjectiveExplorerRPC.GetAccountTxs:output_type -> injective_explorer_rpc.GetAccountTxsResponse + 9, // 74: injective_explorer_rpc.InjectiveExplorerRPC.GetContractTxs:output_type -> injective_explorer_rpc.GetContractTxsResponse + 11, // 75: injective_explorer_rpc.InjectiveExplorerRPC.GetContractTxsV2:output_type -> injective_explorer_rpc.GetContractTxsV2Response + 13, // 76: injective_explorer_rpc.InjectiveExplorerRPC.GetBlocks:output_type -> injective_explorer_rpc.GetBlocksResponse + 17, // 77: injective_explorer_rpc.InjectiveExplorerRPC.GetBlock:output_type -> injective_explorer_rpc.GetBlockResponse + 21, // 78: injective_explorer_rpc.InjectiveExplorerRPC.GetValidators:output_type -> injective_explorer_rpc.GetValidatorsResponse + 27, // 79: injective_explorer_rpc.InjectiveExplorerRPC.GetValidator:output_type -> injective_explorer_rpc.GetValidatorResponse + 29, // 80: injective_explorer_rpc.InjectiveExplorerRPC.GetValidatorUptime:output_type -> injective_explorer_rpc.GetValidatorUptimeResponse + 31, // 81: injective_explorer_rpc.InjectiveExplorerRPC.GetTxs:output_type -> injective_explorer_rpc.GetTxsResponse + 33, // 82: injective_explorer_rpc.InjectiveExplorerRPC.GetTxByTxHash:output_type -> injective_explorer_rpc.GetTxByTxHashResponse + 35, // 83: injective_explorer_rpc.InjectiveExplorerRPC.GetPeggyDepositTxs:output_type -> injective_explorer_rpc.GetPeggyDepositTxsResponse + 38, // 84: injective_explorer_rpc.InjectiveExplorerRPC.GetPeggyWithdrawalTxs:output_type -> injective_explorer_rpc.GetPeggyWithdrawalTxsResponse + 41, // 85: injective_explorer_rpc.InjectiveExplorerRPC.GetIBCTransferTxs:output_type -> injective_explorer_rpc.GetIBCTransferTxsResponse + 44, // 86: injective_explorer_rpc.InjectiveExplorerRPC.GetWasmCodes:output_type -> injective_explorer_rpc.GetWasmCodesResponse + 49, // 87: injective_explorer_rpc.InjectiveExplorerRPC.GetWasmCodeByID:output_type -> injective_explorer_rpc.GetWasmCodeByIDResponse + 51, // 88: injective_explorer_rpc.InjectiveExplorerRPC.GetWasmContracts:output_type -> injective_explorer_rpc.GetWasmContractsResponse + 58, // 89: injective_explorer_rpc.InjectiveExplorerRPC.GetWasmContractByAddress:output_type -> injective_explorer_rpc.GetWasmContractByAddressResponse + 60, // 90: injective_explorer_rpc.InjectiveExplorerRPC.GetCw20Balance:output_type -> injective_explorer_rpc.GetCw20BalanceResponse + 63, // 91: injective_explorer_rpc.InjectiveExplorerRPC.Relayers:output_type -> injective_explorer_rpc.RelayersResponse + 67, // 92: injective_explorer_rpc.InjectiveExplorerRPC.GetBankTransfers:output_type -> injective_explorer_rpc.GetBankTransfersResponse + 71, // 93: injective_explorer_rpc.InjectiveExplorerRPC.StreamTxs:output_type -> injective_explorer_rpc.StreamTxsResponse + 73, // 94: injective_explorer_rpc.InjectiveExplorerRPC.StreamBlocks:output_type -> injective_explorer_rpc.StreamBlocksResponse + 75, // 95: injective_explorer_rpc.InjectiveExplorerRPC.GetStats:output_type -> injective_explorer_rpc.GetStatsResponse + 73, // [73:96] is the sub-list for method output_type + 50, // [50:73] is the sub-list for method input_type + 50, // [50:50] is the sub-list for extension type_name + 50, // [50:50] is the sub-list for extension extendee + 0, // [0:50] is the sub-list for field type_name } func init() { file_goadesign_goagen_injective_explorer_rpc_proto_init() } @@ -8410,6 +8610,30 @@ func file_goadesign_goagen_injective_explorer_rpc_proto_init() { return nil } } + file_goadesign_goagen_injective_explorer_rpc_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetStatsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_goadesign_goagen_injective_explorer_rpc_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetStatsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } type x struct{} out := protoimpl.TypeBuilder{ @@ -8417,7 +8641,7 @@ func file_goadesign_goagen_injective_explorer_rpc_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_goadesign_goagen_injective_explorer_rpc_proto_rawDesc, NumEnums: 0, - NumMessages: 75, + NumMessages: 77, NumExtensions: 0, NumServices: 1, }, diff --git a/exchange/explorer_rpc/pb/goadesign_goagen_injective_explorer_rpc_grpc.pb.go b/exchange/explorer_rpc/pb/goadesign_goagen_injective_explorer_rpc_grpc.pb.go index bbcb920f..933865b7 100644 --- a/exchange/explorer_rpc/pb/goadesign_goagen_injective_explorer_rpc_grpc.pb.go +++ b/exchange/explorer_rpc/pb/goadesign_goagen_injective_explorer_rpc_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.2.0 -// - protoc v3.19.4 +// - protoc v3.21.12 // source: goadesign_goagen_injective_explorer_rpc.proto package injective_explorer_rpcpb @@ -70,6 +70,8 @@ type InjectiveExplorerRPCClient interface { StreamTxs(ctx context.Context, in *StreamTxsRequest, opts ...grpc.CallOption) (InjectiveExplorerRPC_StreamTxsClient, error) // StreamBlocks returns the latest blocks StreamBlocks(ctx context.Context, in *StreamBlocksRequest, opts ...grpc.CallOption) (InjectiveExplorerRPC_StreamBlocksClient, error) + // GetStats returns global exchange statistics in the last 24hs + GetStats(ctx context.Context, in *GetStatsRequest, opts ...grpc.CallOption) (*GetStatsResponse, error) } type injectiveExplorerRPCClient struct { @@ -324,6 +326,15 @@ func (x *injectiveExplorerRPCStreamBlocksClient) Recv() (*StreamBlocksResponse, return m, nil } +func (c *injectiveExplorerRPCClient) GetStats(ctx context.Context, in *GetStatsRequest, opts ...grpc.CallOption) (*GetStatsResponse, error) { + out := new(GetStatsResponse) + err := c.cc.Invoke(ctx, "/injective_explorer_rpc.InjectiveExplorerRPC/GetStats", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // InjectiveExplorerRPCServer is the server API for InjectiveExplorerRPC service. // All implementations must embed UnimplementedInjectiveExplorerRPCServer // for forward compatibility @@ -376,6 +387,8 @@ type InjectiveExplorerRPCServer interface { StreamTxs(*StreamTxsRequest, InjectiveExplorerRPC_StreamTxsServer) error // StreamBlocks returns the latest blocks StreamBlocks(*StreamBlocksRequest, InjectiveExplorerRPC_StreamBlocksServer) error + // GetStats returns global exchange statistics in the last 24hs + GetStats(context.Context, *GetStatsRequest) (*GetStatsResponse, error) mustEmbedUnimplementedInjectiveExplorerRPCServer() } @@ -449,6 +462,9 @@ func (UnimplementedInjectiveExplorerRPCServer) StreamTxs(*StreamTxsRequest, Inje func (UnimplementedInjectiveExplorerRPCServer) StreamBlocks(*StreamBlocksRequest, InjectiveExplorerRPC_StreamBlocksServer) error { return status.Errorf(codes.Unimplemented, "method StreamBlocks not implemented") } +func (UnimplementedInjectiveExplorerRPCServer) GetStats(context.Context, *GetStatsRequest) (*GetStatsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetStats not implemented") +} func (UnimplementedInjectiveExplorerRPCServer) mustEmbedUnimplementedInjectiveExplorerRPCServer() {} // UnsafeInjectiveExplorerRPCServer may be embedded to opt out of forward compatibility for this service. @@ -864,6 +880,24 @@ func (x *injectiveExplorerRPCStreamBlocksServer) Send(m *StreamBlocksResponse) e return x.ServerStream.SendMsg(m) } +func _InjectiveExplorerRPC_GetStats_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetStatsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(InjectiveExplorerRPCServer).GetStats(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/injective_explorer_rpc.InjectiveExplorerRPC/GetStats", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(InjectiveExplorerRPCServer).GetStats(ctx, req.(*GetStatsRequest)) + } + return interceptor(ctx, in, info, handler) +} + // InjectiveExplorerRPC_ServiceDesc is the grpc.ServiceDesc for InjectiveExplorerRPC service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -951,6 +985,10 @@ var InjectiveExplorerRPC_ServiceDesc = grpc.ServiceDesc{ MethodName: "GetBankTransfers", Handler: _InjectiveExplorerRPC_GetBankTransfers_Handler, }, + { + MethodName: "GetStats", + Handler: _InjectiveExplorerRPC_GetStats_Handler, + }, }, Streams: []grpc.StreamDesc{ { diff --git a/exchange/explorer_rpc/pb/injective_explorer_rpc.pb.gw.go b/exchange/explorer_rpc/pb/injective_explorer_rpc.pb.gw.go index 06257030..86e23918 100644 --- a/exchange/explorer_rpc/pb/injective_explorer_rpc.pb.gw.go +++ b/exchange/explorer_rpc/pb/injective_explorer_rpc.pb.gw.go @@ -761,6 +761,40 @@ func request_InjectiveExplorerRPC_StreamBlocks_0(ctx context.Context, marshaler } +func request_InjectiveExplorerRPC_GetStats_0(ctx context.Context, marshaler runtime.Marshaler, client InjectiveExplorerRPCClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetStatsRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.GetStats(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_InjectiveExplorerRPC_GetStats_0(ctx context.Context, marshaler runtime.Marshaler, server InjectiveExplorerRPCServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetStatsRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.GetStats(ctx, &protoReq) + return msg, metadata, err + +} + // RegisterInjectiveExplorerRPCHandlerServer registers the http handlers for service InjectiveExplorerRPC to "mux". // UnaryRPC :call InjectiveExplorerRPCServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. @@ -1281,6 +1315,31 @@ func RegisterInjectiveExplorerRPCHandlerServer(ctx context.Context, mux *runtime return }) + mux.Handle("POST", pattern_InjectiveExplorerRPC_GetStats_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/injective_explorer_rpc.InjectiveExplorerRPC/GetStats", runtime.WithHTTPPathPattern("/injective_explorer_rpc.InjectiveExplorerRPC/GetStats")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_InjectiveExplorerRPC_GetStats_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_InjectiveExplorerRPC_GetStats_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + return nil } @@ -1806,6 +1865,28 @@ func RegisterInjectiveExplorerRPCHandlerClient(ctx context.Context, mux *runtime }) + mux.Handle("POST", pattern_InjectiveExplorerRPC_GetStats_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/injective_explorer_rpc.InjectiveExplorerRPC/GetStats", runtime.WithHTTPPathPattern("/injective_explorer_rpc.InjectiveExplorerRPC/GetStats")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_InjectiveExplorerRPC_GetStats_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_InjectiveExplorerRPC_GetStats_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + return nil } @@ -1853,6 +1934,8 @@ var ( pattern_InjectiveExplorerRPC_StreamTxs_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"injective_explorer_rpc.InjectiveExplorerRPC", "StreamTxs"}, "")) pattern_InjectiveExplorerRPC_StreamBlocks_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"injective_explorer_rpc.InjectiveExplorerRPC", "StreamBlocks"}, "")) + + pattern_InjectiveExplorerRPC_GetStats_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"injective_explorer_rpc.InjectiveExplorerRPC", "GetStats"}, "")) ) var ( @@ -1899,4 +1982,6 @@ var ( forward_InjectiveExplorerRPC_StreamTxs_0 = runtime.ForwardResponseStream forward_InjectiveExplorerRPC_StreamBlocks_0 = runtime.ForwardResponseStream + + forward_InjectiveExplorerRPC_GetStats_0 = runtime.ForwardResponseMessage ) diff --git a/exchange/explorer_rpc/pb/injective_explorer_rpc.proto b/exchange/explorer_rpc/pb/injective_explorer_rpc.proto index 077fc0bc..72446b66 100644 --- a/exchange/explorer_rpc/pb/injective_explorer_rpc.proto +++ b/exchange/explorer_rpc/pb/injective_explorer_rpc.proto @@ -61,6 +61,8 @@ service InjectiveExplorerRPC { rpc StreamTxs (StreamTxsRequest) returns (stream StreamTxsResponse); // StreamBlocks returns the latest blocks rpc StreamBlocks (StreamBlocksRequest) returns (stream StreamBlocksResponse); + // GetStats returns global exchange statistics in the last 24hs + rpc GetStats (GetStatsRequest) returns (GetStatsResponse); } message GetAccountTxsRequest { @@ -274,6 +276,7 @@ message TxData { bytes logs = 11; // peggy bridge claim id, non-zero if tx contains MsgDepositClaim repeated sint64 claim_ids = 12; + repeated Signature signatures = 13; } message GetValidatorsRequest { @@ -868,3 +871,27 @@ message StreamBlocksResponse { repeated TxDataRPC txs = 8; string timestamp = 9; } + +message GetStatsRequest { +} + +message GetStatsResponse { + // Total of unique addresses + uint64 addresses = 1; + // Total number of assets + uint64 assets = 2; + // Total circulating supply of INJ + uint64 inj_supply = 3; + // Avg of TX per second in the past 24hs + uint64 txs_ps24_h = 4; + // Avg of TX per second in the 100 blocks + uint64 txs_ps100_b = 5; + // Total number of TXs + uint64 txs_total = 6; + // Total number of TXs in the past 24hs + uint64 txs24_h = 7; + // Total number of TXs in the past 30 days + uint64 txs30_d = 8; + // Number of blocks produced in the past 24hs + uint64 block_count24_h = 9; +} diff --git a/exchange/health_rpc/pb/goadesign_goagen_health.pb.go b/exchange/health_rpc/pb/goadesign_goagen_health.pb.go index 1a3968ae..9b896f97 100644 --- a/exchange/health_rpc/pb/goadesign_goagen_health.pb.go +++ b/exchange/health_rpc/pb/goadesign_goagen_health.pb.go @@ -8,7 +8,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.30.0 -// protoc v3.19.4 +// protoc v3.21.12 // source: goadesign_goagen_health.proto package api_v1pb @@ -152,6 +152,8 @@ type HealthStatus struct { HoracleHeight int32 `protobuf:"zigzag32,3,opt,name=horacle_height,json=horacleHeight,proto3" json:"horacle_height,omitempty"` // block timestamp from Horacle service. HoracleTimestamp int32 `protobuf:"zigzag32,4,opt,name=horacle_timestamp,json=horacleTimestamp,proto3" json:"horacle_timestamp,omitempty"` + // Migration version of the database. + MigrationLastVersion int32 `protobuf:"zigzag32,5,opt,name=migration_last_version,json=migrationLastVersion,proto3" json:"migration_last_version,omitempty"` } func (x *HealthStatus) Reset() { @@ -214,6 +216,13 @@ func (x *HealthStatus) GetHoracleTimestamp() int32 { return 0 } +func (x *HealthStatus) GetMigrationLastVersion() int32 { + if x != nil { + return x.MigrationLastVersion + } + return 0 +} + var File_goadesign_goagen_health_proto protoreflect.FileDescriptor var file_goadesign_goagen_health_proto_rawDesc = []byte{ @@ -228,7 +237,7 @@ var file_goadesign_goagen_health_proto_rawDesc = []byte{ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xae, 0x01, 0x0a, 0x0c, 0x48, 0x65, 0x61, + 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xe4, 0x01, 0x0a, 0x0c, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x11, 0x52, 0x0b, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x27, 0x0a, 0x0f, @@ -239,13 +248,16 @@ var file_goadesign_goagen_health_proto_rawDesc = []byte{ 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x2b, 0x0a, 0x11, 0x68, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x11, 0x52, 0x10, 0x68, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, - 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x32, 0x4a, 0x0a, 0x06, 0x48, 0x65, 0x61, - 0x6c, 0x74, 0x68, 0x12, 0x40, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x12, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x0b, 0x5a, 0x09, 0x2f, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, - 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x34, 0x0a, 0x16, 0x6d, 0x69, 0x67, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x11, 0x52, 0x14, 0x6d, 0x69, 0x67, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x61, 0x73, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x32, + 0x4a, 0x0a, 0x06, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x12, 0x40, 0x0a, 0x09, 0x47, 0x65, 0x74, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, + 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x0b, 0x5a, 0x09, 0x2f, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/exchange/health_rpc/pb/goadesign_goagen_health_grpc.pb.go b/exchange/health_rpc/pb/goadesign_goagen_health_grpc.pb.go index 193c66cf..aaf42a53 100644 --- a/exchange/health_rpc/pb/goadesign_goagen_health_grpc.pb.go +++ b/exchange/health_rpc/pb/goadesign_goagen_health_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.2.0 -// - protoc v3.19.4 +// - protoc v3.21.12 // source: goadesign_goagen_health.proto package api_v1pb diff --git a/exchange/health_rpc/pb/health.proto b/exchange/health_rpc/pb/health.proto index 0d503603..cc5a190d 100644 --- a/exchange/health_rpc/pb/health.proto +++ b/exchange/health_rpc/pb/health.proto @@ -38,4 +38,6 @@ message HealthStatus { sint32 horacle_height = 3; // block timestamp from Horacle service. sint32 horacle_timestamp = 4; + // Migration version of the database. + sint32 migration_last_version = 5; } diff --git a/exchange/insurance_rpc/pb/goadesign_goagen_injective_insurance_rpc.pb.go b/exchange/insurance_rpc/pb/goadesign_goagen_injective_insurance_rpc.pb.go index 400542ac..99aa0d6a 100644 --- a/exchange/insurance_rpc/pb/goadesign_goagen_injective_insurance_rpc.pb.go +++ b/exchange/insurance_rpc/pb/goadesign_goagen_injective_insurance_rpc.pb.go @@ -8,7 +8,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.30.0 -// protoc v3.19.4 +// protoc v3.21.12 // source: goadesign_goagen_injective_insurance_rpc.proto package injective_insurance_rpcpb @@ -137,7 +137,7 @@ type InsuranceFund struct { OracleType string `protobuf:"bytes,10,opt,name=oracle_type,json=oracleType,proto3" json:"oracle_type,omitempty"` // Defines the expiry, if any Expiry int64 `protobuf:"zigzag64,11,opt,name=expiry,proto3" json:"expiry,omitempty"` - // Token metadata for the deposit asset, only for Ethereum-based assets + // Token metadata for the deposit asset DepositTokenMeta *TokenMeta `protobuf:"bytes,12,opt,name=deposit_token_meta,json=depositTokenMeta,proto3" json:"deposit_token_meta,omitempty"` } @@ -264,7 +264,7 @@ type TokenMeta struct { // Token full name Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // Token Ethereum contract address + // Token contract address (native or not) Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"` // Token symbol short name Symbol string `protobuf:"bytes,3,opt,name=symbol,proto3" json:"symbol,omitempty"` diff --git a/exchange/insurance_rpc/pb/goadesign_goagen_injective_insurance_rpc_grpc.pb.go b/exchange/insurance_rpc/pb/goadesign_goagen_injective_insurance_rpc_grpc.pb.go index 5a87cd1a..ba318673 100644 --- a/exchange/insurance_rpc/pb/goadesign_goagen_injective_insurance_rpc_grpc.pb.go +++ b/exchange/insurance_rpc/pb/goadesign_goagen_injective_insurance_rpc_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.2.0 -// - protoc v3.19.4 +// - protoc v3.21.12 // source: goadesign_goagen_injective_insurance_rpc.proto package injective_insurance_rpcpb diff --git a/exchange/insurance_rpc/pb/injective_insurance_rpc.proto b/exchange/insurance_rpc/pb/injective_insurance_rpc.proto index b670ddea..29726fb6 100644 --- a/exchange/insurance_rpc/pb/injective_insurance_rpc.proto +++ b/exchange/insurance_rpc/pb/injective_insurance_rpc.proto @@ -49,14 +49,14 @@ message InsuranceFund { string oracle_type = 10; // Defines the expiry, if any sint64 expiry = 11; - // Token metadata for the deposit asset, only for Ethereum-based assets + // Token metadata for the deposit asset TokenMeta deposit_token_meta = 12; } message TokenMeta { // Token full name string name = 1; - // Token Ethereum contract address + // Token contract address (native or not) string address = 2; // Token symbol short name string symbol = 3; diff --git a/exchange/meta_rpc/pb/goadesign_goagen_injective_meta_rpc.pb.go b/exchange/meta_rpc/pb/goadesign_goagen_injective_meta_rpc.pb.go index e6f93ea1..3ddf3838 100644 --- a/exchange/meta_rpc/pb/goadesign_goagen_injective_meta_rpc.pb.go +++ b/exchange/meta_rpc/pb/goadesign_goagen_injective_meta_rpc.pb.go @@ -8,7 +8,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.30.0 -// protoc v3.19.4 +// protoc v3.21.12 // source: goadesign_goagen_injective_meta_rpc.proto package injective_meta_rpcpb diff --git a/exchange/meta_rpc/pb/goadesign_goagen_injective_meta_rpc_grpc.pb.go b/exchange/meta_rpc/pb/goadesign_goagen_injective_meta_rpc_grpc.pb.go index 3266ca1a..53281e05 100644 --- a/exchange/meta_rpc/pb/goadesign_goagen_injective_meta_rpc_grpc.pb.go +++ b/exchange/meta_rpc/pb/goadesign_goagen_injective_meta_rpc_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.2.0 -// - protoc v3.19.4 +// - protoc v3.21.12 // source: goadesign_goagen_injective_meta_rpc.proto package injective_meta_rpcpb diff --git a/exchange/oracle_rpc/pb/goadesign_goagen_injective_oracle_rpc.pb.go b/exchange/oracle_rpc/pb/goadesign_goagen_injective_oracle_rpc.pb.go index 3308dfee..23d0f553 100644 --- a/exchange/oracle_rpc/pb/goadesign_goagen_injective_oracle_rpc.pb.go +++ b/exchange/oracle_rpc/pb/goadesign_goagen_injective_oracle_rpc.pb.go @@ -8,7 +8,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.30.0 -// protoc v3.19.4 +// protoc v3.21.12 // source: goadesign_goagen_injective_oracle_rpc.proto package injective_oracle_rpcpb diff --git a/exchange/oracle_rpc/pb/goadesign_goagen_injective_oracle_rpc_grpc.pb.go b/exchange/oracle_rpc/pb/goadesign_goagen_injective_oracle_rpc_grpc.pb.go index 4c24eee8..e3b84c89 100644 --- a/exchange/oracle_rpc/pb/goadesign_goagen_injective_oracle_rpc_grpc.pb.go +++ b/exchange/oracle_rpc/pb/goadesign_goagen_injective_oracle_rpc_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.2.0 -// - protoc v3.19.4 +// - protoc v3.21.12 // source: goadesign_goagen_injective_oracle_rpc.proto package injective_oracle_rpcpb diff --git a/exchange/portfolio_rpc/pb/goadesign_goagen_injective_portfolio_rpc.pb.go b/exchange/portfolio_rpc/pb/goadesign_goagen_injective_portfolio_rpc.pb.go index 4a6d0331..12ee3ba2 100644 --- a/exchange/portfolio_rpc/pb/goadesign_goagen_injective_portfolio_rpc.pb.go +++ b/exchange/portfolio_rpc/pb/goadesign_goagen_injective_portfolio_rpc.pb.go @@ -8,7 +8,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.30.0 -// protoc v3.19.4 +// protoc v3.21.12 // source: goadesign_goagen_injective_portfolio_rpc.proto package injective_portfolio_rpcpb diff --git a/exchange/portfolio_rpc/pb/goadesign_goagen_injective_portfolio_rpc_grpc.pb.go b/exchange/portfolio_rpc/pb/goadesign_goagen_injective_portfolio_rpc_grpc.pb.go index 86b88e4d..f109be41 100644 --- a/exchange/portfolio_rpc/pb/goadesign_goagen_injective_portfolio_rpc_grpc.pb.go +++ b/exchange/portfolio_rpc/pb/goadesign_goagen_injective_portfolio_rpc_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.2.0 -// - protoc v3.19.4 +// - protoc v3.21.12 // source: goadesign_goagen_injective_portfolio_rpc.proto package injective_portfolio_rpcpb diff --git a/exchange/spot_exchange_rpc/pb/goadesign_goagen_injective_spot_exchange_rpc.pb.go b/exchange/spot_exchange_rpc/pb/goadesign_goagen_injective_spot_exchange_rpc.pb.go index e42a27b8..34363beb 100644 --- a/exchange/spot_exchange_rpc/pb/goadesign_goagen_injective_spot_exchange_rpc.pb.go +++ b/exchange/spot_exchange_rpc/pb/goadesign_goagen_injective_spot_exchange_rpc.pb.go @@ -8,7 +8,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.30.0 -// protoc v3.19.4 +// protoc v3.21.12 // source: goadesign_goagen_injective_spot_exchange_rpc.proto package injective_spot_exchange_rpcpb @@ -163,11 +163,11 @@ type SpotMarketInfo struct { Ticker string `protobuf:"bytes,3,opt,name=ticker,proto3" json:"ticker,omitempty"` // Coin denom used for the base asset. BaseDenom string `protobuf:"bytes,4,opt,name=base_denom,json=baseDenom,proto3" json:"base_denom,omitempty"` - // Token metadata for base asset, only for Ethereum-based assets + // Token metadata for base asset BaseTokenMeta *TokenMeta `protobuf:"bytes,5,opt,name=base_token_meta,json=baseTokenMeta,proto3" json:"base_token_meta,omitempty"` // Coin denom used for the quote asset. QuoteDenom string `protobuf:"bytes,6,opt,name=quote_denom,json=quoteDenom,proto3" json:"quote_denom,omitempty"` - // Token metadata for quote asset, only for Ethereum-based assets + // Token metadata for quote asset QuoteTokenMeta *TokenMeta `protobuf:"bytes,7,opt,name=quote_token_meta,json=quoteTokenMeta,proto3" json:"quote_token_meta,omitempty"` // Defines the fee percentage makers pay when trading (in quote asset) MakerFeeRate string `protobuf:"bytes,8,opt,name=maker_fee_rate,json=makerFeeRate,proto3" json:"maker_fee_rate,omitempty"` @@ -313,7 +313,7 @@ type TokenMeta struct { // Token full name Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // Token Ethereum contract address + // Token contract address (native or not) Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"` // Token symbol short name Symbol string `protobuf:"bytes,3,opt,name=symbol,proto3" json:"symbol,omitempty"` @@ -2107,6 +2107,8 @@ type TradesRequest struct { AccountAddress string `protobuf:"bytes,13,opt,name=account_address,json=accountAddress,proto3" json:"account_address,omitempty"` // Client order ID Cid string `protobuf:"bytes,14,opt,name=cid,proto3" json:"cid,omitempty"` + // Fee recipient address + FeeRecipient string `protobuf:"bytes,15,opt,name=fee_recipient,json=feeRecipient,proto3" json:"fee_recipient,omitempty"` } func (x *TradesRequest) Reset() { @@ -2239,6 +2241,13 @@ func (x *TradesRequest) GetCid() string { return "" } +func (x *TradesRequest) GetFeeRecipient() string { + if x != nil { + return x.FeeRecipient + } + return "" +} + type TradesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2477,6 +2486,8 @@ type StreamTradesRequest struct { AccountAddress string `protobuf:"bytes,13,opt,name=account_address,json=accountAddress,proto3" json:"account_address,omitempty"` // Client order ID Cid string `protobuf:"bytes,14,opt,name=cid,proto3" json:"cid,omitempty"` + // Fee recipient address + FeeRecipient string `protobuf:"bytes,15,opt,name=fee_recipient,json=feeRecipient,proto3" json:"fee_recipient,omitempty"` } func (x *StreamTradesRequest) Reset() { @@ -2609,6 +2620,13 @@ func (x *StreamTradesRequest) GetCid() string { return "" } +func (x *StreamTradesRequest) GetFeeRecipient() string { + if x != nil { + return x.FeeRecipient + } + return "" +} + type StreamTradesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2709,6 +2727,8 @@ type TradesV2Request struct { AccountAddress string `protobuf:"bytes,13,opt,name=account_address,json=accountAddress,proto3" json:"account_address,omitempty"` // Client order ID Cid string `protobuf:"bytes,14,opt,name=cid,proto3" json:"cid,omitempty"` + // Fee recipient address + FeeRecipient string `protobuf:"bytes,15,opt,name=fee_recipient,json=feeRecipient,proto3" json:"fee_recipient,omitempty"` } func (x *TradesV2Request) Reset() { @@ -2841,6 +2861,13 @@ func (x *TradesV2Request) GetCid() string { return "" } +func (x *TradesV2Request) GetFeeRecipient() string { + if x != nil { + return x.FeeRecipient + } + return "" +} + type TradesV2Response struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2932,6 +2959,8 @@ type StreamTradesV2Request struct { AccountAddress string `protobuf:"bytes,13,opt,name=account_address,json=accountAddress,proto3" json:"account_address,omitempty"` // Client order ID Cid string `protobuf:"bytes,14,opt,name=cid,proto3" json:"cid,omitempty"` + // Fee recipient address + FeeRecipient string `protobuf:"bytes,15,opt,name=fee_recipient,json=feeRecipient,proto3" json:"fee_recipient,omitempty"` } func (x *StreamTradesV2Request) Reset() { @@ -3064,6 +3093,13 @@ func (x *StreamTradesV2Request) GetCid() string { return "" } +func (x *StreamTradesV2Request) GetFeeRecipient() string { + if x != nil { + return x.FeeRecipient + } + return "" +} + type StreamTradesV2Response struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -4611,7 +4647,7 @@ var file_goadesign_goagen_injective_spot_exchange_rpc_proto_rawDesc = []byte{ 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x22, 0xbf, 0x03, 0x0a, 0x0d, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x70, 0x22, 0xe4, 0x03, 0x0a, 0x0d, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x69, @@ -4639,485 +4675,494 @@ var file_goadesign_goagen_injective_spot_exchange_rpc_proto_rawDesc = []byte{ 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x69, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x63, 0x69, 0x64, 0x22, 0x8d, 0x01, 0x0a, 0x0e, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x06, 0x74, 0x72, 0x61, 0x64, 0x65, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, - 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x70, 0x6f, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x52, 0x06, - 0x74, 0x72, 0x61, 0x64, 0x65, 0x73, 0x12, 0x3b, 0x0a, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, - 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x70, 0x61, 0x67, - 0x69, 0x6e, 0x67, 0x22, 0xb2, 0x03, 0x0a, 0x09, 0x53, 0x70, 0x6f, 0x74, 0x54, 0x72, 0x61, 0x64, - 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x48, 0x61, 0x73, 0x68, - 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, - 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, - 0x49, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x74, 0x72, 0x61, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x12, 0x74, 0x72, 0x61, 0x64, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x74, 0x72, 0x61, 0x64, 0x65, 0x5f, 0x64, 0x69, - 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x74, - 0x72, 0x61, 0x64, 0x65, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3d, 0x0a, - 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x69, - 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, - 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x72, 0x69, 0x63, 0x65, - 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x10, 0x0a, 0x03, - 0x66, 0x65, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x66, 0x65, 0x65, 0x12, 0x1f, - 0x0a, 0x0b, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x12, 0x52, 0x0a, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, - 0x23, 0x0a, 0x0d, 0x66, 0x65, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x66, 0x65, 0x65, 0x52, 0x65, 0x63, 0x69, 0x70, - 0x69, 0x65, 0x6e, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x72, 0x61, 0x64, 0x65, 0x5f, 0x69, 0x64, - 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x72, 0x61, 0x64, 0x65, 0x49, 0x64, 0x12, - 0x25, 0x0a, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x69, 0x64, - 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, - 0x6f, 0x6e, 0x53, 0x69, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x69, 0x64, 0x18, 0x0c, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, 0x69, 0x64, 0x22, 0xc5, 0x03, 0x0a, 0x13, 0x53, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x25, 0x0a, - 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x53, 0x69, 0x64, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x6c, - 0x69, 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, - 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, - 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x12, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, - 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x75, - 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x0a, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, - 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, - 0x79, 0x70, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x72, - 0x61, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x72, - 0x61, 0x64, 0x65, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x10, - 0x0a, 0x03, 0x63, 0x69, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, 0x69, 0x64, - 0x22, 0x99, 0x01, 0x0a, 0x14, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x64, 0x65, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x05, 0x74, 0x72, 0x61, - 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, - 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x70, 0x6f, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, - 0x52, 0x05, 0x74, 0x72, 0x61, 0x64, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x70, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, - 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x12, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0xc1, 0x03, 0x0a, - 0x0f, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x56, 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x25, 0x0a, - 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x53, 0x69, 0x64, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x6c, - 0x69, 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, - 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, - 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x12, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, - 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x75, - 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x0a, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, - 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, - 0x79, 0x70, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x72, - 0x61, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x72, - 0x61, 0x64, 0x65, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x10, - 0x0a, 0x03, 0x63, 0x69, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, 0x69, 0x64, - 0x22, 0x8f, 0x01, 0x0a, 0x10, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x56, 0x32, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x06, 0x74, 0x72, 0x61, 0x64, 0x65, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, - 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, - 0x72, 0x70, 0x63, 0x2e, 0x53, 0x70, 0x6f, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x52, 0x06, 0x74, - 0x72, 0x61, 0x64, 0x65, 0x73, 0x12, 0x3b, 0x0a, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, - 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, - 0x72, 0x70, 0x63, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x70, 0x61, 0x67, 0x69, - 0x6e, 0x67, 0x22, 0xc7, 0x03, 0x0a, 0x15, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x72, 0x61, - 0x64, 0x65, 0x73, 0x56, 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, - 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0d, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x69, 0x64, 0x65, - 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, + 0x63, 0x69, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x65, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x69, 0x70, + 0x69, 0x65, 0x6e, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x66, 0x65, 0x65, 0x52, + 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x22, 0x8d, 0x01, 0x0a, 0x0e, 0x54, 0x72, 0x61, + 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x06, 0x74, + 0x72, 0x61, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x69, 0x6e, + 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x70, 0x6f, 0x74, 0x54, 0x72, + 0x61, 0x64, 0x65, 0x52, 0x06, 0x74, 0x72, 0x61, 0x64, 0x65, 0x73, 0x12, 0x3b, 0x0a, 0x06, 0x70, + 0x61, 0x67, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x69, 0x6e, + 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, + 0x52, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x22, 0xb2, 0x03, 0x0a, 0x09, 0x53, 0x70, 0x6f, + 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, + 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x72, 0x64, 0x65, + 0x72, 0x48, 0x61, 0x73, 0x68, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, + 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, + 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, + 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x74, 0x72, 0x61, 0x64, 0x65, + 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x74, 0x72, 0x61, 0x64, 0x65, 0x45, 0x78, 0x65, 0x63, + 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x74, 0x72, 0x61, + 0x64, 0x65, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0e, 0x74, 0x72, 0x61, 0x64, 0x65, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x3d, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x27, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, + 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, + 0x50, 0x72, 0x69, 0x63, 0x65, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, + 0x65, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x65, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x66, 0x65, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x64, 0x5f, + 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0a, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, + 0x65, 0x64, 0x41, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x65, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x69, + 0x70, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x66, 0x65, 0x65, + 0x52, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x72, 0x61, + 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x72, 0x61, + 0x64, 0x65, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x78, + 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x69, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x63, + 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, 0x69, 0x64, 0x22, 0xea, 0x03, + 0x0a, 0x13, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, + 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x73, 0x69, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x78, 0x65, 0x63, + 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x69, 0x64, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x69, 0x72, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x69, + 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, + 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, + 0x73, 0x6b, 0x69, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6b, 0x69, 0x70, + 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x11, 0x52, + 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, + 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, + 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x12, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, + 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x09, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x73, 0x12, + 0x25, 0x0a, 0x0e, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, + 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x49, 0x64, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, + 0x19, 0x0a, 0x08, 0x74, 0x72, 0x61, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x74, 0x72, 0x61, 0x64, 0x65, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x0d, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x69, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x63, 0x69, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x65, 0x65, 0x5f, 0x72, 0x65, 0x63, + 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x66, 0x65, + 0x65, 0x52, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x22, 0x99, 0x01, 0x0a, 0x14, 0x53, + 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x05, 0x74, 0x72, 0x61, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, + 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, + 0x2e, 0x53, 0x70, 0x6f, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x52, 0x05, 0x74, 0x72, 0x61, 0x64, + 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x74, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0xe6, 0x03, 0x0a, 0x0f, 0x54, 0x72, 0x61, 0x64, 0x65, + 0x73, 0x56, 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, + 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, + 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0d, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x69, 0x64, 0x65, 0x12, 0x1c, + 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, + 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, + 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x04, 0x73, 0x6b, 0x69, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x12, 0x52, + 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, + 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x12, 0x52, 0x07, 0x65, 0x6e, + 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, + 0x69, 0x64, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, + 0x74, 0x49, 0x64, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x75, + 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x65, + 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x0b, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, + 0x79, 0x70, 0x65, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x72, 0x61, 0x64, 0x65, 0x5f, 0x69, 0x64, + 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x72, 0x61, 0x64, 0x65, 0x49, 0x64, 0x12, + 0x27, 0x0a, 0x0f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x69, 0x64, 0x18, + 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, 0x69, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x65, + 0x65, 0x5f, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0c, 0x66, 0x65, 0x65, 0x52, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x22, + 0x8f, 0x01, 0x0a, 0x10, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x56, 0x32, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x06, 0x74, 0x72, 0x61, 0x64, 0x65, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, + 0x70, 0x63, 0x2e, 0x53, 0x70, 0x6f, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x52, 0x06, 0x74, 0x72, + 0x61, 0x64, 0x65, 0x73, 0x12, 0x3b, 0x0a, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, + 0x70, 0x63, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, + 0x67, 0x22, 0xec, 0x03, 0x0a, 0x15, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x64, + 0x65, 0x73, 0x56, 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6d, + 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x78, 0x65, 0x63, + 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0d, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x69, 0x64, 0x65, 0x12, + 0x1c, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, + 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1d, 0x0a, 0x0a, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x12, + 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, + 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x12, 0x52, 0x07, 0x65, + 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, + 0x5f, 0x69, 0x64, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x61, 0x72, 0x6b, + 0x65, 0x74, 0x49, 0x64, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x73, + 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x73, 0x12, 0x27, 0x0a, 0x0f, + 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, + 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, + 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x72, 0x61, 0x64, 0x65, 0x5f, 0x69, + 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x72, 0x61, 0x64, 0x65, 0x49, 0x64, + 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x69, 0x64, + 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, 0x69, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x66, + 0x65, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x0f, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0c, 0x66, 0x65, 0x65, 0x52, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, + 0x22, 0x9b, 0x01, 0x0a, 0x16, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x64, 0x65, + 0x73, 0x56, 0x32, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x05, 0x74, + 0x72, 0x61, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x69, 0x6e, 0x6a, + 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x70, 0x6f, 0x74, 0x54, 0x72, 0x61, + 0x64, 0x65, 0x52, 0x05, 0x74, 0x72, 0x61, 0x64, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x12, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0x89, + 0x01, 0x0a, 0x1b, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4f, 0x72, 0x64, + 0x65, 0x72, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1d, 0x0a, - 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x12, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, - 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x12, 0x52, 0x07, - 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x72, 0x6b, 0x65, - 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x61, 0x72, - 0x6b, 0x65, 0x74, 0x49, 0x64, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, - 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x73, 0x12, 0x27, 0x0a, - 0x0f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, - 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x72, 0x61, 0x64, 0x65, 0x5f, - 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x72, 0x61, 0x64, 0x65, 0x49, - 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x69, - 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, 0x69, 0x64, 0x22, 0x9b, 0x01, 0x0a, - 0x16, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x56, 0x32, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x05, 0x74, 0x72, 0x61, 0x64, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, - 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x70, 0x6f, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x52, 0x05, - 0x74, 0x72, 0x61, 0x64, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, - 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x12, 0x52, - 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0x89, 0x01, 0x0a, 0x1b, 0x53, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, + 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, + 0x73, 0x6b, 0x69, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0xa0, 0x01, 0x0a, 0x1c, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x4c, - 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, + 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x6f, + 0x72, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x69, 0x6e, + 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x70, 0x6f, 0x74, 0x4c, 0x69, + 0x6d, 0x69, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x06, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, + 0x12, 0x3b, 0x0a, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x23, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, + 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, + 0x61, 0x67, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x22, 0xce, 0x01, + 0x0a, 0x1b, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x64, + 0x65, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, + 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, + 0x25, 0x0a, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, + 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, + 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0x5e, + 0x0a, 0x1c, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x64, + 0x65, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, + 0x0a, 0x06, 0x74, 0x72, 0x61, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, + 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, + 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x70, 0x6f, + 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x52, 0x06, 0x74, 0x72, 0x61, 0x64, 0x65, 0x73, 0x22, 0xb6, + 0x03, 0x0a, 0x14, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, + 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, + 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6b, 0x69, + 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x12, 0x14, 0x0a, + 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, 0x69, + 0x6d, 0x69, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, + 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x54, + 0x79, 0x70, 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, + 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x12, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, + 0x74, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x78, 0x65, + 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, + 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x72, + 0x61, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x72, + 0x61, 0x64, 0x65, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x13, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, + 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x0d, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x11, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, + 0x73, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x69, 0x64, 0x18, 0x0e, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x63, 0x69, 0x64, 0x22, 0x9b, 0x01, 0x0a, 0x15, 0x4f, 0x72, 0x64, 0x65, + 0x72, 0x73, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x45, 0x0a, 0x06, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x2d, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, + 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, + 0x53, 0x70, 0x6f, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, + 0x52, 0x06, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x3b, 0x0a, 0x06, 0x70, 0x61, 0x67, 0x69, + 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, + 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x70, + 0x61, 0x67, 0x69, 0x6e, 0x67, 0x22, 0xf3, 0x03, 0x0a, 0x10, 0x53, 0x70, 0x6f, 0x74, 0x4f, 0x72, + 0x64, 0x65, 0x72, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x72, + 0x64, 0x65, 0x72, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x6f, 0x72, 0x64, 0x65, 0x72, 0x48, 0x61, 0x73, 0x68, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, + 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, + 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x73, 0x5f, 0x61, 0x63, 0x74, + 0x69, 0x76, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, 0x41, 0x63, 0x74, + 0x69, 0x76, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x78, 0x65, 0x63, + 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0d, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x1d, 0x0a, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, + 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, + 0x72, 0x69, 0x63, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x5f, + 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x74, 0x72, 0x69, + 0x67, 0x67, 0x65, 0x72, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x71, 0x75, 0x61, + 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x71, 0x75, 0x61, + 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x66, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x5f, + 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, + 0x66, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x14, + 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, + 0x74, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, + 0x61, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, + 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, + 0x41, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x17, 0x0a, 0x07, 0x74, 0x78, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x0f, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x69, 0x64, + 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, 0x69, 0x64, 0x22, 0xdc, 0x01, 0x0a, 0x1a, + 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x48, 0x69, 0x73, 0x74, + 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, - 0x73, 0x6b, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6b, 0x69, 0x70, - 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x11, 0x52, - 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0xa0, 0x01, 0x0a, 0x1c, 0x53, 0x75, 0x62, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x6f, 0x72, 0x64, 0x65, 0x72, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, - 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x70, 0x6f, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4f, - 0x72, 0x64, 0x65, 0x72, 0x52, 0x06, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x3b, 0x0a, 0x06, - 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x69, + 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, + 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x1c, 0x0a, + 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x73, + 0x74, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, + 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x78, 0x65, 0x63, + 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x22, 0xa7, 0x01, 0x0a, 0x1b, 0x53, + 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x48, 0x69, 0x73, 0x74, 0x6f, + 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x05, 0x6f, 0x72, + 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x69, 0x6e, 0x6a, 0x65, + 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x70, 0x6f, 0x74, 0x4f, 0x72, 0x64, 0x65, + 0x72, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, + 0x25, 0x0a, 0x0e, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x22, 0xc7, 0x01, 0x0a, 0x18, 0x41, 0x74, 0x6f, 0x6d, 0x69, 0x63, 0x53, + 0x77, 0x61, 0x70, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x63, + 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x41, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x11, 0x52, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, + 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, + 0x12, 0x1f, 0x0a, 0x0b, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x11, 0x52, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x4e, 0x75, 0x6d, 0x62, 0x65, + 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x6f, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x11, 0x52, 0x08, 0x74, 0x6f, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x95, + 0x01, 0x0a, 0x19, 0x41, 0x74, 0x6f, 0x6d, 0x69, 0x63, 0x53, 0x77, 0x61, 0x70, 0x48, 0x69, 0x73, + 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x06, + 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, - 0x67, 0x52, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x22, 0xce, 0x01, 0x0a, 0x1b, 0x53, 0x75, - 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x4c, 0x69, - 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0c, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1b, - 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x65, - 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, - 0x73, 0x6b, 0x69, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0x5e, 0x0a, 0x1c, 0x53, 0x75, - 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x4c, 0x69, - 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x06, 0x74, 0x72, - 0x61, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x69, 0x6e, 0x6a, + 0x67, 0x52, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x12, 0x3b, 0x0a, 0x04, 0x64, 0x61, 0x74, + 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, + 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x41, 0x74, 0x6f, 0x6d, 0x69, 0x63, 0x53, 0x77, 0x61, 0x70, + 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xe0, 0x03, 0x0a, 0x0a, 0x41, 0x74, 0x6f, 0x6d, 0x69, + 0x63, 0x53, 0x77, 0x61, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x14, 0x0a, + 0x05, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x72, 0x6f, + 0x75, 0x74, 0x65, 0x12, 0x42, 0x0a, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x63, 0x6f, + 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, + 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x0a, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x3e, 0x0a, 0x09, 0x64, 0x65, 0x73, 0x74, 0x5f, + 0x63, 0x6f, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x70, 0x6f, 0x74, 0x54, 0x72, 0x61, - 0x64, 0x65, 0x52, 0x06, 0x74, 0x72, 0x61, 0x64, 0x65, 0x73, 0x22, 0xb6, 0x03, 0x0a, 0x14, 0x4f, - 0x72, 0x64, 0x65, 0x72, 0x73, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x61, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, - 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, - 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, - 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, - 0x1f, 0x0a, 0x0b, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x05, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x73, - 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, - 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x12, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, - 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x12, 0x52, - 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, - 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x27, - 0x0a, 0x0f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, - 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, - 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x72, 0x6b, 0x65, - 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x61, 0x72, - 0x6b, 0x65, 0x74, 0x49, 0x64, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x72, 0x61, 0x64, 0x65, 0x5f, - 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x72, 0x61, 0x64, 0x65, 0x49, - 0x64, 0x12, 0x2e, 0x0a, 0x13, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x6d, 0x61, 0x72, 0x6b, - 0x65, 0x74, 0x73, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, - 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x4f, 0x6e, 0x6c, - 0x79, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x69, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x63, 0x69, 0x64, 0x22, 0x9b, 0x01, 0x0a, 0x15, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x48, 0x69, - 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, - 0x06, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, - 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, - 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x70, 0x6f, 0x74, - 0x4f, 0x72, 0x64, 0x65, 0x72, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x06, 0x6f, 0x72, - 0x64, 0x65, 0x72, 0x73, 0x12, 0x3b, 0x0a, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, - 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, - 0x70, 0x63, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, - 0x67, 0x22, 0xf3, 0x03, 0x0a, 0x10, 0x53, 0x70, 0x6f, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x48, - 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, - 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x72, 0x64, 0x65, - 0x72, 0x48, 0x61, 0x73, 0x68, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, - 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, - 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x73, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, - 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x78, - 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, - 0x72, 0x64, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, - 0x69, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, - 0x12, 0x23, 0x0a, 0x0d, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x69, 0x63, - 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, - 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, - 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, - 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x66, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x5f, 0x71, 0x75, 0x61, 0x6e, - 0x74, 0x69, 0x74, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x66, 0x69, 0x6c, 0x6c, - 0x65, 0x64, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, - 0x61, 0x74, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, - 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0c, - 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, - 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0d, 0x20, - 0x01, 0x28, 0x12, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1c, - 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x07, - 0x74, 0x78, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, - 0x78, 0x48, 0x61, 0x73, 0x68, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x69, 0x64, 0x18, 0x10, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x63, 0x69, 0x64, 0x22, 0xdc, 0x01, 0x0a, 0x1a, 0x53, 0x74, 0x72, 0x65, - 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, - 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6d, - 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x72, 0x64, 0x65, - 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x6f, - 0x72, 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x69, 0x72, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x69, - 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x27, 0x0a, - 0x0f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, - 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x22, 0xa7, 0x01, 0x0a, 0x1b, 0x53, 0x74, 0x72, 0x65, 0x61, - 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, + 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x08, 0x64, + 0x65, 0x73, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x35, 0x0a, 0x04, 0x66, 0x65, 0x65, 0x73, 0x18, + 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, - 0x72, 0x70, 0x63, 0x2e, 0x53, 0x70, 0x6f, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x48, 0x69, 0x73, - 0x74, 0x6f, 0x72, 0x79, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x25, 0x0a, 0x0e, 0x6f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x22, 0xc7, 0x01, 0x0a, 0x18, 0x41, 0x74, 0x6f, 0x6d, 0x69, 0x63, 0x53, 0x77, 0x61, 0x70, 0x48, - 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, - 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x72, - 0x61, 0x63, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, - 0x73, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x11, - 0x52, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1f, 0x0a, 0x0b, - 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x11, 0x52, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1b, 0x0a, - 0x09, 0x74, 0x6f, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x11, - 0x52, 0x08, 0x74, 0x6f, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x95, 0x01, 0x0a, 0x19, 0x41, - 0x74, 0x6f, 0x6d, 0x69, 0x63, 0x53, 0x77, 0x61, 0x70, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x06, 0x70, 0x61, 0x67, 0x69, - 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, - 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x70, - 0x61, 0x67, 0x69, 0x6e, 0x67, 0x12, 0x3b, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, - 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, - 0x63, 0x2e, 0x41, 0x74, 0x6f, 0x6d, 0x69, 0x63, 0x53, 0x77, 0x61, 0x70, 0x52, 0x04, 0x64, 0x61, - 0x74, 0x61, 0x22, 0xe0, 0x03, 0x0a, 0x0a, 0x41, 0x74, 0x6f, 0x6d, 0x69, 0x63, 0x53, 0x77, 0x61, - 0x70, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x6f, 0x75, - 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x12, - 0x42, 0x0a, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x69, 0x6e, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x04, 0x66, 0x65, 0x65, 0x73, 0x12, 0x29, + 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, + 0x63, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x69, 0x6e, 0x64, + 0x65, 0x78, 0x5f, 0x62, 0x79, 0x5f, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x11, 0x52, 0x0d, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x79, 0x53, 0x65, 0x6e, 0x64, 0x65, + 0x72, 0x12, 0x37, 0x0a, 0x18, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x62, 0x79, 0x5f, 0x73, 0x65, + 0x6e, 0x64, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x11, 0x52, 0x15, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x79, 0x53, 0x65, 0x6e, 0x64, + 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x78, + 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x78, 0x48, + 0x61, 0x73, 0x68, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x64, 0x5f, + 0x61, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0a, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, + 0x65, 0x64, 0x41, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x66, 0x75, 0x6e, 0x64, 0x5f, 0x61, + 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x66, + 0x75, 0x6e, 0x64, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x34, 0x0a, 0x04, 0x43, 0x6f, 0x69, + 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x32, + 0x9e, 0x11, 0x0a, 0x18, 0x49, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53, 0x70, 0x6f, + 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x50, 0x43, 0x12, 0x64, 0x0a, 0x07, + 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x2b, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, + 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, - 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, - 0x6f, 0x69, 0x6e, 0x12, 0x3e, 0x0a, 0x09, 0x64, 0x65, 0x73, 0x74, 0x5f, 0x63, 0x6f, 0x69, 0x6e, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, + 0x70, 0x63, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x61, 0x0a, 0x06, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x12, 0x2a, 0x2e, 0x69, + 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, + 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, + 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x78, 0x0a, 0x0d, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4d, + 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x31, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x08, 0x64, 0x65, 0x73, 0x74, 0x43, - 0x6f, 0x69, 0x6e, 0x12, 0x35, 0x0a, 0x04, 0x66, 0x65, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x21, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, + 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4d, 0x61, 0x72, 0x6b, 0x65, + 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x69, 0x6e, 0x6a, 0x65, + 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4d, 0x61, + 0x72, 0x6b, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, + 0x70, 0x0a, 0x0b, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x56, 0x32, 0x12, 0x2f, + 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, + 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4f, 0x72, 0x64, + 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x56, 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x30, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, + 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4f, 0x72, + 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x56, 0x32, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x73, 0x0a, 0x0c, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x56, + 0x32, 0x12, 0x30, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, - 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x04, 0x66, 0x65, 0x65, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x6f, - 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x41, 0x64, - 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x62, - 0x79, 0x5f, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x11, 0x52, 0x0d, - 0x69, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x79, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x37, 0x0a, - 0x18, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x62, 0x79, 0x5f, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, - 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x11, 0x52, - 0x15, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x79, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x43, 0x6f, - 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x78, 0x5f, 0x68, 0x61, 0x73, - 0x68, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x12, - 0x1f, 0x0a, 0x0b, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0a, - 0x20, 0x01, 0x28, 0x12, 0x52, 0x0a, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x64, 0x41, 0x74, - 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x66, 0x75, 0x6e, 0x64, 0x5f, 0x61, 0x6d, 0x6f, 0x75, 0x6e, - 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x66, 0x75, 0x6e, 0x64, 0x41, - 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x34, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x14, 0x0a, - 0x05, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x64, 0x65, - 0x6e, 0x6f, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x32, 0x9e, 0x11, 0x0a, 0x18, - 0x49, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53, 0x70, 0x6f, 0x74, 0x45, 0x78, 0x63, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x50, 0x43, 0x12, 0x64, 0x0a, 0x07, 0x4d, 0x61, 0x72, 0x6b, - 0x65, 0x74, 0x73, 0x12, 0x2b, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, + 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x56, 0x32, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, - 0x63, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x2c, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, - 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4d, - 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x61, - 0x0a, 0x06, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x12, 0x2a, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, - 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, - 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, - 0x70, 0x63, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x78, 0x0a, 0x0d, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4d, 0x61, 0x72, 0x6b, 0x65, - 0x74, 0x73, 0x12, 0x31, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, + 0x63, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x56, 0x32, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x84, 0x01, 0x0a, 0x11, 0x53, 0x74, 0x72, 0x65, 0x61, + 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x56, 0x32, 0x12, 0x35, 0x2e, 0x69, + 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, + 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, + 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x56, 0x32, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, + 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, + 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, + 0x6b, 0x56, 0x32, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x90, 0x01, + 0x0a, 0x15, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, + 0x6b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x39, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, + 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, + 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, - 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, - 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, - 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x70, 0x0a, 0x0b, 0x4f, - 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x56, 0x32, 0x12, 0x2f, 0x2e, 0x69, 0x6e, 0x6a, + 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, + 0x12, 0x61, 0x0a, 0x06, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x2a, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, - 0x6f, 0x6b, 0x56, 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x69, 0x6e, - 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, - 0x6f, 0x6f, 0x6b, 0x56, 0x32, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x73, 0x0a, - 0x0c, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x56, 0x32, 0x12, 0x30, 0x2e, + 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, + 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x75, 0x0a, 0x0c, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, + 0x65, 0x72, 0x73, 0x12, 0x30, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, + 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, + 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, + 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, + 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x61, 0x0a, 0x06, 0x54, 0x72, + 0x61, 0x64, 0x65, 0x73, 0x12, 0x2a, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, + 0x70, 0x63, 0x2e, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x2b, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, + 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x54, + 0x72, 0x61, 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x75, 0x0a, + 0x0c, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x12, 0x30, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, - 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4f, 0x72, 0x64, 0x65, - 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x56, 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, - 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4f, 0x72, - 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x56, 0x32, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x84, 0x01, 0x0a, 0x11, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, - 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x56, 0x32, 0x12, 0x35, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, - 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, - 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x56, 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x36, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, - 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, - 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x56, 0x32, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x90, 0x01, 0x0a, 0x15, 0x53, 0x74, - 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x12, 0x39, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, - 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, - 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, - 0x6b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3a, - 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, - 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x61, 0x0a, 0x06, - 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x2a, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, - 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, - 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, - 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x75, 0x0a, 0x0c, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, - 0x30, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, - 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x31, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, - 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, - 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x61, 0x0a, 0x06, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, - 0x12, 0x2a, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, + 0x72, 0x65, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x30, 0x01, 0x12, 0x67, 0x0a, 0x08, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x56, 0x32, + 0x12, 0x2c, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x54, - 0x72, 0x61, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x69, - 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, - 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x72, 0x61, 0x64, 0x65, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x75, 0x0a, 0x0c, 0x53, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x12, 0x30, 0x2e, 0x69, 0x6e, 0x6a, 0x65, - 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x72, - 0x61, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x69, 0x6e, - 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, - 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, - 0x12, 0x67, 0x0a, 0x08, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x56, 0x32, 0x12, 0x2c, 0x2e, 0x69, - 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, - 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x72, 0x61, 0x64, 0x65, - 0x73, 0x56, 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x69, 0x6e, 0x6a, - 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x56, - 0x32, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7b, 0x0a, 0x0e, 0x53, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x56, 0x32, 0x12, 0x32, 0x2e, 0x69, 0x6e, - 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, - 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x56, 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x33, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, + 0x72, 0x61, 0x64, 0x65, 0x73, 0x56, 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, + 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, + 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x72, 0x61, + 0x64, 0x65, 0x73, 0x56, 0x32, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7b, 0x0a, + 0x0e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x56, 0x32, 0x12, + 0x32, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, - 0x72, 0x65, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x56, 0x32, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x8b, 0x01, 0x0a, 0x14, 0x53, 0x75, 0x62, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x12, - 0x38, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, - 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x75, - 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x4c, 0x69, - 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x69, 0x6e, 0x6a, 0x65, - 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8b, 0x01, 0x0a, 0x14, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x38, 0x2e, + 0x72, 0x65, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x56, 0x32, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, + 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, + 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x56, 0x32, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x8b, 0x01, 0x0a, 0x14, 0x53, + 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x4c, + 0x69, 0x73, 0x74, 0x12, 0x38, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, + 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, + 0x63, 0x2e, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4f, 0x72, 0x64, 0x65, + 0x72, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x75, 0x62, 0x61, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x4c, 0x69, 0x73, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x4c, 0x69, 0x73, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8b, 0x01, 0x0a, 0x14, 0x53, 0x75, 0x62, + 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x4c, 0x69, 0x73, + 0x74, 0x12, 0x38, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, + 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, + 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, + 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x69, 0x6e, + 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x76, 0x0a, 0x0d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, + 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x31, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x76, 0x0a, 0x0d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x48, 0x69, 0x73, 0x74, - 0x6f, 0x72, 0x79, 0x12, 0x31, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, - 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, - 0x63, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, + 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x48, 0x69, 0x73, 0x74, + 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x69, 0x6e, 0x6a, + 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x48, + 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8a, + 0x01, 0x0a, 0x13, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x48, + 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x37, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x48, 0x69, 0x73, 0x74, 0x6f, - 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8a, 0x01, 0x0a, 0x13, 0x53, - 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x48, 0x69, 0x73, 0x74, 0x6f, - 0x72, 0x79, 0x12, 0x37, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, + 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, + 0x73, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x38, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, + 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, + 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, + 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x82, 0x01, 0x0a, 0x11, + 0x41, 0x74, 0x6f, 0x6d, 0x69, 0x63, 0x53, 0x77, 0x61, 0x70, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, + 0x79, 0x12, 0x35, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, + 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, + 0x41, 0x74, 0x6f, 0x6d, 0x69, 0x63, 0x53, 0x77, 0x61, 0x70, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, + 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, + 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x41, 0x74, 0x6f, 0x6d, 0x69, 0x63, 0x53, 0x77, 0x61, + 0x70, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x42, 0x20, 0x5a, 0x1e, 0x2f, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, - 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x48, 0x69, 0x73, - 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x69, 0x6e, - 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, - 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x82, 0x01, 0x0a, 0x11, 0x41, 0x74, 0x6f, 0x6d, - 0x69, 0x63, 0x53, 0x77, 0x61, 0x70, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x35, 0x2e, - 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, - 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x41, 0x74, 0x6f, 0x6d, - 0x69, 0x63, 0x53, 0x77, 0x61, 0x70, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, - 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, - 0x70, 0x63, 0x2e, 0x41, 0x74, 0x6f, 0x6d, 0x69, 0x63, 0x53, 0x77, 0x61, 0x70, 0x48, 0x69, 0x73, - 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x20, 0x5a, 0x1e, - 0x2f, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, - 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x70, 0x62, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/exchange/spot_exchange_rpc/pb/goadesign_goagen_injective_spot_exchange_rpc_grpc.pb.go b/exchange/spot_exchange_rpc/pb/goadesign_goagen_injective_spot_exchange_rpc_grpc.pb.go index e276906a..12b1c14e 100644 --- a/exchange/spot_exchange_rpc/pb/goadesign_goagen_injective_spot_exchange_rpc_grpc.pb.go +++ b/exchange/spot_exchange_rpc/pb/goadesign_goagen_injective_spot_exchange_rpc_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.2.0 -// - protoc v3.19.4 +// - protoc v3.21.12 // source: goadesign_goagen_injective_spot_exchange_rpc.proto package injective_spot_exchange_rpcpb diff --git a/exchange/spot_exchange_rpc/pb/injective_spot_exchange_rpc.proto b/exchange/spot_exchange_rpc/pb/injective_spot_exchange_rpc.proto index aa7b07f4..feba38c6 100644 --- a/exchange/spot_exchange_rpc/pb/injective_spot_exchange_rpc.proto +++ b/exchange/spot_exchange_rpc/pb/injective_spot_exchange_rpc.proto @@ -76,11 +76,11 @@ message SpotMarketInfo { string ticker = 3; // Coin denom used for the base asset. string base_denom = 4; - // Token metadata for base asset, only for Ethereum-based assets + // Token metadata for base asset TokenMeta base_token_meta = 5; // Coin denom used for the quote asset. string quote_denom = 6; - // Token metadata for quote asset, only for Ethereum-based assets + // Token metadata for quote asset TokenMeta quote_token_meta = 7; // Defines the fee percentage makers pay when trading (in quote asset) string maker_fee_rate = 8; @@ -99,7 +99,7 @@ message SpotMarketInfo { message TokenMeta { // Token full name string name = 1; - // Token Ethereum contract address + // Token contract address (native or not) string address = 2; // Token symbol short name string symbol = 3; @@ -384,6 +384,8 @@ message TradesRequest { string account_address = 13; // Client order ID string cid = 14; + // Fee recipient address + string fee_recipient = 15; } message TradesResponse { @@ -450,6 +452,8 @@ message StreamTradesRequest { string account_address = 13; // Client order ID string cid = 14; + // Fee recipient address + string fee_recipient = 15; } message StreamTradesResponse { @@ -491,6 +495,8 @@ message TradesV2Request { string account_address = 13; // Client order ID string cid = 14; + // Fee recipient address + string fee_recipient = 15; } message TradesV2Response { @@ -530,6 +536,8 @@ message StreamTradesV2Request { string account_address = 13; // Client order ID string cid = 14; + // Fee recipient address + string fee_recipient = 15; } message StreamTradesV2Response { diff --git a/exchange/trading_rpc/pb/goadesign_goagen_injective_trading_rpc.pb.go b/exchange/trading_rpc/pb/goadesign_goagen_injective_trading_rpc.pb.go index fa06c65a..1c19aa31 100644 --- a/exchange/trading_rpc/pb/goadesign_goagen_injective_trading_rpc.pb.go +++ b/exchange/trading_rpc/pb/goadesign_goagen_injective_trading_rpc.pb.go @@ -8,7 +8,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.30.0 -// protoc v4.25.3 +// protoc v3.21.12 // source: goadesign_goagen_injective_trading_rpc.proto package injective_trading_rpcpb @@ -53,6 +53,16 @@ type ListTradingStrategiesRequest struct { StrategyType []string `protobuf:"bytes,10,rep,name=strategy_type,json=strategyType,proto3" json:"strategy_type,omitempty"` // Filter by market type MarketType string `protobuf:"bytes,11,opt,name=market_type,json=marketType,proto3" json:"market_type,omitempty"` + // The last executed timestamp in UNIX milliseconds for the last executed time + // of the trading strategy + LastExecutedTime int64 `protobuf:"zigzag64,12,opt,name=last_executed_time,json=lastExecutedTime,proto3" json:"last_executed_time,omitempty"` + // Include TVL in the response + WithTvl bool `protobuf:"varint,13,opt,name=with_tvl,json=withTvl,proto3" json:"with_tvl,omitempty"` + // Indicates whether the trading strategy is a trailing strategy + IsTrailingStrategy bool `protobuf:"varint,14,opt,name=is_trailing_strategy,json=isTrailingStrategy,proto3" json:"is_trailing_strategy,omitempty"` + // Indicates whether the trading strategy performance should be included in the + // response + WithPerformance bool `protobuf:"varint,15,opt,name=with_performance,json=withPerformance,proto3" json:"with_performance,omitempty"` } func (x *ListTradingStrategiesRequest) Reset() { @@ -164,6 +174,34 @@ func (x *ListTradingStrategiesRequest) GetMarketType() string { return "" } +func (x *ListTradingStrategiesRequest) GetLastExecutedTime() int64 { + if x != nil { + return x.LastExecutedTime + } + return 0 +} + +func (x *ListTradingStrategiesRequest) GetWithTvl() bool { + if x != nil { + return x.WithTvl + } + return false +} + +func (x *ListTradingStrategiesRequest) GetIsTrailingStrategy() bool { + if x != nil { + return x.IsTrailingStrategy + } + return false +} + +func (x *ListTradingStrategiesRequest) GetWithPerformance() bool { + if x != nil { + return x.WithPerformance + } + return false +} + type ListTradingStrategiesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -291,6 +329,28 @@ type TradingStrategy struct { ContractName string `protobuf:"bytes,32,opt,name=contract_name,json=contractName,proto3" json:"contract_name,omitempty"` // Type of the market MarketType string `protobuf:"bytes,33,opt,name=market_type,json=marketType,proto3" json:"market_type,omitempty"` + // lastExecutedAt timestamp in UNIX millis. + LastExecutedAt int64 `protobuf:"zigzag64,34,opt,name=last_executed_at,json=lastExecutedAt,proto3" json:"last_executed_at,omitempty"` + // trailing up price + TrailUpPrice string `protobuf:"bytes,35,opt,name=trail_up_price,json=trailUpPrice,proto3" json:"trail_up_price,omitempty"` + // trailing down price + TrailDownPrice string `protobuf:"bytes,36,opt,name=trail_down_price,json=trailDownPrice,proto3" json:"trail_down_price,omitempty"` + // trailing up counter + TrailUpCounter int64 `protobuf:"zigzag64,37,opt,name=trail_up_counter,json=trailUpCounter,proto3" json:"trail_up_counter,omitempty"` + // trailing down counter + TrailDownCounter int64 `protobuf:"zigzag64,38,opt,name=trail_down_counter,json=trailDownCounter,proto3" json:"trail_down_counter,omitempty"` + // TVL of the trading strategy + Tvl string `protobuf:"bytes,39,opt,name=tvl,proto3" json:"tvl,omitempty"` + // PnL of the trading strategy + Pnl string `protobuf:"bytes,40,opt,name=pnl,proto3" json:"pnl,omitempty"` + // PnL percentage of the trading strategy + PnlPerc string `protobuf:"bytes,41,opt,name=pnl_perc,json=pnlPerc,proto3" json:"pnl_perc,omitempty"` + // pnlUpdatedAt timestamp in UNIX millis. + PnlUpdatedAt int64 `protobuf:"zigzag64,42,opt,name=pnl_updated_at,json=pnlUpdatedAt,proto3" json:"pnl_updated_at,omitempty"` + // Indicates the performance of the trading strategy + Performance string `protobuf:"bytes,43,opt,name=performance,proto3" json:"performance,omitempty"` + // Return on investment of the trading strategy + Roi string `protobuf:"bytes,44,opt,name=roi,proto3" json:"roi,omitempty"` } func (x *TradingStrategy) Reset() { @@ -556,6 +616,83 @@ func (x *TradingStrategy) GetMarketType() string { return "" } +func (x *TradingStrategy) GetLastExecutedAt() int64 { + if x != nil { + return x.LastExecutedAt + } + return 0 +} + +func (x *TradingStrategy) GetTrailUpPrice() string { + if x != nil { + return x.TrailUpPrice + } + return "" +} + +func (x *TradingStrategy) GetTrailDownPrice() string { + if x != nil { + return x.TrailDownPrice + } + return "" +} + +func (x *TradingStrategy) GetTrailUpCounter() int64 { + if x != nil { + return x.TrailUpCounter + } + return 0 +} + +func (x *TradingStrategy) GetTrailDownCounter() int64 { + if x != nil { + return x.TrailDownCounter + } + return 0 +} + +func (x *TradingStrategy) GetTvl() string { + if x != nil { + return x.Tvl + } + return "" +} + +func (x *TradingStrategy) GetPnl() string { + if x != nil { + return x.Pnl + } + return "" +} + +func (x *TradingStrategy) GetPnlPerc() string { + if x != nil { + return x.PnlPerc + } + return "" +} + +func (x *TradingStrategy) GetPnlUpdatedAt() int64 { + if x != nil { + return x.PnlUpdatedAt + } + return 0 +} + +func (x *TradingStrategy) GetPerformance() string { + if x != nil { + return x.Performance + } + return "" +} + +func (x *TradingStrategy) GetRoi() string { + if x != nil { + return x.Roi + } + return "" +} + type ExitConfig struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -698,6 +835,176 @@ func (x *Paging) GetNext() []string { return nil } +type GetTradingStatsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *GetTradingStatsRequest) Reset() { + *x = GetTradingStatsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_goadesign_goagen_injective_trading_rpc_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetTradingStatsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetTradingStatsRequest) ProtoMessage() {} + +func (x *GetTradingStatsRequest) ProtoReflect() protoreflect.Message { + mi := &file_goadesign_goagen_injective_trading_rpc_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetTradingStatsRequest.ProtoReflect.Descriptor instead. +func (*GetTradingStatsRequest) Descriptor() ([]byte, []int) { + return file_goadesign_goagen_injective_trading_rpc_proto_rawDescGZIP(), []int{5} +} + +type GetTradingStatsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Total of unique active trading strategies + ActiveTradingStrategies uint64 `protobuf:"varint,1,opt,name=active_trading_strategies,json=activeTradingStrategies,proto3" json:"active_trading_strategies,omitempty"` + // Total number of created trading strategies + TotalTradingStrategiesCreated uint64 `protobuf:"varint,2,opt,name=total_trading_strategies_created,json=totalTradingStrategiesCreated,proto3" json:"total_trading_strategies_created,omitempty"` + // Total TVL of all active trading strategies + TotalTvl string `protobuf:"bytes,3,opt,name=total_tvl,json=totalTvl,proto3" json:"total_tvl,omitempty"` + // Market stats + Markets []*Market `protobuf:"bytes,4,rep,name=markets,proto3" json:"markets,omitempty"` +} + +func (x *GetTradingStatsResponse) Reset() { + *x = GetTradingStatsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_goadesign_goagen_injective_trading_rpc_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetTradingStatsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetTradingStatsResponse) ProtoMessage() {} + +func (x *GetTradingStatsResponse) ProtoReflect() protoreflect.Message { + mi := &file_goadesign_goagen_injective_trading_rpc_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetTradingStatsResponse.ProtoReflect.Descriptor instead. +func (*GetTradingStatsResponse) Descriptor() ([]byte, []int) { + return file_goadesign_goagen_injective_trading_rpc_proto_rawDescGZIP(), []int{6} +} + +func (x *GetTradingStatsResponse) GetActiveTradingStrategies() uint64 { + if x != nil { + return x.ActiveTradingStrategies + } + return 0 +} + +func (x *GetTradingStatsResponse) GetTotalTradingStrategiesCreated() uint64 { + if x != nil { + return x.TotalTradingStrategiesCreated + } + return 0 +} + +func (x *GetTradingStatsResponse) GetTotalTvl() string { + if x != nil { + return x.TotalTvl + } + return "" +} + +func (x *GetTradingStatsResponse) GetMarkets() []*Market { + if x != nil { + return x.Markets + } + return nil +} + +type Market struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // MarketId of the trading strategy + MarketId string `protobuf:"bytes,1,opt,name=market_id,json=marketId,proto3" json:"market_id,omitempty"` + // Total of unique active trading strategies + ActiveTradingStrategies uint64 `protobuf:"varint,2,opt,name=active_trading_strategies,json=activeTradingStrategies,proto3" json:"active_trading_strategies,omitempty"` +} + +func (x *Market) Reset() { + *x = Market{} + if protoimpl.UnsafeEnabled { + mi := &file_goadesign_goagen_injective_trading_rpc_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Market) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Market) ProtoMessage() {} + +func (x *Market) ProtoReflect() protoreflect.Message { + mi := &file_goadesign_goagen_injective_trading_rpc_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Market.ProtoReflect.Descriptor instead. +func (*Market) Descriptor() ([]byte, []int) { + return file_goadesign_goagen_injective_trading_rpc_proto_rawDescGZIP(), []int{7} +} + +func (x *Market) GetMarketId() string { + if x != nil { + return x.MarketId + } + return "" +} + +func (x *Market) GetActiveTradingStrategies() uint64 { + if x != nil { + return x.ActiveTradingStrategies + } + return 0 +} + var File_goadesign_goagen_injective_trading_rpc_proto protoreflect.FileDescriptor var file_goadesign_goagen_injective_trading_rpc_proto_rawDesc = []byte{ @@ -705,7 +1012,7 @@ var file_goadesign_goagen_injective_trading_rpc_proto_rawDesc = []byte{ 0x65, 0x6e, 0x5f, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x15, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x64, 0x69, 0x6e, - 0x67, 0x5f, 0x72, 0x70, 0x63, 0x22, 0xf6, 0x02, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, + 0x67, 0x5f, 0x72, 0x70, 0x63, 0x22, 0x9c, 0x04, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1b, 0x0a, 0x09, @@ -728,128 +1035,192 @@ var file_goadesign_goagen_injective_trading_rpc_proto_rawDesc = []byte{ 0x74, 0x65, 0x67, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0b, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x22, 0x9e, - 0x01, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x74, - 0x72, 0x61, 0x74, 0x65, 0x67, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x46, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x69, 0x65, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, - 0x5f, 0x74, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x72, 0x61, - 0x64, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x52, 0x0a, 0x73, 0x74, - 0x72, 0x61, 0x74, 0x65, 0x67, 0x69, 0x65, 0x73, 0x12, 0x35, 0x0a, 0x06, 0x70, 0x61, 0x67, 0x69, - 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, - 0x74, 0x69, 0x76, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x70, 0x63, - 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x22, - 0xd9, 0x0a, 0x0a, 0x0f, 0x54, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x72, 0x61, 0x74, - 0x65, 0x67, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, - 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, - 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, - 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x61, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, - 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, - 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, - 0x27, 0x0a, 0x0f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x69, - 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x62, 0x61, 0x73, 0x65, - 0x5f, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0c, 0x62, 0x61, 0x73, 0x65, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x25, 0x0a, - 0x0e, 0x71, 0x75, 0x6f, 0x74, 0x65, 0x5f, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, - 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x71, 0x75, 0x6f, 0x74, 0x65, 0x51, 0x75, 0x61, 0x6e, - 0x74, 0x69, 0x74, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x5f, 0x62, 0x6f, - 0x75, 0x6e, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6c, 0x6f, 0x77, 0x65, 0x72, - 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x75, 0x70, 0x70, 0x65, 0x72, 0x5f, 0x62, - 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x75, 0x70, 0x70, 0x65, - 0x72, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x6c, - 0x6f, 0x73, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x74, 0x6f, 0x70, 0x4c, - 0x6f, 0x73, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x61, 0x6b, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x66, - 0x69, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x61, 0x6b, 0x65, 0x50, 0x72, - 0x6f, 0x66, 0x69, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x77, 0x61, 0x70, 0x5f, 0x66, 0x65, 0x65, - 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x77, 0x61, 0x70, 0x46, 0x65, 0x65, 0x12, - 0x21, 0x0a, 0x0c, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x18, - 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x62, 0x61, 0x73, 0x65, 0x44, 0x65, 0x70, 0x6f, 0x73, - 0x69, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x71, 0x75, 0x6f, 0x74, 0x65, 0x5f, 0x64, 0x65, 0x70, 0x6f, - 0x73, 0x69, 0x74, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x71, 0x75, 0x6f, 0x74, 0x65, - 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x6d, 0x61, 0x72, 0x6b, 0x65, - 0x74, 0x5f, 0x6d, 0x69, 0x64, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0e, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x4d, 0x69, 0x64, 0x50, 0x72, 0x69, 0x63, - 0x65, 0x12, 0x3e, 0x0a, 0x1b, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x71, 0x75, 0x6f, 0x74, 0x65, 0x5f, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, - 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x19, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x6f, 0x74, 0x65, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, - 0x79, 0x12, 0x3c, 0x0a, 0x1a, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, - 0x16, 0x20, 0x01, 0x28, 0x09, 0x52, 0x18, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x73, 0x65, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, - 0x31, 0x0a, 0x15, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x5f, 0x67, 0x72, 0x69, - 0x64, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x18, 0x17, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, - 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4f, 0x66, 0x47, 0x72, 0x69, 0x64, 0x4c, 0x65, 0x76, 0x65, - 0x6c, 0x73, 0x12, 0x3c, 0x0a, 0x1b, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x5f, 0x65, 0x78, 0x69, - 0x74, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x71, 0x75, 0x6f, 0x74, 0x65, 0x5f, 0x6f, 0x6e, 0x6c, - 0x79, 0x18, 0x18, 0x20, 0x01, 0x28, 0x08, 0x52, 0x17, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x45, - 0x78, 0x69, 0x74, 0x57, 0x69, 0x74, 0x68, 0x51, 0x75, 0x6f, 0x74, 0x65, 0x4f, 0x6e, 0x6c, 0x79, - 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, - 0x19, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, 0x6f, 0x70, 0x52, 0x65, 0x61, 0x73, 0x6f, - 0x6e, 0x12, 0x2b, 0x0a, 0x11, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x65, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x70, 0x65, - 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x25, - 0x0a, 0x0e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, - 0x18, 0x0d, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x48, - 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, - 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0d, 0x72, - 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1d, 0x0a, 0x0a, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x12, - 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x75, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x12, 0x52, - 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x78, - 0x69, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, - 0x78, 0x69, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x4b, 0x0a, 0x10, 0x73, 0x74, 0x6f, 0x70, 0x5f, - 0x6c, 0x6f, 0x73, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x1c, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x21, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x74, 0x72, - 0x61, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x45, 0x78, 0x69, 0x74, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0e, 0x73, 0x74, 0x6f, 0x70, 0x4c, 0x6f, 0x73, 0x73, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x12, 0x4f, 0x0a, 0x12, 0x74, 0x61, 0x6b, 0x65, 0x5f, 0x70, 0x72, 0x6f, - 0x66, 0x69, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x21, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x74, 0x72, 0x61, - 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x45, 0x78, 0x69, 0x74, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x52, 0x10, 0x74, 0x61, 0x6b, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x74, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, - 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x74, - 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x6f, - 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x1f, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x56, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, - 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x20, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6f, - 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x61, - 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x21, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x22, 0x48, 0x0a, 0x0a, 0x45, - 0x78, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x78, 0x69, - 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, - 0x69, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x78, 0x69, 0x74, 0x5f, 0x70, - 0x72, 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x65, 0x78, 0x69, 0x74, - 0x50, 0x72, 0x69, 0x63, 0x65, 0x22, 0x86, 0x01, 0x0a, 0x06, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, - 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x12, 0x52, - 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x11, 0x52, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x6f, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x11, 0x52, 0x02, 0x74, 0x6f, 0x12, 0x2e, 0x0a, 0x13, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x5f, 0x62, 0x79, 0x5f, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x12, 0x52, 0x11, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x79, - 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x65, - 0x78, 0x74, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x65, 0x78, 0x74, 0x32, 0x9a, - 0x01, 0x0a, 0x13, 0x49, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x54, 0x72, 0x61, 0x64, - 0x69, 0x6e, 0x67, 0x52, 0x50, 0x43, 0x12, 0x82, 0x01, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x54, - 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x69, 0x65, 0x73, - 0x12, 0x33, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x74, 0x72, 0x61, - 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, + 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2c, + 0x0a, 0x12, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x64, 0x5f, + 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x12, 0x52, 0x10, 0x6c, 0x61, 0x73, 0x74, + 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, + 0x77, 0x69, 0x74, 0x68, 0x5f, 0x74, 0x76, 0x6c, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, + 0x77, 0x69, 0x74, 0x68, 0x54, 0x76, 0x6c, 0x12, 0x30, 0x0a, 0x14, 0x69, 0x73, 0x5f, 0x74, 0x72, + 0x61, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x18, + 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x69, 0x73, 0x54, 0x72, 0x61, 0x69, 0x6c, 0x69, 0x6e, + 0x67, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, 0x29, 0x0a, 0x10, 0x77, 0x69, 0x74, + 0x68, 0x5f, 0x70, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x0f, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0f, 0x77, 0x69, 0x74, 0x68, 0x50, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, + 0x61, 0x6e, 0x63, 0x65, 0x22, 0x9e, 0x01, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x69, 0x65, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, + 0x67, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x69, 0x6e, 0x6a, + 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x72, + 0x70, 0x63, 0x2e, 0x54, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, + 0x67, 0x79, 0x52, 0x0a, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x69, 0x65, 0x73, 0x12, 0x35, + 0x0a, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, + 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x64, 0x69, + 0x6e, 0x67, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x70, + 0x61, 0x67, 0x69, 0x6e, 0x67, 0x22, 0xc4, 0x0d, 0x0a, 0x0f, 0x54, 0x72, 0x61, 0x64, 0x69, 0x6e, + 0x67, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, + 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, + 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, + 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, + 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x41, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, + 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x23, + 0x0a, 0x0d, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x62, 0x61, 0x73, 0x65, 0x51, 0x75, 0x61, 0x6e, 0x74, + 0x69, 0x74, 0x79, 0x12, 0x25, 0x0a, 0x0e, 0x71, 0x75, 0x6f, 0x74, 0x65, 0x5f, 0x71, 0x75, 0x61, + 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x71, 0x75, 0x6f, + 0x74, 0x65, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x6f, + 0x77, 0x65, 0x72, 0x5f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x75, + 0x70, 0x70, 0x65, 0x72, 0x5f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x75, 0x70, 0x70, 0x65, 0x72, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x1b, 0x0a, 0x09, + 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x6c, 0x6f, 0x73, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x73, 0x74, 0x6f, 0x70, 0x4c, 0x6f, 0x73, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x61, 0x6b, + 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x74, 0x61, 0x6b, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x77, + 0x61, 0x70, 0x5f, 0x66, 0x65, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x77, + 0x61, 0x70, 0x46, 0x65, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x64, 0x65, + 0x70, 0x6f, 0x73, 0x69, 0x74, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x62, 0x61, 0x73, + 0x65, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x71, 0x75, 0x6f, 0x74, + 0x65, 0x5f, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0c, 0x71, 0x75, 0x6f, 0x74, 0x65, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x12, 0x28, 0x0a, + 0x10, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x6d, 0x69, 0x64, 0x5f, 0x70, 0x72, 0x69, 0x63, + 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x4d, + 0x69, 0x64, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x3e, 0x0a, 0x1b, 0x73, 0x75, 0x62, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x71, 0x75, 0x6f, 0x74, 0x65, 0x5f, 0x71, 0x75, + 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x19, 0x73, 0x75, + 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x6f, 0x74, 0x65, 0x51, + 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x3c, 0x0a, 0x1a, 0x73, 0x75, 0x62, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x71, 0x75, 0x61, + 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x16, 0x20, 0x01, 0x28, 0x09, 0x52, 0x18, 0x73, 0x75, 0x62, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x73, 0x65, 0x51, 0x75, 0x61, + 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x31, 0x0a, 0x15, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f, + 0x6f, 0x66, 0x5f, 0x67, 0x72, 0x69, 0x64, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x18, 0x17, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4f, 0x66, 0x47, 0x72, + 0x69, 0x64, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x12, 0x3c, 0x0a, 0x1b, 0x73, 0x68, 0x6f, 0x75, + 0x6c, 0x64, 0x5f, 0x65, 0x78, 0x69, 0x74, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x71, 0x75, 0x6f, + 0x74, 0x65, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x18, 0x20, 0x01, 0x28, 0x08, 0x52, 0x17, 0x73, + 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x45, 0x78, 0x69, 0x74, 0x57, 0x69, 0x74, 0x68, 0x51, 0x75, 0x6f, + 0x74, 0x65, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x72, + 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x19, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, 0x6f, + 0x70, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x11, 0x70, 0x65, 0x6e, 0x64, 0x69, + 0x6e, 0x67, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x1a, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x10, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x45, 0x78, 0x65, 0x63, 0x75, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, + 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0d, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x64, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x72, + 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x0e, 0x20, + 0x01, 0x28, 0x12, 0x52, 0x0d, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x48, 0x65, 0x69, 0x67, + 0x68, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, + 0x18, 0x0f, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, + 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, + 0x10, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, + 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x78, 0x69, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x1b, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x69, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x4b, 0x0a, + 0x10, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x6c, 0x6f, 0x73, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, + 0x69, 0x76, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x70, 0x63, 0x2e, + 0x45, 0x78, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0e, 0x73, 0x74, 0x6f, 0x70, + 0x4c, 0x6f, 0x73, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x4f, 0x0a, 0x12, 0x74, 0x61, + 0x6b, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, + 0x76, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x45, + 0x78, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x10, 0x74, 0x61, 0x6b, 0x65, 0x50, + 0x72, 0x6f, 0x66, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x23, 0x0a, 0x0d, 0x73, + 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x1e, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0c, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x29, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x74, + 0x72, 0x61, 0x63, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x63, + 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x20, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x21, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x28, 0x0a, 0x10, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, + 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x22, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0e, 0x6c, 0x61, 0x73, + 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x24, 0x0a, 0x0e, 0x74, + 0x72, 0x61, 0x69, 0x6c, 0x5f, 0x75, 0x70, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x23, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0c, 0x74, 0x72, 0x61, 0x69, 0x6c, 0x55, 0x70, 0x50, 0x72, 0x69, 0x63, + 0x65, 0x12, 0x28, 0x0a, 0x10, 0x74, 0x72, 0x61, 0x69, 0x6c, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x5f, + 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x24, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x74, 0x72, 0x61, + 0x69, 0x6c, 0x44, 0x6f, 0x77, 0x6e, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x74, + 0x72, 0x61, 0x69, 0x6c, 0x5f, 0x75, 0x70, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x18, + 0x25, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0e, 0x74, 0x72, 0x61, 0x69, 0x6c, 0x55, 0x70, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x2c, 0x0a, 0x12, 0x74, 0x72, 0x61, 0x69, 0x6c, 0x5f, 0x64, + 0x6f, 0x77, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x18, 0x26, 0x20, 0x01, 0x28, + 0x12, 0x52, 0x10, 0x74, 0x72, 0x61, 0x69, 0x6c, 0x44, 0x6f, 0x77, 0x6e, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x76, 0x6c, 0x18, 0x27, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x74, 0x76, 0x6c, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x6e, 0x6c, 0x18, 0x28, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x70, 0x6e, 0x6c, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x6e, 0x6c, 0x5f, 0x70, + 0x65, 0x72, 0x63, 0x18, 0x29, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x6e, 0x6c, 0x50, 0x65, + 0x72, 0x63, 0x12, 0x24, 0x0a, 0x0e, 0x70, 0x6e, 0x6c, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x64, 0x5f, 0x61, 0x74, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0c, 0x70, 0x6e, 0x6c, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x65, 0x72, 0x66, + 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x2b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, + 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x72, 0x6f, + 0x69, 0x18, 0x2c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x72, 0x6f, 0x69, 0x22, 0x48, 0x0a, 0x0a, + 0x45, 0x78, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x78, + 0x69, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, + 0x78, 0x69, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x78, 0x69, 0x74, 0x5f, + 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x65, 0x78, 0x69, + 0x74, 0x50, 0x72, 0x69, 0x63, 0x65, 0x22, 0x86, 0x01, 0x0a, 0x06, 0x50, 0x61, 0x67, 0x69, 0x6e, + 0x67, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x12, + 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x11, 0x52, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x74, + 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x11, 0x52, 0x02, 0x74, 0x6f, 0x12, 0x2e, 0x0a, 0x13, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x62, 0x79, 0x5f, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x12, 0x52, 0x11, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, + 0x79, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x65, 0x78, 0x74, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x65, 0x78, 0x74, 0x22, + 0x18, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, + 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xf4, 0x01, 0x0a, 0x17, 0x47, 0x65, + 0x74, 0x54, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x19, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, + 0x74, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x69, + 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x17, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x54, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x69, 0x65, + 0x73, 0x12, 0x47, 0x0a, 0x20, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x74, 0x72, 0x61, 0x64, 0x69, + 0x6e, 0x67, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x69, 0x65, 0x73, 0x5f, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x1d, 0x74, 0x6f, 0x74, + 0x61, 0x6c, 0x54, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, + 0x69, 0x65, 0x73, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x6f, + 0x74, 0x61, 0x6c, 0x5f, 0x74, 0x76, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, + 0x6f, 0x74, 0x61, 0x6c, 0x54, 0x76, 0x6c, 0x12, 0x37, 0x0a, 0x07, 0x6d, 0x61, 0x72, 0x6b, 0x65, + 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, + 0x74, 0x69, 0x76, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x70, 0x63, + 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x52, 0x07, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, + 0x22, 0x61, 0x0a, 0x06, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, + 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, + 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x3a, 0x0a, 0x19, 0x61, 0x63, 0x74, 0x69, 0x76, + 0x65, 0x5f, 0x74, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, + 0x67, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x17, 0x61, 0x63, 0x74, 0x69, + 0x76, 0x65, 0x54, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, + 0x69, 0x65, 0x73, 0x32, 0x8c, 0x02, 0x0a, 0x13, 0x49, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, + 0x65, 0x54, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x50, 0x43, 0x12, 0x82, 0x01, 0x0a, 0x15, + 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x72, 0x61, 0x74, + 0x65, 0x67, 0x69, 0x65, 0x73, 0x12, 0x33, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, - 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x1a, 0x5a, 0x18, 0x2f, - 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x64, 0x69, 0x6e, - 0x67, 0x5f, 0x72, 0x70, 0x63, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x69, 0x6e, 0x6a, + 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x72, + 0x70, 0x63, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x74, + 0x72, 0x61, 0x74, 0x65, 0x67, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x70, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x74, + 0x61, 0x74, 0x73, 0x12, 0x2d, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, + 0x74, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x54, + 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x74, + 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, + 0x61, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x42, 0x1a, 0x5a, 0x18, 0x2f, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x5f, 0x74, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x70, 0x63, 0x70, 0x62, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -864,26 +1235,32 @@ func file_goadesign_goagen_injective_trading_rpc_proto_rawDescGZIP() []byte { return file_goadesign_goagen_injective_trading_rpc_proto_rawDescData } -var file_goadesign_goagen_injective_trading_rpc_proto_msgTypes = make([]protoimpl.MessageInfo, 5) +var file_goadesign_goagen_injective_trading_rpc_proto_msgTypes = make([]protoimpl.MessageInfo, 8) var file_goadesign_goagen_injective_trading_rpc_proto_goTypes = []interface{}{ (*ListTradingStrategiesRequest)(nil), // 0: injective_trading_rpc.ListTradingStrategiesRequest (*ListTradingStrategiesResponse)(nil), // 1: injective_trading_rpc.ListTradingStrategiesResponse (*TradingStrategy)(nil), // 2: injective_trading_rpc.TradingStrategy (*ExitConfig)(nil), // 3: injective_trading_rpc.ExitConfig (*Paging)(nil), // 4: injective_trading_rpc.Paging + (*GetTradingStatsRequest)(nil), // 5: injective_trading_rpc.GetTradingStatsRequest + (*GetTradingStatsResponse)(nil), // 6: injective_trading_rpc.GetTradingStatsResponse + (*Market)(nil), // 7: injective_trading_rpc.Market } var file_goadesign_goagen_injective_trading_rpc_proto_depIdxs = []int32{ 2, // 0: injective_trading_rpc.ListTradingStrategiesResponse.strategies:type_name -> injective_trading_rpc.TradingStrategy 4, // 1: injective_trading_rpc.ListTradingStrategiesResponse.paging:type_name -> injective_trading_rpc.Paging 3, // 2: injective_trading_rpc.TradingStrategy.stop_loss_config:type_name -> injective_trading_rpc.ExitConfig 3, // 3: injective_trading_rpc.TradingStrategy.take_profit_config:type_name -> injective_trading_rpc.ExitConfig - 0, // 4: injective_trading_rpc.InjectiveTradingRPC.ListTradingStrategies:input_type -> injective_trading_rpc.ListTradingStrategiesRequest - 1, // 5: injective_trading_rpc.InjectiveTradingRPC.ListTradingStrategies:output_type -> injective_trading_rpc.ListTradingStrategiesResponse - 5, // [5:6] is the sub-list for method output_type - 4, // [4:5] is the sub-list for method input_type - 4, // [4:4] is the sub-list for extension type_name - 4, // [4:4] is the sub-list for extension extendee - 0, // [0:4] is the sub-list for field type_name + 7, // 4: injective_trading_rpc.GetTradingStatsResponse.markets:type_name -> injective_trading_rpc.Market + 0, // 5: injective_trading_rpc.InjectiveTradingRPC.ListTradingStrategies:input_type -> injective_trading_rpc.ListTradingStrategiesRequest + 5, // 6: injective_trading_rpc.InjectiveTradingRPC.GetTradingStats:input_type -> injective_trading_rpc.GetTradingStatsRequest + 1, // 7: injective_trading_rpc.InjectiveTradingRPC.ListTradingStrategies:output_type -> injective_trading_rpc.ListTradingStrategiesResponse + 6, // 8: injective_trading_rpc.InjectiveTradingRPC.GetTradingStats:output_type -> injective_trading_rpc.GetTradingStatsResponse + 7, // [7:9] is the sub-list for method output_type + 5, // [5:7] is the sub-list for method input_type + 5, // [5:5] is the sub-list for extension type_name + 5, // [5:5] is the sub-list for extension extendee + 0, // [0:5] is the sub-list for field type_name } func init() { file_goadesign_goagen_injective_trading_rpc_proto_init() } @@ -952,6 +1329,42 @@ func file_goadesign_goagen_injective_trading_rpc_proto_init() { return nil } } + file_goadesign_goagen_injective_trading_rpc_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetTradingStatsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_goadesign_goagen_injective_trading_rpc_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetTradingStatsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_goadesign_goagen_injective_trading_rpc_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Market); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } type x struct{} out := protoimpl.TypeBuilder{ @@ -959,7 +1372,7 @@ func file_goadesign_goagen_injective_trading_rpc_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_goadesign_goagen_injective_trading_rpc_proto_rawDesc, NumEnums: 0, - NumMessages: 5, + NumMessages: 8, NumExtensions: 0, NumServices: 1, }, diff --git a/exchange/trading_rpc/pb/goadesign_goagen_injective_trading_rpc_grpc.pb.go b/exchange/trading_rpc/pb/goadesign_goagen_injective_trading_rpc_grpc.pb.go index ec918fd5..db5c53ae 100644 --- a/exchange/trading_rpc/pb/goadesign_goagen_injective_trading_rpc_grpc.pb.go +++ b/exchange/trading_rpc/pb/goadesign_goagen_injective_trading_rpc_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.2.0 -// - protoc v4.25.3 +// - protoc v3.21.12 // source: goadesign_goagen_injective_trading_rpc.proto package injective_trading_rpcpb @@ -24,6 +24,8 @@ const _ = grpc.SupportPackageIsVersion7 type InjectiveTradingRPCClient interface { // Lists all trading strategies ListTradingStrategies(ctx context.Context, in *ListTradingStrategiesRequest, opts ...grpc.CallOption) (*ListTradingStrategiesResponse, error) + // GetStats returns global statistics in the last 24hs + GetTradingStats(ctx context.Context, in *GetTradingStatsRequest, opts ...grpc.CallOption) (*GetTradingStatsResponse, error) } type injectiveTradingRPCClient struct { @@ -43,12 +45,23 @@ func (c *injectiveTradingRPCClient) ListTradingStrategies(ctx context.Context, i return out, nil } +func (c *injectiveTradingRPCClient) GetTradingStats(ctx context.Context, in *GetTradingStatsRequest, opts ...grpc.CallOption) (*GetTradingStatsResponse, error) { + out := new(GetTradingStatsResponse) + err := c.cc.Invoke(ctx, "/injective_trading_rpc.InjectiveTradingRPC/GetTradingStats", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // InjectiveTradingRPCServer is the server API for InjectiveTradingRPC service. // All implementations must embed UnimplementedInjectiveTradingRPCServer // for forward compatibility type InjectiveTradingRPCServer interface { // Lists all trading strategies ListTradingStrategies(context.Context, *ListTradingStrategiesRequest) (*ListTradingStrategiesResponse, error) + // GetStats returns global statistics in the last 24hs + GetTradingStats(context.Context, *GetTradingStatsRequest) (*GetTradingStatsResponse, error) mustEmbedUnimplementedInjectiveTradingRPCServer() } @@ -59,6 +72,9 @@ type UnimplementedInjectiveTradingRPCServer struct { func (UnimplementedInjectiveTradingRPCServer) ListTradingStrategies(context.Context, *ListTradingStrategiesRequest) (*ListTradingStrategiesResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ListTradingStrategies not implemented") } +func (UnimplementedInjectiveTradingRPCServer) GetTradingStats(context.Context, *GetTradingStatsRequest) (*GetTradingStatsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetTradingStats not implemented") +} func (UnimplementedInjectiveTradingRPCServer) mustEmbedUnimplementedInjectiveTradingRPCServer() {} // UnsafeInjectiveTradingRPCServer may be embedded to opt out of forward compatibility for this service. @@ -90,6 +106,24 @@ func _InjectiveTradingRPC_ListTradingStrategies_Handler(srv interface{}, ctx con return interceptor(ctx, in, info, handler) } +func _InjectiveTradingRPC_GetTradingStats_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetTradingStatsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(InjectiveTradingRPCServer).GetTradingStats(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/injective_trading_rpc.InjectiveTradingRPC/GetTradingStats", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(InjectiveTradingRPCServer).GetTradingStats(ctx, req.(*GetTradingStatsRequest)) + } + return interceptor(ctx, in, info, handler) +} + // InjectiveTradingRPC_ServiceDesc is the grpc.ServiceDesc for InjectiveTradingRPC service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -101,6 +135,10 @@ var InjectiveTradingRPC_ServiceDesc = grpc.ServiceDesc{ MethodName: "ListTradingStrategies", Handler: _InjectiveTradingRPC_ListTradingStrategies_Handler, }, + { + MethodName: "GetTradingStats", + Handler: _InjectiveTradingRPC_GetTradingStats_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "goadesign_goagen_injective_trading_rpc.proto", diff --git a/exchange/trading_rpc/pb/injective_trading_rpc.pb.gw.go b/exchange/trading_rpc/pb/injective_trading_rpc.pb.gw.go index 6e6cf424..cbd4dcd2 100644 --- a/exchange/trading_rpc/pb/injective_trading_rpc.pb.gw.go +++ b/exchange/trading_rpc/pb/injective_trading_rpc.pb.gw.go @@ -65,6 +65,40 @@ func local_request_InjectiveTradingRPC_ListTradingStrategies_0(ctx context.Conte } +func request_InjectiveTradingRPC_GetTradingStats_0(ctx context.Context, marshaler runtime.Marshaler, client InjectiveTradingRPCClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetTradingStatsRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.GetTradingStats(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_InjectiveTradingRPC_GetTradingStats_0(ctx context.Context, marshaler runtime.Marshaler, server InjectiveTradingRPCServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetTradingStatsRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.GetTradingStats(ctx, &protoReq) + return msg, metadata, err + +} + // RegisterInjectiveTradingRPCHandlerServer registers the http handlers for service InjectiveTradingRPC to "mux". // UnaryRPC :call InjectiveTradingRPCServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. @@ -96,6 +130,31 @@ func RegisterInjectiveTradingRPCHandlerServer(ctx context.Context, mux *runtime. }) + mux.Handle("POST", pattern_InjectiveTradingRPC_GetTradingStats_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/injective_trading_rpc.InjectiveTradingRPC/GetTradingStats", runtime.WithHTTPPathPattern("/injective_trading_rpc.InjectiveTradingRPC/GetTradingStats")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_InjectiveTradingRPC_GetTradingStats_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_InjectiveTradingRPC_GetTradingStats_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + return nil } @@ -159,13 +218,39 @@ func RegisterInjectiveTradingRPCHandlerClient(ctx context.Context, mux *runtime. }) + mux.Handle("POST", pattern_InjectiveTradingRPC_GetTradingStats_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/injective_trading_rpc.InjectiveTradingRPC/GetTradingStats", runtime.WithHTTPPathPattern("/injective_trading_rpc.InjectiveTradingRPC/GetTradingStats")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_InjectiveTradingRPC_GetTradingStats_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_InjectiveTradingRPC_GetTradingStats_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + return nil } var ( pattern_InjectiveTradingRPC_ListTradingStrategies_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"injective_trading_rpc.InjectiveTradingRPC", "ListTradingStrategies"}, "")) + + pattern_InjectiveTradingRPC_GetTradingStats_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"injective_trading_rpc.InjectiveTradingRPC", "GetTradingStats"}, "")) ) var ( forward_InjectiveTradingRPC_ListTradingStrategies_0 = runtime.ForwardResponseMessage + + forward_InjectiveTradingRPC_GetTradingStats_0 = runtime.ForwardResponseMessage ) diff --git a/exchange/trading_rpc/pb/injective_trading_rpc.proto b/exchange/trading_rpc/pb/injective_trading_rpc.proto index 18b00922..681ff769 100644 --- a/exchange/trading_rpc/pb/injective_trading_rpc.proto +++ b/exchange/trading_rpc/pb/injective_trading_rpc.proto @@ -16,6 +16,8 @@ option go_package = "/injective_trading_rpcpb"; service InjectiveTradingRPC { // Lists all trading strategies rpc ListTradingStrategies (ListTradingStrategiesRequest) returns (ListTradingStrategiesResponse); + // GetStats returns global statistics in the last 24hs + rpc GetTradingStats (GetTradingStatsRequest) returns (GetTradingStatsResponse); } message ListTradingStrategiesRequest { @@ -40,6 +42,16 @@ message ListTradingStrategiesRequest { repeated string strategy_type = 10; // Filter by market type string market_type = 11; + // The last executed timestamp in UNIX milliseconds for the last executed time +// of the trading strategy + sint64 last_executed_time = 12; + // Include TVL in the response + bool with_tvl = 13; + // Indicates whether the trading strategy is a trailing strategy + bool is_trailing_strategy = 14; + // Indicates whether the trading strategy performance should be included in the +// response + bool with_performance = 15; } message ListTradingStrategiesResponse { @@ -115,6 +127,28 @@ message TradingStrategy { string contract_name = 32; // Type of the market string market_type = 33; + // lastExecutedAt timestamp in UNIX millis. + sint64 last_executed_at = 34; + // trailing up price + string trail_up_price = 35; + // trailing down price + string trail_down_price = 36; + // trailing up counter + sint64 trail_up_counter = 37; + // trailing down counter + sint64 trail_down_counter = 38; + // TVL of the trading strategy + string tvl = 39; + // PnL of the trading strategy + string pnl = 40; + // PnL percentage of the trading strategy + string pnl_perc = 41; + // pnlUpdatedAt timestamp in UNIX millis. + sint64 pnl_updated_at = 42; + // Indicates the performance of the trading strategy + string performance = 43; + // Return on investment of the trading strategy + string roi = 44; } message ExitConfig { @@ -136,3 +170,24 @@ message Paging { // array of tokens to navigate to the next pages repeated string next = 5; } + +message GetTradingStatsRequest { +} + +message GetTradingStatsResponse { + // Total of unique active trading strategies + uint64 active_trading_strategies = 1; + // Total number of created trading strategies + uint64 total_trading_strategies_created = 2; + // Total TVL of all active trading strategies + string total_tvl = 3; + // Market stats + repeated Market markets = 4; +} + +message Market { + // MarketId of the trading strategy + string market_id = 1; + // Total of unique active trading strategies + uint64 active_trading_strategies = 2; +} diff --git a/exchange/trading_rpc/pb/injective_trading_rpc_grpc.pb_mock.go b/exchange/trading_rpc/pb/injective_trading_rpc_grpc.pb_mock.go index 17ef5dbc..1a3cc73b 100644 --- a/exchange/trading_rpc/pb/injective_trading_rpc_grpc.pb_mock.go +++ b/exchange/trading_rpc/pb/injective_trading_rpc_grpc.pb_mock.go @@ -1,5 +1,10 @@ // Code generated by MockGen. DO NOT EDIT. // Source: api/gen/grpc/injective_trading_rpc/pb/goadesign_goagen_injective_trading_rpc_grpc.pb.go +// +// Generated by this command: +// +// mockgen -source=api/gen/grpc/injective_trading_rpc/pb/goadesign_goagen_injective_trading_rpc_grpc.pb.go -destination=api/gen/grpc/injective_trading_rpc/pb/injective_trading_rpc_grpc.pb_mock.go -package=injective_trading_rpcpb +// // Package injective_trading_rpcpb is a generated GoMock package. package injective_trading_rpcpb @@ -8,7 +13,7 @@ import ( context "context" reflect "reflect" - gomock "github.com/golang/mock/gomock" + gomock "go.uber.org/mock/gomock" grpc "google.golang.org/grpc" ) @@ -35,10 +40,30 @@ func (m *MockInjectiveTradingRPCClient) EXPECT() *MockInjectiveTradingRPCClientM return m.recorder } +// GetTradingStats mocks base method. +func (m *MockInjectiveTradingRPCClient) GetTradingStats(ctx context.Context, in *GetTradingStatsRequest, opts ...grpc.CallOption) (*GetTradingStatsResponse, error) { + m.ctrl.T.Helper() + varargs := []any{ctx, in} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "GetTradingStats", varargs...) + ret0, _ := ret[0].(*GetTradingStatsResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetTradingStats indicates an expected call of GetTradingStats. +func (mr *MockInjectiveTradingRPCClientMockRecorder) GetTradingStats(ctx, in any, opts ...any) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]any{ctx, in}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTradingStats", reflect.TypeOf((*MockInjectiveTradingRPCClient)(nil).GetTradingStats), varargs...) +} + // ListTradingStrategies mocks base method. func (m *MockInjectiveTradingRPCClient) ListTradingStrategies(ctx context.Context, in *ListTradingStrategiesRequest, opts ...grpc.CallOption) (*ListTradingStrategiesResponse, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, in} + varargs := []any{ctx, in} for _, a := range opts { varargs = append(varargs, a) } @@ -49,9 +74,9 @@ func (m *MockInjectiveTradingRPCClient) ListTradingStrategies(ctx context.Contex } // ListTradingStrategies indicates an expected call of ListTradingStrategies. -func (mr *MockInjectiveTradingRPCClientMockRecorder) ListTradingStrategies(ctx, in interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockInjectiveTradingRPCClientMockRecorder) ListTradingStrategies(ctx, in any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, in}, opts...) + varargs := append([]any{ctx, in}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListTradingStrategies", reflect.TypeOf((*MockInjectiveTradingRPCClient)(nil).ListTradingStrategies), varargs...) } @@ -78,6 +103,21 @@ func (m *MockInjectiveTradingRPCServer) EXPECT() *MockInjectiveTradingRPCServerM return m.recorder } +// GetTradingStats mocks base method. +func (m *MockInjectiveTradingRPCServer) GetTradingStats(arg0 context.Context, arg1 *GetTradingStatsRequest) (*GetTradingStatsResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetTradingStats", arg0, arg1) + ret0, _ := ret[0].(*GetTradingStatsResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetTradingStats indicates an expected call of GetTradingStats. +func (mr *MockInjectiveTradingRPCServerMockRecorder) GetTradingStats(arg0, arg1 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTradingStats", reflect.TypeOf((*MockInjectiveTradingRPCServer)(nil).GetTradingStats), arg0, arg1) +} + // ListTradingStrategies mocks base method. func (m *MockInjectiveTradingRPCServer) ListTradingStrategies(arg0 context.Context, arg1 *ListTradingStrategiesRequest) (*ListTradingStrategiesResponse, error) { m.ctrl.T.Helper() @@ -88,7 +128,7 @@ func (m *MockInjectiveTradingRPCServer) ListTradingStrategies(arg0 context.Conte } // ListTradingStrategies indicates an expected call of ListTradingStrategies. -func (mr *MockInjectiveTradingRPCServerMockRecorder) ListTradingStrategies(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockInjectiveTradingRPCServerMockRecorder) ListTradingStrategies(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListTradingStrategies", reflect.TypeOf((*MockInjectiveTradingRPCServer)(nil).ListTradingStrategies), arg0, arg1) } diff --git a/go.mod b/go.mod index 411a8b43..fdab5254 100644 --- a/go.mod +++ b/go.mod @@ -1,29 +1,28 @@ module github.com/InjectiveLabs/sdk-go -go 1.22 +go 1.22.2 + +toolchain go1.22.5 require ( cosmossdk.io/errors v1.0.1 cosmossdk.io/math v1.3.0 - cosmossdk.io/store v1.1.0 - cosmossdk.io/x/evidence v0.1.0 - cosmossdk.io/x/feegrant v0.1.0 - cosmossdk.io/x/tx v0.13.3 - cosmossdk.io/x/upgrade v0.1.1 + cosmossdk.io/x/evidence v0.1.1 + cosmossdk.io/x/feegrant v0.1.1 + cosmossdk.io/x/tx v0.13.4 + cosmossdk.io/x/upgrade v0.1.3 github.com/CosmWasm/wasmd v0.40.2 github.com/InjectiveLabs/suplog v1.3.3 - github.com/bandprotocol/bandchain-packet v0.0.4 + github.com/bandprotocol/bandchain-packet v0.0.0-00010101000000-000000000000 github.com/btcsuite/btcd v0.23.4 github.com/btcsuite/btcd/btcutil v1.1.3 - github.com/cometbft/cometbft v0.38.9 + github.com/cometbft/cometbft v0.38.10 github.com/cosmos/cosmos-proto v1.0.0-beta.5 github.com/cosmos/cosmos-sdk v0.50.7 github.com/cosmos/go-bip39 v1.0.0 github.com/cosmos/gogoproto v1.5.0 - github.com/cosmos/ibc-go/modules/capability v1.0.0 - github.com/cosmos/ibc-go/v8 v8.2.0 + github.com/cosmos/ibc-go/v8 v8.3.2 github.com/ethereum/go-ethereum v1.11.5 - github.com/golang/mock v1.6.0 github.com/golang/protobuf v1.5.4 github.com/google/uuid v1.6.0 github.com/grpc-ecosystem/grpc-gateway/v2 v2.11.3 @@ -33,25 +32,25 @@ require ( github.com/shopspring/decimal v1.2.0 github.com/stretchr/testify v1.9.0 github.com/tyler-smith/go-bip39 v1.1.0 - golang.org/x/crypto v0.24.0 - google.golang.org/genproto/googleapis/api v0.0.0-20240227224415-6ceb2ff114de - google.golang.org/grpc v1.63.2 - google.golang.org/protobuf v1.33.0 - gopkg.in/ini.v1 v1.67.0 - gopkg.in/yaml.v2 v2.4.0 + go.uber.org/mock v0.5.0 + golang.org/x/crypto v0.25.0 + google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237 + google.golang.org/grpc v1.64.1 + google.golang.org/protobuf v1.34.2 gotest.tools/v3 v3.5.1 ) require ( cosmossdk.io/api v0.7.5 // indirect cosmossdk.io/collections v0.4.0 // indirect - cosmossdk.io/core v0.11.0 // indirect - cosmossdk.io/depinject v1.0.0-alpha.4 // indirect + cosmossdk.io/core v0.11.1 // indirect + cosmossdk.io/depinject v1.0.0 // indirect cosmossdk.io/log v1.3.1 // indirect + cosmossdk.io/store v1.1.0 // 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/CosmWasm/wasmvm/v2 v2.0.0 // indirect + github.com/CosmWasm/wasmvm/v2 v2.1.2 // indirect github.com/DataDog/appsec-internal-go v1.5.0 // indirect github.com/DataDog/datadog-agent/pkg/obfuscate v0.48.0 // indirect github.com/DataDog/datadog-agent/pkg/remoteconfig/state v0.48.1 // indirect @@ -87,7 +86,8 @@ require ( github.com/cosmos/btcutil v1.0.5 // indirect github.com/cosmos/cosmos-db v1.0.2 // indirect github.com/cosmos/gogogateway v1.2.0 // indirect - github.com/cosmos/iavl v1.1.2 // indirect + github.com/cosmos/iavl v1.2.0 // indirect + github.com/cosmos/ibc-go/modules/capability v1.0.0 // indirect github.com/cosmos/ics23/go v0.10.0 // indirect github.com/cosmos/ledger-cosmos-go v0.13.3 // indirect github.com/danieljoos/wincred v1.1.2 // indirect @@ -164,11 +164,11 @@ require ( github.com/oklog/ulid v1.3.1 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect github.com/outcaste-io/ristretto v0.2.3 // indirect - github.com/pelletier/go-toml/v2 v2.1.0 // indirect + github.com/pelletier/go-toml/v2 v2.2.2 // indirect github.com/petermattis/goid v0.0.0-20231207134359-e60b3f734c67 // indirect github.com/philhofer/fwd v1.1.2 // 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 @@ -176,11 +176,12 @@ require ( github.com/rivo/uniseg v0.4.4 // 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/rs/zerolog v1.33.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/secure-systems-lab/go-securesystemslib v0.7.0 // indirect + github.com/shamaton/msgpack/v2 v2.2.0 // indirect github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible // indirect github.com/sirupsen/logrus v1.9.3 // indirect github.com/sourcegraph/conc v0.3.0 // indirect @@ -188,7 +189,7 @@ require ( github.com/spf13/cast v1.6.0 // indirect github.com/spf13/cobra v1.8.0 // indirect github.com/spf13/pflag v1.0.5 // indirect - github.com/spf13/viper v1.18.2 // indirect + github.com/spf13/viper v1.19.0 // indirect github.com/subosito/gotenv v1.6.0 // indirect github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect github.com/tendermint/go-amino v0.16.0 // indirect @@ -198,7 +199,7 @@ require ( github.com/tklauser/numcpus v0.4.0 // indirect github.com/zondax/hid v0.9.2 // indirect github.com/zondax/ledger-go v0.14.3 // indirect - go.etcd.io/bbolt v1.3.8 // indirect + go.etcd.io/bbolt v1.4.0-alpha.0.0.20240404170359-43604f3112c5 // 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 @@ -206,18 +207,20 @@ require ( go.uber.org/multierr v1.11.0 // indirect golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8 // indirect golang.org/x/mod v0.18.0 // indirect - golang.org/x/net v0.26.0 // indirect + golang.org/x/net v0.27.0 // indirect golang.org/x/sync v0.7.0 // indirect - golang.org/x/sys v0.21.0 // indirect - golang.org/x/term v0.21.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.22.0 // indirect - golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect + golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240401170217-c3f982113cda // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240709173604-40e1e62336c5 // indirect gopkg.in/DataDog/dd-trace-go.v1 v1.62.0 // 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 gopkg.in/yaml.v3 v3.0.1 // indirect nhooyr.io/websocket v1.8.6 // indirect pgregory.net/rapid v1.1.0 // indirect @@ -230,11 +233,11 @@ replace ( cosmossdk.io/x/feegrant => github.com/InjectiveLabs/cosmos-sdk/x/feegrant v0.50.6-inj-0 cosmossdk.io/x/upgrade => github.com/InjectiveLabs/cosmos-sdk/x/upgrade v0.50.6-inj-0 - github.com/CosmWasm/wasmd => github.com/InjectiveLabs/wasmd v0.51.0-inj-0 + github.com/CosmWasm/wasmd => github.com/InjectiveLabs/wasmd v0.52.0-inj-0 github.com/bandprotocol/bandchain-packet => github.com/InjectiveLabs/bandchain-packet v0.0.4-inj-1 - github.com/cometbft/cometbft => github.com/InjectiveLabs/cometbft v0.38.10-inj-1 + github.com/cometbft/cometbft => github.com/InjectiveLabs/cometbft v0.38.11-inj-0 - github.com/cosmos/cosmos-sdk => github.com/InjectiveLabs/cosmos-sdk v0.50.8-inj-0 + github.com/cosmos/cosmos-sdk => github.com/InjectiveLabs/cosmos-sdk v0.50.9-inj-2 github.com/cosmos/ibc-apps/modules/ibc-hooks/v8 => github.com/InjectiveLabs/ibc-apps/modules/ibc-hooks/v8 v8.0.0-inj-0 github.com/cosmos/ibc-go/v8 => github.com/InjectiveLabs/ibc-go/v8 v8.3.2-inj-0 github.com/miguelmota/go-ethereum-hdwallet => github.com/InjectiveLabs/go-ethereum-hdwallet v0.1.2 diff --git a/go.sum b/go.sum index a9b25d4b..fd1aaba9 100644 --- a/go.sum +++ b/go.sum @@ -1,35 +1,35 @@ 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.112.0 h1:tpFCD7hpHFlQ8yPwT3x+QeXqc2T6+n6T+hmABHfDUSM= -cloud.google.com/go v0.112.0/go.mod h1:3jEEVwZ/MHU4djK5t5RHuKOA/GbLddgTdVubX1qnPD4= -cloud.google.com/go/compute v1.24.0 h1:phWcR2eWzRJaL/kOiJwfFsPs4BaKq1j6vnpZrc1YlVg= -cloud.google.com/go/compute v1.24.0/go.mod h1:kw1/T+h/+tK2LJK0wiPPx1intgdAM3j/g3hFDlscY40= +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/compute v1.25.1 h1:ZRpHJedLtTpKgr3RV1Fx23NuaAEN1Zfx9hw1u4aJdjU= +cloud.google.com/go/compute v1.25.1/go.mod h1:oopOIR53ly6viBYxaDhBfJwzUAxf1zE//uf3IB011ls= cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= 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/storage v1.36.0 h1:P0mOkAcaJxhCTvAkMhxMfrTKiNcub4YmmPBtlhAyTr8= -cloud.google.com/go/storage v1.36.0/go.mod h1:M6M/3V/D3KpzMTJyPOR/HU6n2Si5QdaXYEsng2xgOs8= +cloud.google.com/go/storage v1.38.0 h1:Az68ZRGlnNTpIBbLjSMIV2BDcwwXYlRlQzis0llkpJg= +cloud.google.com/go/storage v1.38.0/go.mod h1:tlUADB0mAb9BgYls9lq+8MGkfzOXuLrnHXlpHmvFJoY= 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.0 h1:vtIafqUi+1ZNAE/oxLOQQ7Oek2n4S48SWLG8h/+wdbo= -cosmossdk.io/core v0.11.0/go.mod h1:LaTtayWBSoacF5xNzoF8tmLhehqlA9z1SWiPuNC6X1w= -cosmossdk.io/depinject v1.0.0-alpha.4 h1:PLNp8ZYAMPTUKyG9IK2hsbciDWqna2z1Wsl98okJopc= -cosmossdk.io/depinject v1.0.0-alpha.4/go.mod h1:HeDk7IkR5ckZ3lMGs/o91AVUc7E596vMaOmslGFM3yU= +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/x/circuit v0.1.0 h1:IAej8aRYeuOMritczqTlljbUVHq1E85CpBqaCTwYgXs= -cosmossdk.io/x/circuit v0.1.0/go.mod h1:YDzblVE8+E+urPYQq5kq5foRY/IzhXovSYXb4nwd39w= -cosmossdk.io/x/tx v0.13.3 h1:Ha4mNaHmxBc6RMun9aKuqul8yHiL78EKJQ8g23Zf73g= -cosmossdk.io/x/tx v0.13.3/go.mod h1:I8xaHv0rhUdIvIdptKIqzYy27+n2+zBVaxO6fscFhys= +cosmossdk.io/x/circuit v0.1.1 h1:KPJCnLChWrxD4jLwUiuQaf5mFD/1m7Omyo7oooefBVQ= +cosmossdk.io/x/circuit v0.1.1/go.mod h1:B6f/urRuQH8gjt4eLIXfZJucrbreuYrKh5CSjaOxr+Q= +cosmossdk.io/x/tx v0.13.4 h1:Eg0PbJgeO0gM8p5wx6xa0fKR7hIV6+8lC56UrsvSo0Y= +cosmossdk.io/x/tx v0.13.4/go.mod h1:BkFqrnGGgW50Y6cwTy+JvgAhiffbGEKW6KF9ufcDpvk= 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= @@ -39,8 +39,8 @@ github.com/99designs/keyring v1.2.2 h1:pZd3neh/EmUzWONb35LxQfvuY7kiSXAq3HQd97+XB github.com/99designs/keyring v1.2.2/go.mod h1:wes/FrByc8j7lFOAGLGSNEg8f/PaI3cgTBqhFkHUrPk= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/CosmWasm/wasmvm/v2 v2.0.0 h1:IqNCI2G0mvs7K6ej17/I28805rVqnu+Y1cWDqIdwb08= -github.com/CosmWasm/wasmvm/v2 v2.0.0/go.mod h1:su9lg5qLr7adV95eOfzjZWkGiky8WNaNIHDr7Fpu7Ck= +github.com/CosmWasm/wasmvm/v2 v2.1.2 h1:GkJ5bAsRlLHfIQVg/FY1VHwLyBwlCjAhDea0B8L+e20= +github.com/CosmWasm/wasmvm/v2 v2.1.2/go.mod h1:bMhLQL4Yp9CzJi9A83aR7VO9wockOsSlZbT4ztOl6bg= github.com/DataDog/appsec-internal-go v1.5.0 h1:8kS5zSx5T49uZ8dZTdT19QVAvC/B8ByyZdhQKYQWHno= github.com/DataDog/appsec-internal-go v1.5.0/go.mod h1:pEp8gjfNLtEOmz+iZqC8bXhu0h4k7NUsW/qiQb34k1U= github.com/DataDog/datadog-agent/pkg/obfuscate v0.48.0 h1:bUMSNsw1iofWiju9yc1f+kBd33E3hMJtq9GuU602Iy8= @@ -63,10 +63,10 @@ github.com/DataDog/zstd v1.5.5 h1:oWf5W7GtOLgp6bciQYDmhHHjdhYkALu6S/5Ni9ZgSvQ= github.com/DataDog/zstd v1.5.5/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= github.com/InjectiveLabs/bandchain-packet v0.0.4-inj-1 h1:ZnvCV/lzjWmBwuGbkAz+okucfJEyEzkU9GYK3tKU9cU= github.com/InjectiveLabs/bandchain-packet v0.0.4-inj-1/go.mod h1:QELTDYiwnbAqIgTF9zeKr+hVlK6eVyt6Nxmh6/1mmzQ= -github.com/InjectiveLabs/cometbft v0.38.10-inj-1 h1:k4I22d5KcXEluYFSVfuSepkibyUesMD+UGOpBwqjXbo= -github.com/InjectiveLabs/cometbft v0.38.10-inj-1/go.mod h1:jHPx9vQpWzPHEAiYI/7EDKaB1NXhK6o3SArrrY8ExKc= -github.com/InjectiveLabs/cosmos-sdk v0.50.8-inj-0 h1:Jf+0AEdUUNG1mNARompZWTFI/UltAUGX66owYks7TAs= -github.com/InjectiveLabs/cosmos-sdk v0.50.8-inj-0/go.mod h1:igpF5mgbiTmaS3hO/yoIIv7+ICbzMBIowFWSw5aOrKA= +github.com/InjectiveLabs/cometbft v0.38.11-inj-0 h1:yf+qvOtlvmLZCBkQCInApRy9icp8+TuSWFwZwWPA5NU= +github.com/InjectiveLabs/cometbft v0.38.11-inj-0/go.mod h1:jHPx9vQpWzPHEAiYI/7EDKaB1NXhK6o3SArrrY8ExKc= +github.com/InjectiveLabs/cosmos-sdk v0.50.9-inj-2 h1:E5YT12BFhar95RanHLyI3zw12yQTGGPbktGQlN1UYsk= +github.com/InjectiveLabs/cosmos-sdk v0.50.9-inj-2/go.mod h1:f7gwrwkQ0cXiqvdAvifcNACCota5CVBLA5Hwyti9V6Q= github.com/InjectiveLabs/cosmos-sdk/store v0.50.6-inj-0 h1:75YtRrju3R21u/VXttzuBoh49o28xABR2OUqioT9hMQ= github.com/InjectiveLabs/cosmos-sdk/store v0.50.6-inj-0/go.mod h1:ZW4eIE98wivInyQyhxU2nHqEielc/iZAcr41qNyWSrw= github.com/InjectiveLabs/cosmos-sdk/x/evidence v0.50.6-inj-0 h1:rb73cHJPCTwnBq96WC9L1ymqnHe5i4of1wjpXFAOUe4= @@ -81,8 +81,8 @@ github.com/InjectiveLabs/metrics v0.0.10 h1:BoOwXnCtRRIPmq06jcI20pXZYE758eusaCI5 github.com/InjectiveLabs/metrics v0.0.10/go.mod h1:eYu++0DVUjk/jjV9WgvCo8gQU+16Yoyhp1iu+ghKNME= github.com/InjectiveLabs/suplog v1.3.3 h1:ARIR3lWD9BxcrmqTwgcGBt8t7e10gwOqllUAXa/MfxI= github.com/InjectiveLabs/suplog v1.3.3/go.mod h1:+I9WRgUhzmo1V/n7IkW24kFBFB9ZTPAiXXXCogWxmTM= -github.com/InjectiveLabs/wasmd v0.51.0-inj-0 h1:5YvS+OWjein0p3APDqLok/DjLmxJ4XAi8FXrmzhjjXo= -github.com/InjectiveLabs/wasmd v0.51.0-inj-0/go.mod h1:CGIOxbGca/pOiZ+Q7e6aMoNnnSPXrV5/hV1dK3H8FUo= +github.com/InjectiveLabs/wasmd v0.52.0-inj-0 h1:2sJftrI2+kc27wfBP9TZuoqszZx7YU8WNkFO/vMeZqQ= +github.com/InjectiveLabs/wasmd v0.52.0-inj-0/go.mod h1:kWL0LDT6QPnxQin9T2OBoDgqZidtbC+mRm0kL3pO65k= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= github.com/Microsoft/go-winio v0.5.0/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= @@ -243,8 +243,8 @@ 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.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/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.0 h1:r/l++byFtn7jHYa09zlAdSeevo8ci1mVZNO9+V0xsLE= github.com/cosmos/ibc-go/modules/capability v1.0.0/go.mod h1:D81ZxzjZAe0ZO5ambnvn1qedsFQ8lOwtqicG6liLBco= github.com/cosmos/ics23/go v0.10.0 h1:iXqLLgp2Lp+EdpIuwXTYIQU+AiHj9mOC2X9ab++bZDM= @@ -472,8 +472,8 @@ 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.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.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas= -github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU= +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/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= @@ -509,8 +509,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.3 h1:bN2+Fw9XPFvOCjB0UOevFIMICZ7G2XSQHzfvLUyOM5E= -github.com/hashicorp/go-getter v1.7.3/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.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= @@ -746,8 +746,8 @@ github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0Mw 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.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= -github.com/pelletier/go-toml/v2 v2.1.0 h1:FnwAJ4oYMvbT/34k9zzHuZNrhlz48GB3/s6at6/MHO4= -github.com/pelletier/go-toml/v2 v2.1.0/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdUvyaeZurnPPDc= +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= @@ -774,8 +774,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= @@ -818,8 +818,8 @@ 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/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.5.2 h1:HyvC0ARfnZBqnXwABFeSZHpKvJHJJfPz81GNueLj0oo= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= @@ -836,6 +836,8 @@ github.com/sasha-s/go-deadlock v0.3.1/go.mod h1:F73l+cr82YSh10GxyRI6qZiCgK64VaZj github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/secure-systems-lab/go-securesystemslib v0.7.0 h1:OwvJ5jQf9LnIAS83waAjPbcMsODrTQUpJ02eNLUoxBg= github.com/secure-systems-lab/go-securesystemslib v0.7.0/go.mod h1:/2gYnlnHVQ6xeGtfIqFy7Do03K4cdCY0A/GlJLDKLHI= +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/shopspring/decimal v1.2.0 h1:abSATXmQEYyShuxI4/vyW3tV1MrKAJzCZ/0zLUXYbsQ= @@ -873,8 +875,8 @@ github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnIn 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.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= -github.com/spf13/viper v1.18.2 h1:LUXCnvUvSM6FXAsj6nnfc8Q2tp1dIgUfY9Kc8GsSOiQ= -github.com/spf13/viper v1.18.2/go.mod h1:EKmWIqdnk5lOcmR72yw6hS+8OPYcwD0jteitLMVB+yk= +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= @@ -945,18 +947,18 @@ 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.3.8 h1:xs88BrvEv273UsB79e0hcVrlUWmS0a8upikMFhSyAtA= -go.etcd.io/bbolt v1.3.8/go.mod h1:N9Mkw9X8x5fupy0IKsmuqVtoGDyxsaDlbk4Rd05IAQw= +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.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= 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.47.0 h1:UNQQKPfTDe1J81ViolILjTKPr9WetKW6uei2hFgJmFs= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.47.0/go.mod h1:r9vWsPS/3AQItv3OSlEJ/E4mbrhUbbw18meOjArPtKQ= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0 h1:sv9kVfal0MK0wBMCOGr+HeJm9v803BkJxGrk2au7j08= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0/go.mod h1:SK2UL73Zy1quvRPonmOmRDiWk1KBV3LyIeeIxcEApWw= +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= @@ -974,6 +976,8 @@ go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0 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.5.0 h1:KAMbZvZPyBPWgD14IrIQ38QCyjwpvVVV6K/bHl1IwQU= +go.uber.org/mock v0.5.0/go.mod h1:ge71pBPLYDk7QIi1LupWxdAykm7KIEFchiOqd6z7qMM= 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= @@ -996,8 +1000,8 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8U 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.24.0 h1:mnl8DM0o513X8fdIkmyFE/5hTYxbwYOjDS/+rK6qpRI= -golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM= +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-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= @@ -1053,8 +1057,8 @@ golang.org/x/net v0.0.0-20220517181318-183a9ca12b87/go.mod h1:CfG3xpIq0wQ8r1q4Su golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= golang.org/x/net v0.3.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= -golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ= -golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= +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-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1134,14 +1138,14 @@ golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws= -golang.org/x/sys v0.21.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/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.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA= -golang.org/x/term v0.21.0 h1:WVXCp+/EBEHOj53Rvu+7KiT/iElMrO8ACK16SMZ3jaA= -golang.org/x/term v0.21.0/go.mod h1:ooXLefLobQVslOqselCNF4SxFAaoS6KujMbsGzSDmX0= +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.3.0/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= @@ -1184,11 +1188,11 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T 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-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk= -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.162.0 h1:Vhs54HkaEpkMBdgGdOT2P6F0csGG/vxDS0hWHJzmmps= -google.golang.org/api v0.162.0/go.mod h1:6SulDkfoBIg4NFmCuZ39XeeAgSHCPecfSUuDyYlAHs0= +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= @@ -1207,10 +1211,10 @@ google.golang.org/genproto v0.0.0-20210126160654-44e461bb6506/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20220314164441-57ef72a4c106/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= 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-20240227224415-6ceb2ff114de h1:jFNzHPIeuzhdRwVhbZdiym9q0ory/xY3sA+v2wPg8I0= -google.golang.org/genproto/googleapis/api v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:5iCWqnniDlqZHrd3neWVTOwvh/v6s3232omMecelax8= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240401170217-c3f982113cda h1:LI5DOvAxUPMv/50agcLLoo+AdWc1irS9Rzz4vPuD1V4= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240401170217-c3f982113cda/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= +google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237 h1:RFiFrvy37/mpSpdySBDrUdipW/dHwsRwh3J3+A9VgT4= +google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237/go.mod h1:Z5Iiy3jtmioajWHDGFk7CeugTyHtPvMHA4UTmUkyalE= +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= @@ -1228,8 +1232,8 @@ google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTp google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.63.2 h1:MUeiw1B2maTVZthpU5xvASfTh3LDbxHd6IJ6QQVU+xM= -google.golang.org/grpc v1.63.2/go.mod h1:WAX/8DgncnokcFUldAxq7GeB5DXHDbMF+lLvDomNkRA= +google.golang.org/grpc v1.64.1 h1:LKtvyfbX3UGVPFcGqJ9ItpVWW6oN/2XqTxfAnwRRXiA= +google.golang.org/grpc v1.64.1/go.mod h1:hiQF4LFZelK2WKaP6W0L92zGHtiQdZxk8CrSdvyjeP0= 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= @@ -1245,8 +1249,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.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= -google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= +google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= gopkg.in/DataDog/dd-trace-go.v1 v1.62.0 h1:jeZxE4ZlfAc+R0zO5TEmJBwOLet3NThsOfYJeSQg1x0= gopkg.in/DataDog/dd-trace-go.v1 v1.62.0/go.mod h1:YTvYkk3PTsfw0OWrRFxV/IQ5Gy4nZ5TRvxTAP3JcIzs= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= From 7829d009cf3965f4bd5756ba9cbbf7a9835ba05d Mon Sep 17 00:00:00 2001 From: Abel Armoa <30988000+aarmoa@users.noreply.github.com> Date: Tue, 10 Dec 2024 12:02:19 -0300 Subject: [PATCH 2/4] (feat) Added support for the latest version of Permissions module. Updated all examples for that module too. Refactored the logic to update the compiled protos --- Makefile | 134 +- buf.gen.chain.yaml | 20 + buf.gen.indexer.yaml | 21 + chain/auction/types/auction.pb.go | 164 +- chain/auction/types/errors.go | 8 - chain/auction/types/events.go | 6 - chain/auction/types/expected_keepers.go | 16 - chain/auction/types/genesis.go | 21 - chain/auction/types/key.go | 16 - chain/auction/types/msgs.go | 95 - chain/auction/types/params.go | 103 - chain/auction/types/paramset.go | 26 - chain/codec/codec.go | 1 + chain/crypto/codec/amino.go | 1 - chain/crypto/keyring/options.go | 44 - chain/exchange/types/common_utils.go | 33 - chain/exchange/types/derivative_orders.go | 8 + chain/exchange/types/errors.go | 3 +- chain/exchange/types/exchange.pb.go | 694 ++- chain/exchange/types/msgs.go | 14 +- chain/exchange/types/params.go | 57 +- chain/exchange/types/proposal.go | 39 +- chain/exchange/types/proposal.pb.go | 427 +- chain/exchange/types/query.pb.go | 2064 +++++-- chain/exchange/types/reclamation.go | 41 - chain/exchange/types/spot_orders.go | 16 +- chain/exchange/types/tx.pb.go | 556 +- chain/exchange/types/wasm_maker_contract.go | 23 - chain/helpers/common.go | 27 + chain/insurance/types/errors.go | 20 - chain/insurance/types/events.go | 1 - chain/insurance/types/expected_keepers.go | 20 - chain/insurance/types/genesis.go | 33 - chain/insurance/types/insurance.go | 56 - chain/insurance/types/key.go | 38 - chain/insurance/types/msgs.go | 184 - chain/insurance/types/params.go | 78 - chain/insurance/types/paramset.go | 26 - chain/ocr/types/expected_keepers.go | 29 - chain/ocr/types/genesis.go | 18 - chain/ocr/types/hooks.go | 38 - chain/ocr/types/msgs.go | 470 -- chain/oracle/types/band_ibc.go | 129 - chain/oracle/types/coinbase_oracle.go | 101 - chain/oracle/types/events.go | 6 - chain/oracle/types/expected_keepers.go | 46 - chain/oracle/types/genesis.go | 23 - chain/oracle/types/paramset.go | 26 - chain/oracle/types/pyth.go | 75 - chain/oracle/types/stork.go | 29 - chain/peggy/types/batch.go | 67 - chain/peggy/types/events.go | 28 - chain/peggy/types/expected_keepers.go | 54 - chain/peggy/types/genesis.go | 19 - chain/peggy/types/params_legacy.go | 108 - chain/peggy/types/proposal.go | 76 - chain/peggy/types/proposal.pb.go | 667 --- chain/permissions/types/codec.go | 6 - chain/permissions/types/errors.go | 24 - chain/permissions/types/expected_keepers.go | 26 - chain/permissions/types/genesis.go | 38 - chain/permissions/types/genesis.pb.go | 104 +- chain/permissions/types/msgs.go | 227 - chain/permissions/types/params.go | 33 - chain/permissions/types/permissions.pb.go | 1785 ++++-- chain/permissions/types/query.pb.go | 4837 +++++++++++---- chain/permissions/types/tx.pb.go | 2303 ++----- chain/permissions/types/types.go | 156 - chain/stream/types/query.pb.go | 268 +- chain/stream/types/request.go | 54 - chain/stream/types/response.go | 84 - chain/tokenfactory/types/authorityMetadata.go | 15 - .../types/authorityMetadata.pb.go | 84 +- chain/tokenfactory/types/denoms.go | 117 - chain/tokenfactory/types/errors.go | 25 - chain/tokenfactory/types/events.pb.go | 441 +- chain/tokenfactory/types/expected_keepers.go | 35 - chain/tokenfactory/types/genesis.go | 51 - chain/tokenfactory/types/gov.go | 54 - chain/tokenfactory/types/gov.pb.go | 465 -- chain/tokenfactory/types/keys.go | 50 - chain/tokenfactory/types/msgs.go | 288 - chain/tokenfactory/types/params.go | 63 - chain/tokenfactory/types/tx.pb.go | 508 +- chain/types/account.go | 186 - chain/types/chain_id.go | 54 - chain/types/code.go | 12 - chain/types/coin.go | 33 - chain/types/errors.go | 15 - chain/types/gas.go | 97 - chain/types/int.go | 22 - chain/types/params.go | 8 - chain/wasmx/types/exec_callback_msgs.go | 25 - chain/wasmx/types/exec_msgs.go | 26 - chain/wasmx/types/expected_keepers.go | 28 - chain/wasmx/types/genesis.go | 18 - chain/wasmx/types/paramset.go | 26 - chain/wasmx/types/util.go | 17 - client/chain/chain.go | 115 +- client/chain/chain_test_support.go | 48 +- client/chain/markets_assistant.go | 56 +- .../1_MsgCreateNamespace/example.go | 135 + .../permissions/2_DeleteNamespace/example.go | 74 - .../2_MsgUpdateNamespace/example.go | 113 + .../example.go | 43 +- .../permissions/3_UpdateNamespace/example.go | 78 - .../example.go | 0 .../4_UpdateNamespaceRoles/example.go | 91 - .../5_RevokeNamespaceRoles/example.go | 81 - .../example.go | 6 +- .../permissions/query/11_Voucher/example.go | 70 + .../12_PermissionsModuleState/example.go | 69 + .../query/1_NamespaceDenoms/example.go | 69 + .../example.go | 2 +- .../example.go | 2 +- .../example.go | 4 +- .../example.go | 2 +- .../query/6_RoleManagers/example.go | 69 + .../query/7_RoleManager/example.go | 70 + .../query/8_PolicyStatuses/example.go | 69 + .../9_PolicyManagerCapabilities/example.go | 69 + ...design_goagen_injective_accounts_rpc.pb.go | 2 +- ...n_goagen_injective_accounts_rpc_grpc.pb.go | 2 +- ...design_goagen_injective_accounts_rpc.pb.go | 5333 ----------------- ...n_goagen_injective_accounts_rpc_grpc.pb.go | 508 -- .../pb/pb/injective_accounts_rpc.pb.gw.go | 882 --- .../pb/pb/injective_accounts_rpc.proto | 623 -- ...adesign_goagen_injective_auction_rpc.pb.go | 2 +- ...gn_goagen_injective_auction_rpc_grpc.pb.go | 2 +- ...design_goagen_injective_campaign_rpc.pb.go | 524 +- ...n_goagen_injective_campaign_rpc_grpc.pb.go | 2 +- .../pb/injective_campaign_rpc.proto | 13 +- ...en_injective_derivative_exchange_rpc.pb.go | 1067 ++-- ...jective_derivative_exchange_rpc_grpc.pb.go | 2 +- .../injective_derivative_exchange_rpc.proto | 14 +- .../pb/event_provider_api.pb.gw.go | 569 ++ .../pb/event_provider_api.proto | 180 + .../pb/event_provider_api_grpc.pb_mock.go | 563 ++ .../goadesign_goagen_event_provider_api.pb.go | 1881 ++++++ ...esign_goagen_event_provider_api_grpc.pb.go | 325 + ...design_goagen_injective_exchange_rpc.pb.go | 640 +- ...n_goagen_injective_exchange_rpc_grpc.pb.go | 40 +- .../pb/injective_exchange_rpc.pb.gw.go | 85 + .../pb/injective_exchange_rpc.proto | 30 +- ...design_goagen_injective_explorer_rpc.pb.go | 1970 +++--- ...n_goagen_injective_explorer_rpc_grpc.pb.go | 40 +- .../pb/injective_explorer_rpc.pb.gw.go | 85 + .../pb/injective_explorer_rpc.proto | 27 + .../pb/goadesign_goagen_health.pb.go | 30 +- .../pb/goadesign_goagen_health_grpc.pb.go | 2 +- exchange/health_rpc/pb/health.proto | 2 + ...esign_goagen_injective_insurance_rpc.pb.go | 6 +- ..._goagen_injective_insurance_rpc_grpc.pb.go | 2 +- .../pb/injective_insurance_rpc.proto | 4 +- .../goadesign_goagen_injective_meta_rpc.pb.go | 2 +- ...esign_goagen_injective_meta_rpc_grpc.pb.go | 2 +- ...oadesign_goagen_injective_oracle_rpc.pb.go | 2 +- ...ign_goagen_injective_oracle_rpc_grpc.pb.go | 2 +- ...esign_goagen_injective_portfolio_rpc.pb.go | 2 +- ..._goagen_injective_portfolio_rpc_grpc.pb.go | 2 +- ...n_goagen_injective_spot_exchange_rpc.pb.go | 963 +-- ...gen_injective_spot_exchange_rpc_grpc.pb.go | 2 +- .../pb/injective_spot_exchange_rpc.proto | 14 +- ...adesign_goagen_injective_trading_rpc.pb.go | 673 ++- ...gn_goagen_injective_trading_rpc_grpc.pb.go | 40 +- .../pb/injective_trading_rpc.pb.gw.go | 85 + .../pb/injective_trading_rpc.proto | 55 + .../pb/injective_trading_rpc_grpc.pb_mock.go | 50 +- go.mod | 71 +- go.sum | 128 +- 170 files changed, 18334 insertions(+), 20402 deletions(-) create mode 100644 buf.gen.chain.yaml create mode 100644 buf.gen.indexer.yaml delete mode 100644 chain/auction/types/errors.go delete mode 100644 chain/auction/types/events.go delete mode 100644 chain/auction/types/expected_keepers.go delete mode 100644 chain/auction/types/genesis.go delete mode 100644 chain/auction/types/key.go delete mode 100644 chain/auction/types/msgs.go delete mode 100644 chain/auction/types/params.go delete mode 100644 chain/auction/types/paramset.go delete mode 100644 chain/crypto/keyring/options.go delete mode 100644 chain/exchange/types/reclamation.go delete mode 100644 chain/exchange/types/wasm_maker_contract.go create mode 100644 chain/helpers/common.go delete mode 100644 chain/insurance/types/errors.go delete mode 100644 chain/insurance/types/events.go delete mode 100644 chain/insurance/types/expected_keepers.go delete mode 100644 chain/insurance/types/genesis.go delete mode 100644 chain/insurance/types/insurance.go delete mode 100644 chain/insurance/types/key.go delete mode 100644 chain/insurance/types/msgs.go delete mode 100644 chain/insurance/types/params.go delete mode 100644 chain/insurance/types/paramset.go delete mode 100644 chain/ocr/types/expected_keepers.go delete mode 100644 chain/ocr/types/genesis.go delete mode 100644 chain/ocr/types/hooks.go delete mode 100644 chain/ocr/types/msgs.go delete mode 100644 chain/oracle/types/band_ibc.go delete mode 100644 chain/oracle/types/coinbase_oracle.go delete mode 100644 chain/oracle/types/events.go delete mode 100644 chain/oracle/types/expected_keepers.go delete mode 100644 chain/oracle/types/genesis.go delete mode 100644 chain/oracle/types/paramset.go delete mode 100644 chain/oracle/types/pyth.go delete mode 100644 chain/oracle/types/stork.go delete mode 100644 chain/peggy/types/batch.go delete mode 100644 chain/peggy/types/events.go delete mode 100644 chain/peggy/types/expected_keepers.go delete mode 100644 chain/peggy/types/genesis.go delete mode 100644 chain/peggy/types/params_legacy.go delete mode 100644 chain/peggy/types/proposal.go delete mode 100644 chain/peggy/types/proposal.pb.go delete mode 100644 chain/permissions/types/errors.go delete mode 100644 chain/permissions/types/expected_keepers.go delete mode 100644 chain/permissions/types/genesis.go delete mode 100644 chain/permissions/types/msgs.go delete mode 100644 chain/permissions/types/params.go delete mode 100644 chain/permissions/types/types.go delete mode 100644 chain/stream/types/request.go delete mode 100644 chain/stream/types/response.go delete mode 100644 chain/tokenfactory/types/authorityMetadata.go delete mode 100644 chain/tokenfactory/types/denoms.go delete mode 100644 chain/tokenfactory/types/errors.go delete mode 100644 chain/tokenfactory/types/expected_keepers.go delete mode 100644 chain/tokenfactory/types/genesis.go delete mode 100644 chain/tokenfactory/types/gov.go delete mode 100644 chain/tokenfactory/types/gov.pb.go delete mode 100644 chain/tokenfactory/types/keys.go delete mode 100644 chain/tokenfactory/types/msgs.go delete mode 100644 chain/tokenfactory/types/params.go delete mode 100644 chain/types/account.go delete mode 100644 chain/types/chain_id.go delete mode 100644 chain/types/code.go delete mode 100644 chain/types/coin.go delete mode 100644 chain/types/errors.go delete mode 100644 chain/types/gas.go delete mode 100644 chain/types/int.go delete mode 100644 chain/types/params.go delete mode 100644 chain/wasmx/types/exec_callback_msgs.go delete mode 100644 chain/wasmx/types/exec_msgs.go delete mode 100644 chain/wasmx/types/expected_keepers.go delete mode 100644 chain/wasmx/types/genesis.go delete mode 100644 chain/wasmx/types/paramset.go delete mode 100644 chain/wasmx/types/util.go create mode 100644 examples/chain/permissions/1_MsgCreateNamespace/example.go delete mode 100644 examples/chain/permissions/2_DeleteNamespace/example.go create mode 100644 examples/chain/permissions/2_MsgUpdateNamespace/example.go rename examples/chain/permissions/{1_CreateNamespace => 3_MsgUpdateActorRoles}/example.go (64%) delete mode 100644 examples/chain/permissions/3_UpdateNamespace/example.go rename examples/chain/permissions/{6_ClaimVoucher => 4_MsgClaimVoucher}/example.go (100%) delete mode 100644 examples/chain/permissions/4_UpdateNamespaceRoles/example.go delete mode 100644 examples/chain/permissions/5_RevokeNamespaceRoles/example.go rename examples/chain/permissions/query/{5_VouchersForAddress => 10_Vouchers}/example.go (90%) create mode 100644 examples/chain/permissions/query/11_Voucher/example.go create mode 100644 examples/chain/permissions/query/12_PermissionsModuleState/example.go create mode 100644 examples/chain/permissions/query/1_NamespaceDenoms/example.go rename examples/chain/permissions/query/{1_AllNamespaces => 2_Namespaces}/example.go (95%) rename examples/chain/permissions/query/{2_NamespaceByDenom => 3_Namespace}/example.go (94%) rename examples/chain/permissions/query/{3_AddressRoles => 4_RolesByActor}/example.go (92%) rename examples/chain/permissions/query/{4_AddressesByRole => 5_ActorsByRole}/example.go (94%) create mode 100644 examples/chain/permissions/query/6_RoleManagers/example.go create mode 100644 examples/chain/permissions/query/7_RoleManager/example.go create mode 100644 examples/chain/permissions/query/8_PolicyStatuses/example.go create mode 100644 examples/chain/permissions/query/9_PolicyManagerCapabilities/example.go delete mode 100644 exchange/accounts_rpc/pb/pb/goadesign_goagen_injective_accounts_rpc.pb.go delete mode 100644 exchange/accounts_rpc/pb/pb/goadesign_goagen_injective_accounts_rpc_grpc.pb.go delete mode 100644 exchange/accounts_rpc/pb/pb/injective_accounts_rpc.pb.gw.go delete mode 100644 exchange/accounts_rpc/pb/pb/injective_accounts_rpc.proto create mode 100644 exchange/event_provider_api/pb/event_provider_api.pb.gw.go create mode 100644 exchange/event_provider_api/pb/event_provider_api.proto create mode 100644 exchange/event_provider_api/pb/event_provider_api_grpc.pb_mock.go create mode 100644 exchange/event_provider_api/pb/goadesign_goagen_event_provider_api.pb.go create mode 100644 exchange/event_provider_api/pb/goadesign_goagen_event_provider_api_grpc.pb.go diff --git a/Makefile b/Makefile index 4492bf96..f1fea3f6 100644 --- a/Makefile +++ b/Makefile @@ -2,6 +2,7 @@ all: copy-exchange-client: rm -rf exchange/* + mkdir -p exchange/event_provider_api mkdir -p exchange/health_rpc mkdir -p exchange/accounts_rpc mkdir -p exchange/auction_rpc @@ -16,9 +17,9 @@ copy-exchange-client: mkdir -p exchange/spot_exchange_rpc mkdir -p exchange/trading_rpc + cp -r ../injective-indexer/api/gen/grpc/event_provider_api/pb exchange/event_provider_api/pb cp -r ../injective-indexer/api/gen/grpc/health/pb exchange/health_rpc/pb cp -r ../injective-indexer/api/gen/grpc/injective_accounts_rpc/pb exchange/accounts_rpc/pb - cp -r ../injective-indexer/api/gen/grpc/injective_accounts_rpc/pb exchange/accounts_rpc/pb cp -r ../injective-indexer/api/gen/grpc/injective_auction_rpc/pb exchange/auction_rpc/pb cp -r ../injective-indexer/api/gen/grpc/injective_campaign_rpc/pb exchange/campaign_rpc/pb cp -r ../injective-indexer/api/gen/grpc/injective_derivative_exchange_rpc/pb exchange/derivative_exchange_rpc/pb @@ -31,44 +32,109 @@ copy-exchange-client: cp -r ../injective-indexer/api/gen/grpc/injective_spot_exchange_rpc/pb exchange/spot_exchange_rpc/pb cp -r ../injective-indexer/api/gen/grpc/injective_trading_rpc/pb exchange/trading_rpc/pb -.PHONY: copy-exchange-client tests coverage - copy-chain-types: - cp ../injective-core/injective-chain/crypto/ethsecp256k1/*.go chain/crypto/ethsecp256k1 + cp -r ../injective-core/injective-chain/codec chain + cp -r ../injective-core/injective-chain/helpers chain + mkdir -p chain/crypto/codec && cp ../injective-core/injective-chain/crypto/codec/*.go chain/crypto/codec + rm -rf chain/crypto/codec/*test.go rm -rf chain/crypto/codec/*gw.go + mkdir -p chain/crypto/ethsecp256k1 && cp ../injective-core/injective-chain/crypto/ethsecp256k1/*.go chain/crypto/ethsecp256k1 rm -rf chain/crypto/ethsecp256k1/*test.go rm -rf chain/crypto/ethsecp256k1/*gw.go - cp ../injective-core/injective-chain/codec/types/*.go chain/codec/types - rm -rf chain/codec/types/*test.go rm -rf chain/codec/types/*gw.go - cp ../injective-core/injective-chain/modules/auction/types/*.go chain/auction/types - rm -rf chain/auction/types/*test.go rm -rf chain/auction/types/*gw.go - cp ../injective-core/injective-chain/modules/exchange/types/*.go chain/exchange/types - rm -rf chain/exchange/types/*test.go rm -rf chain/exchange/types/*gw.go - cp ../injective-core/injective-chain/modules/insurance/types/*.go chain/insurance/types - rm -rf chain/insurance/types/*test.go rm -rf chain/insurance/types/*gw.go - cp ../injective-core/injective-chain/modules/ocr/types/*.go chain/ocr/types - rm -rf chain/ocr/types/*test.go rm -rf chain/ocr/types/*gw.go - cp ../injective-core/injective-chain/modules/oracle/types/*.go chain/oracle/types - cp -r ../injective-core/injective-chain/modules/oracle/bandchain chain/oracle - rm -rf chain/oracle/types/*test.go rm -rf chain/oracle/types/*gw.go - cp ../injective-core/injective-chain/modules/peggy/types/*.go chain/peggy/types - rm -rf chain/peggy/types/*test.go rm -rf chain/peggy/types/*gw.go - cp ../injective-core/injective-chain/modules/permissions/types/*.go chain/permissions/types - rm -rf chain/permissions/types/*test.go rm -rf chain/permissions/types/*gw.go - cp ../injective-core/injective-chain/modules/tokenfactory/types/*.go chain/tokenfactory/types - rm -rf chain/tokenfactory/types/*test.go rm -rf chain/tokenfactory/types/*gw.go - cp ../injective-core/injective-chain/modules/wasmx/types/*.go chain/wasmx/types - rm -rf chain/wasmx/types/*test.go rm -rf chain/wasmx/types/*gw.go - cp ../injective-core/injective-chain/stream/types/*.go chain/stream/types - rm -rf chain/stream/types/*test.go rm -rf chain/stream/types/*gw.go - cp ../injective-core/injective-chain/types/*.go chain/types - rm -rf chain/types/*test.go rm -rf chain/types/*gw.go + mkdir -p chain/crypto/hd && cp ../injective-core/injective-chain/crypto/hd/*.go chain/crypto/hd + rm -rf chain/crypto/hd/*test.go rm -rf chain/crypto/hd/*gw.go + mkdir -p chain/auction/types && \ + cp ../injective-core/injective-chain/modules/auction/types/*.pb.go chain/auction/types && \ + cp ../injective-core/injective-chain/modules/auction/types/codec.go chain/auction/types + mkdir -p chain/exchange/types && \ + cp ../injective-core/injective-chain/modules/exchange/types/*.go chain/exchange/types && \ + rm -rf chain/exchange/types/*test.go && rm -rf chain/exchange/types/*gw.go + mkdir -p chain/insurance/types && \ + cp ../injective-core/injective-chain/modules/insurance/types/*.pb.go chain/insurance/types && \ + cp ../injective-core/injective-chain/modules/insurance/types/codec.go chain/insurance/types + mkdir -p chain/ocr/types && \ + cp ../injective-core/injective-chain/modules/ocr/types/*.pb.go chain/ocr/types && \ + cp ../injective-core/injective-chain/modules/ocr/types/errors.go chain/ocr/types && \ + cp ../injective-core/injective-chain/modules/ocr/types/key.go chain/ocr/types && \ + cp ../injective-core/injective-chain/modules/ocr/types/params.go chain/ocr/types && \ + cp ../injective-core/injective-chain/modules/ocr/types/proposal.go chain/ocr/types && \ + cp ../injective-core/injective-chain/modules/ocr/types/types.go chain/ocr/types && \ + cp ../injective-core/injective-chain/modules/ocr/types/codec.go chain/ocr/types + mkdir -p chain/oracle/types && \ + cp ../injective-core/injective-chain/modules/oracle/types/*.pb.go chain/oracle/types && \ + cp ../injective-core/injective-chain/modules/oracle/types/codec.go chain/oracle/types && \ + cp ../injective-core/injective-chain/modules/oracle/types/errors.go chain/oracle/types && \ + cp ../injective-core/injective-chain/modules/oracle/types/msgs.go chain/oracle/types && \ + cp ../injective-core/injective-chain/modules/oracle/types/oracle.go chain/oracle/types && \ + cp ../injective-core/injective-chain/modules/oracle/types/params.go chain/oracle/types && \ + cp ../injective-core/injective-chain/modules/oracle/types/proposal.go chain/oracle/types && \ + cp ../injective-core/injective-chain/modules/oracle/types/stork_oracle.go chain/oracle/types && \ + cp -r ../injective-core/injective-chain/modules/oracle/bandchain chain/oracle + mkdir -p chain/peggy/types && \ + cp ../injective-core/injective-chain/modules/peggy/types/*.pb.go chain/peggy/types && \ + cp ../injective-core/injective-chain/modules/peggy/types/abi_json.go chain/peggy/types && \ + cp ../injective-core/injective-chain/modules/peggy/types/codec.go chain/peggy/types && \ + cp ../injective-core/injective-chain/modules/peggy/types/ethereum.go chain/peggy/types && \ + cp ../injective-core/injective-chain/modules/peggy/types/ethereum_signer.go chain/peggy/types && \ + cp ../injective-core/injective-chain/modules/peggy/types/errors.go chain/peggy/types && \ + cp ../injective-core/injective-chain/modules/peggy/types/key.go chain/peggy/types && \ + cp ../injective-core/injective-chain/modules/peggy/types/msgs.go chain/peggy/types && \ + cp ../injective-core/injective-chain/modules/peggy/types/params.go chain/peggy/types && \ + cp ../injective-core/injective-chain/modules/peggy/types/types.go chain/peggy/types + mkdir -p chain/permissions/types && \ + cp ../injective-core/injective-chain/modules/permissions/types/*.pb.go chain/permissions/types && \ + cp ../injective-core/injective-chain/modules/permissions/types/codec.go chain/permissions/types + mkdir -p chain/tokenfactory/types && \ + cp ../injective-core/injective-chain/modules/tokenfactory/types/*.pb.go chain/tokenfactory/types && \ + cp ../injective-core/injective-chain/modules/tokenfactory/types/codec.go chain/tokenfactory/types + mkdir -p chain/wasmx/types && \ + cp ../injective-core/injective-chain/modules/wasmx/types/*.pb.go chain/wasmx/types && \ + cp ../injective-core/injective-chain/modules/wasmx/types/codec.go chain/wasmx/types && \ + cp ../injective-core/injective-chain/modules/wasmx/types/custom_execution.go chain/wasmx/types && \ + cp ../injective-core/injective-chain/modules/wasmx/types/errors.go chain/wasmx/types && \ + cp ../injective-core/injective-chain/modules/wasmx/types/key.go chain/wasmx/types && \ + cp ../injective-core/injective-chain/modules/wasmx/types/msgs.go chain/wasmx/types && \ + cp ../injective-core/injective-chain/modules/wasmx/types/params.go chain/wasmx/types && \ + cp ../injective-core/injective-chain/modules/wasmx/types/proposal.go chain/wasmx/types + mkdir -p chain/stream/types && \ + cp ../injective-core/injective-chain/stream/types/*.pb.go chain/stream/types + mkdir -p chain/types && \ + cp ../injective-core/injective-chain/types/*.pb.go ../injective-core/injective-chain/types/config.go chain/types && \ + cp ../injective-core/injective-chain/types/codec.go chain/types - @echo "👉 Replace injective-core/injective-chain/modules with sdk-go/chain" - @echo "👉 Replace injective-core/injective-chain/codec with sdk-go/chain/codec" - @echo "👉 Replace injective-core/injective-chain/codec/types with sdk-go/chain/codec/types" - @echo "👉 Replace injective-core/injective-chain/types with sdk-go/chain/types" - @echo "👉 Replace injective-core/injective-chain/crypto with sdk-go/chain/crypto" + @find ./chain -type f -name "*.go" -exec sed -i "" -e "s|github.com/InjectiveLabs/injective-core/injective-chain/modules|github.com/InjectiveLabs/sdk-go/chain|g" {} \; + @find ./chain -type f -name "*.go" -exec sed -i "" -e "s|github.com/InjectiveLabs/injective-core/injective-chain|github.com/InjectiveLabs/sdk-go/chain|g" {} \; + +#gen: gen-proto +# +#gen-proto: clone-all copy-proto +# buf generate --template buf.gen.chain.yaml +# buf generate --template buf.gen.indexer.yaml +# rm -rf local_proto +# $(call clean_repos) +# +#define clean_repos +# rm -Rf injective-indexer +#endef +# +#clean-all: +# $(call clean_repos) +# +#clone-injective-indexer: +# git clone https://github.com/InjectiveLabs/injective-indexer.git -b v1.13.4 --depth 1 --single-branch +# +#clone-all: clone-injective-indexer +# +#copy-proto: +# rm -rf local_proto +# mkdir -p local_proto +# find ./injective-indexer/api/gen/grpc -type f -name "*.proto" | while read -r file; do \ +# dest="local_proto/$$(basename $$(dirname $$(dirname "$$file")))/$$(basename $$(dirname "$$file"))"; \ +# mkdir -p "$$dest"; \ +# cp "$$file" "$$dest"; \ +# done tests: go test -race ./client/... ./ethereum/... coverage: go test -race -coverprofile=coverage.out -covermode=atomic ./client/... ./ethereum/... + +.PHONY: copy-exchange-client tests coverage \ No newline at end of file diff --git a/buf.gen.chain.yaml b/buf.gen.chain.yaml new file mode 100644 index 00000000..6f848993 --- /dev/null +++ b/buf.gen.chain.yaml @@ -0,0 +1,20 @@ +version: v2 +managed: + enabled: true + disable: + - module: buf.build/googleapis/googleapis + file_option: go_package_prefix +plugins: + - local: protoc-gen-go-grpc + out: ./chain/ + opt: paths=source_relative + - local: protoc-gen-gogo + out: ./chain/ + opt: paths=source_relative +inputs: +# - git_repo: https://github.com/InjectiveLabs/injective-core +# tag: v1.13.0 +# subdir: proto + - git_repo: https://github.com/InjectiveLabs/injective-core + branch: f/permissions-rework + subdir: proto diff --git a/buf.gen.indexer.yaml b/buf.gen.indexer.yaml new file mode 100644 index 00000000..81c925e6 --- /dev/null +++ b/buf.gen.indexer.yaml @@ -0,0 +1,21 @@ +version: v2 +managed: + enabled: true + disable: + - module: buf.build/googleapis/googleapis + file_option: go_package_prefix +plugins: + - remote: buf.build/protocolbuffers/go:v1.34.0 + out: ./exchange/ + opt: paths=source_relative + - remote: buf.build/grpc/go:v1.3.0 + out: ./exchange/ + opt: paths=source_relative +# - local: protoc-gen-go +# out: ./exchange/ +# opt: paths=source_relative +# - local: protoc-gen-go-grpc +# out: ./exchange/ +# opt: paths=source_relative +inputs: + - directory: local_proto diff --git a/chain/auction/types/auction.pb.go b/chain/auction/types/auction.pb.go index 164a7820..25703a53 100644 --- a/chain/auction/types/auction.pb.go +++ b/chain/auction/types/auction.pb.go @@ -32,6 +32,9 @@ type Params struct { AuctionPeriod int64 `protobuf:"varint,1,opt,name=auction_period,json=auctionPeriod,proto3" json:"auction_period,omitempty"` // min_next_bid_increment_rate defines the minimum increment rate for new bids MinNextBidIncrementRate cosmossdk_io_math.LegacyDec `protobuf:"bytes,2,opt,name=min_next_bid_increment_rate,json=minNextBidIncrementRate,proto3,customtype=cosmossdk.io/math.LegacyDec" json:"min_next_bid_increment_rate"` + // inj_basket_max_cap defines the maximum cap for INJ contained in an auction + // basket + InjBasketMaxCap cosmossdk_io_math.Int `protobuf:"bytes,3,opt,name=inj_basket_max_cap,json=injBasketMaxCap,proto3,customtype=cosmossdk.io/math.Int" json:"inj_basket_max_cap"` } func (m *Params) Reset() { *m = Params{} } @@ -365,43 +368,45 @@ func init() { } var fileDescriptor_49edfee5f1ef4b5a = []byte{ - // 567 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x94, 0xbf, 0x6f, 0xd3, 0x40, - 0x14, 0xc7, 0x73, 0x18, 0x22, 0x7a, 0xa8, 0x40, 0xad, 0x8a, 0xa6, 0xad, 0x64, 0x47, 0x46, 0xa8, - 0x01, 0xa9, 0x3e, 0x4a, 0xb7, 0x6e, 0x18, 0x10, 0xaa, 0x14, 0x50, 0x65, 0x98, 0x58, 0xac, 0xb3, - 0xfd, 0xe4, 0x5c, 0x93, 0xbb, 0x8b, 0x7c, 0xe7, 0xa4, 0x19, 0x11, 0x5b, 0x59, 0xf8, 0x13, 0x98, - 0x61, 0xe1, 0x4f, 0x60, 0xec, 0xd8, 0x11, 0x31, 0x04, 0x94, 0x0c, 0x20, 0x46, 0xfe, 0x02, 0x14, - 0xff, 0x88, 0xbc, 0x20, 0x31, 0x74, 0x60, 0x49, 0xfc, 0xbe, 0xf7, 0xee, 0xfb, 0x3e, 0xef, 0x49, - 0xf7, 0xf0, 0x0e, 0x13, 0xc7, 0x10, 0x69, 0x36, 0x02, 0x42, 0xb3, 0x48, 0x33, 0x29, 0xc8, 0x68, - 0x2f, 0x04, 0x4d, 0xf7, 0xaa, 0xd8, 0x1d, 0xa6, 0x52, 0x4b, 0x73, 0x73, 0x99, 0xe8, 0x56, 0x07, - 0x65, 0xe2, 0xd6, 0x7a, 0x22, 0x13, 0x99, 0x67, 0x91, 0xc5, 0x57, 0x71, 0x61, 0xcb, 0x8a, 0xa4, - 0xe2, 0x52, 0x91, 0x90, 0x2a, 0x58, 0x7a, 0x46, 0x92, 0x95, 0x86, 0x5b, 0x6b, 0x94, 0x33, 0x21, - 0x49, 0xfe, 0x5b, 0x48, 0xce, 0x47, 0x84, 0x9b, 0x47, 0x34, 0xa5, 0x5c, 0x99, 0x77, 0xf0, 0xf5, - 0xb2, 0x4c, 0x30, 0x84, 0x94, 0xc9, 0xb8, 0x85, 0xda, 0xa8, 0x63, 0xf8, 0xab, 0xa5, 0x7a, 0x94, - 0x8b, 0x26, 0xc5, 0xdb, 0x9c, 0x89, 0x40, 0xc0, 0x89, 0x0e, 0x42, 0x16, 0x07, 0x4c, 0x44, 0x29, - 0x70, 0x10, 0x3a, 0x48, 0xa9, 0x86, 0xd6, 0xa5, 0x36, 0xea, 0xac, 0x78, 0xb7, 0xcf, 0xa6, 0x76, - 0xe3, 0xeb, 0xd4, 0xde, 0x2e, 0x88, 0x54, 0xdc, 0x77, 0x99, 0x24, 0x9c, 0xea, 0x9e, 0xdb, 0x85, - 0x84, 0x46, 0x93, 0xc7, 0x10, 0xf9, 0x1b, 0x9c, 0x89, 0xe7, 0x70, 0xa2, 0x3d, 0x16, 0x1f, 0x56, - 0x26, 0x3e, 0xd5, 0x70, 0xb0, 0xf1, 0xf3, 0xbd, 0x8d, 0x4e, 0x7f, 0x7c, 0xba, 0x57, 0x01, 0x91, - 0x02, 0xd1, 0x79, 0x83, 0xb0, 0xe1, 0xb1, 0xd8, 0xdc, 0xc7, 0xcd, 0x90, 0xc5, 0x31, 0xa4, 0x39, - 0xe2, 0x8a, 0xb7, 0xfd, 0x6b, 0x6a, 0x97, 0xca, 0xef, 0xa9, 0xbd, 0x3a, 0xa1, 0x7c, 0x70, 0xe0, - 0x14, 0xb1, 0xe3, 0x97, 0x07, 0xe6, 0x53, 0xdc, 0xa4, 0x5c, 0x66, 0x42, 0x97, 0x8c, 0xa4, 0x64, - 0xdc, 0x49, 0x98, 0xee, 0x65, 0xa1, 0x1b, 0x49, 0x4e, 0xca, 0x01, 0x16, 0x7f, 0xbb, 0x2a, 0xee, - 0x13, 0x3d, 0x19, 0x82, 0x72, 0x1f, 0x49, 0x26, 0xfc, 0xf2, 0xba, 0x73, 0x8a, 0xf0, 0x5a, 0x97, - 0x2a, 0xfd, 0xb0, 0x80, 0xf3, 0x41, 0x65, 0x03, 0x6d, 0xde, 0xc2, 0xcd, 0x31, 0x13, 0xa2, 0x62, - 0xf2, 0xcb, 0xe8, 0xc2, 0xca, 0x9a, 0xeb, 0xf8, 0x4a, 0x2a, 0x33, 0x11, 0xb7, 0x8c, 0x36, 0xea, - 0x5c, 0xf6, 0x8b, 0xc0, 0x79, 0x8d, 0xf0, 0xd5, 0x27, 0x23, 0x10, 0x8b, 0x29, 0x2e, 0x18, 0xea, - 0x73, 0xb9, 0xf0, 0xd6, 0xff, 0xc2, 0xf0, 0x16, 0x61, 0x33, 0x67, 0xf8, 0x2f, 0x26, 0xf2, 0x19, - 0xe1, 0xb5, 0x3a, 0xcd, 0x0b, 0x4d, 0xd3, 0x5a, 0x2e, 0xaa, 0xe5, 0x9a, 0x77, 0xf1, 0x4d, 0x10, - 0x31, 0x13, 0x49, 0xa0, 0x19, 0x07, 0xa5, 0x29, 0x1f, 0xe6, 0x50, 0x86, 0x7f, 0xa3, 0xd0, 0x5f, - 0x56, 0xb2, 0x79, 0x8c, 0xb1, 0x80, 0x71, 0x10, 0x52, 0xd5, 0x07, 0xdd, 0x32, 0xda, 0x46, 0xe7, - 0xda, 0x83, 0x4d, 0xb7, 0x00, 0x74, 0x17, 0x2f, 0xae, 0x7a, 0x9c, 0x39, 0xa3, 0x77, 0x7f, 0xd1, - 0xd4, 0x87, 0x6f, 0x76, 0xe7, 0x1f, 0x9b, 0x52, 0xfe, 0x8a, 0x80, 0xb1, 0x97, 0xbb, 0x7b, 0xc9, - 0xd9, 0xcc, 0x42, 0xe7, 0x33, 0x0b, 0x7d, 0x9f, 0x59, 0xe8, 0xdd, 0xdc, 0x6a, 0x9c, 0xcf, 0xad, - 0xc6, 0x97, 0xb9, 0xd5, 0x78, 0xf5, 0xac, 0x66, 0x77, 0x58, 0xad, 0x87, 0x2e, 0x0d, 0x15, 0x59, - 0x2e, 0x8b, 0xdd, 0x48, 0xa6, 0x50, 0x0f, 0x7b, 0x94, 0x09, 0xc2, 0x65, 0x9c, 0x0d, 0x40, 0x2d, - 0x57, 0x4e, 0x5e, 0x39, 0x6c, 0xe6, 0x5b, 0x60, 0xff, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x65, - 0x8c, 0x47, 0xe7, 0x94, 0x04, 0x00, 0x00, + // 607 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x54, 0xb1, 0x4f, 0x14, 0x4f, + 0x14, 0xbe, 0xf9, 0xdd, 0xcf, 0x8b, 0x8c, 0x41, 0x64, 0x82, 0x72, 0x40, 0xdc, 0x23, 0x67, 0x0c, + 0x68, 0xc2, 0x8e, 0x48, 0x47, 0xe7, 0xa2, 0x05, 0x06, 0x0c, 0x59, 0xad, 0x6c, 0x36, 0xb3, 0xbb, + 0x2f, 0xc7, 0x1c, 0xcc, 0xcc, 0x66, 0x67, 0x16, 0x8e, 0x7f, 0xc1, 0xca, 0x3f, 0xc0, 0x18, 0x1b, + 0x2d, 0xac, 0xfc, 0x13, 0x2c, 0x29, 0x29, 0x8d, 0xc5, 0x69, 0xa0, 0xd0, 0x58, 0xda, 0xd8, 0x9a, + 0x9b, 0x9d, 0xbd, 0x6c, 0x62, 0x34, 0x56, 0xc4, 0xe6, 0x6e, 0xdf, 0x37, 0xef, 0x7d, 0xf3, 0x7d, + 0xef, 0x65, 0x1e, 0x5e, 0xe2, 0xb2, 0x0f, 0x89, 0xe1, 0x07, 0x40, 0x59, 0x91, 0x18, 0xae, 0x24, + 0x3d, 0x58, 0x8d, 0xc1, 0xb0, 0xd5, 0x2a, 0xf6, 0xb3, 0x5c, 0x19, 0x45, 0xe6, 0xc6, 0x89, 0x7e, + 0x75, 0xe0, 0x12, 0xe7, 0x67, 0x7a, 0xaa, 0xa7, 0x6c, 0x16, 0x1d, 0x7d, 0x95, 0x05, 0xf3, 0x5e, + 0xa2, 0xb4, 0x50, 0x9a, 0xc6, 0x4c, 0xc3, 0x98, 0x33, 0x51, 0xdc, 0x11, 0xce, 0x4f, 0x33, 0xc1, + 0xa5, 0xa2, 0xf6, 0xb7, 0x84, 0xba, 0x3f, 0x10, 0x6e, 0xed, 0xb0, 0x9c, 0x09, 0x4d, 0x6e, 0xe2, + 0xcb, 0xee, 0x9a, 0x28, 0x83, 0x9c, 0xab, 0xb4, 0x8d, 0x16, 0xd1, 0x72, 0x33, 0x9c, 0x74, 0xe8, + 0x8e, 0x05, 0x09, 0xc3, 0x0b, 0x82, 0xcb, 0x48, 0xc2, 0xc0, 0x44, 0x31, 0x4f, 0x23, 0x2e, 0x93, + 0x1c, 0x04, 0x48, 0x13, 0xe5, 0xcc, 0x40, 0xfb, 0xbf, 0x45, 0xb4, 0x3c, 0x11, 0xdc, 0x38, 0x1e, + 0x76, 0x1a, 0x1f, 0x87, 0x9d, 0x85, 0x52, 0x91, 0x4e, 0xf7, 0x7c, 0xae, 0xa8, 0x60, 0x66, 0xd7, + 0xdf, 0x82, 0x1e, 0x4b, 0x8e, 0xee, 0x43, 0x12, 0xce, 0x0a, 0x2e, 0x1f, 0xc1, 0xc0, 0x04, 0x3c, + 0xdd, 0xac, 0x48, 0x42, 0x66, 0x80, 0x3c, 0xc4, 0x84, 0xcb, 0x7e, 0x14, 0x33, 0xbd, 0x07, 0x26, + 0x12, 0x6c, 0x10, 0x25, 0x2c, 0x6b, 0x37, 0x2d, 0xf3, 0x75, 0xc7, 0x7c, 0xf5, 0x57, 0xe6, 0x4d, + 0x69, 0xc2, 0x29, 0x2e, 0xfb, 0x81, 0xad, 0xdb, 0x66, 0x83, 0x0d, 0x96, 0xad, 0xcf, 0x7e, 0x7d, + 0xd5, 0x41, 0xcf, 0xbe, 0xbc, 0xbb, 0x5d, 0x99, 0xa3, 0xa5, 0xdd, 0xee, 0x4b, 0x84, 0x9b, 0x01, + 0x4f, 0xc9, 0x1a, 0x6e, 0xc5, 0x3c, 0x4d, 0x21, 0xb7, 0x76, 0x27, 0x82, 0x85, 0x6f, 0xc3, 0x8e, + 0x43, 0xbe, 0x0f, 0x3b, 0x93, 0x47, 0x4c, 0xec, 0xaf, 0x77, 0xcb, 0xb8, 0x1b, 0xba, 0x03, 0x12, + 0xe3, 0x16, 0x13, 0xaa, 0x90, 0xc6, 0xfa, 0xbd, 0x74, 0x77, 0xce, 0x2f, 0xe5, 0xf8, 0xa3, 0xd6, + 0x57, 0x53, 0xf2, 0x37, 0x14, 0x97, 0x01, 0x75, 0x82, 0x97, 0x7a, 0xdc, 0xec, 0x16, 0xb1, 0x9f, + 0x28, 0x41, 0xdd, 0x9c, 0xca, 0xbf, 0x15, 0x9d, 0xee, 0x51, 0x73, 0x94, 0x81, 0xb6, 0x05, 0xa1, + 0x63, 0xee, 0xbe, 0x46, 0x78, 0x7a, 0x8b, 0x69, 0x73, 0xaf, 0xd4, 0x1d, 0x82, 0x2e, 0xf6, 0x0d, + 0xb9, 0x86, 0x5b, 0x87, 0x5c, 0xca, 0x4a, 0x6e, 0xe8, 0xa2, 0xf3, 0x50, 0x44, 0x66, 0xf0, 0x85, + 0x5c, 0x15, 0x32, 0xb5, 0xa3, 0xf8, 0x3f, 0x2c, 0x83, 0xee, 0x0b, 0x84, 0x2f, 0x3e, 0x38, 0x00, + 0x39, 0x9a, 0xe3, 0x48, 0x5e, 0xbd, 0x9b, 0xe7, 0xd9, 0xb0, 0xdf, 0xc8, 0x7b, 0x83, 0x30, 0xb1, + 0xf2, 0xfe, 0xf5, 0x3e, 0xbe, 0x47, 0x78, 0xba, 0x2e, 0xf4, 0xb1, 0x61, 0x79, 0x2d, 0x17, 0xd5, + 0x72, 0xc9, 0x2d, 0x7c, 0x05, 0x64, 0xca, 0x65, 0x2f, 0x32, 0x5c, 0x80, 0x36, 0x4c, 0x64, 0x56, + 0x6f, 0x33, 0x9c, 0x2a, 0xf1, 0x27, 0x15, 0x4c, 0xfa, 0x18, 0x4b, 0x38, 0x74, 0x8f, 0xa9, 0xdd, + 0x5c, 0x6c, 0xfe, 0xd9, 0xd4, 0x9d, 0x91, 0xa9, 0xb7, 0x9f, 0x3a, 0xcb, 0x7f, 0x69, 0x4a, 0x87, + 0x13, 0x12, 0x0e, 0xcb, 0x27, 0x17, 0xf4, 0x8e, 0x4f, 0x3d, 0x74, 0x72, 0xea, 0xa1, 0xcf, 0xa7, + 0x1e, 0x7a, 0x7e, 0xe6, 0x35, 0x4e, 0xce, 0xbc, 0xc6, 0x87, 0x33, 0xaf, 0xf1, 0x74, 0xbb, 0x46, + 0xb7, 0x59, 0xad, 0xb5, 0x2d, 0x16, 0x6b, 0x3a, 0x5e, 0x72, 0x2b, 0x89, 0xca, 0xa1, 0x1e, 0xee, + 0x32, 0x2e, 0xa9, 0x50, 0x69, 0xb1, 0x0f, 0x7a, 0xbc, 0x2a, 0xed, 0xcd, 0x71, 0xcb, 0x6e, 0xaf, + 0xb5, 0x9f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x60, 0x2e, 0x41, 0x2d, 0x4c, 0x05, 0x00, 0x00, } func (this *Params) Equal(that interface{}) bool { @@ -429,6 +434,9 @@ func (this *Params) Equal(that interface{}) bool { if !this.MinNextBidIncrementRate.Equal(that1.MinNextBidIncrementRate) { return false } + if !this.InjBasketMaxCap.Equal(that1.InjBasketMaxCap) { + return false + } return true } func (m *Params) Marshal() (dAtA []byte, err error) { @@ -451,6 +459,16 @@ func (m *Params) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + { + size := m.InjBasketMaxCap.Size() + i -= size + if _, err := m.InjBasketMaxCap.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintAuction(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a { size := m.MinNextBidIncrementRate.Size() i -= size @@ -713,6 +731,8 @@ func (m *Params) Size() (n int) { } l = m.MinNextBidIncrementRate.Size() n += 1 + l + sovAuction(uint64(l)) + l = m.InjBasketMaxCap.Size() + n += 1 + l + sovAuction(uint64(l)) return n } @@ -894,6 +914,40 @@ func (m *Params) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field InjBasketMaxCap", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAuction + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthAuction + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthAuction + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.InjBasketMaxCap.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipAuction(dAtA[iNdEx:]) @@ -980,7 +1034,7 @@ func (m *Bid) Unmarshal(dAtA []byte) error { if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Amount", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowAuction @@ -990,16 +1044,15 @@ func (m *Bid) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthAuction } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthAuction } @@ -1096,7 +1149,7 @@ func (m *LastAuctionResult) Unmarshal(dAtA []byte) error { if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Amount", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowAuction @@ -1106,16 +1159,15 @@ func (m *LastAuctionResult) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthAuction } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthAuction } @@ -1231,7 +1283,7 @@ func (m *EventBid) Unmarshal(dAtA []byte) error { if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Amount", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowAuction @@ -1241,16 +1293,15 @@ func (m *EventBid) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthAuction } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthAuction } @@ -1366,7 +1417,7 @@ func (m *EventAuctionResult) Unmarshal(dAtA []byte) error { if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Amount", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowAuction @@ -1376,16 +1427,15 @@ func (m *EventAuctionResult) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthAuction } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthAuction } diff --git a/chain/auction/types/errors.go b/chain/auction/types/errors.go deleted file mode 100644 index c8e7ba2e..00000000 --- a/chain/auction/types/errors.go +++ /dev/null @@ -1,8 +0,0 @@ -package types - -import "cosmossdk.io/errors" - -var ( - ErrBidInvalid = errors.Register(ModuleName, 1, "invalid bid denom") - ErrBidRound = errors.Register(ModuleName, 2, "invalid bid round") -) diff --git a/chain/auction/types/events.go b/chain/auction/types/events.go deleted file mode 100644 index 2789dc3c..00000000 --- a/chain/auction/types/events.go +++ /dev/null @@ -1,6 +0,0 @@ -package types - -// Auction module event types -const ( - EventTypeNewBid = "new_bid" -) diff --git a/chain/auction/types/expected_keepers.go b/chain/auction/types/expected_keepers.go deleted file mode 100644 index e9b959b5..00000000 --- a/chain/auction/types/expected_keepers.go +++ /dev/null @@ -1,16 +0,0 @@ -package types - -import ( - "context" - - sdk "github.com/cosmos/cosmos-sdk/types" -) - -// BankKeeper defines the expected bank keeper methods -type BankKeeper interface { - GetAllBalances(ctx context.Context, addr sdk.AccAddress) sdk.Coins - SendCoinsFromModuleToModule(ctx context.Context, senderModule, recipientModule string, amt sdk.Coins) error - SendCoinsFromModuleToAccount(ctx context.Context, senderModule string, recipientAddr sdk.AccAddress, amt sdk.Coins) error - SendCoinsFromAccountToModule(ctx context.Context, senderAddr sdk.AccAddress, recipientModule string, amt sdk.Coins) error - BurnCoins(ctx context.Context, moduleName string, amt sdk.Coins) error -} diff --git a/chain/auction/types/genesis.go b/chain/auction/types/genesis.go deleted file mode 100644 index 4e5fbf60..00000000 --- a/chain/auction/types/genesis.go +++ /dev/null @@ -1,21 +0,0 @@ -package types - -func NewGenesisState() GenesisState { - return GenesisState{} -} - -func (gs GenesisState) Validate() error { - if err := gs.Params.Validate(); err != nil { - return err - } - return nil -} - -func DefaultGenesisState() *GenesisState { - return &GenesisState{ - Params: DefaultParams(), - AuctionRound: 0, - HighestBid: nil, - AuctionEndingTimestamp: 0, - } -} diff --git a/chain/auction/types/key.go b/chain/auction/types/key.go deleted file mode 100644 index 0b151360..00000000 --- a/chain/auction/types/key.go +++ /dev/null @@ -1,16 +0,0 @@ -package types - -const ( - ModuleName = "auction" - StoreKey = ModuleName - TStoreKey = "transient_auction" -) - -var ( - // Keys for store prefixes - BidsKey = []byte{0x01} - AuctionRoundKey = []byte{0x03} - KeyEndingTimeStamp = []byte{0x04} - KeyLastAuctionResult = []byte{0x05} - ParamsKey = []byte{0x10} -) diff --git a/chain/auction/types/msgs.go b/chain/auction/types/msgs.go deleted file mode 100644 index 987533e0..00000000 --- a/chain/auction/types/msgs.go +++ /dev/null @@ -1,95 +0,0 @@ -package types - -import ( - "cosmossdk.io/errors" - sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - - chaintypes "github.com/InjectiveLabs/sdk-go/chain/types" -) - -const ( - RouterKey = ModuleName - - TypeMsgBid = "bid" - TypeMsgUpdateParams = "updateParams" -) - -var ( - _ sdk.Msg = &MsgBid{} - _ sdk.Msg = &MsgUpdateParams{} -) - -// Route implements the sdk.Msg interface. It should return the name of the module -func (msg MsgUpdateParams) Route() string { return RouterKey } - -// Type implements the sdk.Msg interface. It should return the action. -func (msg MsgUpdateParams) Type() string { return TypeMsgUpdateParams } - -// ValidateBasic implements the sdk.Msg interface. It runs stateless checks on the message -func (msg MsgUpdateParams) ValidateBasic() error { - if _, err := sdk.AccAddressFromBech32(msg.Authority); err != nil { - return errors.Wrap(err, "invalid authority address") - } - - if err := msg.Params.Validate(); err != nil { - return err - } - - return nil -} - -// GetSignBytes implements the sdk.Msg interface. It encodes the message for signing -func (msg *MsgUpdateParams) GetSignBytes() []byte { - return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(msg)) -} - -// GetSigners implements the sdk.Msg interface. It defines whose signature is required -func (msg MsgUpdateParams) GetSigners() []sdk.AccAddress { - sender, err := sdk.AccAddressFromBech32(msg.Authority) - if err != nil { - panic(err) - } - return []sdk.AccAddress{sender} -} - -// Route implements the sdk.Msg interface. It should return the name of the module -func (msg MsgBid) Route() string { return RouterKey } - -// Type implements the sdk.Msg interface. It should return the action. -func (msg MsgBid) Type() string { return TypeMsgBid } - -// ValidateBasic implements the sdk.Msg interface. It runs stateless checks on the message -func (msg MsgBid) ValidateBasic() error { - if msg.Sender == "" { - return errors.Wrap(sdkerrors.ErrInvalidAddress, msg.Sender) - } - - if !msg.BidAmount.IsValid() { - return errors.Wrap(sdkerrors.ErrInvalidCoins, msg.BidAmount.String()) - } - - if !msg.BidAmount.IsPositive() { - return errors.Wrap(sdkerrors.ErrInvalidCoins, msg.BidAmount.String()) - } - - if msg.BidAmount.Denom != chaintypes.InjectiveCoin { - return errors.Wrap(ErrBidInvalid, msg.BidAmount.Denom) - } - - return nil -} - -// GetSignBytes implements the sdk.Msg interface. It encodes the message for signing -func (msg *MsgBid) GetSignBytes() []byte { - return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(msg)) -} - -// GetSigners implements the sdk.Msg interface. It defines whose signature is required -func (msg MsgBid) GetSigners() []sdk.AccAddress { - sender, err := sdk.AccAddressFromBech32(msg.Sender) - if err != nil { - panic(err) - } - return []sdk.AccAddress{sender} -} diff --git a/chain/auction/types/params.go b/chain/auction/types/params.go deleted file mode 100644 index fe3f865b..00000000 --- a/chain/auction/types/params.go +++ /dev/null @@ -1,103 +0,0 @@ -package types - -import ( - "fmt" - - "cosmossdk.io/math" - paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" -) - -var _ paramtypes.ParamSet = &Params{} - -// Auction params default values -var ( - // DefaultAuctionPeriod represents the number of seconds in 1 week - DefaultAuctionPeriod int64 = 60 * 60 * 24 * 7 - // DefaultMinNextBidIncrementRate represents default min increment rate 0.25% - DefaultMinNextBidIncrementRate = math.LegacyNewDecWithPrec(25, 4) -) - -// Parameter keys -var ( - KeyAuctionPeriod = []byte("AuctionPeriod") - KeyMinNextBidIncrementRate = []byte("MinNextBidIncrementRate") -) - -// ParamKeyTable returns the parameter key table. -func ParamKeyTable() paramtypes.KeyTable { - return paramtypes.NewKeyTable().RegisterParamSet(&Params{}) -} - -// NewParams creates a new Params instance -func NewParams( - auctionPeriod int64, - minNextBidIncrementRate math.LegacyDec, -) Params { - return Params{ - AuctionPeriod: auctionPeriod, - MinNextBidIncrementRate: minNextBidIncrementRate, - } -} - -// ParamSetPairs returns the parameter set pairs. -func (p *Params) ParamSetPairs() paramtypes.ParamSetPairs { - return paramtypes.ParamSetPairs{ - paramtypes.NewParamSetPair(KeyAuctionPeriod, &p.AuctionPeriod, validateAuctionPeriodDuration), - paramtypes.NewParamSetPair(KeyMinNextBidIncrementRate, &p.MinNextBidIncrementRate, validateMinNextBidIncrementRate), - } -} - -// DefaultParams returns a default set of parameters. -func DefaultParams() Params { - return Params{ - AuctionPeriod: DefaultAuctionPeriod, - MinNextBidIncrementRate: DefaultMinNextBidIncrementRate, - } -} - -// Validate performs basic validation on auction parameters. -func (p Params) Validate() error { - if err := validateAuctionPeriodDuration(p.AuctionPeriod); err != nil { - return err - } - - if err := validateMinNextBidIncrementRate(p.MinNextBidIncrementRate); err != nil { - return err - } - - return nil -} - -func validateAuctionPeriodDuration(i interface{}) error { - v, ok := i.(int64) - if !ok { - return fmt.Errorf("invalid parameter type: %T", i) - } - - if v == 0 { - return fmt.Errorf("AuctionPeriodDuration must be positive: %d", v) - } - - return nil -} - -func validateMinNextBidIncrementRate(i interface{}) error { - v, ok := i.(math.LegacyDec) - if !ok { - return fmt.Errorf("invalid parameter type: %T", i) - } - - if v.IsNil() { - return fmt.Errorf("MinNextBidIncrementRate cannot be nil") - } - - if v.Equal(math.LegacyZeroDec()) { - return fmt.Errorf("MinNextBidIncrementRate must be positive: %s", v.String()) - } - - if v.GT(math.LegacyNewDecWithPrec(2, 1)) { // > 20% - return fmt.Errorf("MinNextBidIncrementRate must be equal or less than 20 percent: %s", v.String()) - } - - return nil -} diff --git a/chain/auction/types/paramset.go b/chain/auction/types/paramset.go deleted file mode 100644 index 80d0852b..00000000 --- a/chain/auction/types/paramset.go +++ /dev/null @@ -1,26 +0,0 @@ -package types - -type ( - ValueValidatorFn func(value interface{}) error - - // ParamSetPair is used for associating paramsubspace key and field of param - // structs. - ParamSetPair struct { - Key []byte - Value interface{} - ValidatorFn ValueValidatorFn - } -) - -// NewParamSetPair creates a new ParamSetPair instance. -func NewParamSetPair(key []byte, value interface{}, vfn ValueValidatorFn) ParamSetPair { - return ParamSetPair{key, value, vfn} -} - -// ParamSetPairs Slice of KeyFieldPair -type ParamSetPairs []ParamSetPair - -// ParamSet defines an interface for structs containing parameters for a module -type ParamSet interface { - ParamSetPairs() ParamSetPairs -} diff --git a/chain/codec/codec.go b/chain/codec/codec.go index cd1e4e12..a557203b 100644 --- a/chain/codec/codec.go +++ b/chain/codec/codec.go @@ -14,6 +14,7 @@ import ( func RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) { sdk.RegisterLegacyAminoCodec(cdc) cryptocodec.RegisterCrypto(cdc) + codec.RegisterEvidences(cdc) } // RegisterInterfaces registers Interfaces from types, crypto, and SDK std. diff --git a/chain/crypto/codec/amino.go b/chain/crypto/codec/amino.go index f611be2c..7f5b9963 100644 --- a/chain/crypto/codec/amino.go +++ b/chain/crypto/codec/amino.go @@ -3,7 +3,6 @@ package codec import ( "github.com/cosmos/cosmos-sdk/codec" "github.com/cosmos/cosmos-sdk/codec/legacy" - cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec" "github.com/cosmos/cosmos-sdk/crypto/keyring" cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types" diff --git a/chain/crypto/keyring/options.go b/chain/crypto/keyring/options.go deleted file mode 100644 index 333bc4f9..00000000 --- a/chain/crypto/keyring/options.go +++ /dev/null @@ -1,44 +0,0 @@ -package keyring - -import ( - "github.com/cosmos/cosmos-sdk/crypto/keyring" - "github.com/cosmos/cosmos-sdk/crypto/types" - - cosmoshd "github.com/cosmos/cosmos-sdk/crypto/hd" - - "github.com/InjectiveLabs/sdk-go/chain/crypto/ethsecp256k1" - "github.com/InjectiveLabs/sdk-go/chain/crypto/hd" -) - -// AppName defines the Ledger app used for signing. Evmos uses the Ethereum app -const AppName = "Ethereum" - -var ( - // SupportedAlgorithms defines the list of signing algorithms used on Injective: - // - eth_secp256k1 (Ethereum) - // - secp256k1 (Tendermint) - SupportedAlgorithms = keyring.SigningAlgoList{hd.EthSecp256k1, cosmoshd.Secp256k1} - // SupportedAlgorithmsLedger defines the list of signing algorithms used on Evmos for the Ledger device: - // - secp256k1 (in order to comply with Cosmos SDK) - // The Ledger derivation function is responsible for all signing and address generation. - SupportedAlgorithmsLedger = keyring.SigningAlgoList{hd.EthSecp256k1} - // LedgerDerivation defines the Evmos Ledger Go derivation (Ethereum app with EIP-712 signing) - // LedgerDerivation = ledger.EvmosLedgerDerivation() - // CreatePubkey uses the ethsecp256k1 pubkey with Ethereum address generation and keccak hashing - CreatePubkey = func(key []byte) types.PubKey { return ðsecp256k1.PubKey{Key: key} } - // SkipDERConversion represents whether the signed Ledger output should skip conversion from DER to BER. - // This is set to true for signing performed by the Ledger Ethereum app. - SkipDERConversion = true -) - -// EthSecp256k1Option defines a function keys options for the ethereum Secp256k1 curve. -// It supports eth_secp256k1 keys for accounts. -func EthSecp256k1Option() keyring.Option { - return func(options *keyring.Options) { - options.SupportedAlgos = SupportedAlgorithms - options.SupportedAlgosLedger = SupportedAlgorithmsLedger - options.LedgerCreateKey = CreatePubkey - options.LedgerAppName = AppName - options.LedgerSigSkipDERConv = SkipDERConversion - } -} diff --git a/chain/exchange/types/common_utils.go b/chain/exchange/types/common_utils.go index c949b754..7b0c63c9 100644 --- a/chain/exchange/types/common_utils.go +++ b/chain/exchange/types/common_utils.go @@ -322,39 +322,6 @@ func IntBytesToInt(bz []byte) math.Int { return math.NewIntFromBigInt(new(big.Int).SetBytes(bz)) } -func HasDuplicates(slice []string) bool { - seen := make(map[string]struct{}) - for _, item := range slice { - if _, ok := seen[item]; ok { - return true - } - seen[item] = struct{}{} - } - return false -} - -func HasDuplicatesHexHash(slice []string) bool { - seen := make(map[common.Hash]struct{}) - for _, item := range slice { - if _, ok := seen[common.HexToHash(item)]; ok { - return true - } - seen[common.HexToHash(item)] = struct{}{} - } - return false -} - -func HasDuplicatesCoin(slice []sdk.Coin) bool { - seen := make(map[string]struct{}) - for _, item := range slice { - if _, ok := seen[item.Denom]; ok { - return true - } - seen[item.Denom] = struct{}{} - } - return false -} - func HasDuplicatesOrder(slice []*OrderData) bool { seenHashes := make(map[string]struct{}) seenCids := make(map[string]struct{}) diff --git a/chain/exchange/types/derivative_orders.go b/chain/exchange/types/derivative_orders.go index 630b470a..e5f9fa42 100644 --- a/chain/exchange/types/derivative_orders.go +++ b/chain/exchange/types/derivative_orders.go @@ -52,6 +52,14 @@ func (m *DerivativeLimitOrder) ToTrimmed() *TrimmedDerivativeLimitOrder { Cid: m.Cid(), } } +func (m *DerivativeLimitOrder) ToStandardized() *TrimmedLimitOrder { + return &TrimmedLimitOrder{ + Price: m.OrderInfo.Price, + Quantity: m.OrderInfo.Quantity, + OrderHash: common.BytesToHash(m.OrderHash).Hex(), + SubaccountId: m.OrderInfo.SubaccountId, + } +} func (o *DerivativeMarketOrderCancel) GetCancelDepositDelta() *DepositDelta { order := o.MarketOrder diff --git a/chain/exchange/types/errors.go b/chain/exchange/types/errors.go index b7b6035b..99bb5be8 100644 --- a/chain/exchange/types/errors.go +++ b/chain/exchange/types/errors.go @@ -81,7 +81,7 @@ var ( ErrSenderIsNotAnAdmin = errors.Register(ModuleName, 74, "sender should be a market admin") ErrMarketAlreadyScheduledToSettle = errors.Register(ModuleName, 75, "market is already scheduled to settle") ErrGenericMarketNotFound = errors.Register(ModuleName, 76, "market not found") - ErrInvalidDenomDecimal = errors.Register(ModuleName, 77, "denom decimal cannot be below 1 or above max scale factor") + ErrInvalidDenomDecimal = errors.Register(ModuleName, 77, "denom decimal cannot be higher than max scale factor") ErrInvalidState = errors.Register(ModuleName, 78, "state is invalid") ErrTransientOrdersUpToCancelNotSupported = errors.Register(ModuleName, 79, "transient orders up to cancellation not supported") ErrInvalidTrade = errors.Register(ModuleName, 80, "invalid trade") @@ -109,4 +109,5 @@ var ( ErrInvalidStakeGrant = errors.Register(ModuleName, 102, "invalid stake grant") ErrInsufficientStake = errors.Register(ModuleName, 103, "insufficient stake for grant") ErrInvalidPermissions = errors.Register(ModuleName, 104, "invalid permissions") + ErrDenomDecimalsDoNotMatch = errors.Register(ModuleName, 105, "the decimals specified for the denom is incorrect") ) diff --git a/chain/exchange/types/exchange.pb.go b/chain/exchange/types/exchange.pb.go index ff40e9d8..4417ebc5 100644 --- a/chain/exchange/types/exchange.pb.go +++ b/chain/exchange/types/exchange.pb.go @@ -512,6 +512,8 @@ type DerivativeMarket struct { Admin string `protobuf:"bytes,18,opt,name=admin,proto3" json:"admin,omitempty"` // level of admin permissions AdminPermissions uint32 `protobuf:"varint,19,opt,name=admin_permissions,json=adminPermissions,proto3" json:"admin_permissions,omitempty"` + // quote token decimals + QuoteDecimals uint32 `protobuf:"varint,20,opt,name=quote_decimals,json=quoteDecimals,proto3" json:"quote_decimals,omitempty"` } func (m *DerivativeMarket) Reset() { *m = DerivativeMarket{} } @@ -590,6 +592,8 @@ type BinaryOptionsMarket struct { MinNotional cosmossdk_io_math.LegacyDec `protobuf:"bytes,18,opt,name=min_notional,json=minNotional,proto3,customtype=cosmossdk.io/math.LegacyDec" json:"min_notional"` // level of admin permissions AdminPermissions uint32 `protobuf:"varint,19,opt,name=admin_permissions,json=adminPermissions,proto3" json:"admin_permissions,omitempty"` + // quote token decimals + QuoteDecimals uint32 `protobuf:"varint,20,opt,name=quote_decimals,json=quoteDecimals,proto3" json:"quote_decimals,omitempty"` } func (m *BinaryOptionsMarket) Reset() { *m = BinaryOptionsMarket{} } @@ -981,6 +985,10 @@ type SpotMarket struct { Admin string `protobuf:"bytes,12,opt,name=admin,proto3" json:"admin,omitempty"` // level of admin permissions AdminPermissions uint32 `protobuf:"varint,13,opt,name=admin_permissions,json=adminPermissions,proto3" json:"admin_permissions,omitempty"` + // base token decimals + BaseDecimals uint32 `protobuf:"varint,14,opt,name=base_decimals,json=baseDecimals,proto3" json:"base_decimals,omitempty"` + // quote token decimals + QuoteDecimals uint32 `protobuf:"varint,15,opt,name=quote_decimals,json=quoteDecimals,proto3" json:"quote_decimals,omitempty"` } func (m *SpotMarket) Reset() { *m = SpotMarket{} } @@ -1065,6 +1073,20 @@ func (m *SpotMarket) GetAdminPermissions() uint32 { return 0 } +func (m *SpotMarket) GetBaseDecimals() uint32 { + if m != nil { + return m.BaseDecimals + } + return 0 +} + +func (m *SpotMarket) GetQuoteDecimals() uint32 { + if m != nil { + return m.QuoteDecimals + } + return 0 +} + // A subaccount's deposit for a given base currency type Deposit struct { AvailableBalance cosmossdk_io_math.LegacyDec `protobuf:"bytes,1,opt,name=available_balance,json=availableBalance,proto3,customtype=cosmossdk.io/math.LegacyDec" json:"available_balance"` @@ -3344,285 +3366,287 @@ func init() { } var fileDescriptor_2116e2804e9c53f9 = []byte{ - // 4438 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x7c, 0xdb, 0x6f, 0x63, 0x59, - 0x56, 0x77, 0x1d, 0x3b, 0x17, 0x7b, 0xf9, 0x12, 0xe7, 0xe4, 0xe6, 0x24, 0x55, 0x89, 0xdb, 0xd5, - 0x35, 0x9d, 0xae, 0xee, 0x4e, 0xa6, 0xfa, 0xfb, 0x7a, 0xd4, 0xd3, 0xa3, 0xd1, 0xb4, 0x13, 0x27, - 0x55, 0xa6, 0x73, 0x9b, 0xe3, 0xa4, 0xa1, 0x66, 0x34, 0x73, 0xb4, 0x73, 0xce, 0x4e, 0xbc, 0x2b, - 0xe7, 0xe2, 0x3a, 0xfb, 0x38, 0x95, 0x34, 0x42, 0xe2, 0xa1, 0x85, 0x98, 0x00, 0x62, 0x78, 0x40, - 0x48, 0x48, 0x41, 0xc3, 0x03, 0x42, 0xf0, 0x02, 0xef, 0xf0, 0x80, 0x84, 0x80, 0x79, 0x18, 0xa4, - 0x79, 0x40, 0x02, 0x21, 0x31, 0xa0, 0x6e, 0x24, 0x10, 0x9a, 0x3f, 0x01, 0x21, 0xb4, 0x2f, 0xe7, - 0x62, 0x3b, 0x71, 0xec, 0x24, 0x03, 0x03, 0xbc, 0x54, 0x79, 0x5f, 0xd6, 0x6f, 0xed, 0xbd, 0xd6, - 0xda, 0x6b, 0xad, 0x7d, 0x39, 0x81, 0x37, 0x89, 0xf3, 0x02, 0x1b, 0x3e, 0x39, 0xc1, 0x2b, 0xf8, - 0xd4, 0x68, 0x20, 0xe7, 0x08, 0xaf, 0x9c, 0x3c, 0x39, 0xc0, 0x3e, 0x7a, 0x12, 0x56, 0x2c, 0x37, - 0x3d, 0xd7, 0x77, 0xd5, 0xb9, 0xb0, 0xeb, 0x72, 0xd8, 0x22, 0xbb, 0xce, 0x4d, 0x1e, 0xb9, 0x47, - 0x2e, 0xef, 0xb6, 0xc2, 0x7e, 0x09, 0x8a, 0xb9, 0x05, 0xc3, 0xa5, 0xb6, 0x4b, 0x57, 0x0e, 0x10, - 0x8d, 0x50, 0x0d, 0x97, 0x38, 0xb2, 0xfd, 0x51, 0xc4, 0xdc, 0xf5, 0x90, 0x61, 0x45, 0x9d, 0x44, - 0x51, 0x76, 0x1b, 0x47, 0x36, 0x71, 0xdc, 0x15, 0xfe, 0xaf, 0xa8, 0x2a, 0xff, 0xc3, 0x14, 0x8c, - 0xec, 0x22, 0x0f, 0xd9, 0x54, 0xc5, 0xb0, 0x48, 0x9b, 0xae, 0xaf, 0xdb, 0xc8, 0x3b, 0xc6, 0xbe, - 0x4e, 0x1c, 0xea, 0x23, 0xc7, 0xd7, 0x2d, 0x42, 0x7d, 0xe2, 0x1c, 0xe9, 0x87, 0x18, 0x17, 0x95, - 0x92, 0xb2, 0x94, 0x79, 0x77, 0x76, 0x59, 0x0c, 0x67, 0x99, 0x0d, 0x27, 0x18, 0xf9, 0xf2, 0x9a, - 0x4b, 0x9c, 0xd5, 0xa1, 0xef, 0xff, 0x68, 0xf1, 0x9e, 0x36, 0xcf, 0x70, 0xb6, 0x38, 0x4c, 0x4d, - 0xa0, 0x6c, 0x0a, 0x90, 0x0d, 0x8c, 0xd5, 0x97, 0xf0, 0xc8, 0xc4, 0x1e, 0x39, 0x41, 0x6c, 0xb8, - 0xbd, 0x98, 0x25, 0xfa, 0x63, 0xf6, 0x5a, 0x84, 0x76, 0x15, 0x4b, 0x04, 0xf3, 0x26, 0x3e, 0x44, - 0x2d, 0xcb, 0xd7, 0xe5, 0x0c, 0x8f, 0xb1, 0xc7, 0x78, 0xe8, 0x1e, 0xf2, 0x71, 0x31, 0x59, 0x52, - 0x96, 0xd2, 0xab, 0x0f, 0x19, 0xda, 0xdf, 0xff, 0x68, 0x71, 0x5e, 0xf0, 0xa3, 0xe6, 0xf1, 0x32, - 0x71, 0x57, 0x6c, 0xe4, 0x37, 0x96, 0x37, 0xf1, 0x11, 0x32, 0xce, 0xaa, 0xd8, 0xd0, 0x66, 0x24, - 0x4e, 0x9d, 0x4f, 0xf0, 0x18, 0x7b, 0x1b, 0x18, 0x6b, 0xc8, 0xef, 0x66, 0xe1, 0xb7, 0xb3, 0x18, - 0xba, 0x19, 0x8b, 0xbd, 0x38, 0x0b, 0x1b, 0x5e, 0x0b, 0x58, 0xb4, 0x09, 0xb0, 0x8d, 0xd1, 0x70, - 0xff, 0x8c, 0x1e, 0x48, 0xb4, 0x6a, 0x4c, 0x7e, 0xd7, 0xb2, 0xeb, 0x98, 0xd7, 0xc8, 0x6d, 0xd8, - 0xb5, 0xcd, 0xce, 0x84, 0xfb, 0x01, 0x3b, 0xe2, 0x10, 0x9f, 0x20, 0x8b, 0xd9, 0xc6, 0x11, 0x71, - 0x18, 0x23, 0xe2, 0x16, 0x47, 0xfb, 0xe7, 0x34, 0x2b, 0x81, 0x6a, 0x02, 0x67, 0x8b, 0xc3, 0x68, - 0x0c, 0x45, 0xb5, 0xa0, 0x14, 0x70, 0xb1, 0x11, 0x71, 0x7c, 0xec, 0x20, 0xc7, 0xc0, 0xed, 0x9c, - 0x52, 0x83, 0xcf, 0x69, 0x2b, 0xc2, 0x8a, 0x73, 0x7b, 0x1f, 0x8a, 0x01, 0xb7, 0xc3, 0x96, 0x63, - 0x32, 0xc3, 0x66, 0xfd, 0xbc, 0x13, 0x64, 0x15, 0xd3, 0x25, 0x65, 0x29, 0xa9, 0x4d, 0xcb, 0xf6, - 0x0d, 0xd1, 0x5c, 0x93, 0xad, 0xea, 0x9b, 0x50, 0x08, 0x28, 0xec, 0x96, 0xe5, 0x93, 0xa6, 0x85, - 0x8b, 0xc0, 0x29, 0xc6, 0x64, 0xfd, 0x96, 0xac, 0x56, 0x7f, 0x0e, 0xa6, 0x3d, 0x6c, 0xa1, 0x33, - 0xa9, 0x16, 0xda, 0x40, 0x9e, 0x54, 0x4e, 0xa6, 0xff, 0x89, 0x4c, 0x48, 0x88, 0x0d, 0x8c, 0xeb, - 0x0c, 0x80, 0xab, 0x84, 0xc0, 0x62, 0x30, 0xfc, 0x86, 0xdb, 0xf2, 0xac, 0xb3, 0x70, 0x16, 0x0c, - 0x5e, 0x37, 0x50, 0xb3, 0x98, 0xed, 0x9f, 0x45, 0xb0, 0x3e, 0x9e, 0x71, 0x28, 0x39, 0x61, 0xc6, - 0x67, 0x0d, 0x35, 0xe3, 0xda, 0x97, 0xac, 0xb8, 0xa0, 0x30, 0xf5, 0xc5, 0x54, 0x72, 0x83, 0x6b, - 0x5f, 0xf0, 0xa9, 0x49, 0x18, 0x3e, 0xa1, 0x2a, 0x2c, 0xda, 0xe8, 0x34, 0x6e, 0xce, 0xae, 0x67, - 0x62, 0x4f, 0xa7, 0xc4, 0xc4, 0xba, 0xe1, 0xb6, 0x1c, 0xbf, 0x98, 0x2f, 0x29, 0x4b, 0x39, 0x6d, - 0xde, 0x46, 0xa7, 0x91, 0x9d, 0xee, 0xb0, 0x4e, 0x75, 0x62, 0xe2, 0x35, 0xd6, 0x45, 0xa5, 0xf0, - 0x06, 0x71, 0x5e, 0xe8, 0x1e, 0x7e, 0x85, 0x3c, 0x53, 0xa7, 0x6c, 0x45, 0x98, 0xba, 0x87, 0x5f, - 0xb6, 0x88, 0x87, 0x6d, 0xec, 0xf8, 0xba, 0xdf, 0xf0, 0x30, 0x6d, 0xb8, 0x96, 0x59, 0x1c, 0xe3, - 0xc3, 0x7e, 0x20, 0x87, 0x3d, 0xd5, 0x3d, 0xec, 0x9a, 0xe3, 0x6b, 0x0f, 0x89, 0xf3, 0x42, 0xe3, - 0x60, 0x75, 0x8e, 0xa5, 0x45, 0x50, 0x7b, 0x01, 0x92, 0xfa, 0x14, 0x4a, 0xbe, 0x87, 0x84, 0xf0, - 0x79, 0x5f, 0xaa, 0x9f, 0x60, 0xe1, 0x2b, 0xcd, 0x16, 0xb7, 0x5b, 0xa7, 0x58, 0xe0, 0x06, 0xf2, - 0x40, 0xf6, 0x13, 0x90, 0xf4, 0x63, 0xd1, 0xab, 0x2a, 0x3b, 0x31, 0x49, 0x5b, 0xe4, 0x65, 0x8b, - 0x98, 0xc8, 0x77, 0xbd, 0x70, 0x12, 0x91, 0xd1, 0x8c, 0x0f, 0x20, 0xe9, 0x08, 0x48, 0x8e, 0x3f, - 0x34, 0x9d, 0x53, 0x78, 0xf3, 0x80, 0x38, 0xc8, 0x3b, 0xd3, 0xdd, 0x26, 0x63, 0x4b, 0x7b, 0x39, - 0x7a, 0xb5, 0x3f, 0x47, 0xff, 0xba, 0x40, 0xdc, 0x11, 0x80, 0x57, 0xf9, 0xfa, 0x5f, 0x54, 0xa0, - 0x84, 0x7c, 0xd7, 0x26, 0x46, 0xc0, 0x52, 0xe8, 0x18, 0x19, 0x06, 0xa6, 0x54, 0xb7, 0xf0, 0x09, - 0xb6, 0x8a, 0x13, 0x25, 0x65, 0x29, 0xff, 0xee, 0xfb, 0xcb, 0x57, 0x07, 0xe2, 0xe5, 0x0a, 0xc7, - 0x10, 0x5c, 0xb8, 0x01, 0x54, 0x38, 0xc0, 0x26, 0xa3, 0xd7, 0xee, 0xa3, 0x1e, 0xad, 0xea, 0x29, - 0xbc, 0xc1, 0x63, 0xc0, 0x65, 0xc3, 0x60, 0x4b, 0x54, 0xae, 0x68, 0x82, 0xbd, 0xe2, 0x64, 0xff, - 0xd2, 0x2e, 0x33, 0xcc, 0xae, 0x51, 0x6d, 0x60, 0xbc, 0x15, 0xc2, 0xa9, 0x9f, 0x2a, 0xf0, 0x4e, - 0xcc, 0xba, 0xfb, 0x18, 0xc0, 0x54, 0xff, 0x03, 0x58, 0x8a, 0x90, 0xaf, 0x19, 0xc6, 0xaf, 0x28, - 0xf0, 0xa4, 0x43, 0xfd, 0x7d, 0x0c, 0x65, 0xba, 0xff, 0xa1, 0xbc, 0xd5, 0x66, 0x0a, 0xd7, 0x8c, - 0xe6, 0xdb, 0x30, 0x6b, 0x13, 0x87, 0xd8, 0xc8, 0xd2, 0x79, 0xce, 0x63, 0xb8, 0x56, 0x14, 0xc0, - 0x66, 0xfa, 0x67, 0x3a, 0x2d, 0x51, 0x76, 0x25, 0x48, 0x10, 0xb9, 0xbe, 0x09, 0x6f, 0x11, 0x1a, - 0x1a, 0x76, 0x77, 0x6e, 0x63, 0xa1, 0x96, 0x63, 0x34, 0x74, 0xec, 0xa0, 0x03, 0x0b, 0x9b, 0xc5, - 0x62, 0x49, 0x59, 0x4a, 0x69, 0x5f, 0x20, 0x54, 0xda, 0x6e, 0xb5, 0x23, 0x7d, 0xd9, 0xe4, 0xdd, - 0xd7, 0x45, 0x6f, 0xe6, 0xb2, 0x9a, 0x2e, 0xf5, 0x75, 0xd7, 0xb1, 0xce, 0x74, 0xdb, 0x35, 0xb1, - 0xde, 0xc0, 0xe4, 0xa8, 0x11, 0x77, 0x32, 0xb3, 0x7c, 0xd9, 0xcf, 0xb3, 0x6e, 0x3b, 0x8e, 0x75, - 0xb6, 0xe5, 0x9a, 0xf8, 0x19, 0xef, 0x13, 0x79, 0x8f, 0x23, 0x78, 0x22, 0x43, 0x9c, 0x89, 0x0d, - 0x0f, 0x23, 0x8a, 0xf5, 0xa6, 0x47, 0x0c, 0xac, 0xfb, 0xc4, 0xc6, 0xd4, 0x47, 0x76, 0x33, 0xc2, - 0xd3, 0x29, 0x36, 0x5c, 0xc7, 0xa4, 0xc5, 0x39, 0x8e, 0xfb, 0xb6, 0x20, 0xac, 0x4a, 0xba, 0x5d, - 0x46, 0xb6, 0x17, 0x50, 0x85, 0x1c, 0xea, 0x82, 0x46, 0x7d, 0x03, 0xc6, 0x82, 0x95, 0xa4, 0x23, - 0xd3, 0x26, 0x0e, 0x2d, 0xce, 0x97, 0x92, 0x4b, 0x69, 0x2d, 0x1f, 0x54, 0x57, 0x78, 0xad, 0xba, - 0x09, 0x13, 0xcc, 0x89, 0xa2, 0x96, 0xc1, 0x54, 0xa8, 0x33, 0xb7, 0xcc, 0xe2, 0xc9, 0xfd, 0x7e, - 0x1c, 0x66, 0x81, 0x38, 0x2f, 0x2a, 0x82, 0x70, 0x0b, 0x9d, 0xae, 0xa1, 0xe6, 0x07, 0xc5, 0x7f, - 0xfd, 0xde, 0xa2, 0x72, 0xfe, 0x2f, 0x7f, 0xfc, 0x38, 0xe4, 0xbe, 0x22, 0x92, 0xda, 0xf2, 0xa7, - 0x0a, 0x4c, 0x08, 0xb9, 0xb6, 0x1b, 0xc5, 0x3c, 0xa4, 0x03, 0x8f, 0x64, 0xf2, 0xb4, 0x36, 0xad, - 0xa5, 0x44, 0x45, 0xcd, 0x54, 0x7f, 0x06, 0xf2, 0x1d, 0xb6, 0x99, 0xe8, 0xdf, 0x4c, 0x72, 0x87, - 0x71, 0x46, 0x1f, 0x0c, 0xfd, 0xf2, 0xf7, 0x16, 0xef, 0x95, 0x7f, 0x9c, 0x82, 0x42, 0xa7, 0xa2, - 0xd5, 0x69, 0x18, 0xf1, 0x89, 0x71, 0x8c, 0x3d, 0x39, 0x00, 0x59, 0x52, 0x17, 0x21, 0x23, 0xd2, - 0x76, 0x9d, 0xb9, 0x42, 0xc1, 0x5b, 0x03, 0x51, 0xb5, 0x8a, 0x28, 0x56, 0x5f, 0x83, 0xac, 0xec, - 0xf0, 0xb2, 0xe5, 0x06, 0x09, 0xac, 0x26, 0x89, 0xbe, 0xce, 0xaa, 0xd4, 0xf5, 0x10, 0xc3, 0x3f, - 0x6b, 0x8a, 0xfc, 0x33, 0xff, 0xee, 0xeb, 0x31, 0x87, 0x27, 0x37, 0x06, 0x81, 0xbb, 0xdb, 0xe1, - 0xc5, 0xbd, 0xb3, 0x26, 0x0e, 0x38, 0xb1, 0xdf, 0xea, 0x32, 0x4c, 0x48, 0x18, 0x6a, 0x20, 0x0b, - 0xeb, 0x87, 0xc8, 0xf0, 0x5d, 0x8f, 0x67, 0x99, 0x39, 0x6d, 0x5c, 0x34, 0xd5, 0x59, 0xcb, 0x06, - 0x6f, 0x60, 0x43, 0xe7, 0x43, 0xd2, 0x4d, 0xec, 0xb8, 0xb6, 0x48, 0x0f, 0x35, 0xe0, 0x55, 0x55, - 0x56, 0xd3, 0x2e, 0xf7, 0xd1, 0x0e, 0xb9, 0xef, 0xc3, 0xe4, 0xa5, 0xb9, 0xdf, 0x00, 0x19, 0x99, - 0x4a, 0xba, 0x93, 0xbe, 0x6f, 0x41, 0xf1, 0xca, 0x64, 0x2f, 0x3d, 0xc8, 0xfa, 0xbf, 0x3c, 0xcb, - 0xab, 0x41, 0xbe, 0x23, 0x09, 0x87, 0xfe, 0x41, 0xb3, 0x76, 0x3c, 0x09, 0xae, 0x41, 0xbe, 0x23, - 0xc1, 0x1e, 0x20, 0x87, 0xcb, 0xfa, 0x71, 0xa8, 0xab, 0xd3, 0xc2, 0xec, 0x2d, 0xd3, 0xc2, 0x12, - 0x64, 0x08, 0xdd, 0xc5, 0x5e, 0x13, 0xfb, 0x2d, 0x64, 0xf1, 0xd4, 0x2c, 0xa5, 0xc5, 0xab, 0xd4, - 0x0f, 0x61, 0x84, 0xfa, 0xc8, 0x6f, 0x51, 0x9e, 0x4e, 0xe5, 0xdf, 0x5d, 0xea, 0x15, 0x68, 0xc5, - 0x62, 0xa8, 0xf3, 0xfe, 0x9a, 0xa4, 0x53, 0x35, 0x98, 0xb0, 0x89, 0x13, 0x3a, 0x29, 0xe3, 0x58, - 0xa7, 0xe4, 0x13, 0x2c, 0xf3, 0xa9, 0xbe, 0x86, 0x5e, 0xb0, 0x89, 0x23, 0x9d, 0x95, 0x71, 0x5c, - 0x27, 0x9f, 0x70, 0x89, 0x30, 0xcc, 0x97, 0x2d, 0xe4, 0xf8, 0xc4, 0x3f, 0x8b, 0xc1, 0x16, 0x06, - 0x90, 0x88, 0x4d, 0x9c, 0xaf, 0x4b, 0x84, 0x10, 0x79, 0x03, 0xb2, 0x0c, 0xd9, 0x71, 0x99, 0x4b, - 0x42, 0xd6, 0x20, 0x39, 0x54, 0xc6, 0x26, 0xce, 0xb6, 0xa4, 0x53, 0x27, 0x61, 0x98, 0x3b, 0x4d, - 0x9e, 0x11, 0xa5, 0x35, 0x51, 0x50, 0xdf, 0x82, 0x71, 0xfe, 0x43, 0x6f, 0x62, 0xcf, 0x26, 0x94, - 0xb2, 0x90, 0xc7, 0x33, 0x98, 0x9c, 0x56, 0xe0, 0x0d, 0xbb, 0x51, 0xbd, 0x74, 0x37, 0x7f, 0x9b, - 0x82, 0x89, 0xd5, 0xee, 0x6c, 0xe9, 0x4a, 0x8f, 0xf3, 0x10, 0x72, 0xc1, 0x32, 0x3f, 0xb3, 0x0f, - 0x5c, 0x4b, 0xfa, 0x1c, 0xe9, 0x65, 0xea, 0xbc, 0x8e, 0xf9, 0x76, 0xd9, 0xa9, 0xe9, 0xb9, 0x27, - 0xc4, 0xc4, 0x9e, 0x74, 0x3c, 0x79, 0x51, 0xbd, 0x2b, 0x6b, 0xff, 0xbb, 0x7c, 0xcf, 0x13, 0x98, - 0xc4, 0xa7, 0x4d, 0x22, 0xf2, 0xdc, 0x28, 0xb2, 0x71, 0x27, 0x94, 0xd4, 0x26, 0xa2, 0xb6, 0x30, - 0x7c, 0x31, 0x12, 0x8a, 0x7d, 0xdf, 0x92, 0x79, 0x7b, 0x48, 0x32, 0x2a, 0x48, 0xa2, 0xb6, 0x88, - 0x24, 0xd4, 0x51, 0x2a, 0xae, 0xa3, 0x0e, 0xbf, 0x97, 0xee, 0xed, 0xf7, 0xa0, 0xc3, 0xef, 0x75, - 0x7b, 0x90, 0xcc, 0xdd, 0x79, 0x90, 0xec, 0xdd, 0x7b, 0x90, 0xdc, 0x2d, 0x3d, 0xc8, 0xff, 0x35, - 0xff, 0xb0, 0x0d, 0x85, 0x98, 0x99, 0xf1, 0x41, 0xc7, 0x7c, 0x84, 0x72, 0x1d, 0xe6, 0x58, 0x44, - 0xcc, 0x47, 0xdc, 0xe5, 0x6f, 0xd4, 0x1b, 0xfa, 0x9b, 0x1b, 0x78, 0x96, 0x7f, 0x4e, 0xc0, 0xcc, - 0x3a, 0x5b, 0x49, 0x67, 0x1b, 0x2d, 0xbf, 0xe5, 0xe1, 0x70, 0x1f, 0x76, 0xe8, 0xf6, 0xce, 0xa9, - 0xae, 0x5a, 0x9d, 0x89, 0xab, 0x57, 0xe7, 0x17, 0x61, 0xd2, 0x7f, 0x85, 0x9a, 0x6c, 0x8b, 0xed, - 0xc5, 0x57, 0x67, 0x92, 0x93, 0xa8, 0xac, 0xad, 0xce, 0x9a, 0x22, 0x8a, 0x57, 0xf0, 0x85, 0x38, - 0x93, 0x88, 0x58, 0x18, 0x8a, 0xd1, 0xb2, 0x5b, 0x16, 0xcf, 0xc0, 0x06, 0x39, 0x90, 0x2b, 0xc7, - 0xc6, 0x16, 0xb0, 0xe4, 0x7a, 0x58, 0x0b, 0xe1, 0x2e, 0xd5, 0xf0, 0x00, 0x47, 0x71, 0x9d, 0x1a, - 0x2e, 0xff, 0x65, 0x02, 0x26, 0xc2, 0x78, 0xda, 0xaf, 0x88, 0xbf, 0x01, 0x33, 0x57, 0x9d, 0xd3, - 0x0c, 0x90, 0xbf, 0x4e, 0x36, 0x2e, 0x3b, 0xa0, 0xd9, 0x87, 0xc9, 0x4b, 0x0f, 0x66, 0x06, 0x38, - 0x3b, 0x55, 0x1b, 0xdd, 0x27, 0x32, 0xff, 0x1f, 0xa6, 0x1d, 0x7c, 0x1a, 0x1d, 0x8f, 0x45, 0x4a, - 0x1e, 0xe2, 0x4a, 0x9e, 0x64, 0xad, 0x72, 0x28, 0x91, 0x9a, 0x63, 0xa7, 0x63, 0xe1, 0x79, 0xda, - 0x70, 0xdb, 0xe9, 0x58, 0x70, 0x90, 0x56, 0xfe, 0x5c, 0x81, 0xe9, 0x0e, 0x41, 0x4a, 0x38, 0x55, - 0x03, 0x35, 0x32, 0x88, 0x60, 0x04, 0x42, 0xa8, 0xfd, 0x4d, 0x68, 0x3c, 0x22, 0x0f, 0x30, 0xb7, - 0xa1, 0x10, 0xc3, 0x14, 0x76, 0x30, 0x80, 0xec, 0xc7, 0x22, 0x62, 0xb1, 0xd2, 0x1f, 0x41, 0xde, - 0x42, 0xb4, 0xdb, 0xf8, 0x73, 0xac, 0x36, 0x14, 0x48, 0xf9, 0xd7, 0x14, 0x58, 0xe8, 0xdc, 0x5e, - 0xd4, 0x43, 0x93, 0xba, 0xde, 0x72, 0x2e, 0x33, 0xdf, 0xc4, 0x2d, 0xcc, 0xf7, 0xab, 0x30, 0xb9, - 0x7d, 0x99, 0xe2, 0x1e, 0x41, 0x9e, 0xab, 0x3b, 0x9a, 0x8e, 0x22, 0xa6, 0xc3, 0x6a, 0xa3, 0xe9, - 0xfc, 0x9b, 0x02, 0xf9, 0x2d, 0x62, 0x72, 0xac, 0x8a, 0x63, 0xee, 0xed, 0xac, 0xaa, 0x1f, 0x42, - 0xda, 0x26, 0xa6, 0x1c, 0x9a, 0xd2, 0xbf, 0xef, 0x4c, 0xd9, 0x12, 0x87, 0x45, 0xc6, 0x03, 0x66, - 0xb6, 0x07, 0xad, 0xb3, 0xae, 0x19, 0x5e, 0x0b, 0x93, 0x65, 0xa4, 0xab, 0xad, 0x33, 0x01, 0xf5, - 0x11, 0x8c, 0x71, 0x28, 0x8a, 0x2d, 0x4b, 0x62, 0x25, 0xfb, 0xc7, 0xca, 0x31, 0xda, 0x3a, 0xb6, - 0x2c, 0x21, 0xab, 0x1f, 0x0f, 0x03, 0xd4, 0xc3, 0xfb, 0x92, 0x2b, 0x53, 0xb4, 0x07, 0x00, 0x6c, - 0x37, 0x28, 0x13, 0x0c, 0x91, 0x9f, 0xa5, 0x59, 0x8d, 0xc8, 0x2f, 0x3a, 0x12, 0x90, 0x64, 0x57, - 0x02, 0xd2, 0x9d, 0x63, 0x0c, 0xdd, 0x5d, 0x8e, 0x31, 0x7c, 0xf7, 0x39, 0xc6, 0xc8, 0x2d, 0x73, - 0x8c, 0x9e, 0x1b, 0xcd, 0x28, 0x01, 0x49, 0xdd, 0x6d, 0x02, 0x92, 0xfe, 0xc9, 0x24, 0x20, 0x70, - 0xc7, 0x1b, 0x94, 0xcc, 0x6d, 0x37, 0x28, 0xd9, 0x6b, 0x37, 0x28, 0xb9, 0xcb, 0xd3, 0x88, 0xf2, - 0xef, 0x29, 0x30, 0x5a, 0xc5, 0x4d, 0x97, 0x12, 0x5f, 0xdd, 0x85, 0x71, 0x74, 0x82, 0x88, 0x85, - 0x0e, 0xf8, 0x59, 0x87, 0xc5, 0x76, 0xd6, 0x83, 0x38, 0xe0, 0x42, 0x48, 0xbd, 0x2a, 0x88, 0xd5, - 0x67, 0x90, 0xf3, 0x5d, 0x1f, 0x59, 0x21, 0x5a, 0x62, 0x10, 0xcb, 0x64, 0x94, 0x12, 0xa9, 0xfc, - 0x36, 0x4c, 0xd6, 0x5b, 0x07, 0xc8, 0xe0, 0xd7, 0x02, 0x7b, 0x1e, 0x32, 0xf1, 0xb6, 0xcb, 0x38, - 0x4c, 0xc2, 0xb0, 0xe3, 0x06, 0xe3, 0xcc, 0x69, 0xa2, 0xc0, 0xc2, 0x4c, 0x9a, 0x1f, 0x3d, 0x72, - 0x5f, 0xfb, 0x10, 0x72, 0x34, 0xa4, 0x8d, 0xfc, 0x6d, 0x36, 0xaa, 0xac, 0x99, 0xac, 0x13, 0x5f, - 0x3f, 0xd8, 0x20, 0x4d, 0x82, 0x1d, 0x3f, 0xd8, 0x73, 0x1d, 0x62, 0xac, 0x05, 0x75, 0xea, 0x97, - 0x61, 0xb8, 0xd3, 0xbf, 0x5c, 0x3b, 0x0f, 0x41, 0xa1, 0x7e, 0x0d, 0x52, 0x81, 0x25, 0x0d, 0xb2, - 0xd4, 0x43, 0x22, 0xb5, 0x00, 0x49, 0x83, 0x98, 0x62, 0x6d, 0x6b, 0xec, 0x67, 0xf9, 0xd3, 0x04, - 0xa4, 0x99, 0xab, 0xe2, 0x33, 0xbd, 0xee, 0x08, 0x0d, 0xc4, 0x21, 0x2f, 0x71, 0x0e, 0x5d, 0x79, - 0x95, 0xfb, 0xa8, 0xd7, 0x2a, 0x0b, 0xa5, 0x27, 0x4f, 0xfb, 0xd3, 0x6e, 0x28, 0xce, 0x6a, 0x80, - 0xc5, 0xb7, 0x93, 0x49, 0xbe, 0x62, 0xaf, 0xc7, 0xe2, 0xfb, 0x49, 0x81, 0xc2, 0xb7, 0x93, 0xcc, - 0x34, 0x3c, 0x72, 0x74, 0x84, 0x3d, 0xe9, 0xb2, 0x87, 0x06, 0x70, 0xff, 0x92, 0x52, 0x78, 0xec, - 0x1f, 0x24, 0x20, 0xcf, 0xc4, 0xb0, 0x49, 0x6c, 0x22, 0x65, 0xd1, 0x3e, 0x5d, 0xe5, 0x0e, 0xa7, - 0x9b, 0xb8, 0xe1, 0x74, 0xbf, 0x06, 0xa9, 0x43, 0x62, 0xf1, 0xc5, 0x31, 0x88, 0xf1, 0x84, 0x44, - 0x77, 0x27, 0x2f, 0x16, 0xba, 0xc4, 0x84, 0x1a, 0x88, 0x36, 0xb8, 0x3d, 0x65, 0xe5, 0x48, 0x9f, - 0x21, 0xda, 0x28, 0xff, 0x4d, 0x02, 0xc6, 0xa2, 0x00, 0x78, 0xf7, 0xf2, 0xdc, 0x80, 0xac, 0xf4, - 0x06, 0x3a, 0x3f, 0x2f, 0x1f, 0xc0, 0x25, 0x64, 0x24, 0xe1, 0x33, 0xd7, 0x32, 0x3b, 0xa6, 0x91, - 0xec, 0x98, 0x46, 0x87, 0xda, 0x86, 0xee, 0xca, 0x4a, 0x87, 0x6f, 0x6a, 0xa5, 0x7f, 0x95, 0x80, - 0xb1, 0x8e, 0x3b, 0xcc, 0xff, 0x69, 0x4b, 0xf6, 0x2b, 0x30, 0x22, 0x0e, 0x6b, 0x07, 0x71, 0x60, - 0x92, 0xe4, 0x0e, 0x25, 0xf9, 0xef, 0x49, 0x98, 0x8f, 0x62, 0x01, 0x1f, 0xe9, 0x81, 0xeb, 0x1e, - 0x6f, 0x61, 0x1f, 0x99, 0xc8, 0x47, 0xea, 0x97, 0x61, 0xf6, 0x04, 0x39, 0x6c, 0xdd, 0xe8, 0x16, - 0x73, 0x09, 0xf2, 0x7a, 0x4b, 0x5c, 0x28, 0x8b, 0x30, 0x31, 0x2d, 0x3b, 0x44, 0x2e, 0x43, 0xdc, - 0x25, 0x7f, 0x08, 0x0f, 0x3c, 0x6c, 0xb6, 0x0c, 0x2c, 0x2e, 0x78, 0xba, 0xc9, 0x13, 0x9c, 0x7c, - 0x56, 0x74, 0xda, 0x71, 0xac, 0xb3, 0x4e, 0x84, 0x06, 0x2c, 0xa0, 0xa3, 0x23, 0x0f, 0x1f, 0xb1, - 0xad, 0x5e, 0x1c, 0x2b, 0x74, 0xfe, 0x03, 0xac, 0xfe, 0xf9, 0x10, 0x4a, 0x0b, 0x19, 0x06, 0xc9, - 0x84, 0x8a, 0x60, 0x2e, 0xe2, 0x14, 0x4c, 0xf8, 0x26, 0x21, 0xa6, 0x18, 0xc2, 0x7c, 0x2c, 0x50, - 0x42, 0x16, 0xeb, 0xb0, 0x18, 0x00, 0x1b, 0xae, 0x63, 0x12, 0x91, 0x76, 0xb4, 0x09, 0x44, 0x1c, - 0xff, 0xdd, 0x97, 0xdd, 0xd6, 0xa2, 0x5e, 0x31, 0x99, 0x6c, 0xc2, 0xc3, 0xb8, 0x24, 0xae, 0x82, - 0x1a, 0xe1, 0x50, 0x8b, 0x91, 0x6c, 0x2f, 0x45, 0x2b, 0xff, 0xb9, 0x02, 0x63, 0x1d, 0xea, 0x8f, - 0xe2, 0xb2, 0x72, 0xab, 0xb8, 0x9c, 0xb8, 0x49, 0x5c, 0x2e, 0x43, 0x96, 0xd0, 0x48, 0x3f, 0x5c, - 0xbf, 0x29, 0xad, 0xad, 0x2e, 0x88, 0xdd, 0x43, 0x51, 0xec, 0x7e, 0x05, 0x13, 0x1d, 0x93, 0xa8, - 0x32, 0xdb, 0xad, 0xc0, 0x30, 0x17, 0x89, 0xf4, 0xb1, 0x6f, 0xf5, 0x5a, 0xa3, 0x1d, 0xf4, 0x9a, - 0xa0, 0xec, 0xf0, 0x8b, 0x89, 0x4e, 0xf7, 0xfe, 0xeb, 0x49, 0x98, 0x8c, 0xfc, 0xd0, 0x4f, 0x75, - 0xcc, 0x8c, 0xfc, 0x4d, 0x72, 0x70, 0x7f, 0x13, 0x0f, 0xb8, 0x43, 0x77, 0x12, 0x70, 0x87, 0xef, - 0x26, 0xe0, 0x8e, 0x74, 0x6a, 0xe4, 0x37, 0x93, 0x30, 0xd5, 0x79, 0x5a, 0xf0, 0xbf, 0x52, 0x25, - 0x55, 0xc8, 0xc8, 0xcb, 0x3e, 0x1e, 0xf8, 0x07, 0xd0, 0x0a, 0x08, 0x3a, 0x1e, 0xf7, 0xff, 0xcb, - 0xf4, 0xf2, 0x17, 0x09, 0x48, 0xed, 0xb2, 0x8d, 0x11, 0x71, 0x1d, 0x75, 0x1a, 0x46, 0x08, 0xdd, - 0x74, 0xe5, 0x89, 0x54, 0x4a, 0x93, 0xa5, 0xdb, 0xbb, 0x8f, 0x2a, 0x64, 0xb0, 0xe3, 0x7b, 0x67, - 0xfa, 0xc0, 0x1b, 0x0b, 0xe0, 0x74, 0x62, 0x2a, 0xb7, 0x0a, 0xcd, 0xdf, 0x82, 0x62, 0xf7, 0xc9, - 0x9b, 0xce, 0xd1, 0x07, 0x39, 0x4a, 0x98, 0xee, 0x3a, 0x7f, 0x5b, 0x67, 0x10, 0xe5, 0x1a, 0x4c, - 0xc6, 0x8c, 0xba, 0xe6, 0x98, 0xc4, 0x40, 0xbe, 0x7b, 0x4d, 0xf6, 0x33, 0x09, 0xc3, 0x84, 0xae, - 0xb6, 0x84, 0x50, 0x53, 0x9a, 0x28, 0x94, 0xff, 0x3a, 0x01, 0x29, 0xbe, 0xf9, 0xdb, 0x74, 0xdb, - 0x45, 0xaf, 0xdc, 0x44, 0xf4, 0x61, 0xd4, 0x48, 0x0c, 0x1c, 0x35, 0xba, 0xb6, 0x94, 0x22, 0xff, - 0x6c, 0xdf, 0x52, 0xbe, 0x07, 0xc9, 0x43, 0x3c, 0x90, 0xf7, 0x61, 0xfd, 0xaf, 0xc9, 0xcf, 0xd5, - 0xf7, 0x61, 0xaa, 0x6d, 0xa3, 0xaa, 0x23, 0xd3, 0xf4, 0x30, 0xa5, 0xc2, 0x80, 0xf9, 0xc2, 0x57, - 0xb4, 0x89, 0xf8, 0xb6, 0xb5, 0x22, 0x3a, 0x04, 0x51, 0x68, 0x34, 0x8a, 0x42, 0xbf, 0x9d, 0x80, - 0x5c, 0x60, 0xe2, 0x55, 0x6c, 0xf9, 0x48, 0x9d, 0x81, 0x51, 0x42, 0x75, 0xab, 0xdb, 0xd0, 0x35, - 0x50, 0xf1, 0x29, 0x36, 0x5a, 0xfc, 0x28, 0xff, 0x26, 0x26, 0x3f, 0x1e, 0x92, 0x87, 0xf9, 0xc5, - 0x36, 0x14, 0x22, 0xcc, 0xc1, 0xfd, 0xca, 0x58, 0x48, 0x2c, 0xee, 0xff, 0xd5, 0x4d, 0x88, 0xaa, - 0xba, 0x76, 0x49, 0xd7, 0xc2, 0xe5, 0x43, 0x5a, 0x91, 0x67, 0xfe, 0x6e, 0x12, 0xd4, 0xd8, 0xeb, - 0xd8, 0xc0, 0xec, 0x2e, 0x3d, 0x4d, 0xe8, 0x54, 0xfd, 0x2e, 0xe4, 0x9b, 0x52, 0xae, 0xba, 0xc9, - 0x04, 0x2b, 0x13, 0xf8, 0x37, 0x7b, 0x79, 0xdc, 0x36, 0x4d, 0x68, 0xb9, 0x66, 0x9b, 0x62, 0xbe, - 0x02, 0x23, 0x4d, 0x74, 0xe6, 0xb6, 0xfc, 0x81, 0x3c, 0xaf, 0x20, 0xf9, 0xe9, 0xb7, 0x44, 0x36, - 0xc2, 0xa6, 0x63, 0x0d, 0xf2, 0xb4, 0x84, 0xf5, 0x2f, 0xff, 0x3c, 0xa8, 0x51, 0x1a, 0x14, 0x3a, - 0xeb, 0x0f, 0x21, 0x15, 0x08, 0x4f, 0x46, 0xcd, 0xd7, 0xfb, 0x91, 0xbb, 0x16, 0x52, 0x75, 0x2b, - 0x39, 0xd1, 0xad, 0xe4, 0xf2, 0x2b, 0x18, 0x8f, 0x98, 0x07, 0x87, 0x68, 0x7d, 0x99, 0xc7, 0x57, - 0x61, 0xd4, 0x14, 0xfd, 0xa5, 0x5d, 0x3c, 0xec, 0x35, 0x3e, 0x09, 0xad, 0x05, 0x34, 0xe5, 0x26, - 0xe4, 0x64, 0xdd, 0x7e, 0xd3, 0x44, 0x3e, 0x3f, 0x05, 0x13, 0x07, 0xcd, 0xc2, 0x8d, 0x8a, 0x82, - 0x5a, 0x83, 0x94, 0xa4, 0xa0, 0xc5, 0x44, 0x29, 0xb9, 0x94, 0x79, 0xf7, 0x9d, 0xfe, 0xf2, 0xc9, - 0x80, 0x61, 0x48, 0x5e, 0xfe, 0x81, 0x02, 0x85, 0x5d, 0x97, 0x38, 0x3e, 0x8d, 0x3d, 0xda, 0xfa, - 0x26, 0xcc, 0x88, 0x33, 0xec, 0x26, 0x6f, 0x89, 0x3f, 0xd0, 0x1a, 0xc0, 0x1f, 0x4f, 0x71, 0x8c, - 0xcb, 0xc0, 0xfd, 0x2b, 0xc0, 0x07, 0x70, 0x3a, 0x53, 0xfe, 0x65, 0xe0, 0xe5, 0xff, 0x48, 0xc0, - 0xc2, 0x5e, 0xfc, 0x5d, 0xee, 0x1a, 0xb2, 0x9b, 0x88, 0x1c, 0x39, 0xab, 0xae, 0x4b, 0xc5, 0x05, - 0xcd, 0x7b, 0x30, 0x73, 0xc0, 0x0a, 0xd8, 0xd4, 0xdb, 0x3e, 0xc3, 0x30, 0x69, 0x51, 0xe1, 0x4f, - 0xe8, 0x26, 0x65, 0x73, 0x74, 0x56, 0x52, 0x33, 0xa9, 0xfa, 0x02, 0x66, 0xe2, 0xdd, 0xa3, 0x51, - 0x07, 0x2a, 0x78, 0xbb, 0xb7, 0x25, 0xb6, 0x0f, 0x54, 0xa6, 0x71, 0x53, 0xd1, 0x07, 0x1c, 0x51, - 0x1b, 0x55, 0x2b, 0xf0, 0x20, 0x18, 0xe2, 0x25, 0x9f, 0x70, 0x98, 0xb4, 0x98, 0xe4, 0x03, 0x9d, - 0x93, 0x9d, 0x3a, 0x73, 0x4c, 0x36, 0xdc, 0x13, 0x78, 0xd0, 0x4d, 0x1a, 0x1f, 0xf4, 0xd0, 0x8d, - 0x07, 0x3d, 0xdf, 0xf9, 0x21, 0x48, 0x6c, 0xe8, 0xe5, 0x3f, 0x55, 0x40, 0x0d, 0x64, 0x2e, 0x34, - 0xb0, 0xeb, 0x8a, 0x37, 0x2d, 0x9d, 0xb7, 0xcb, 0xe2, 0x46, 0x2a, 0x4f, 0xdb, 0x6f, 0x96, 0x7f, - 0x01, 0x26, 0xc5, 0x1b, 0x45, 0x01, 0x11, 0x3c, 0xc2, 0x96, 0x32, 0xee, 0xf1, 0x76, 0xf9, 0x8b, - 0x6c, 0x6c, 0x7f, 0xf8, 0x8f, 0x8b, 0x4b, 0x47, 0xc4, 0x6f, 0xb4, 0x0e, 0x96, 0x0d, 0xd7, 0x5e, - 0x91, 0x5f, 0xf3, 0x88, 0xff, 0xde, 0xa1, 0xe6, 0xf1, 0x0a, 0xcb, 0x91, 0x29, 0x27, 0xa0, 0x9a, - 0x6a, 0xa3, 0xd3, 0xf6, 0xa1, 0xd2, 0xf2, 0x1f, 0x24, 0x60, 0xf6, 0x52, 0xfb, 0xe1, 0xa6, 0xf3, - 0x01, 0xcc, 0x86, 0x03, 0x0b, 0x5e, 0x83, 0x87, 0xcf, 0x38, 0xc5, 0x7c, 0x66, 0x82, 0x0e, 0xc1, - 0x43, 0xf0, 0xe0, 0xc5, 0xe6, 0x6b, 0x90, 0x8d, 0x5d, 0x1c, 0x89, 0x09, 0xa5, 0xb5, 0x4c, 0x74, - 0x73, 0x44, 0xd5, 0x16, 0xcc, 0xb6, 0xbf, 0x3d, 0xd7, 0xb9, 0x82, 0xc5, 0x26, 0x21, 0xc9, 0xdd, - 0xc9, 0x07, 0xbd, 0xf4, 0xd5, 0xdb, 0xf0, 0xb5, 0xe9, 0xb6, 0x07, 0xeb, 0xd1, 0x82, 0xf8, 0x12, - 0xcc, 0x98, 0x84, 0xbe, 0x6c, 0x21, 0x8b, 0x1c, 0x12, 0x6c, 0xc6, 0xed, 0x6c, 0x88, 0x0f, 0x72, - 0x2a, 0xde, 0x1c, 0x9a, 0x58, 0xf9, 0xcf, 0x12, 0x30, 0xb1, 0x81, 0x71, 0x95, 0x50, 0x71, 0x76, - 0x4f, 0xe4, 0x86, 0xa4, 0x0e, 0x13, 0xc2, 0x7b, 0x98, 0xb2, 0x45, 0x5c, 0x34, 0x0d, 0x72, 0xe1, - 0xcb, 0xe9, 0x03, 0x60, 0x7e, 0xcd, 0x54, 0x87, 0x09, 0xff, 0x12, 0xd0, 0x41, 0xd2, 0x14, 0xbf, - 0x0b, 0x74, 0x15, 0x72, 0xf2, 0xb3, 0x02, 0x64, 0xf3, 0x93, 0x8a, 0x64, 0x3f, 0xcf, 0x62, 0xb3, - 0x82, 0xa6, 0xc2, 0x49, 0x58, 0xf8, 0x3e, 0x71, 0xad, 0x96, 0x3d, 0x50, 0x10, 0x96, 0x24, 0xe5, - 0x5f, 0x6d, 0x17, 0x61, 0xdd, 0x68, 0x60, 0xb3, 0x65, 0xf1, 0x87, 0xa7, 0x07, 0x2d, 0x83, 0x69, - 0x21, 0x3a, 0xdc, 0x1a, 0xd2, 0x32, 0xa2, 0x4e, 0x9c, 0xbd, 0xbc, 0x01, 0x63, 0xb2, 0x4b, 0xf8, - 0x5d, 0x82, 0x78, 0xe2, 0x91, 0x17, 0xd5, 0xe1, 0x87, 0x08, 0x9d, 0x86, 0x97, 0xec, 0x36, 0xbc, - 0x6d, 0x00, 0x9f, 0xc8, 0xdd, 0x68, 0xe0, 0x19, 0x56, 0x7a, 0x59, 0xda, 0x25, 0x6a, 0xd7, 0xd2, - 0xbe, 0xfc, 0x45, 0x7b, 0x59, 0xd4, 0x70, 0x2f, 0x8b, 0xda, 0x02, 0xb5, 0x03, 0x79, 0x6f, 0x6f, - 0x53, 0x55, 0x61, 0xc8, 0x0f, 0x42, 0xcf, 0x90, 0xc6, 0x7f, 0xb3, 0x60, 0xec, 0xfb, 0x56, 0xd7, - 0xf3, 0x96, 0xac, 0xef, 0x5b, 0xd1, 0xf5, 0xf6, 0xef, 0x28, 0x90, 0xfd, 0x98, 0x0b, 0x5a, 0xc3, - 0x86, 0xeb, 0x99, 0xfc, 0x7a, 0x8e, 0x1b, 0x91, 0xd4, 0x98, 0x32, 0xc8, 0xf5, 0x1c, 0x23, 0x14, - 0x68, 0x0c, 0xc7, 0x8f, 0xe3, 0x0c, 0x72, 0xd2, 0xed, 0x47, 0x38, 0xe5, 0xdf, 0x50, 0x20, 0x5f, - 0x11, 0x91, 0x59, 0x3a, 0x20, 0xb5, 0x08, 0xa3, 0x32, 0x56, 0xcb, 0x90, 0x1f, 0x14, 0x55, 0x0c, - 0xa3, 0x3f, 0x41, 0x67, 0x18, 0x60, 0x97, 0x7f, 0x49, 0x81, 0x2c, 0x4f, 0x89, 0x85, 0xcc, 0x68, - 0xef, 0xdd, 0xdc, 0x73, 0x98, 0xb4, 0x90, 0x8f, 0xa9, 0xaf, 0x33, 0xe7, 0xc2, 0x53, 0x46, 0x37, - 0x1a, 0xe1, 0x1b, 0xd7, 0x79, 0x2b, 0xc9, 0x44, 0x53, 0x05, 0x48, 0x9c, 0x6f, 0xf9, 0x4b, 0x90, - 0x8b, 0x12, 0x97, 0x5a, 0x95, 0xaa, 0x8f, 0x20, 0xdf, 0x96, 0x80, 0x89, 0x78, 0x9d, 0xd5, 0x72, - 0xf1, 0x0c, 0x8c, 0x96, 0x7f, 0x5f, 0x81, 0x4c, 0x0c, 0x48, 0xbd, 0x0f, 0xe9, 0xce, 0xa0, 0x13, - 0x55, 0xdc, 0x66, 0xab, 0x18, 0xdf, 0xa6, 0x26, 0x6f, 0xb0, 0x4d, 0x2d, 0xdb, 0x30, 0x2c, 0x3e, - 0x64, 0x79, 0x02, 0x4a, 0x73, 0x10, 0x63, 0x54, 0x9a, 0x8c, 0xe4, 0xe5, 0x20, 0x63, 0x56, 0x5e, - 0x96, 0x7f, 0x4b, 0x81, 0xc5, 0x4a, 0x70, 0x22, 0x1c, 0x89, 0xb6, 0x6d, 0x85, 0xf4, 0x75, 0xa3, - 0xba, 0x03, 0x79, 0x69, 0x11, 0xc2, 0xfe, 0x03, 0x75, 0xf7, 0x71, 0xbb, 0x2f, 0x99, 0xe5, 0xec, - 0x58, 0x89, 0x96, 0xbf, 0xa3, 0xc0, 0xfd, 0x70, 0x64, 0x95, 0x4b, 0x86, 0x75, 0xf5, 0xaa, 0xb8, - 0xf3, 0xb1, 0x50, 0xc8, 0xc6, 0x9b, 0x7b, 0x9b, 0xff, 0x46, 0xe8, 0xfc, 0x45, 0xb6, 0xdf, 0x93, - 0x6b, 0x7c, 0x46, 0x32, 0x95, 0x0a, 0xe2, 0x40, 0x85, 0xe5, 0xfd, 0x8e, 0x6b, 0x57, 0xb1, 0x41, - 0x6c, 0x64, 0xd1, 0x2b, 0xf2, 0xfe, 0x39, 0x96, 0xf7, 0x8b, 0x1e, 0x9c, 0xe1, 0x90, 0x16, 0x96, - 0xcb, 0x18, 0xd4, 0xa7, 0x1e, 0x72, 0xfc, 0x4a, 0xcb, 0x6f, 0xb8, 0x1e, 0xf9, 0x44, 0x38, 0xff, - 0x22, 0x8c, 0x1e, 0xb1, 0x5a, 0xf9, 0x4d, 0x71, 0x5a, 0x0b, 0x8a, 0xea, 0x7b, 0x30, 0x22, 0x83, - 0x5e, 0xa2, 0x9f, 0xa0, 0x27, 0x3b, 0x97, 0xbf, 0x0d, 0x99, 0x0a, 0x9f, 0x1f, 0x67, 0x16, 0xe1, - 0x7b, 0xed, 0xf8, 0xde, 0x4d, 0xf1, 0xbf, 0xab, 0x40, 0x7e, 0xfd, 0xf0, 0x10, 0xf7, 0xc5, 0xa3, - 0x06, 0xe3, 0x0e, 0xf6, 0x75, 0x51, 0x94, 0x9f, 0x08, 0xf6, 0xc7, 0x6e, 0xcc, 0xc1, 0xfe, 0x53, - 0x41, 0xc6, 0x3f, 0x06, 0x54, 0x67, 0x21, 0x45, 0xa8, 0x7e, 0x82, 0x2c, 0x79, 0xe4, 0x93, 0xd2, - 0x46, 0x09, 0xfd, 0x98, 0x15, 0x1f, 0xfb, 0x70, 0xbf, 0xd7, 0x47, 0x6a, 0x2a, 0xc0, 0xc8, 0xb6, - 0x7b, 0xe0, 0x9a, 0x67, 0x85, 0x7b, 0x6a, 0x19, 0x16, 0x56, 0xf1, 0x11, 0x71, 0x56, 0x2d, 0xd7, - 0x38, 0xc6, 0x5e, 0xdd, 0x46, 0x9e, 0xbf, 0xe6, 0x3a, 0xbe, 0x87, 0x0c, 0x9f, 0xee, 0x38, 0xd6, - 0x59, 0x41, 0x51, 0xa7, 0x41, 0xbd, 0xa4, 0x3e, 0xa1, 0x66, 0x21, 0xb5, 0x7e, 0x82, 0xbd, 0x33, - 0xd7, 0xc1, 0x85, 0xe4, 0xe3, 0xbd, 0xc0, 0x0e, 0xc5, 0x83, 0x18, 0x75, 0x0c, 0x32, 0xfb, 0x0e, - 0x6d, 0x62, 0x83, 0xc7, 0xcc, 0xc2, 0x3d, 0xc6, 0x56, 0x68, 0xa2, 0xa0, 0xb0, 0xdf, 0xbb, 0xa8, - 0x45, 0xb1, 0x59, 0x48, 0xa8, 0x79, 0x80, 0x2a, 0xb6, 0x5d, 0x8b, 0xd0, 0x06, 0x36, 0x0b, 0x49, - 0x35, 0x03, 0xa3, 0xfc, 0x21, 0x29, 0x36, 0x0b, 0x43, 0x8f, 0xff, 0x24, 0x21, 0xdf, 0x4f, 0xf0, - 0x43, 0xdf, 0x12, 0x64, 0xf6, 0xb7, 0xeb, 0xbb, 0xeb, 0x6b, 0xb5, 0x8d, 0xda, 0x7a, 0xb5, 0x70, - 0x6f, 0x6e, 0xec, 0xfc, 0xa2, 0x14, 0xaf, 0x62, 0xfb, 0xf9, 0xd5, 0xfd, 0xe7, 0x05, 0x65, 0x6e, - 0xf4, 0xfc, 0xa2, 0xc4, 0x7e, 0xb2, 0x68, 0x5c, 0x5f, 0xdf, 0xdc, 0x2c, 0x24, 0xe6, 0x52, 0xe7, - 0x17, 0x25, 0xfe, 0x9b, 0xd9, 0x65, 0x7d, 0x6f, 0x67, 0x57, 0x67, 0x5d, 0x93, 0x73, 0xd9, 0xf3, - 0x8b, 0x52, 0x58, 0x66, 0xee, 0x97, 0xff, 0xe6, 0x44, 0x43, 0x73, 0xb9, 0xf3, 0x8b, 0x52, 0x54, - 0xc1, 0x28, 0xf7, 0x2a, 0x1f, 0xad, 0x73, 0xca, 0x61, 0x41, 0x19, 0x94, 0x19, 0x25, 0xff, 0xcd, - 0x29, 0x47, 0x04, 0x65, 0x58, 0xa1, 0x4e, 0xc3, 0xc8, 0xea, 0xfe, 0x73, 0x7d, 0x77, 0xa7, 0x30, - 0x3a, 0x07, 0xe7, 0x17, 0x25, 0x59, 0x62, 0xd6, 0xc2, 0xda, 0x59, 0x43, 0x6a, 0x2e, 0x73, 0x7e, - 0x51, 0x0a, 0x8a, 0xea, 0x02, 0x00, 0xeb, 0x53, 0xd9, 0xdb, 0xd9, 0xaa, 0xad, 0x15, 0xd2, 0x73, - 0xf9, 0xf3, 0x8b, 0x52, 0xac, 0x86, 0x49, 0x83, 0x77, 0x95, 0x1d, 0x40, 0x48, 0x23, 0x56, 0xf5, - 0xf8, 0x8f, 0x14, 0xc8, 0xad, 0x07, 0x67, 0x49, 0x5c, 0x82, 0xf7, 0xa1, 0x18, 0xd3, 0x4a, 0x5b, - 0x9b, 0x50, 0x91, 0xd0, 0x61, 0x41, 0x51, 0x73, 0x90, 0xe6, 0x77, 0x32, 0x1b, 0xc4, 0xb2, 0x0a, - 0x09, 0x75, 0x0e, 0xa6, 0x79, 0x71, 0x0b, 0xf9, 0x46, 0x43, 0x13, 0xdf, 0x8e, 0x72, 0xc5, 0x14, - 0x92, 0xcc, 0x40, 0xa2, 0xb6, 0x6d, 0xfc, 0x4a, 0xd4, 0x0f, 0xa9, 0x53, 0x30, 0x2e, 0x3f, 0x5d, - 0x93, 0xdf, 0x83, 0x12, 0xd7, 0x29, 0x0c, 0x33, 0x28, 0xf1, 0x52, 0xb8, 0xf3, 0x3d, 0x62, 0x61, - 0xe4, 0xf1, 0x77, 0x02, 0x7d, 0x6f, 0x21, 0x7a, 0xcc, 0x64, 0xb6, 0xbf, 0xbd, 0x5f, 0xe7, 0xaa, - 0xe6, 0x32, 0x13, 0x25, 0xa6, 0xe5, 0xca, 0x76, 0xa8, 0xe5, 0xca, 0xf6, 0x73, 0x26, 0x45, 0x6d, - 0xfd, 0xe9, 0xfe, 0x66, 0x45, 0x2b, 0x24, 0x84, 0x14, 0x65, 0x91, 0x49, 0x69, 0x6d, 0x67, 0xbb, - 0x5a, 0xdb, 0xab, 0xed, 0x6c, 0x57, 0x98, 0x46, 0xb9, 0x94, 0x62, 0x55, 0xea, 0x32, 0xcc, 0x54, - 0x6b, 0xda, 0xfa, 0x1a, 0x2b, 0x32, 0x45, 0xea, 0x3b, 0x9a, 0xfe, 0xac, 0xf6, 0xf4, 0xd9, 0xba, - 0x56, 0x48, 0xcd, 0x8d, 0x9f, 0x5f, 0x94, 0x72, 0x6d, 0x95, 0xed, 0xfd, 0xb9, 0xb8, 0x77, 0x34, - 0x7d, 0x73, 0xe7, 0x67, 0xd7, 0xb5, 0x42, 0x41, 0xf4, 0x6f, 0xab, 0x54, 0xe7, 0x21, 0xb3, 0xf7, - 0x7c, 0x77, 0x5d, 0xdf, 0xaa, 0x68, 0x1f, 0xad, 0xef, 0x15, 0x4a, 0x62, 0x2a, 0xa2, 0xa4, 0xce, - 0x02, 0xf0, 0xc6, 0xcd, 0xda, 0x56, 0x6d, 0xaf, 0xf0, 0xe1, 0x5c, 0xfa, 0xfc, 0xa2, 0x34, 0xcc, - 0x0b, 0xab, 0x8d, 0xef, 0x7f, 0xb6, 0xa0, 0xfc, 0xf0, 0xb3, 0x05, 0xe5, 0x9f, 0x3e, 0x5b, 0x50, - 0xbe, 0xfb, 0xf9, 0xc2, 0xbd, 0x1f, 0x7e, 0xbe, 0x70, 0xef, 0xef, 0x3e, 0x5f, 0xb8, 0xf7, 0x8d, - 0xed, 0x58, 0x9a, 0x54, 0x0b, 0x1c, 0xf8, 0x26, 0x3a, 0xa0, 0x2b, 0xa1, 0x3b, 0x7f, 0xc7, 0x70, - 0x3d, 0x1c, 0x2f, 0x36, 0x10, 0x71, 0x56, 0x6c, 0x97, 0xa5, 0xeb, 0x34, 0xfa, 0x4b, 0x14, 0x3c, - 0xa5, 0x3a, 0x18, 0xe1, 0xdf, 0x3f, 0xfe, 0xbf, 0xff, 0x0c, 0x00, 0x00, 0xff, 0xff, 0x35, 0xcc, - 0x95, 0x72, 0xac, 0x42, 0x00, 0x00, + // 4472 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x5c, 0xd9, 0x6f, 0x64, 0xd9, + 0x59, 0xef, 0x5b, 0xe5, 0xa5, 0xea, 0xab, 0xc5, 0xe5, 0xeb, 0xad, 0x6c, 0x77, 0xdb, 0x35, 0xd5, + 0xd3, 0x19, 0x4f, 0xcf, 0x8c, 0x9d, 0x1e, 0x98, 0x68, 0x32, 0x51, 0x94, 0x29, 0x6f, 0xd3, 0xc5, + 0x78, 0xcb, 0x2d, 0x7b, 0xa0, 0x13, 0x25, 0x57, 0xc7, 0xf7, 0x1e, 0xbb, 0x4e, 0xfb, 0x2e, 0xd5, + 0xf7, 0xdc, 0x72, 0xdb, 0x83, 0x90, 0x78, 0x18, 0x21, 0x62, 0x40, 0x04, 0x21, 0x84, 0x84, 0x64, + 0x14, 0x1e, 0x10, 0x82, 0x17, 0x78, 0x44, 0x82, 0x07, 0x24, 0x04, 0xe4, 0x21, 0x48, 0x79, 0xe0, + 0x01, 0x21, 0x11, 0xd0, 0x0c, 0x12, 0x88, 0xbf, 0x01, 0x45, 0xe8, 0x2c, 0x77, 0xa9, 0xc5, 0xe5, + 0x2a, 0xdb, 0x03, 0x81, 0xbc, 0x74, 0xd7, 0x59, 0xbe, 0xdf, 0x77, 0xce, 0xf7, 0x7d, 0xe7, 0xfb, + 0xbe, 0xb3, 0x5c, 0xc3, 0xeb, 0xc4, 0x79, 0x8e, 0x0d, 0x9f, 0x9c, 0xe2, 0x15, 0x7c, 0x66, 0xd4, + 0x91, 0x73, 0x8c, 0x57, 0x4e, 0x9f, 0x1c, 0x62, 0x1f, 0x3d, 0x09, 0x2b, 0x96, 0x1b, 0x9e, 0xeb, + 0xbb, 0xea, 0x5c, 0xd8, 0x75, 0x39, 0x6c, 0x91, 0x5d, 0xe7, 0x26, 0x8f, 0xdd, 0x63, 0x97, 0x77, + 0x5b, 0x61, 0xbf, 0x04, 0xc5, 0xdc, 0x82, 0xe1, 0x52, 0xdb, 0xa5, 0x2b, 0x87, 0x88, 0x46, 0xa8, + 0x86, 0x4b, 0x1c, 0xd9, 0xfe, 0x28, 0x62, 0xee, 0x7a, 0xc8, 0xb0, 0xa2, 0x4e, 0xa2, 0x28, 0xbb, + 0x8d, 0x23, 0x9b, 0x38, 0xee, 0x0a, 0xff, 0x57, 0x54, 0x95, 0xff, 0x79, 0x0a, 0x46, 0xf6, 0x90, + 0x87, 0x6c, 0xaa, 0x62, 0x58, 0xa4, 0x0d, 0xd7, 0xd7, 0x6d, 0xe4, 0x9d, 0x60, 0x5f, 0x27, 0x0e, + 0xf5, 0x91, 0xe3, 0xeb, 0x16, 0xa1, 0x3e, 0x71, 0x8e, 0xf5, 0x23, 0x8c, 0x8b, 0x4a, 0x49, 0x59, + 0xca, 0xbc, 0x3d, 0xbb, 0x2c, 0x86, 0xb3, 0xcc, 0x86, 0x13, 0x8c, 0x7c, 0x79, 0xcd, 0x25, 0xce, + 0xea, 0xd0, 0xf7, 0x7f, 0xb4, 0x78, 0x4f, 0x9b, 0x67, 0x38, 0xdb, 0x1c, 0xa6, 0x2a, 0x50, 0xb6, + 0x04, 0xc8, 0x26, 0xc6, 0xea, 0x0b, 0x78, 0x64, 0x62, 0x8f, 0x9c, 0x22, 0x36, 0xdc, 0x5e, 0xcc, + 0x12, 0xfd, 0x31, 0x7b, 0x25, 0x42, 0xbb, 0x8a, 0x25, 0x82, 0x79, 0x13, 0x1f, 0xa1, 0xa6, 0xe5, + 0xeb, 0x72, 0x86, 0x27, 0xd8, 0x63, 0x3c, 0x74, 0x0f, 0xf9, 0xb8, 0x98, 0x2c, 0x29, 0x4b, 0xe9, + 0xd5, 0x87, 0x0c, 0xed, 0x9f, 0x7e, 0xb4, 0x38, 0x2f, 0xf8, 0x51, 0xf3, 0x64, 0x99, 0xb8, 0x2b, + 0x36, 0xf2, 0xeb, 0xcb, 0x5b, 0xf8, 0x18, 0x19, 0xe7, 0xeb, 0xd8, 0xd0, 0x66, 0x24, 0x4e, 0x8d, + 0x4f, 0xf0, 0x04, 0x7b, 0x9b, 0x18, 0x6b, 0xc8, 0xef, 0x64, 0xe1, 0xb7, 0xb2, 0x18, 0xba, 0x19, + 0x8b, 0xfd, 0x38, 0x0b, 0x1b, 0x5e, 0x09, 0x58, 0xb4, 0x08, 0xb0, 0x85, 0xd1, 0x70, 0xff, 0x8c, + 0x1e, 0x48, 0xb4, 0xf5, 0x98, 0xfc, 0xae, 0x65, 0xd7, 0x36, 0xaf, 0x91, 0xdb, 0xb0, 0x6b, 0x99, + 0x9d, 0x09, 0xf7, 0x03, 0x76, 0xc4, 0x21, 0x3e, 0x41, 0x16, 0xb3, 0x8d, 0x63, 0xe2, 0x30, 0x46, + 0xc4, 0x2d, 0x8e, 0xf6, 0xcf, 0x69, 0x56, 0x02, 0x55, 0x05, 0xce, 0x36, 0x87, 0xd1, 0x18, 0x8a, + 0x6a, 0x41, 0x29, 0xe0, 0x62, 0x23, 0xe2, 0xf8, 0xd8, 0x41, 0x8e, 0x81, 0x5b, 0x39, 0xa5, 0x06, + 0x9f, 0xd3, 0x76, 0x84, 0x15, 0xe7, 0xf6, 0x2e, 0x14, 0x03, 0x6e, 0x47, 0x4d, 0xc7, 0x64, 0x86, + 0xcd, 0xfa, 0x79, 0xa7, 0xc8, 0x2a, 0xa6, 0x4b, 0xca, 0x52, 0x52, 0x9b, 0x96, 0xed, 0x9b, 0xa2, + 0xb9, 0x2a, 0x5b, 0xd5, 0xd7, 0xa1, 0x10, 0x50, 0xd8, 0x4d, 0xcb, 0x27, 0x0d, 0x0b, 0x17, 0x81, + 0x53, 0x8c, 0xc9, 0xfa, 0x6d, 0x59, 0xad, 0xfe, 0x02, 0x4c, 0x7b, 0xd8, 0x42, 0xe7, 0x52, 0x2d, + 0xb4, 0x8e, 0x3c, 0xa9, 0x9c, 0x4c, 0xff, 0x13, 0x99, 0x90, 0x10, 0x9b, 0x18, 0xd7, 0x18, 0x00, + 0x57, 0x09, 0x81, 0xc5, 0x60, 0xf8, 0x75, 0xb7, 0xe9, 0x59, 0xe7, 0xe1, 0x2c, 0x18, 0xbc, 0x6e, + 0xa0, 0x46, 0x31, 0xdb, 0x3f, 0x8b, 0x60, 0x7d, 0x3c, 0xe5, 0x50, 0x72, 0xc2, 0x8c, 0xcf, 0x1a, + 0x6a, 0xc4, 0xb5, 0x2f, 0x59, 0x71, 0x41, 0x61, 0xea, 0x8b, 0xa9, 0xe4, 0x06, 0xd7, 0xbe, 0xe0, + 0x53, 0x95, 0x30, 0x7c, 0x42, 0xeb, 0xb0, 0x68, 0xa3, 0xb3, 0xb8, 0x39, 0xbb, 0x9e, 0x89, 0x3d, + 0x9d, 0x12, 0x13, 0xeb, 0x86, 0xdb, 0x74, 0xfc, 0x62, 0xbe, 0xa4, 0x2c, 0xe5, 0xb4, 0x79, 0x1b, + 0x9d, 0x45, 0x76, 0xba, 0xcb, 0x3a, 0xd5, 0x88, 0x89, 0xd7, 0x58, 0x17, 0x95, 0xc2, 0x6b, 0xc4, + 0x79, 0xae, 0x7b, 0xf8, 0x25, 0xf2, 0x4c, 0x9d, 0xb2, 0x15, 0x61, 0xea, 0x1e, 0x7e, 0xd1, 0x24, + 0x1e, 0xb6, 0xb1, 0xe3, 0xeb, 0x7e, 0xdd, 0xc3, 0xb4, 0xee, 0x5a, 0x66, 0x71, 0x8c, 0x0f, 0xfb, + 0x81, 0x1c, 0xf6, 0x54, 0xe7, 0xb0, 0xab, 0x8e, 0xaf, 0x3d, 0x24, 0xce, 0x73, 0x8d, 0x83, 0xd5, + 0x38, 0x96, 0x16, 0x41, 0xed, 0x07, 0x48, 0xea, 0x07, 0x50, 0xf2, 0x3d, 0x24, 0x84, 0xcf, 0xfb, + 0x52, 0xfd, 0x14, 0x0b, 0x5f, 0x69, 0x36, 0xb9, 0xdd, 0x3a, 0xc5, 0x02, 0x37, 0x90, 0x07, 0xb2, + 0x9f, 0x80, 0xa4, 0x1f, 0x89, 0x5e, 0xeb, 0xb2, 0x13, 0x93, 0xb4, 0x45, 0x5e, 0x34, 0x89, 0x89, + 0x7c, 0xd7, 0x0b, 0x27, 0x11, 0x19, 0xcd, 0xf8, 0x00, 0x92, 0x8e, 0x80, 0xe4, 0xf8, 0x43, 0xd3, + 0x39, 0x83, 0xd7, 0x0f, 0x89, 0x83, 0xbc, 0x73, 0xdd, 0x6d, 0x30, 0xb6, 0xb4, 0x97, 0xa3, 0x57, + 0xfb, 0x73, 0xf4, 0xaf, 0x0a, 0xc4, 0x5d, 0x01, 0x78, 0x95, 0xaf, 0xff, 0x65, 0x05, 0x4a, 0xc8, + 0x77, 0x6d, 0x62, 0x04, 0x2c, 0x85, 0x8e, 0x91, 0x61, 0x60, 0x4a, 0x75, 0x0b, 0x9f, 0x62, 0xab, + 0x38, 0x51, 0x52, 0x96, 0xf2, 0x6f, 0xbf, 0xbb, 0x7c, 0x75, 0x20, 0x5e, 0xae, 0x70, 0x0c, 0xc1, + 0x85, 0x1b, 0x40, 0x85, 0x03, 0x6c, 0x31, 0x7a, 0xed, 0x3e, 0xea, 0xd1, 0xaa, 0x9e, 0xc1, 0x6b, + 0x3c, 0x06, 0x74, 0x1b, 0x06, 0x5b, 0xa2, 0x72, 0x45, 0x13, 0xec, 0x15, 0x27, 0xfb, 0x97, 0x76, + 0x99, 0x61, 0x76, 0x8c, 0x6a, 0x13, 0xe3, 0xed, 0x10, 0x4e, 0xfd, 0x44, 0x81, 0xb7, 0x62, 0xd6, + 0xdd, 0xc7, 0x00, 0xa6, 0xfa, 0x1f, 0xc0, 0x52, 0x84, 0x7c, 0xcd, 0x30, 0x7e, 0x4d, 0x81, 0x27, + 0x6d, 0xea, 0xef, 0x63, 0x28, 0xd3, 0xfd, 0x0f, 0xe5, 0x8d, 0x16, 0x53, 0xb8, 0x66, 0x34, 0xdf, + 0x86, 0x59, 0x9b, 0x38, 0xc4, 0x46, 0x96, 0xce, 0x73, 0x1e, 0xc3, 0xb5, 0xa2, 0x00, 0x36, 0xd3, + 0x3f, 0xd3, 0x69, 0x89, 0xb2, 0x27, 0x41, 0x82, 0xc8, 0xf5, 0x4d, 0x78, 0x83, 0xd0, 0xd0, 0xb0, + 0x3b, 0x73, 0x1b, 0x0b, 0x35, 0x1d, 0xa3, 0xae, 0x63, 0x07, 0x1d, 0x5a, 0xd8, 0x2c, 0x16, 0x4b, + 0xca, 0x52, 0x4a, 0xfb, 0x02, 0xa1, 0xd2, 0x76, 0xd7, 0xdb, 0xd2, 0x97, 0x2d, 0xde, 0x7d, 0x43, + 0xf4, 0x66, 0x2e, 0xab, 0xe1, 0x52, 0x5f, 0x77, 0x1d, 0xeb, 0x5c, 0xb7, 0x5d, 0x13, 0xeb, 0x75, + 0x4c, 0x8e, 0xeb, 0x71, 0x27, 0x33, 0xcb, 0x97, 0xfd, 0x3c, 0xeb, 0xb6, 0xeb, 0x58, 0xe7, 0xdb, + 0xae, 0x89, 0x9f, 0xf2, 0x3e, 0x91, 0xf7, 0x38, 0x86, 0x27, 0x32, 0xc4, 0x99, 0xd8, 0xf0, 0x30, + 0xa2, 0x58, 0x6f, 0x78, 0xc4, 0xc0, 0xba, 0x4f, 0x6c, 0x4c, 0x7d, 0x64, 0x37, 0x22, 0x3c, 0x9d, + 0x62, 0xc3, 0x75, 0x4c, 0x5a, 0x9c, 0xe3, 0xb8, 0x6f, 0x0a, 0xc2, 0x75, 0x49, 0xb7, 0xc7, 0xc8, + 0xf6, 0x03, 0xaa, 0x90, 0x43, 0x4d, 0xd0, 0xa8, 0xaf, 0xc1, 0x58, 0xb0, 0x92, 0x74, 0x64, 0xda, + 0xc4, 0xa1, 0xc5, 0xf9, 0x52, 0x72, 0x29, 0xad, 0xe5, 0x83, 0xea, 0x0a, 0xaf, 0x55, 0xb7, 0x60, + 0x82, 0x39, 0x51, 0xd4, 0x34, 0x98, 0x0a, 0x75, 0xe6, 0x96, 0x59, 0x3c, 0xb9, 0xdf, 0x8f, 0xc3, + 0x2c, 0x10, 0xe7, 0x79, 0x45, 0x10, 0x6e, 0xa3, 0xb3, 0x35, 0xd4, 0x78, 0xaf, 0xf8, 0x1f, 0xdf, + 0x5b, 0x54, 0x2e, 0xfe, 0xfd, 0xcf, 0x1e, 0x87, 0xdc, 0x57, 0x44, 0x52, 0x5b, 0xfe, 0x44, 0x81, + 0x09, 0x21, 0xd7, 0x56, 0xa3, 0x98, 0x87, 0x74, 0xe0, 0x91, 0x4c, 0x9e, 0xd6, 0xa6, 0xb5, 0x94, + 0xa8, 0xa8, 0x9a, 0xea, 0xcf, 0x41, 0xbe, 0xcd, 0x36, 0x13, 0xfd, 0x9b, 0x49, 0xee, 0x28, 0xce, + 0xe8, 0xbd, 0xa1, 0x5f, 0xfd, 0xde, 0xe2, 0xbd, 0xf2, 0x6f, 0xa7, 0xa1, 0xd0, 0xae, 0x68, 0x75, + 0x1a, 0x46, 0x7c, 0x62, 0x9c, 0x60, 0x4f, 0x0e, 0x40, 0x96, 0xd4, 0x45, 0xc8, 0x88, 0xb4, 0x5d, + 0x67, 0xae, 0x50, 0xf0, 0xd6, 0x40, 0x54, 0xad, 0x22, 0x8a, 0xd5, 0x57, 0x20, 0x2b, 0x3b, 0xbc, + 0x68, 0xba, 0x41, 0x02, 0xab, 0x49, 0xa2, 0xaf, 0xb3, 0x2a, 0x75, 0x23, 0xc4, 0xf0, 0xcf, 0x1b, + 0x22, 0xff, 0xcc, 0xbf, 0xfd, 0x6a, 0xcc, 0xe1, 0xc9, 0x8d, 0x41, 0xe0, 0xee, 0x76, 0x79, 0x71, + 0xff, 0xbc, 0x81, 0x03, 0x4e, 0xec, 0xb7, 0xba, 0x0c, 0x13, 0x12, 0x86, 0x1a, 0xc8, 0xc2, 0xfa, + 0x11, 0x32, 0x7c, 0xd7, 0xe3, 0x59, 0x66, 0x4e, 0x1b, 0x17, 0x4d, 0x35, 0xd6, 0xb2, 0xc9, 0x1b, + 0xd8, 0xd0, 0xf9, 0x90, 0x74, 0x13, 0x3b, 0xae, 0x2d, 0xd2, 0x43, 0x0d, 0x78, 0xd5, 0x3a, 0xab, + 0x69, 0x95, 0xfb, 0x68, 0x9b, 0xdc, 0x0f, 0x60, 0xb2, 0x6b, 0xee, 0x37, 0x40, 0x46, 0xa6, 0x92, + 0xce, 0xa4, 0xef, 0x5b, 0x50, 0xbc, 0x32, 0xd9, 0x4b, 0x0f, 0xb2, 0xfe, 0xbb, 0x67, 0x79, 0x55, + 0xc8, 0xb7, 0x25, 0xe1, 0xd0, 0x3f, 0x68, 0xd6, 0x8e, 0x27, 0xc1, 0x55, 0xc8, 0xb7, 0x25, 0xd8, + 0x03, 0xe4, 0x70, 0x59, 0x3f, 0x0e, 0x75, 0x75, 0x5a, 0x98, 0xbd, 0x65, 0x5a, 0x58, 0x82, 0x0c, + 0xa1, 0x7b, 0xd8, 0x6b, 0x60, 0xbf, 0x89, 0x2c, 0x9e, 0x9a, 0xa5, 0xb4, 0x78, 0x95, 0xfa, 0x3e, + 0x8c, 0x50, 0x1f, 0xf9, 0x4d, 0xca, 0xd3, 0xa9, 0xfc, 0xdb, 0x4b, 0xbd, 0x02, 0xad, 0x58, 0x0c, + 0x35, 0xde, 0x5f, 0x93, 0x74, 0xaa, 0x06, 0x13, 0x36, 0x71, 0x42, 0x27, 0x65, 0x9c, 0xe8, 0x94, + 0x7c, 0x8c, 0x65, 0x3e, 0xd5, 0xd7, 0xd0, 0x0b, 0x36, 0x71, 0xa4, 0xb3, 0x32, 0x4e, 0x6a, 0xe4, + 0x63, 0x2e, 0x11, 0x86, 0xf9, 0xa2, 0x89, 0x1c, 0x9f, 0xf8, 0xe7, 0x31, 0xd8, 0xc2, 0x00, 0x12, + 0xb1, 0x89, 0xf3, 0x75, 0x89, 0x10, 0x22, 0x6f, 0x42, 0x96, 0x21, 0x3b, 0x2e, 0x73, 0x49, 0xc8, + 0x1a, 0x24, 0x87, 0xca, 0xd8, 0xc4, 0xd9, 0x91, 0x74, 0xea, 0x24, 0x0c, 0x73, 0xa7, 0xc9, 0x33, + 0xa2, 0xb4, 0x26, 0x0a, 0xea, 0x1b, 0x30, 0xce, 0x7f, 0xe8, 0x0d, 0xec, 0xd9, 0x84, 0x52, 0x16, + 0xf2, 0x78, 0x06, 0x93, 0xd3, 0x0a, 0xbc, 0x61, 0x2f, 0xaa, 0x57, 0x1f, 0x41, 0x3e, 0x58, 0x80, + 0x06, 0x0b, 0x56, 0x94, 0xa7, 0x18, 0x39, 0x2d, 0x27, 0xd7, 0xa0, 0xa8, 0x94, 0x5e, 0xe9, 0xc7, + 0x29, 0x98, 0x58, 0xed, 0x4c, 0xaa, 0xae, 0x74, 0x4c, 0x0f, 0x21, 0x17, 0x78, 0x83, 0x73, 0xfb, + 0xd0, 0xb5, 0xa4, 0x6b, 0x92, 0xce, 0xa8, 0xc6, 0xeb, 0x58, 0x08, 0x90, 0x9d, 0x1a, 0x9e, 0x7b, + 0x4a, 0x4c, 0xec, 0x49, 0xff, 0x94, 0x17, 0xd5, 0x7b, 0xb2, 0xf6, 0x7f, 0xcb, 0x45, 0x3d, 0x81, + 0x49, 0x7c, 0xd6, 0x20, 0x22, 0x1d, 0x8e, 0x02, 0x20, 0xf7, 0x55, 0x49, 0x6d, 0x22, 0x6a, 0x0b, + 0xa3, 0x1c, 0x23, 0xa1, 0xd8, 0xf7, 0x2d, 0x99, 0xde, 0x87, 0x24, 0xa3, 0x82, 0x24, 0x6a, 0x8b, + 0x48, 0x42, 0x55, 0xa6, 0xe2, 0xaa, 0x6c, 0x73, 0x8f, 0xe9, 0xde, 0xee, 0x11, 0xda, 0xdc, 0x63, + 0xa7, 0xa3, 0xc9, 0xdc, 0x9d, 0xa3, 0xc9, 0xde, 0xbd, 0xa3, 0xc9, 0xdd, 0xd2, 0xd1, 0xfc, 0xb4, + 0xb9, 0x91, 0x1d, 0x28, 0xc4, 0xcc, 0x8c, 0x0f, 0x3a, 0xe6, 0x4a, 0x94, 0xeb, 0x30, 0xc7, 0x22, + 0x62, 0x3e, 0xe2, 0x0e, 0xb7, 0xa4, 0xde, 0xd0, 0x2d, 0x7d, 0x7e, 0x0e, 0xe8, 0xdf, 0x12, 0x30, + 0xb3, 0xc1, 0x16, 0xdc, 0xf9, 0x66, 0xd3, 0x6f, 0x7a, 0x38, 0xdc, 0xd5, 0x1d, 0xb9, 0xbd, 0x33, + 0xb4, 0xab, 0x16, 0x71, 0xe2, 0xea, 0x45, 0xfc, 0x45, 0x98, 0xf4, 0x5f, 0xa2, 0x06, 0xdb, 0xb0, + 0x7b, 0xf1, 0x45, 0x9c, 0xe4, 0x24, 0x2a, 0x6b, 0xab, 0xb1, 0xa6, 0x88, 0xe2, 0x25, 0x7c, 0x21, + 0xce, 0x24, 0x22, 0x16, 0xf6, 0x64, 0x34, 0xed, 0xa6, 0xc5, 0xf3, 0xb9, 0x41, 0x8e, 0xf7, 0xca, + 0xb1, 0xb1, 0x05, 0x2c, 0xb9, 0xba, 0xd6, 0x42, 0xb8, 0xae, 0x86, 0x30, 0xc0, 0xc1, 0x5e, 0xbb, + 0x21, 0x94, 0xff, 0x36, 0x01, 0x13, 0x61, 0x74, 0xee, 0x57, 0xc4, 0xdf, 0x80, 0x99, 0xab, 0x4e, + 0x7d, 0x06, 0xc8, 0x86, 0x27, 0xeb, 0xdd, 0x8e, 0x7b, 0x0e, 0x60, 0xb2, 0xeb, 0x31, 0xcf, 0x00, + 0x27, 0xb1, 0x6a, 0xbd, 0xf3, 0x7c, 0xe7, 0x67, 0x61, 0xda, 0xc1, 0x67, 0xd1, 0x61, 0x5b, 0xa4, + 0xe4, 0x21, 0xae, 0xe4, 0x49, 0xd6, 0x2a, 0x87, 0x12, 0xa9, 0x39, 0x76, 0xd6, 0x16, 0x9e, 0xce, + 0x0d, 0xb7, 0x9c, 0xb5, 0x05, 0xc7, 0x72, 0xe5, 0xcf, 0x14, 0x98, 0x6e, 0x13, 0xa4, 0x84, 0x53, + 0x35, 0x50, 0x23, 0x83, 0x08, 0x46, 0x20, 0x84, 0xda, 0xdf, 0x84, 0xc6, 0x23, 0xf2, 0x00, 0x73, + 0x07, 0x0a, 0x31, 0x4c, 0x61, 0x07, 0x03, 0xc8, 0x7e, 0x2c, 0x22, 0x16, 0x0e, 0xe1, 0x11, 0xe4, + 0x2d, 0x44, 0x3b, 0x8d, 0x3f, 0xc7, 0x6a, 0x43, 0x81, 0x94, 0x7f, 0x43, 0x81, 0x85, 0xf6, 0xcd, + 0x4a, 0x2d, 0x34, 0xa9, 0xeb, 0x2d, 0xa7, 0x9b, 0xf9, 0x26, 0x6e, 0x61, 0xbe, 0x5f, 0x85, 0xc9, + 0x9d, 0x6e, 0x8a, 0x7b, 0x04, 0x79, 0xae, 0xee, 0x68, 0x3a, 0x8a, 0x98, 0x0e, 0xab, 0x8d, 0xa6, + 0xf3, 0x9f, 0x0a, 0xe4, 0xb7, 0x89, 0xc9, 0xb1, 0x2a, 0x8e, 0xb9, 0xbf, 0xbb, 0xaa, 0xbe, 0x0f, + 0x69, 0x9b, 0x98, 0x72, 0x68, 0x4a, 0xff, 0x2e, 0x36, 0x65, 0x4b, 0x1c, 0x16, 0x40, 0x0f, 0x99, + 0xd9, 0x1e, 0x36, 0xcf, 0x3b, 0x66, 0x78, 0x2d, 0x4c, 0x96, 0x91, 0xae, 0x36, 0xcf, 0x05, 0xd4, + 0x87, 0x30, 0xc6, 0xa1, 0x28, 0xb6, 0x2c, 0x89, 0x95, 0xec, 0x1f, 0x2b, 0xc7, 0x68, 0x6b, 0xd8, + 0xb2, 0x84, 0xac, 0xfe, 0x7c, 0x04, 0xa0, 0x16, 0xde, 0xbe, 0x5c, 0x99, 0xc9, 0x3d, 0x00, 0x60, + 0x7b, 0x4b, 0x99, 0x87, 0x88, 0x34, 0x2e, 0xcd, 0x6a, 0x44, 0x1a, 0xd2, 0x96, 0xa7, 0x24, 0x3b, + 0xf2, 0x94, 0xce, 0x54, 0x64, 0xe8, 0xee, 0x52, 0x91, 0xe1, 0xbb, 0x4f, 0x45, 0x46, 0x6e, 0x99, + 0x8a, 0xf4, 0xdc, 0xb6, 0x46, 0x79, 0x4a, 0xea, 0x6e, 0xf3, 0x94, 0xf4, 0xe7, 0x93, 0xa7, 0xc0, + 0x1d, 0x6f, 0x77, 0x32, 0xb7, 0xdd, 0xee, 0x64, 0xaf, 0xdd, 0xee, 0xe4, 0xae, 0xc8, 0x36, 0x1e, + 0x42, 0x4e, 0xda, 0xb1, 0x4c, 0x36, 0xc4, 0xf9, 0x7d, 0x56, 0x98, 0xb2, 0xa8, 0xeb, 0x92, 0x92, + 0x8c, 0x75, 0x49, 0x49, 0xca, 0x7f, 0xa8, 0xc0, 0xe8, 0x3a, 0x6e, 0xb8, 0x94, 0xf8, 0xea, 0x1e, + 0x8c, 0xa3, 0x53, 0x44, 0x2c, 0x74, 0xc8, 0x4f, 0x61, 0x2c, 0xb6, 0xe7, 0x1f, 0xc4, 0x99, 0x17, + 0x42, 0xea, 0x55, 0x41, 0xac, 0x3e, 0x85, 0x9c, 0xef, 0xfa, 0xc8, 0x0a, 0xd1, 0x12, 0x83, 0x58, + 0x39, 0xa3, 0x94, 0x48, 0xe5, 0x37, 0x61, 0xb2, 0xd6, 0x3c, 0x44, 0x06, 0xbf, 0xb0, 0xd8, 0xf7, + 0x90, 0x89, 0x77, 0x5c, 0xc6, 0x61, 0x12, 0x86, 0x1d, 0x37, 0x18, 0x67, 0x4e, 0x13, 0x05, 0x16, + 0xb2, 0xd2, 0xfc, 0x50, 0x94, 0xfb, 0xed, 0x87, 0x90, 0xa3, 0x21, 0x6d, 0xe4, 0xbb, 0xb3, 0x51, + 0x65, 0xd5, 0x64, 0x9d, 0xf8, 0x5a, 0xc4, 0x06, 0x69, 0x10, 0xec, 0xf8, 0xc1, 0x36, 0xef, 0x08, + 0x63, 0x2d, 0xa8, 0x53, 0xbf, 0x0c, 0xc3, 0xed, 0xbe, 0xea, 0xda, 0x79, 0x08, 0x0a, 0xf5, 0x6b, + 0x90, 0x0a, 0xac, 0x72, 0x10, 0xb7, 0x11, 0x12, 0xa9, 0x05, 0x48, 0x1a, 0xc4, 0x14, 0x7e, 0x42, + 0x63, 0x3f, 0xcb, 0x9f, 0x24, 0x20, 0xcd, 0xdc, 0x1e, 0x9f, 0xe9, 0x75, 0x87, 0x7b, 0x20, 0x8e, + 0x9f, 0x89, 0x73, 0xe4, 0xca, 0x4b, 0xe6, 0x47, 0xbd, 0x56, 0x6c, 0x28, 0x3d, 0x79, 0x0f, 0x91, + 0x76, 0x43, 0x71, 0xae, 0x07, 0x58, 0x7c, 0x07, 0x9b, 0xe4, 0xab, 0xff, 0x7a, 0x2c, 0xbe, 0x85, + 0x15, 0x28, 0x7c, 0x07, 0xcb, 0x4c, 0xc3, 0x23, 0xc7, 0xc7, 0xd8, 0x93, 0xee, 0x7f, 0x68, 0x80, + 0x50, 0x22, 0x29, 0x85, 0xf7, 0xff, 0x41, 0x02, 0xf2, 0x4c, 0x0c, 0x5b, 0xc4, 0x26, 0x52, 0x16, + 0xad, 0xd3, 0x55, 0xee, 0x70, 0xba, 0x89, 0x1b, 0x4e, 0xf7, 0x6b, 0x90, 0x3a, 0x22, 0x16, 0x5f, + 0x1c, 0x83, 0x18, 0x4f, 0x48, 0x74, 0x77, 0xf2, 0x62, 0x61, 0x50, 0x4c, 0xa8, 0x8e, 0x68, 0x9d, + 0xdb, 0x53, 0x56, 0x8e, 0xf4, 0x29, 0xa2, 0xf5, 0xf2, 0x3f, 0x24, 0x60, 0x2c, 0x0a, 0xa6, 0x77, + 0x2f, 0xcf, 0x4d, 0xc8, 0x4a, 0x6f, 0xa0, 0xf3, 0x93, 0xfc, 0x01, 0x5c, 0x42, 0x46, 0x12, 0x3e, + 0x75, 0x2d, 0xb3, 0x6d, 0x1a, 0xc9, 0xb6, 0x69, 0xb4, 0xa9, 0x6d, 0xe8, 0xae, 0xac, 0x74, 0xf8, + 0xa6, 0x56, 0xfa, 0x77, 0x09, 0x18, 0x6b, 0xbb, 0x5d, 0xfd, 0xbf, 0xb6, 0x64, 0xbf, 0x02, 0x23, + 0xe2, 0x18, 0x79, 0x10, 0x07, 0x26, 0x49, 0xee, 0x50, 0x92, 0xff, 0x95, 0x84, 0xf9, 0x28, 0x16, + 0xf0, 0x91, 0x1e, 0xba, 0xee, 0xc9, 0x36, 0xf6, 0x91, 0x89, 0x7c, 0xa4, 0x7e, 0x19, 0x66, 0x4f, + 0x91, 0xc3, 0xd6, 0x8d, 0x6e, 0x31, 0x97, 0x20, 0x2f, 0xde, 0xc4, 0x55, 0xb7, 0x08, 0x13, 0xd3, + 0xb2, 0x43, 0xe4, 0x32, 0xc4, 0x2d, 0xf7, 0xfb, 0xf0, 0xc0, 0xc3, 0x66, 0xd3, 0xc0, 0xe2, 0xea, + 0xa9, 0x93, 0x3c, 0xc1, 0xc9, 0x67, 0x45, 0xa7, 0x5d, 0xc7, 0x3a, 0x6f, 0x47, 0xa8, 0xc3, 0x02, + 0x3a, 0x3e, 0xf6, 0xf0, 0x31, 0xdb, 0x36, 0xc6, 0xb1, 0x42, 0xe7, 0x3f, 0xc0, 0xea, 0x9f, 0x0f, + 0xa1, 0xb4, 0x90, 0x61, 0x90, 0x98, 0xa8, 0x08, 0xe6, 0x22, 0x4e, 0xc1, 0x84, 0x6f, 0x12, 0x62, + 0x8a, 0x21, 0xcc, 0x47, 0x02, 0x25, 0x64, 0xb1, 0x01, 0x8b, 0x01, 0xb0, 0xe1, 0x3a, 0x26, 0x11, + 0x29, 0x4c, 0x8b, 0x40, 0xc4, 0x89, 0xe3, 0x7d, 0xd9, 0x6d, 0x2d, 0xea, 0x15, 0x93, 0xc9, 0x16, + 0x3c, 0x8c, 0x4b, 0xe2, 0x2a, 0xa8, 0x11, 0x0e, 0xb5, 0x18, 0xc9, 0xb6, 0x2b, 0x5a, 0xf9, 0xaf, + 0x15, 0x18, 0x6b, 0x53, 0x7f, 0x14, 0x97, 0x95, 0x5b, 0xc5, 0xe5, 0xc4, 0x4d, 0xe2, 0x72, 0x19, + 0xb2, 0x84, 0x46, 0xfa, 0xe1, 0xfa, 0x4d, 0x69, 0x2d, 0x75, 0x41, 0xec, 0x1e, 0x8a, 0x62, 0xf7, + 0x4b, 0x98, 0x68, 0x9b, 0xc4, 0x3a, 0xb3, 0xdd, 0x0a, 0x0c, 0x73, 0x91, 0x48, 0x1f, 0xfb, 0x46, + 0xaf, 0x35, 0xda, 0x46, 0xaf, 0x09, 0xca, 0x36, 0xbf, 0x98, 0x68, 0x77, 0xef, 0xbf, 0x99, 0x84, + 0xc9, 0xc8, 0x0f, 0xfd, 0x44, 0xc7, 0xcc, 0xc8, 0xdf, 0x24, 0x07, 0xf7, 0x37, 0xf1, 0x80, 0x3b, + 0x74, 0x27, 0x01, 0x77, 0xf8, 0x6e, 0x02, 0xee, 0x48, 0xbb, 0x46, 0x7e, 0x27, 0x09, 0x53, 0xed, + 0x27, 0x0f, 0xff, 0x2f, 0x55, 0xb2, 0x0e, 0x19, 0x79, 0x0d, 0xc9, 0x03, 0xff, 0x00, 0x5a, 0x01, + 0x41, 0xc7, 0xe3, 0xfe, 0xff, 0x98, 0x5e, 0xfe, 0x26, 0x01, 0xa9, 0x3d, 0xb6, 0x31, 0x22, 0xae, + 0xa3, 0x4e, 0xc3, 0x08, 0xa1, 0x5b, 0xae, 0x3c, 0xdd, 0x4a, 0x69, 0xb2, 0x74, 0x7b, 0xf7, 0xb1, + 0x0e, 0x19, 0xec, 0xf8, 0xde, 0xb9, 0x3e, 0xf0, 0xc6, 0x02, 0x38, 0x9d, 0x98, 0xca, 0xad, 0x42, + 0xf3, 0xb7, 0xa0, 0xd8, 0x79, 0x8a, 0xa7, 0x73, 0xf4, 0x41, 0x8e, 0x25, 0xa6, 0x3b, 0xce, 0xf2, + 0x36, 0x18, 0x44, 0xb9, 0x0a, 0x93, 0x31, 0xa3, 0xae, 0x3a, 0x26, 0x31, 0x90, 0xef, 0x5e, 0x93, + 0xfd, 0x4c, 0xc2, 0x30, 0xa1, 0xab, 0x4d, 0x21, 0xd4, 0x94, 0x26, 0x0a, 0xe5, 0xbf, 0x4f, 0x40, + 0x8a, 0x6f, 0xfe, 0xb6, 0xdc, 0x56, 0xd1, 0x2b, 0x37, 0x11, 0x7d, 0x18, 0x35, 0x12, 0x03, 0x47, + 0x8d, 0x8e, 0x2d, 0xa5, 0xc8, 0x3f, 0x5b, 0xb7, 0x94, 0xef, 0x40, 0xf2, 0x08, 0x0f, 0xe4, 0x7d, + 0x58, 0xff, 0x6b, 0xf2, 0x73, 0xf5, 0x5d, 0x98, 0x6a, 0xd9, 0xa8, 0xea, 0xc8, 0x34, 0x3d, 0x4c, + 0xa9, 0x30, 0x60, 0xbe, 0xf0, 0x15, 0x6d, 0x22, 0xbe, 0x6d, 0xad, 0x88, 0x0e, 0x41, 0x14, 0x1a, + 0x8d, 0xa2, 0xd0, 0xef, 0x25, 0x20, 0x17, 0x98, 0xf8, 0x3a, 0xb6, 0x7c, 0xa4, 0xce, 0xc0, 0x28, + 0xa1, 0xba, 0xd5, 0x69, 0xe8, 0x1a, 0xa8, 0xf8, 0x0c, 0x1b, 0x4d, 0x7e, 0x2d, 0x70, 0x13, 0x93, + 0x1f, 0x0f, 0xc9, 0xc3, 0xfc, 0x62, 0x07, 0x0a, 0x11, 0xe6, 0xe0, 0x7e, 0x65, 0x2c, 0x24, 0x16, + 0x2f, 0x13, 0xd4, 0x2d, 0x88, 0xaa, 0x3a, 0x76, 0x49, 0xd7, 0xc2, 0xe5, 0x43, 0x5a, 0x91, 0x67, + 0xfe, 0x41, 0x12, 0xd4, 0xd8, 0xbb, 0xdd, 0xc0, 0xec, 0xba, 0x9e, 0x26, 0xb4, 0xab, 0x7e, 0x0f, + 0xf2, 0x0d, 0x29, 0x57, 0xdd, 0x64, 0x82, 0x95, 0x09, 0xfc, 0xeb, 0xbd, 0x3c, 0x6e, 0x8b, 0x26, + 0xb4, 0x5c, 0xa3, 0x45, 0x31, 0x5f, 0x81, 0x91, 0x06, 0x3a, 0x77, 0x9b, 0xfe, 0x40, 0x9e, 0x57, + 0x90, 0xfc, 0xe4, 0x5b, 0x22, 0x1b, 0x61, 0xc3, 0xb1, 0x06, 0x79, 0xf4, 0xc2, 0xfa, 0x97, 0x7f, + 0x11, 0xd4, 0x28, 0x0d, 0x0a, 0x9d, 0xf5, 0xfb, 0x90, 0x0a, 0x84, 0x27, 0xa3, 0xe6, 0xab, 0xfd, + 0xc8, 0x5d, 0x0b, 0xa9, 0x3a, 0x95, 0x9c, 0xe8, 0x54, 0x72, 0xf9, 0x25, 0x8c, 0x47, 0xcc, 0x83, + 0x43, 0xb4, 0xbe, 0xcc, 0xe3, 0xab, 0x30, 0x6a, 0x8a, 0xfe, 0xd2, 0x2e, 0x1e, 0xf6, 0x1a, 0x9f, + 0x84, 0xd6, 0x02, 0x9a, 0x72, 0x03, 0x72, 0xb2, 0xee, 0xa0, 0x61, 0x22, 0x9f, 0x9f, 0x82, 0x89, + 0x43, 0x6b, 0xe1, 0x46, 0x45, 0x41, 0xad, 0x42, 0x4a, 0x52, 0xd0, 0x62, 0xa2, 0x94, 0x5c, 0xca, + 0xbc, 0xfd, 0x56, 0x7f, 0xf9, 0x64, 0xc0, 0x30, 0x24, 0x2f, 0xff, 0x40, 0x81, 0xc2, 0x9e, 0x4b, + 0x1c, 0x9f, 0xc6, 0x9e, 0x93, 0x7d, 0x13, 0x66, 0xc4, 0x79, 0x78, 0x83, 0xb7, 0xc4, 0x9f, 0x8e, + 0x0d, 0xe0, 0x8f, 0xa7, 0x38, 0x46, 0x37, 0x70, 0xff, 0x0a, 0xf0, 0x01, 0x9c, 0xce, 0x94, 0xdf, + 0x0d, 0xbc, 0xfc, 0xe3, 0x04, 0x2c, 0xec, 0xc7, 0x5f, 0x0c, 0xaf, 0x21, 0xbb, 0x81, 0xc8, 0xb1, + 0xb3, 0xea, 0xba, 0x54, 0x5c, 0xf6, 0xbc, 0x03, 0x33, 0x87, 0xac, 0x80, 0x4d, 0xbd, 0xe5, 0x03, + 0x11, 0x93, 0x16, 0x15, 0xfe, 0xb8, 0x6f, 0x52, 0x36, 0x47, 0x67, 0x25, 0x55, 0x93, 0xaa, 0xcf, + 0x61, 0x26, 0xde, 0x3d, 0x1a, 0x75, 0xa0, 0x82, 0x37, 0x7b, 0x5b, 0x62, 0xeb, 0x40, 0x65, 0x1a, + 0x37, 0x15, 0x7d, 0x5a, 0x12, 0xb5, 0x51, 0xb5, 0x02, 0x0f, 0x82, 0x21, 0x76, 0xf9, 0xb8, 0xc4, + 0xa4, 0xc5, 0x24, 0x1f, 0xe8, 0x9c, 0xec, 0xd4, 0x9e, 0x63, 0xb2, 0xe1, 0x9e, 0xc2, 0x83, 0x4e, + 0xd2, 0xf8, 0xa0, 0x87, 0x6e, 0x3c, 0xe8, 0xf9, 0xf6, 0x4f, 0x54, 0x62, 0x43, 0x2f, 0xff, 0xa5, + 0x02, 0x6a, 0x20, 0x73, 0xa1, 0x81, 0x3d, 0x57, 0x3c, 0xa3, 0x69, 0xbf, 0xa9, 0x16, 0xb7, 0x5b, + 0x79, 0xda, 0x7a, 0x4b, 0xfd, 0x4b, 0x30, 0x29, 0x5e, 0x4f, 0x0a, 0x88, 0xe0, 0x79, 0xb8, 0x94, + 0x71, 0x8f, 0x57, 0xd5, 0x5f, 0x64, 0x63, 0xfb, 0x93, 0x7f, 0x59, 0x5c, 0x3a, 0x26, 0x7e, 0xbd, + 0x79, 0xb8, 0x6c, 0xb8, 0xf6, 0x8a, 0xfc, 0xce, 0x48, 0xfc, 0xf7, 0x16, 0x35, 0x4f, 0x56, 0x58, + 0x8e, 0x4c, 0x39, 0x01, 0xd5, 0x54, 0x1b, 0x9d, 0xb5, 0x0e, 0x95, 0x96, 0xff, 0x38, 0x01, 0xb3, + 0x5d, 0xed, 0x87, 0x9b, 0xce, 0x7b, 0x30, 0x1b, 0x0e, 0x2c, 0x78, 0xa7, 0x1e, 0x3e, 0x30, 0x15, + 0xf3, 0x99, 0x09, 0x3a, 0x04, 0x4f, 0xd4, 0x83, 0xb7, 0xa4, 0xaf, 0x40, 0x36, 0x76, 0x09, 0x25, + 0x26, 0x94, 0xd6, 0x32, 0xd1, 0x2d, 0x14, 0x55, 0x9b, 0x30, 0xdb, 0xfa, 0x2a, 0x5e, 0xe7, 0x0a, + 0x16, 0x9b, 0x84, 0x24, 0x77, 0x27, 0xef, 0xf5, 0xd2, 0x57, 0x6f, 0xc3, 0xd7, 0xa6, 0x5b, 0x9e, + 0xd2, 0x47, 0x0b, 0xe2, 0x4b, 0x30, 0x63, 0x12, 0xfa, 0xa2, 0x89, 0x2c, 0x72, 0x44, 0xb0, 0x19, + 0xb7, 0xb3, 0x21, 0x3e, 0xc8, 0xa9, 0x78, 0x73, 0x68, 0x62, 0xe5, 0xbf, 0x4a, 0xc0, 0xc4, 0x26, + 0xc6, 0xeb, 0x84, 0x8a, 0xb3, 0x7b, 0x22, 0x37, 0x24, 0x35, 0x98, 0x10, 0xde, 0xc3, 0x94, 0x2d, + 0xe2, 0xd2, 0x6a, 0x90, 0xcb, 0x63, 0x4e, 0x1f, 0x00, 0xf3, 0x2b, 0xab, 0x1a, 0x4c, 0xf8, 0x5d, + 0x40, 0x07, 0x49, 0x53, 0xfc, 0x0e, 0xd0, 0x55, 0xc8, 0xc9, 0x0f, 0x1e, 0x90, 0xcd, 0x4f, 0x2a, + 0x92, 0xfd, 0x3c, 0xd8, 0xcd, 0x0a, 0x9a, 0x0a, 0x27, 0x61, 0xe1, 0xfb, 0xd4, 0xb5, 0x9a, 0xf6, + 0x40, 0x41, 0x58, 0x92, 0x94, 0x7f, 0xbd, 0x55, 0x84, 0x35, 0xa3, 0x8e, 0xcd, 0xa6, 0xc5, 0x9f, + 0xc4, 0x1e, 0x36, 0x0d, 0xa6, 0x85, 0xe8, 0x70, 0x6b, 0x48, 0xcb, 0x88, 0x3a, 0x71, 0xf6, 0xf2, + 0x1a, 0x8c, 0xc9, 0x2e, 0xe1, 0x17, 0x13, 0xe2, 0xb9, 0x48, 0x5e, 0x54, 0x87, 0x9f, 0x48, 0xb4, + 0x1b, 0x5e, 0xb2, 0xd3, 0xf0, 0x76, 0x00, 0x7c, 0x22, 0x77, 0xa3, 0x81, 0x67, 0x58, 0xe9, 0x65, + 0x69, 0x5d, 0xd4, 0xae, 0xa5, 0x7d, 0xf9, 0x8b, 0xf6, 0xb2, 0xa8, 0xe1, 0x5e, 0x16, 0xb5, 0x0d, + 0x6a, 0x1b, 0xf2, 0xfe, 0xfe, 0x96, 0xaa, 0xc2, 0x90, 0x1f, 0x84, 0x9e, 0x21, 0x8d, 0xff, 0x66, + 0xc1, 0xd8, 0xf7, 0xad, 0x8e, 0xa7, 0x32, 0x59, 0xdf, 0xb7, 0xa2, 0xab, 0xf2, 0xdf, 0x57, 0x20, + 0xfb, 0x11, 0x17, 0xb4, 0x86, 0x0d, 0xd7, 0x33, 0xf9, 0x55, 0x1f, 0x37, 0x22, 0xa9, 0x31, 0x65, + 0x90, 0xab, 0x3e, 0x46, 0x28, 0xd0, 0x18, 0x8e, 0x1f, 0xc7, 0x19, 0xe4, 0xa4, 0xdb, 0x8f, 0x70, + 0xca, 0xbf, 0xa5, 0x40, 0xbe, 0x22, 0x22, 0xb3, 0x74, 0x40, 0x6a, 0x11, 0x46, 0x65, 0xac, 0x96, + 0x21, 0x3f, 0x28, 0xaa, 0x18, 0x46, 0x3f, 0x47, 0x67, 0x18, 0x60, 0x97, 0x7f, 0x45, 0x81, 0x2c, + 0x4f, 0x89, 0x85, 0xcc, 0x68, 0xef, 0xdd, 0xdc, 0x33, 0x98, 0xb4, 0x90, 0x8f, 0xa9, 0xaf, 0x33, + 0xe7, 0xc2, 0x53, 0x46, 0x37, 0x1a, 0xe1, 0x6b, 0xd7, 0x79, 0x2b, 0xc9, 0x44, 0x53, 0x05, 0x48, + 0x9c, 0x6f, 0xf9, 0x4b, 0x90, 0x8b, 0x12, 0x97, 0xea, 0x3a, 0xbf, 0xf8, 0x6c, 0x49, 0xc0, 0x44, + 0xbc, 0xce, 0x6a, 0xb9, 0x78, 0x06, 0x46, 0xcb, 0x7f, 0xa4, 0x40, 0x26, 0x06, 0xa4, 0xde, 0x87, + 0x74, 0x7b, 0xd0, 0x89, 0x2a, 0x6e, 0xb3, 0x55, 0x8c, 0x6f, 0x53, 0x93, 0x37, 0xd8, 0xa6, 0x96, + 0x6d, 0x18, 0x16, 0x9f, 0xd8, 0x3c, 0x01, 0xa5, 0x31, 0x88, 0x31, 0x2a, 0x0d, 0x46, 0xf2, 0x62, + 0x90, 0x31, 0x2b, 0x2f, 0xca, 0xbf, 0xab, 0xc0, 0x62, 0x25, 0x38, 0x11, 0x8e, 0x44, 0xdb, 0xb2, + 0x42, 0xfa, 0xba, 0x51, 0xdd, 0x85, 0xbc, 0xb4, 0x08, 0x61, 0xff, 0x81, 0xba, 0xfb, 0x78, 0x29, + 0x20, 0x99, 0xe5, 0xec, 0x58, 0x89, 0x96, 0xbf, 0xa3, 0xc0, 0xfd, 0x70, 0x64, 0x95, 0x2e, 0xc3, + 0xba, 0x7a, 0x55, 0xdc, 0xf9, 0x58, 0x28, 0x64, 0xe3, 0xcd, 0xbd, 0xcd, 0x7f, 0x33, 0x74, 0xfe, + 0x22, 0xdb, 0xef, 0xc9, 0x35, 0x3e, 0x23, 0x99, 0x4a, 0x05, 0x71, 0xa0, 0xc2, 0xf2, 0x7e, 0xc7, + 0xb5, 0xc3, 0x4b, 0xfe, 0xee, 0x79, 0xff, 0x1c, 0xcb, 0xfb, 0xe5, 0xa5, 0x7f, 0x82, 0x7b, 0xc3, + 0xb0, 0x5c, 0xc6, 0xa0, 0x7e, 0xe0, 0x21, 0xc7, 0xaf, 0x34, 0xfd, 0xba, 0xeb, 0x91, 0x8f, 0x85, + 0xf3, 0x2f, 0xc2, 0xe8, 0x31, 0xab, 0x95, 0x5f, 0x3b, 0xa7, 0xb5, 0xa0, 0xa8, 0xbe, 0x03, 0x23, + 0x32, 0xe8, 0x25, 0xfa, 0x09, 0x7a, 0xb2, 0x73, 0xf9, 0xdb, 0x90, 0xa9, 0xf0, 0xf9, 0x71, 0x66, + 0x11, 0xbe, 0xd7, 0x8a, 0xef, 0xdd, 0x14, 0xff, 0xbb, 0x0a, 0xe4, 0x37, 0x8e, 0x8e, 0x70, 0x5f, + 0x3c, 0xaa, 0x30, 0xee, 0x60, 0x5f, 0x17, 0x45, 0xf9, 0xf1, 0x62, 0x7f, 0xec, 0xc6, 0x1c, 0xec, + 0x7f, 0x20, 0xc8, 0xf8, 0x67, 0x8a, 0xea, 0x2c, 0xa4, 0x08, 0xd5, 0x4f, 0x91, 0x25, 0x8f, 0x7c, + 0x52, 0xda, 0x28, 0xa1, 0x1f, 0xb1, 0xe2, 0x63, 0x1f, 0xee, 0xf7, 0xfa, 0x7c, 0x4e, 0x05, 0x18, + 0xd9, 0x71, 0x0f, 0x5d, 0xf3, 0xbc, 0x70, 0x4f, 0x2d, 0xc3, 0xc2, 0x2a, 0x3e, 0x26, 0xce, 0xaa, + 0xe5, 0x1a, 0x27, 0xd8, 0xab, 0xd9, 0xc8, 0xf3, 0xd7, 0x5c, 0xc7, 0xf7, 0x90, 0xe1, 0xd3, 0x5d, + 0xc7, 0x3a, 0x2f, 0x28, 0xea, 0x34, 0xa8, 0x5d, 0xea, 0x13, 0x6a, 0x16, 0x52, 0x1b, 0xa7, 0xd8, + 0x3b, 0x77, 0x1d, 0x5c, 0x48, 0x3e, 0xde, 0x0f, 0xec, 0x50, 0x3c, 0xae, 0x51, 0xc7, 0x20, 0x73, + 0xe0, 0xd0, 0x06, 0x36, 0x78, 0xcc, 0x2c, 0xdc, 0x63, 0x6c, 0x85, 0x26, 0x0a, 0x0a, 0xfb, 0xbd, + 0x87, 0x9a, 0x14, 0x9b, 0x85, 0x84, 0x9a, 0x07, 0x58, 0xc7, 0xb6, 0x6b, 0x11, 0x5a, 0xc7, 0x66, + 0x21, 0xa9, 0x66, 0x60, 0x94, 0x3f, 0x4a, 0xc5, 0x66, 0x61, 0xe8, 0xf1, 0x5f, 0x24, 0xe4, 0xfb, + 0x09, 0x7e, 0xe8, 0x5b, 0x82, 0xcc, 0xc1, 0x4e, 0x6d, 0x6f, 0x63, 0xad, 0xba, 0x59, 0xdd, 0x58, + 0x2f, 0xdc, 0x9b, 0x1b, 0xbb, 0xb8, 0x2c, 0xc5, 0xab, 0xd8, 0x7e, 0x7e, 0xf5, 0xe0, 0x59, 0x41, + 0x99, 0x1b, 0xbd, 0xb8, 0x2c, 0xb1, 0x9f, 0x2c, 0x1a, 0xd7, 0x36, 0xb6, 0xb6, 0x0a, 0x89, 0xb9, + 0xd4, 0xc5, 0x65, 0x89, 0xff, 0x66, 0x76, 0x59, 0xdb, 0xdf, 0xdd, 0xd3, 0x59, 0xd7, 0xe4, 0x5c, + 0xf6, 0xe2, 0xb2, 0x14, 0x96, 0x99, 0xfb, 0xe5, 0xbf, 0x39, 0xd1, 0xd0, 0x5c, 0xee, 0xe2, 0xb2, + 0x14, 0x55, 0x30, 0xca, 0xfd, 0xca, 0x87, 0x1b, 0x9c, 0x72, 0x58, 0x50, 0x06, 0x65, 0x46, 0xc9, + 0x7f, 0x73, 0xca, 0x11, 0x41, 0x19, 0x56, 0xa8, 0xd3, 0x30, 0xb2, 0x7a, 0xf0, 0x4c, 0xdf, 0xdb, + 0x2d, 0x8c, 0xce, 0xc1, 0xc5, 0x65, 0x49, 0x96, 0x98, 0xb5, 0xb0, 0x76, 0xd6, 0x90, 0x9a, 0xcb, + 0x5c, 0x5c, 0x96, 0x82, 0xa2, 0xba, 0x00, 0xc0, 0xfa, 0x54, 0xf6, 0x77, 0xb7, 0xab, 0x6b, 0x85, + 0xf4, 0x5c, 0xfe, 0xe2, 0xb2, 0x14, 0xab, 0x61, 0xd2, 0xe0, 0x5d, 0x65, 0x07, 0x10, 0xd2, 0x88, + 0x55, 0x3d, 0xfe, 0x53, 0x05, 0x72, 0x1b, 0xc1, 0x59, 0x12, 0x97, 0xe0, 0x7d, 0x28, 0xc6, 0xb4, + 0xd2, 0xd2, 0x26, 0x54, 0x24, 0x74, 0x58, 0x50, 0xd4, 0x1c, 0xa4, 0xf9, 0x9d, 0xcc, 0x26, 0xb1, + 0xac, 0x42, 0x42, 0x9d, 0x83, 0x69, 0x5e, 0xdc, 0x46, 0xbe, 0x51, 0xd7, 0xc4, 0x57, 0xad, 0x5c, + 0x31, 0x85, 0x24, 0x33, 0x90, 0xa8, 0x6d, 0x07, 0xbf, 0x14, 0xf5, 0x43, 0xea, 0x14, 0x8c, 0xcb, + 0x8f, 0xea, 0xe4, 0x97, 0xaa, 0xc4, 0x75, 0x0a, 0xc3, 0x0c, 0x4a, 0xbc, 0x3a, 0x6e, 0x7f, 0xdb, + 0x58, 0x18, 0x79, 0xfc, 0x9d, 0x40, 0xdf, 0xdb, 0x88, 0x9e, 0x30, 0x99, 0x1d, 0xec, 0x1c, 0xd4, + 0xb8, 0xaa, 0xb9, 0xcc, 0x44, 0x89, 0x69, 0xb9, 0xb2, 0x13, 0x6a, 0xb9, 0xb2, 0xf3, 0x8c, 0x49, + 0x51, 0xdb, 0xf8, 0xe0, 0x60, 0xab, 0xa2, 0x15, 0x12, 0x42, 0x8a, 0xb2, 0xc8, 0xa4, 0xb4, 0xb6, + 0xbb, 0xb3, 0x5e, 0xdd, 0xaf, 0xee, 0xee, 0x54, 0x98, 0x46, 0xb9, 0x94, 0x62, 0x55, 0xea, 0x32, + 0xcc, 0xac, 0x57, 0xb5, 0x8d, 0x35, 0x56, 0x64, 0x8a, 0xd4, 0x77, 0x35, 0xfd, 0x69, 0xf5, 0x83, + 0xa7, 0x1b, 0x5a, 0x21, 0x35, 0x37, 0x7e, 0x71, 0x59, 0xca, 0xb5, 0x54, 0xb6, 0xf6, 0xe7, 0xe2, + 0xde, 0xd5, 0xf4, 0xad, 0xdd, 0x9f, 0xdf, 0xd0, 0x0a, 0x05, 0xd1, 0xbf, 0xa5, 0x52, 0x9d, 0x87, + 0xcc, 0xfe, 0xb3, 0xbd, 0x0d, 0x7d, 0xbb, 0xa2, 0x7d, 0xb8, 0xb1, 0x5f, 0x28, 0x89, 0xa9, 0x88, + 0x92, 0x3a, 0x0b, 0xc0, 0x1b, 0xb7, 0xaa, 0xdb, 0xd5, 0xfd, 0xc2, 0xfb, 0x73, 0xe9, 0x8b, 0xcb, + 0xd2, 0x30, 0x2f, 0xac, 0xd6, 0xbf, 0xff, 0xe9, 0x82, 0xf2, 0xc3, 0x4f, 0x17, 0x94, 0x7f, 0xfd, + 0x74, 0x41, 0xf9, 0xee, 0x67, 0x0b, 0xf7, 0x7e, 0xf8, 0xd9, 0xc2, 0xbd, 0x7f, 0xfc, 0x6c, 0xe1, + 0xde, 0x37, 0x76, 0x62, 0x69, 0x52, 0x35, 0x70, 0xe0, 0x5b, 0xe8, 0x90, 0xae, 0x84, 0xee, 0xfc, + 0x2d, 0xc3, 0xf5, 0x70, 0xbc, 0x58, 0x47, 0xc4, 0x59, 0xb1, 0x5d, 0x96, 0xae, 0xd3, 0xe8, 0x6f, + 0x64, 0xf0, 0x94, 0xea, 0x70, 0x84, 0x7f, 0x99, 0xf9, 0x33, 0xff, 0x1d, 0x00, 0x00, 0xff, 0xff, + 0x6a, 0xde, 0xbc, 0xbe, 0x46, 0x43, 0x00, 0x00, } func (this *Params) Equal(that interface{}) bool { @@ -4088,6 +4112,13 @@ func (m *DerivativeMarket) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.QuoteDecimals != 0 { + i = encodeVarintExchange(dAtA, i, uint64(m.QuoteDecimals)) + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xa0 + } if m.AdminPermissions != 0 { i = encodeVarintExchange(dAtA, i, uint64(m.AdminPermissions)) i-- @@ -4271,6 +4302,13 @@ func (m *BinaryOptionsMarket) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.QuoteDecimals != 0 { + i = encodeVarintExchange(dAtA, i, uint64(m.QuoteDecimals)) + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xa0 + } if m.AdminPermissions != 0 { i = encodeVarintExchange(dAtA, i, uint64(m.AdminPermissions)) i-- @@ -4741,6 +4779,16 @@ func (m *SpotMarket) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.QuoteDecimals != 0 { + i = encodeVarintExchange(dAtA, i, uint64(m.QuoteDecimals)) + i-- + dAtA[i] = 0x78 + } + if m.BaseDecimals != 0 { + i = encodeVarintExchange(dAtA, i, uint64(m.BaseDecimals)) + i-- + dAtA[i] = 0x70 + } if m.AdminPermissions != 0 { i = encodeVarintExchange(dAtA, i, uint64(m.AdminPermissions)) i-- @@ -7123,6 +7171,9 @@ func (m *DerivativeMarket) Size() (n int) { if m.AdminPermissions != 0 { n += 2 + sovExchange(uint64(m.AdminPermissions)) } + if m.QuoteDecimals != 0 { + n += 2 + sovExchange(uint64(m.QuoteDecimals)) + } return n } @@ -7190,6 +7241,9 @@ func (m *BinaryOptionsMarket) Size() (n int) { if m.AdminPermissions != 0 { n += 2 + sovExchange(uint64(m.AdminPermissions)) } + if m.QuoteDecimals != 0 { + n += 2 + sovExchange(uint64(m.QuoteDecimals)) + } return n } @@ -7347,6 +7401,12 @@ func (m *SpotMarket) Size() (n int) { if m.AdminPermissions != 0 { n += 1 + sovExchange(uint64(m.AdminPermissions)) } + if m.BaseDecimals != 0 { + n += 1 + sovExchange(uint64(m.BaseDecimals)) + } + if m.QuoteDecimals != 0 { + n += 1 + sovExchange(uint64(m.QuoteDecimals)) + } return n } @@ -9739,6 +9799,25 @@ func (m *DerivativeMarket) Unmarshal(dAtA []byte) error { break } } + case 20: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field QuoteDecimals", wireType) + } + m.QuoteDecimals = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowExchange + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.QuoteDecimals |= uint32(b&0x7F) << shift + if b < 0x80 { + break + } + } default: iNdEx = preIndex skippy, err := skipExchange(dAtA[iNdEx:]) @@ -10335,6 +10414,25 @@ func (m *BinaryOptionsMarket) Unmarshal(dAtA []byte) error { break } } + case 20: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field QuoteDecimals", wireType) + } + m.QuoteDecimals = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowExchange + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.QuoteDecimals |= uint32(b&0x7F) << shift + if b < 0x80 { + break + } + } default: iNdEx = preIndex skippy, err := skipExchange(dAtA[iNdEx:]) @@ -11643,6 +11741,44 @@ func (m *SpotMarket) Unmarshal(dAtA []byte) error { break } } + case 14: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field BaseDecimals", wireType) + } + m.BaseDecimals = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowExchange + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.BaseDecimals |= uint32(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 15: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field QuoteDecimals", wireType) + } + m.QuoteDecimals = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowExchange + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.QuoteDecimals |= uint32(b&0x7F) << shift + if b < 0x80 { + break + } + } default: iNdEx = preIndex skippy, err := skipExchange(dAtA[iNdEx:]) diff --git a/chain/exchange/types/msgs.go b/chain/exchange/types/msgs.go index c1fdf2c0..e2236d37 100644 --- a/chain/exchange/types/msgs.go +++ b/chain/exchange/types/msgs.go @@ -10,6 +10,7 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/ethereum/go-ethereum/common" + "github.com/InjectiveLabs/sdk-go/chain/helpers" oracletypes "github.com/InjectiveLabs/sdk-go/chain/oracle/types" wasmxtypes "github.com/InjectiveLabs/sdk-go/chain/wasmx/types" ) @@ -562,6 +563,13 @@ func (msg MsgInstantSpotMarketLaunch) ValidateBasic() error { return errors.Wrap(ErrInvalidNotional, err.Error()) } + if msg.BaseDecimals > MaxDecimals { + return errors.Wrap(ErrInvalidDenomDecimal, "base decimals is invalid") + } + if msg.QuoteDecimals > MaxDecimals { + return errors.Wrap(ErrInvalidDenomDecimal, "quote decimals is invalid") + } + return nil } @@ -1827,16 +1835,16 @@ func (msg MsgBatchUpdateOrders) ValidateBasic() error { return err } - hasDuplicateSpotMarketIDs := HasDuplicatesHexHash(msg.SpotMarketIdsToCancelAll) + hasDuplicateSpotMarketIDs := helpers.HasDuplicate(msg.SpotMarketIdsToCancelAll) if hasDuplicateSpotMarketIDs { return errors.Wrap(ErrInvalidBatchMsgUpdate, "msg contains duplicate cancel all spot market ids") } - hasDuplicateDerivativesMarketIDs := HasDuplicatesHexHash(msg.DerivativeMarketIdsToCancelAll) + hasDuplicateDerivativesMarketIDs := helpers.HasDuplicate(msg.DerivativeMarketIdsToCancelAll) if hasDuplicateDerivativesMarketIDs { return errors.Wrap(ErrInvalidBatchMsgUpdate, "msg contains duplicate cancel all derivative market ids") } - hasDuplicateBinaryOptionsMarketIDs := HasDuplicatesHexHash(msg.BinaryOptionsMarketIdsToCancelAll) + hasDuplicateBinaryOptionsMarketIDs := helpers.HasDuplicate(msg.BinaryOptionsMarketIdsToCancelAll) if hasDuplicateBinaryOptionsMarketIDs { return errors.Wrap(ErrInvalidBatchMsgUpdate, "msg contains duplicate cancel all binary options market ids") } diff --git a/chain/exchange/types/params.go b/chain/exchange/types/params.go index fbec3e19..e44b5cbb 100644 --- a/chain/exchange/types/params.go +++ b/chain/exchange/types/params.go @@ -35,6 +35,8 @@ const ( MaxOracleScaleFactor uint32 = 18 + MaxDecimals uint32 = 18 + MaxTickerLength int = 40 // MaxHistoricalTradeRecordAge is the maximum age of trade records to track. @@ -47,6 +49,8 @@ const ( MaxGranterDelegations = 25 ) +var DefaultInjAuctionMaxCap = math.NewIntWithDecimal(10_000, 18) + var MaxBinaryOptionsOrderPrice = math.LegacyOneDec() // would be $0.000001 for USDT @@ -190,31 +194,34 @@ func (p *Params) ParamSetPairs() paramtypes.ParamSetPairs { // DefaultParams returns a default set of parameters. func DefaultParams() Params { return Params{ - SpotMarketInstantListingFee: sdk.NewCoin("inj", math.NewIntWithDecimal(SpotMarketInstantListingFee, 18)), - DerivativeMarketInstantListingFee: sdk.NewCoin("inj", math.NewIntWithDecimal(DerivativeMarketInstantListingFee, 18)), - DefaultSpotMakerFeeRate: math.LegacyNewDecWithPrec(-1, 4), // default -0.01% maker fees - DefaultSpotTakerFeeRate: math.LegacyNewDecWithPrec(1, 3), // default 0.1% taker fees - DefaultDerivativeMakerFeeRate: math.LegacyNewDecWithPrec(-1, 4), // default -0.01% maker fees - DefaultDerivativeTakerFeeRate: math.LegacyNewDecWithPrec(1, 3), // default 0.1% taker fees - DefaultInitialMarginRatio: math.LegacyNewDecWithPrec(5, 2), // default 5% initial margin ratio - DefaultMaintenanceMarginRatio: math.LegacyNewDecWithPrec(2, 2), // default 2% maintenance margin ratio - DefaultFundingInterval: DefaultFundingIntervalSeconds, - FundingMultiple: DefaultFundingMultipleSeconds, - RelayerFeeShareRate: math.LegacyNewDecWithPrec(40, 2), // default 40% relayer fee share - DefaultHourlyFundingRateCap: math.LegacyNewDecWithPrec(625, 6), // default 0.0625% max hourly funding rate - DefaultHourlyInterestRate: math.LegacyNewDecWithPrec(416666, 11), // 0.01% daily interest rate = 0.0001 / 24 = 0.00000416666 - MaxDerivativeOrderSideCount: MaxDerivativeOrderSideCount, - InjRewardStakedRequirementThreshold: math.NewIntWithDecimal(100, 18), // 100 INJ - TradingRewardsVestingDuration: 604800, // 7 days - LiquidatorRewardShareRate: math.LegacyNewDecWithPrec(5, 2), // 5% liquidator reward - BinaryOptionsMarketInstantListingFee: sdk.NewCoin("inj", math.NewIntWithDecimal(BinaryOptionsMarketInstantListingFee, 18)), - AtomicMarketOrderAccessLevel: AtomicMarketOrderAccessLevel_SmartContractsOnly, - SpotAtomicMarketOrderFeeMultiplier: math.LegacyNewDecWithPrec(25, 1), // default 2.5 multiplier - DerivativeAtomicMarketOrderFeeMultiplier: math.LegacyNewDecWithPrec(25, 1), // default 2.5 multiplier - BinaryOptionsAtomicMarketOrderFeeMultiplier: math.LegacyNewDecWithPrec(25, 1), // default 2.5 multiplier - MinimalProtocolFeeRate: math.LegacyMustNewDecFromStr("0.00005"), // default 0.005% minimal fee rate - IsInstantDerivativeMarketLaunchEnabled: false, - PostOnlyModeHeightThreshold: 0, + SpotMarketInstantListingFee: sdk.NewCoin("inj", math.NewIntWithDecimal(SpotMarketInstantListingFee, 18)), + DerivativeMarketInstantListingFee: sdk.NewCoin("inj", math.NewIntWithDecimal(DerivativeMarketInstantListingFee, 18)), + DefaultSpotMakerFeeRate: math.LegacyNewDecWithPrec(-1, 4), // default -0.01% maker fees + DefaultSpotTakerFeeRate: math.LegacyNewDecWithPrec(1, 3), // default 0.1% taker fees + DefaultDerivativeMakerFeeRate: math.LegacyNewDecWithPrec(-1, 4), // default -0.01% maker fees + DefaultDerivativeTakerFeeRate: math.LegacyNewDecWithPrec(1, 3), // default 0.1% taker fees + DefaultInitialMarginRatio: math.LegacyNewDecWithPrec(5, 2), // default 5% initial margin ratio + DefaultMaintenanceMarginRatio: math.LegacyNewDecWithPrec(2, 2), // default 2% maintenance margin ratio + DefaultFundingInterval: DefaultFundingIntervalSeconds, + FundingMultiple: DefaultFundingMultipleSeconds, + RelayerFeeShareRate: math.LegacyNewDecWithPrec(40, 2), // default 40% relayer fee share + DefaultHourlyFundingRateCap: math.LegacyNewDecWithPrec(625, 6), // default 0.0625% max hourly funding rate + DefaultHourlyInterestRate: math.LegacyNewDecWithPrec(416666, 11), // 0.01% daily interest rate = 0.0001 / 24 = 0.00000416666 + MaxDerivativeOrderSideCount: MaxDerivativeOrderSideCount, + InjRewardStakedRequirementThreshold: math.NewIntWithDecimal(100, 18), // 100 INJ + TradingRewardsVestingDuration: 604800, // 7 days + LiquidatorRewardShareRate: math.LegacyNewDecWithPrec(5, 2), // 5% liquidator reward + BinaryOptionsMarketInstantListingFee: sdk.NewCoin("inj", math.NewIntWithDecimal(BinaryOptionsMarketInstantListingFee, 18)), + AtomicMarketOrderAccessLevel: AtomicMarketOrderAccessLevel_SmartContractsOnly, + SpotAtomicMarketOrderFeeMultiplier: math.LegacyNewDecWithPrec(25, 1), // default 2.5 multiplier + DerivativeAtomicMarketOrderFeeMultiplier: math.LegacyNewDecWithPrec(25, 1), // default 2.5 multiplier + BinaryOptionsAtomicMarketOrderFeeMultiplier: math.LegacyNewDecWithPrec(25, 1), // default 2.5 multiplier + MinimalProtocolFeeRate: math.LegacyMustNewDecFromStr("0.00005"), // default 0.005% minimal fee rate + IsInstantDerivativeMarketLaunchEnabled: false, + PostOnlyModeHeightThreshold: 0, + MarginDecreasePriceTimestampThresholdSeconds: 60, + ExchangeAdmins: []string{}, + InjAuctionMaxCap: DefaultInjAuctionMaxCap, } } diff --git a/chain/exchange/types/proposal.go b/chain/exchange/types/proposal.go index 333507e2..9cdde119 100644 --- a/chain/exchange/types/proposal.go +++ b/chain/exchange/types/proposal.go @@ -12,6 +12,7 @@ import ( gov "github.com/cosmos/cosmos-sdk/x/gov/types" "github.com/ethereum/go-ethereum/common" + "github.com/InjectiveLabs/sdk-go/chain/helpers" oracletypes "github.com/InjectiveLabs/sdk-go/chain/oracle/types" ) @@ -213,7 +214,7 @@ func (p *BatchExchangeModificationProposal) ValidateBasic() error { } // NewSpotMarketParamUpdateProposal returns new instance of SpotMarketParamUpdateProposal -func NewSpotMarketParamUpdateProposal(title, description string, marketID common.Hash, makerFeeRate, takerFeeRate, relayerFeeShareRate, minPriceTickSize, minQuantityTickSize, minNotional *math.LegacyDec, status MarketStatus, ticker string) *SpotMarketParamUpdateProposal { +func NewSpotMarketParamUpdateProposal(title, description string, marketID common.Hash, makerFeeRate, takerFeeRate, relayerFeeShareRate, minPriceTickSize, minQuantityTickSize, minNotional *math.LegacyDec, status MarketStatus, ticker string, baseDecimals, quoteDecimals uint32) *SpotMarketParamUpdateProposal { return &SpotMarketParamUpdateProposal{ title, description, @@ -227,6 +228,8 @@ func NewSpotMarketParamUpdateProposal(title, description string, marketID common ticker, minNotional, nil, + baseDecimals, + quoteDecimals, } } @@ -326,6 +329,13 @@ func (p *SpotMarketParamUpdateProposal) ValidateBasic() error { return errors.Wrap(ErrInvalidMarketStatus, p.Status.String()) } + if p.BaseDecimals > MaxDecimals { + return errors.Wrap(ErrInvalidDenomDecimal, "base decimals is invalid") + } + if p.QuoteDecimals > MaxDecimals { + return errors.Wrap(ErrInvalidDenomDecimal, "quote decimals is invalid") + } + return govtypes.ValidateAbstract(p) } @@ -341,6 +351,8 @@ func NewSpotMarketLaunchProposal( minNotional math.LegacyDec, makerFeeRate *math.LegacyDec, takerFeeRate *math.LegacyDec, + baseDecimals uint32, + quoteDecimals uint32, ) *SpotMarketLaunchProposal { return &SpotMarketLaunchProposal{ Title: title, @@ -353,6 +365,8 @@ func NewSpotMarketLaunchProposal( MinNotional: minNotional, MakerFeeRate: makerFeeRate, TakerFeeRate: takerFeeRate, + BaseDecimals: baseDecimals, + QuoteDecimals: quoteDecimals, } } @@ -424,6 +438,13 @@ func (p *SpotMarketLaunchProposal) ValidateBasic() error { } } + if p.BaseDecimals > MaxDecimals { + return errors.Wrap(ErrInvalidDenomDecimal, "base decimals is invalid") + } + if p.QuoteDecimals > MaxDecimals { + return errors.Wrap(ErrInvalidDenomDecimal, "quote decimals is invalid") + } + return govtypes.ValidateAbstract(p) } @@ -697,7 +718,7 @@ func (d *DenomDecimals) Validate() error { return errors.Wrap(sdkerrors.ErrInvalidCoins, d.Denom) } - if d.Decimals <= 0 || d.Decimals > uint64(MaxOracleScaleFactor) { + if d.Decimals > uint64(MaxDecimals) { return errors.Wrapf(ErrInvalidDenomDecimal, "invalid decimals passed: %d", d.Decimals) } return nil @@ -1089,7 +1110,7 @@ func (p *TradingRewardPendingPointsUpdateProposal) ValidateBasic() error { } } - hasDuplicateAccountAddresses := HasDuplicates(accountAddresses) + hasDuplicateAccountAddresses := helpers.HasDuplicate(accountAddresses) if hasDuplicateAccountAddresses { return errors.Wrap(ErrInvalidTradingRewardsPendingPointsUpdate, "account address cannot have duplicates") } @@ -1185,7 +1206,7 @@ func (t *TradingRewardCampaignBoostInfo) ValidateBasic() error { return errors.Wrap(ErrInvalidTradingRewardCampaign, "boosted derivative market ids is not matching derivative market multipliers") } - hasDuplicatesInMarkets := HasDuplicates(t.BoostedSpotMarketIds) || HasDuplicates(t.BoostedDerivativeMarketIds) + hasDuplicatesInMarkets := helpers.HasDuplicate(t.BoostedSpotMarketIds) || helpers.HasDuplicate(t.BoostedDerivativeMarketIds) if hasDuplicatesInMarkets { return errors.Wrap(ErrInvalidTradingRewardCampaign, "campaign contains duplicate boosted market ids") } @@ -1241,7 +1262,7 @@ func (c *TradingRewardCampaignInfo) ValidateBasic() error { return errors.Wrap(ErrInvalidTradingRewardCampaign, "campaign quote denoms cannot be nil") } - hasTradingRewardBoostInfoDefined := c != nil && c.TradingRewardBoostInfo != nil + hasTradingRewardBoostInfoDefined := c.TradingRewardBoostInfo != nil if hasTradingRewardBoostInfoDefined { if err := c.TradingRewardBoostInfo.ValidateBasic(); err != nil { return err @@ -1254,7 +1275,7 @@ func (c *TradingRewardCampaignInfo) ValidateBasic() error { } } - hasDuplicatesInDisqualifiedMarkets := c != nil && HasDuplicates(c.DisqualifiedMarketIds) + hasDuplicatesInDisqualifiedMarkets := helpers.HasDuplicate(c.DisqualifiedMarketIds) if hasDuplicatesInDisqualifiedMarkets { return errors.Wrap(ErrInvalidTradingRewardCampaign, "campaign contains duplicate disqualified market ids") } @@ -1278,7 +1299,7 @@ func validateCampaignRewardPool(pool *CampaignRewardPool, campaignDurationSecond prevStartTimestamp = pool.StartTimestamp - hasDuplicatesInEpochRewards := HasDuplicatesCoin(pool.MaxCampaignRewards) + hasDuplicatesInEpochRewards := helpers.HasDuplicateCoins(pool.MaxCampaignRewards) if hasDuplicatesInEpochRewards { return 0, errors.Wrap(ErrInvalidTradingRewardCampaign, "reward pool campaign contains duplicate market coins") } @@ -1340,7 +1361,7 @@ func (p *FeeDiscountProposal) ValidateBasic() error { return errors.Wrap(ErrInvalidFeeDiscountSchedule, "new fee discount schedule must have have bucket durations of at least 10 seconds") } - if HasDuplicates(p.Schedule.QuoteDenoms) { + if helpers.HasDuplicate(p.Schedule.QuoteDenoms) { return errors.Wrap(ErrInvalidFeeDiscountSchedule, "new fee discount schedule cannot have duplicate quote denoms") } @@ -1350,7 +1371,7 @@ func (p *FeeDiscountProposal) ValidateBasic() error { } } - if HasDuplicates(p.Schedule.DisqualifiedMarketIds) { + if helpers.HasDuplicate(p.Schedule.DisqualifiedMarketIds) { return errors.Wrap(ErrInvalidFeeDiscountSchedule, "new fee discount schedule cannot have duplicate disqualified market ids") } diff --git a/chain/exchange/types/proposal.pb.go b/chain/exchange/types/proposal.pb.go index 1a20dfa1..ad50518d 100644 --- a/chain/exchange/types/proposal.pb.go +++ b/chain/exchange/types/proposal.pb.go @@ -81,6 +81,10 @@ type SpotMarketParamUpdateProposal struct { // orders in the market MinNotional *cosmossdk_io_math.LegacyDec `protobuf:"bytes,11,opt,name=min_notional,json=minNotional,proto3,customtype=cosmossdk.io/math.LegacyDec" json:"min_notional,omitempty"` AdminInfo *AdminInfo `protobuf:"bytes,12,opt,name=admin_info,json=adminInfo,proto3" json:"admin_info,omitempty"` + // base token decimals + BaseDecimals uint32 `protobuf:"varint,13,opt,name=base_decimals,json=baseDecimals,proto3" json:"base_decimals,omitempty"` + // quote token decimals + QuoteDecimals uint32 `protobuf:"varint,14,opt,name=quote_decimals,json=quoteDecimals,proto3" json:"quote_decimals,omitempty"` } func (m *SpotMarketParamUpdateProposal) Reset() { *m = SpotMarketParamUpdateProposal{} } @@ -227,6 +231,10 @@ type SpotMarketLaunchProposal struct { // min_notional defines the minimum notional for orders in the market MinNotional cosmossdk_io_math.LegacyDec `protobuf:"bytes,10,opt,name=min_notional,json=minNotional,proto3,customtype=cosmossdk.io/math.LegacyDec" json:"min_notional"` AdminInfo *AdminInfo `protobuf:"bytes,11,opt,name=admin_info,json=adminInfo,proto3" json:"admin_info,omitempty"` + // base token decimals + BaseDecimals uint32 `protobuf:"varint,14,opt,name=base_decimals,json=baseDecimals,proto3" json:"base_decimals,omitempty"` + // quote token decimals + QuoteDecimals uint32 `protobuf:"varint,15,opt,name=quote_decimals,json=quoteDecimals,proto3" json:"quote_decimals,omitempty"` } func (m *SpotMarketLaunchProposal) Reset() { *m = SpotMarketLaunchProposal{} } @@ -1221,160 +1229,163 @@ func init() { } var fileDescriptor_32e9ec9b6b22477c = []byte{ - // 2444 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5b, 0xcb, 0x8f, 0x1b, 0x49, - 0xfd, 0x9f, 0x9e, 0x99, 0x4c, 0xec, 0xb2, 0xe7, 0xd5, 0xe3, 0x9d, 0x9f, 0x77, 0x92, 0x78, 0x66, - 0x3a, 0xaf, 0xd9, 0xfc, 0x36, 0x36, 0x09, 0x8b, 0x22, 0x2c, 0x21, 0x98, 0xe7, 0xee, 0x88, 0x64, - 0xe2, 0xb4, 0x67, 0x76, 0x57, 0x11, 0xa8, 0x55, 0xee, 0xae, 0x99, 0x29, 0xe2, 0x7e, 0xa4, 0xab, - 0x3c, 0xc9, 0xac, 0x38, 0x70, 0x60, 0x05, 0xca, 0x09, 0x10, 0x0f, 0x71, 0x88, 0xb4, 0x27, 0xce, - 0x48, 0xf0, 0x0f, 0xc0, 0x01, 0x2d, 0x2b, 0x0e, 0x2b, 0x71, 0x00, 0x71, 0x58, 0xa1, 0x44, 0x08, - 0xfe, 0x02, 0xc4, 0x81, 0x03, 0xea, 0xaa, 0xea, 0x76, 0xdb, 0x6e, 0xb7, 0xdb, 0x1e, 0x9b, 0x3d, - 0x90, 0x4b, 0xe2, 0xfe, 0xd6, 0xb7, 0x3e, 0xf5, 0xad, 0xef, 0xab, 0xbe, 0xf5, 0x18, 0xf0, 0x06, - 0xb6, 0xbe, 0x85, 0x74, 0x8a, 0x4f, 0x50, 0x09, 0x3d, 0xd5, 0x8f, 0xa1, 0x75, 0x84, 0x4a, 0x27, - 0xb7, 0x6a, 0x88, 0xc2, 0x5b, 0x25, 0xc7, 0xb5, 0x1d, 0x9b, 0xc0, 0x7a, 0xd1, 0x71, 0x6d, 0x6a, - 0xcb, 0x4b, 0x01, 0x6b, 0xd1, 0x67, 0x2d, 0x0a, 0xd6, 0xa5, 0x82, 0x6e, 0x13, 0xd3, 0x26, 0xa5, - 0x1a, 0x24, 0xcd, 0xfe, 0xba, 0x8d, 0x2d, 0xde, 0x77, 0xa9, 0x28, 0xda, 0x0d, 0x4c, 0xa8, 0x8b, - 0x6b, 0x0d, 0x8a, 0x6d, 0x2b, 0xe0, 0x0b, 0x13, 0x05, 0xff, 0xff, 0x09, 0x7e, 0x93, 0x1c, 0x95, - 0x4e, 0x6e, 0x79, 0xff, 0x89, 0x86, 0xd7, 0x79, 0x83, 0xc6, 0xbe, 0x4a, 0xfc, 0x43, 0x34, 0xe5, - 0x8e, 0xec, 0x23, 0x9b, 0xd3, 0xbd, 0x5f, 0x82, 0x1a, 0x37, 0xc1, 0x60, 0x1a, 0x9c, 0xf5, 0x6a, - 0x93, 0xd5, 0x76, 0xa1, 0x5e, 0x6f, 0x32, 0xf2, 0x4f, 0xc1, 0x36, 0x0f, 0x4d, 0x6c, 0xd9, 0x25, - 0xf6, 0x2f, 0x27, 0x29, 0x7f, 0x9c, 0x02, 0x97, 0xaa, 0x8e, 0x4d, 0xef, 0x41, 0xf7, 0x11, 0xa2, - 0x15, 0xe8, 0x42, 0xf3, 0xc0, 0x31, 0x20, 0x45, 0x15, 0xa1, 0x42, 0x39, 0x07, 0xce, 0x51, 0x4c, - 0xeb, 0x28, 0x2f, 0xad, 0x48, 0x6b, 0x69, 0x95, 0x7f, 0xc8, 0x2b, 0x20, 0x63, 0x20, 0xa2, 0xbb, - 0xd8, 0xf1, 0xe6, 0x9e, 0x1f, 0x67, 0x6d, 0x61, 0x92, 0x7c, 0x01, 0xa4, 0x4d, 0x06, 0xaa, 0x61, - 0x23, 0x3f, 0xc1, 0xda, 0x53, 0x9c, 0xb0, 0x6b, 0xc8, 0xbb, 0x60, 0xc6, 0x84, 0x8f, 0x90, 0xab, - 0x1d, 0x22, 0xa4, 0xb9, 0x90, 0xa2, 0xfc, 0xa4, 0xc7, 0xb1, 0x71, 0xf9, 0xe3, 0xcf, 0x96, 0xa5, - 0xbf, 0x7c, 0xb6, 0x7c, 0x81, 0xeb, 0x87, 0x18, 0x8f, 0x8a, 0xd8, 0x2e, 0x99, 0x90, 0x1e, 0x17, - 0xef, 0xa2, 0x23, 0xa8, 0x9f, 0x6e, 0x21, 0x5d, 0xcd, 0xb2, 0xae, 0x3b, 0x08, 0xa9, 0x90, 0x22, - 0x0f, 0x8a, 0xb6, 0x42, 0x9d, 0xeb, 0x03, 0x8a, 0x86, 0xa1, 0xde, 0x07, 0x8b, 0x2e, 0xaa, 0xc3, - 0x53, 0x01, 0x46, 0x8e, 0xa1, 0x2b, 0x20, 0xa7, 0x92, 0x43, 0x2e, 0x08, 0x88, 0x1d, 0x84, 0xaa, - 0x1e, 0x00, 0x43, 0x56, 0xc1, 0x82, 0x89, 0x2d, 0xcd, 0x71, 0xb1, 0x8e, 0x34, 0x8a, 0xf5, 0x47, - 0x1a, 0xc1, 0x1f, 0xa0, 0xfc, 0xf9, 0xe4, 0xb0, 0x73, 0x26, 0xb6, 0x2a, 0x5e, 0xf7, 0x7d, 0xac, - 0x3f, 0xaa, 0xe2, 0x0f, 0x98, 0xb4, 0x1e, 0xe6, 0xe3, 0x06, 0xb4, 0x28, 0xa6, 0xa7, 0x21, 0xd8, - 0x54, 0x1f, 0xd2, 0x9a, 0xd8, 0x7a, 0x20, 0x10, 0x02, 0xe4, 0xaf, 0x81, 0x29, 0x42, 0x21, 0x6d, - 0x90, 0x7c, 0x7a, 0x45, 0x5a, 0x9b, 0xb9, 0xbd, 0x56, 0xec, 0x1e, 0x40, 0x45, 0xee, 0x39, 0x55, - 0xc6, 0xaf, 0x8a, 0x7e, 0xf2, 0x45, 0x30, 0xe5, 0x89, 0x83, 0xdc, 0x3c, 0x60, 0xb2, 0x4c, 0x7a, - 0xb2, 0xa8, 0x82, 0x26, 0xef, 0x80, 0xac, 0x27, 0xb9, 0x65, 0x7b, 0x8e, 0x02, 0xeb, 0xf9, 0x4c, - 0x72, 0x79, 0x33, 0x26, 0xb6, 0xf6, 0x44, 0x3f, 0x79, 0x0b, 0x00, 0x68, 0x78, 0x48, 0xd8, 0x3a, - 0xb4, 0xf3, 0xd9, 0x15, 0x69, 0x2d, 0x73, 0xfb, 0x6a, 0x9c, 0xac, 0xeb, 0x1e, 0xf7, 0xae, 0x75, - 0x68, 0xab, 0x69, 0xe8, 0xff, 0x2c, 0x3f, 0xf8, 0xfe, 0x47, 0xcb, 0x63, 0xff, 0xf8, 0x68, 0x79, - 0xec, 0x93, 0x5f, 0xdf, 0x5c, 0x12, 0x71, 0x79, 0x64, 0x9f, 0x04, 0x9d, 0x36, 0x6d, 0x8b, 0x22, - 0x8b, 0x3e, 0xfb, 0xfb, 0x2f, 0x6f, 0x5c, 0x0b, 0x02, 0x31, 0x36, 0x66, 0x94, 0x3f, 0x48, 0x60, - 0x71, 0x5b, 0xb0, 0x6e, 0x5b, 0xb0, 0x56, 0x3f, 0x7b, 0x38, 0xdd, 0x05, 0x59, 0x7f, 0xf0, 0xfd, - 0x53, 0x07, 0xb1, 0x88, 0xea, 0x61, 0x99, 0xed, 0x10, 0xbf, 0xda, 0xd2, 0xbb, 0xfc, 0xa6, 0x3f, - 0x67, 0x6f, 0x56, 0xcb, 0xc1, 0xac, 0xa2, 0x65, 0x56, 0x7e, 0x3a, 0x0d, 0x56, 0x37, 0x20, 0xd5, - 0x8f, 0xfd, 0xf6, 0x7b, 0xb6, 0x81, 0x0f, 0xb1, 0x0e, 0x3d, 0xc9, 0xce, 0x3c, 0xb3, 0x0f, 0x25, - 0xa0, 0x10, 0xc7, 0xa6, 0x9a, 0x48, 0x17, 0x8e, 0xa7, 0x50, 0xad, 0xc1, 0x34, 0xaa, 0xf9, 0x99, - 0x9c, 0xe4, 0x27, 0x56, 0x26, 0xd6, 0x32, 0xb7, 0xbf, 0x1c, 0x37, 0xe1, 0x58, 0xa3, 0xa8, 0x05, - 0x12, 0xd7, 0x4c, 0xe4, 0x9f, 0x49, 0x60, 0xcd, 0x40, 0x2e, 0x3e, 0x81, 0x1e, 0x7a, 0x0f, 0x69, - 0x26, 0x99, 0x34, 0x5f, 0x8d, 0x93, 0x66, 0x2b, 0xc0, 0xea, 0x2e, 0xd3, 0x15, 0xa3, 0x37, 0x13, - 0x91, 0x1b, 0xe0, 0x62, 0x58, 0x41, 0x75, 0xd8, 0xb0, 0xf4, 0xe3, 0x90, 0x30, 0xe7, 0x98, 0x30, - 0x6f, 0x25, 0x53, 0xcd, 0x5d, 0xd6, 0x3b, 0x90, 0xe0, 0x75, 0xd2, 0xa5, 0x85, 0xc8, 0xdf, 0x95, - 0xc0, 0xaa, 0x83, 0x5c, 0x07, 0xd1, 0x06, 0xac, 0x77, 0x1d, 0x7c, 0xaa, 0xb7, 0x5d, 0x2a, 0x3e, - 0x48, 0xa4, 0x04, 0x05, 0x27, 0xae, 0x99, 0xc8, 0x3f, 0x94, 0xc0, 0x35, 0xf4, 0xd4, 0xc1, 0xee, - 0xa9, 0x76, 0xd8, 0xa0, 0x0d, 0x17, 0x91, 0xae, 0xb2, 0x9c, 0x67, 0xb2, 0x7c, 0x25, 0x3e, 0x28, - 0x3c, 0xa4, 0x1d, 0x0e, 0x14, 0x29, 0x8f, 0x82, 0x7a, 0xb1, 0x10, 0xf9, 0x27, 0x12, 0xb8, 0x4e, - 0x5d, 0x68, 0x60, 0xeb, 0x48, 0x73, 0xd1, 0x13, 0xe8, 0x1a, 0x9a, 0x0e, 0x4d, 0x07, 0xe2, 0x23, - 0xab, 0xdd, 0x57, 0x58, 0x36, 0xee, 0xe1, 0x2a, 0xfb, 0x1c, 0x4a, 0x65, 0x48, 0x9b, 0x02, 0xa8, - 0xcd, 0x55, 0x2e, 0xd3, 0xde, 0x4c, 0x4c, 0x57, 0x35, 0x6c, 0x41, 0xf7, 0x54, 0xb3, 0x59, 0x74, - 0x75, 0xd7, 0x55, 0xba, 0xb7, 0xae, 0x36, 0x18, 0xd2, 0x7d, 0x0e, 0x14, 0xad, 0xab, 0x5a, 0x2f, - 0x16, 0x22, 0xff, 0x58, 0x02, 0x57, 0xdb, 0x64, 0xea, 0x12, 0x54, 0x80, 0x89, 0xb4, 0xd1, 0xa7, - 0x48, 0x51, 0x71, 0xb5, 0xda, 0x22, 0x57, 0x64, 0x50, 0x7d, 0x1b, 0x14, 0x0c, 0x64, 0xd9, 0xa6, - 0x66, 0x20, 0x1d, 0x9b, 0xb0, 0x4e, 0x3a, 0x0c, 0x97, 0x61, 0x86, 0xbb, 0x13, 0x27, 0x0e, 0x07, - 0xdd, 0xf2, 0x70, 0xb6, 0x04, 0x4c, 0x20, 0xc3, 0x05, 0x23, 0x4c, 0x6e, 0x33, 0x94, 0x0e, 0x5e, - 0xf3, 0x4a, 0x0c, 0x03, 0x13, 0xdd, 0x6e, 0x58, 0xb4, 0x39, 0x28, 0x5f, 0xc5, 0x4a, 0x71, 0x83, - 0xee, 0x20, 0xb4, 0x25, 0xfa, 0x05, 0x83, 0x2d, 0x1c, 0x76, 0x12, 0xe5, 0xef, 0x49, 0x40, 0x11, - 0xe6, 0x3f, 0xb4, 0x5d, 0x1d, 0x19, 0x1a, 0x41, 0x94, 0xd6, 0x91, 0x89, 0x42, 0x23, 0x92, 0xfc, - 0x34, 0x53, 0x7b, 0xb9, 0xf7, 0x22, 0xbf, 0xc3, 0x40, 0xaa, 0x01, 0x46, 0x30, 0xfa, 0xb2, 0x19, - 0xdb, 0x4e, 0xca, 0x07, 0xc9, 0xd7, 0xd8, 0x1b, 0xc1, 0x6a, 0xd4, 0x73, 0xc9, 0x51, 0x3e, 0x39, - 0x07, 0xf2, 0xdd, 0x32, 0xdb, 0xc0, 0xeb, 0xd1, 0x62, 0x50, 0xbb, 0xf0, 0xaa, 0xd5, 0xaf, 0x5a, - 0x2e, 0x01, 0xe0, 0x6d, 0x12, 0x34, 0x66, 0x56, 0x5e, 0xaf, 0xaa, 0x69, 0x8f, 0xc2, 0xcc, 0x2f, - 0x2f, 0x83, 0xcc, 0xe3, 0x86, 0x4d, 0xfd, 0x76, 0x56, 0x84, 0xaa, 0x80, 0x91, 0x38, 0x43, 0x97, - 0x1a, 0xb0, 0x59, 0x5a, 0x8e, 0x0d, 0xb3, 0x06, 0x3c, 0x9f, 0x1c, 0x36, 0xb2, 0x06, 0xec, 0xac, - 0xd0, 0x53, 0xc3, 0xab, 0xd0, 0xd3, 0x83, 0x56, 0xe8, 0xed, 0x95, 0x23, 0x48, 0x3e, 0xcb, 0x98, - 0xca, 0x31, 0x33, 0x60, 0xe5, 0x78, 0x37, 0xb9, 0x57, 0xaf, 0x46, 0x54, 0x8e, 0xad, 0xfe, 0xaa, - 0xfc, 0x22, 0x05, 0x2e, 0xc5, 0xae, 0x94, 0x43, 0xf7, 0xe8, 0x36, 0x97, 0x9d, 0xec, 0x70, 0xd9, - 0x65, 0x90, 0xe1, 0x1b, 0x48, 0xcd, 0xf3, 0x73, 0xdf, 0xa7, 0x39, 0x69, 0x03, 0x12, 0x24, 0xaf, - 0x82, 0xac, 0x60, 0x60, 0xbd, 0xb8, 0x33, 0xab, 0xa2, 0xd3, 0x03, 0x8f, 0x24, 0x17, 0xc1, 0x82, - 0x60, 0x21, 0x3a, 0xac, 0x23, 0xed, 0x10, 0xea, 0xd4, 0x76, 0x99, 0x7f, 0x4e, 0xab, 0xf3, 0xbc, - 0xa9, 0xea, 0xb5, 0xec, 0xb0, 0x06, 0x79, 0x3b, 0x18, 0x93, 0x7a, 0x75, 0x6e, 0x8a, 0xd5, 0xb9, - 0x57, 0x42, 0xb6, 0x11, 0x5b, 0x5a, 0x5f, 0xc9, 0xf7, 0xd9, 0x27, 0xab, 0x71, 0x85, 0x64, 0xde, - 0x6f, 0xf9, 0x00, 0xe4, 0xb0, 0x85, 0x29, 0xe6, 0x95, 0xcb, 0x11, 0xb6, 0x3c, 0xcf, 0xc3, 0x76, - 0xc8, 0xf5, 0x7a, 0x7a, 0x8c, 0x2c, 0x00, 0xee, 0xb1, 0xfe, 0xaa, 0xd7, 0x5d, 0xfe, 0x26, 0xc8, - 0x9b, 0x10, 0x7b, 0x66, 0x85, 0x96, 0x8e, 0x5a, 0xa1, 0xfb, 0x70, 0xc6, 0xc5, 0x10, 0x48, 0x18, - 0xbe, 0x33, 0xea, 0x32, 0xc9, 0x41, 0x7b, 0x45, 0x5d, 0xb6, 0x0f, 0xa8, 0x96, 0xa8, 0xeb, 0x92, - 0xb9, 0xa6, 0x47, 0x93, 0xb9, 0x66, 0xce, 0x98, 0xb9, 0xda, 0x73, 0xc4, 0xec, 0x50, 0x72, 0xc4, - 0xdc, 0x7f, 0x73, 0x77, 0x19, 0x9b, 0x06, 0x94, 0xbf, 0x9d, 0x07, 0xab, 0x3d, 0x4b, 0xb3, 0xa1, - 0x27, 0x8b, 0xcb, 0x60, 0xda, 0x8f, 0xe3, 0x53, 0xb3, 0x66, 0xd7, 0x45, 0xba, 0x10, 0xf1, 0x5f, - 0x65, 0x34, 0xf9, 0x3a, 0x98, 0x15, 0x4c, 0x8e, 0x6b, 0x9f, 0x60, 0x03, 0xb9, 0x22, 0x69, 0xcc, - 0x70, 0x72, 0x45, 0x50, 0xdb, 0xa3, 0x7c, 0x6a, 0xc0, 0x28, 0xef, 0x37, 0xb9, 0xdc, 0x02, 0x39, - 0x56, 0xdd, 0xb3, 0x32, 0x42, 0xa3, 0xd8, 0x44, 0x84, 0x42, 0xd3, 0x61, 0x59, 0x66, 0x42, 0x5d, - 0x68, 0xb6, 0xed, 0xfb, 0x4d, 0x5e, 0x97, 0x50, 0xd5, 0xd4, 0xec, 0x92, 0xe6, 0x5d, 0x9a, 0x6d, - 0xcd, 0x2e, 0x39, 0x70, 0x8e, 0x39, 0x00, 0xcf, 0x08, 0x2a, 0xff, 0x68, 0xcf, 0xb6, 0x99, 0x8e, - 0x6c, 0xdb, 0x19, 0xfc, 0xd9, 0xe1, 0x05, 0xff, 0xf4, 0x90, 0x83, 0x7f, 0x66, 0x34, 0xc1, 0x3f, - 0x3b, 0xe4, 0xe0, 0x9f, 0x1b, 0x30, 0xf8, 0xff, 0x1f, 0xcc, 0xf3, 0xe0, 0x77, 0x90, 0x6b, 0x62, - 0x42, 0xbc, 0x30, 0xcb, 0xcf, 0x33, 0xb7, 0x9a, 0x63, 0x0d, 0x95, 0x26, 0x7d, 0xc0, 0xea, 0xb6, - 0x57, 0x04, 0x2b, 0xbf, 0x4b, 0x81, 0xd5, 0x9e, 0xdb, 0xd5, 0x57, 0x45, 0x41, 0x1f, 0xe9, 0x62, - 0x11, 0x4c, 0xf1, 0xcd, 0xbd, 0x88, 0x5e, 0xf1, 0xd5, 0xb5, 0x58, 0x00, 0xa3, 0x2b, 0x16, 0x32, - 0xa3, 0x28, 0x16, 0x5e, 0xe5, 0x8b, 0xcf, 0x2b, 0x5f, 0xb4, 0x16, 0x0b, 0xf3, 0x03, 0x16, 0x0b, - 0x03, 0x25, 0x92, 0x9e, 0x29, 0x42, 0xf9, 0x11, 0x00, 0x97, 0x13, 0x9c, 0x46, 0x8e, 0xe6, 0xaa, - 0xa7, 0x5b, 0x6c, 0xf5, 0x71, 0xe1, 0xd3, 0x6f, 0x6c, 0xf5, 0x71, 0x01, 0x94, 0x3c, 0xb6, 0xa6, - 0x86, 0xb7, 0xfd, 0x3d, 0x3f, 0xfc, 0x0b, 0xaa, 0xd4, 0x68, 0x2e, 0xa8, 0xd2, 0xa3, 0xb9, 0xa0, - 0x02, 0x67, 0xbc, 0xa0, 0xaa, 0x02, 0xf9, 0x1d, 0xbb, 0xe1, 0xd6, 0x4f, 0x77, 0x2d, 0x8a, 0x5c, - 0x44, 0xa8, 0xda, 0xba, 0x55, 0xea, 0xed, 0x51, 0x9d, 0xdd, 0xe5, 0xf7, 0x40, 0x8e, 0x53, 0x77, - 0x1a, 0x16, 0x3b, 0x68, 0x85, 0x14, 0x6d, 0x42, 0x27, 0x94, 0x54, 0x7b, 0xc2, 0x46, 0x02, 0x84, - 0xae, 0xd3, 0xa6, 0x07, 0xbc, 0x4e, 0xbb, 0x17, 0xd4, 0xde, 0xec, 0xe4, 0x94, 0xb0, 0x6c, 0x9a, - 0x89, 0x07, 0xe2, 0x4b, 0x20, 0x0b, 0x73, 0xe2, 0x57, 0xe9, 0xfc, 0x2b, 0x74, 0x3b, 0x37, 0x9b, - 0xe0, 0x76, 0x6e, 0x6e, 0x28, 0xb7, 0x73, 0x83, 0xa6, 0xc4, 0xf7, 0x92, 0xa7, 0xc4, 0x37, 0x83, - 0x94, 0x98, 0x20, 0xd9, 0x29, 0x7b, 0x20, 0x1d, 0x0c, 0xd8, 0xac, 0xd8, 0xa5, 0x70, 0xc5, 0x1e, - 0x59, 0x04, 0x8e, 0x47, 0x17, 0x81, 0xca, 0xcf, 0xc7, 0x41, 0x21, 0xfe, 0x98, 0x74, 0x34, 0xf9, - 0x75, 0x0f, 0xcc, 0xb5, 0x9c, 0xea, 0x62, 0xbd, 0xaf, 0xcb, 0xf4, 0x59, 0x12, 0x92, 0x13, 0xeb, - 0xa8, 0xac, 0x26, 0x57, 0xf8, 0xf5, 0x40, 0xe1, 0xf1, 0x13, 0x57, 0xfe, 0x25, 0x81, 0x0b, 0x31, - 0x47, 0xe5, 0x03, 0x2b, 0xa6, 0x02, 0x66, 0x5a, 0xcf, 0xf0, 0xc5, 0x2d, 0xe1, 0x1b, 0xf1, 0xf7, - 0x72, 0x21, 0x11, 0xd4, 0xe9, 0x96, 0x53, 0xfa, 0xf2, 0xfd, 0xe4, 0xb3, 0xbf, 0x12, 0xcc, 0x3e, - 0x66, 0x6a, 0xca, 0x6f, 0x53, 0xe0, 0x5a, 0xb2, 0x4b, 0x8b, 0x57, 0x2f, 0x2d, 0xfe, 0xf7, 0x5e, - 0x5a, 0x74, 0x3b, 0x8f, 0x48, 0xf7, 0x7f, 0x1e, 0x01, 0xba, 0x9f, 0x47, 0x44, 0xa5, 0x88, 0xcc, - 0xe0, 0x29, 0xa2, 0x99, 0x2d, 0xb3, 0xe1, 0x6c, 0x79, 0xf6, 0x65, 0xee, 0x20, 0x7a, 0x99, 0xfb, - 0x42, 0xec, 0xdd, 0xb2, 0x38, 0x51, 0xfa, 0xbc, 0x97, 0xbb, 0xf2, 0xc3, 0xe4, 0x99, 0xa3, 0x14, - 0x77, 0x08, 0x10, 0xb5, 0x56, 0xfd, 0x46, 0x02, 0xb9, 0xa8, 0x89, 0x7a, 0x1b, 0x5a, 0x71, 0x1a, - 0xc7, 0x73, 0x86, 0xf8, 0x92, 0x97, 0x40, 0x2a, 0x38, 0x80, 0xe3, 0x19, 0x23, 0xf8, 0xee, 0xb6, - 0xf7, 0x9e, 0x48, 0xb8, 0xf7, 0x9e, 0x1c, 0x6c, 0xef, 0xad, 0xfc, 0x5e, 0x02, 0xd9, 0x16, 0xd9, - 0xdb, 0xce, 0x11, 0xa4, 0x9e, 0xe7, 0x08, 0xe3, 0x89, 0xcf, 0x11, 0x46, 0x3d, 0x97, 0x7f, 0x8e, - 0x83, 0xcb, 0x91, 0x77, 0xf6, 0x43, 0x3a, 0x9b, 0x79, 0x08, 0xa6, 0x83, 0xe7, 0x04, 0xac, 0x7a, - 0x9a, 0x60, 0x81, 0xf0, 0xa5, 0xbe, 0xdf, 0x10, 0xb0, 0x6a, 0x2a, 0xab, 0x87, 0xbe, 0xe4, 0x1a, - 0x78, 0x2d, 0xc0, 0x16, 0x4f, 0x17, 0x1c, 0xdb, 0x0e, 0x9e, 0xb4, 0x14, 0xe3, 0xc6, 0xf0, 0x61, - 0xf9, 0x20, 0x15, 0xdb, 0xae, 0xab, 0x0b, 0x7a, 0x07, 0x8d, 0x0c, 0x56, 0xb4, 0x25, 0x50, 0xa8, - 0xf2, 0xef, 0x89, 0x2e, 0x8a, 0x1f, 0xd2, 0x52, 0x3a, 0x4a, 0xc5, 0x37, 0xc0, 0x72, 0xa4, 0xe2, - 0x35, 0x68, 0x18, 0x98, 0x25, 0x80, 0x01, 0x4d, 0x70, 0x31, 0xc2, 0x04, 0xeb, 0x3e, 0xa6, 0xfc, - 0x18, 0x5c, 0x8a, 0x1e, 0x96, 0x3f, 0x77, 0xf0, 0x5f, 0x0f, 0xf5, 0x3b, 0xe8, 0x52, 0xc4, 0xa0, - 0xdc, 0x08, 0xc3, 0x34, 0x7f, 0x5b, 0x1e, 0xfc, 0x8e, 0x04, 0xe6, 0xfd, 0xf1, 0xb0, 0x45, 0x79, - 0xab, 0x7c, 0x1d, 0xcc, 0x42, 0x9d, 0x3f, 0xa3, 0x80, 0x86, 0xe1, 0x22, 0x42, 0x84, 0xd9, 0x67, - 0x04, 0x79, 0x9d, 0x53, 0xe5, 0x0d, 0x00, 0x2c, 0xf4, 0x44, 0x73, 0xbc, 0xbe, 0xa4, 0x9f, 0xc3, - 0xb2, 0xb4, 0x85, 0x9e, 0xb0, 0x11, 0x89, 0xf2, 0xa7, 0x71, 0xb0, 0xd6, 0x22, 0x6a, 0x05, 0xb1, - 0xcd, 0x1e, 0x6f, 0x1e, 0x92, 0x1b, 0xbe, 0x05, 0x16, 0x1d, 0x0e, 0xcb, 0x6c, 0x15, 0x5a, 0xe5, - 0x27, 0xd8, 0x2a, 0x9f, 0x73, 0xfc, 0x41, 0xed, 0x7a, 0x73, 0x99, 0xd7, 0x40, 0x2e, 0x30, 0x30, - 0xb6, 0x68, 0x60, 0x60, 0xee, 0x55, 0x37, 0xe3, 0x0c, 0xdc, 0xa1, 0x54, 0x55, 0x76, 0xdb, 0x49, - 0xa4, 0xfc, 0x8d, 0xe4, 0x76, 0xbd, 0x15, 0x6d, 0xd7, 0x18, 0x65, 0x29, 0x2f, 0x25, 0xb0, 0x10, - 0xf1, 0xb4, 0x65, 0x60, 0x25, 0x7e, 0x1d, 0xa4, 0x88, 0x7e, 0x8c, 0x8c, 0x46, 0x1d, 0x89, 0x30, - 0x4e, 0xfa, 0xaa, 0xa6, 0x2a, 0xba, 0xa9, 0x01, 0x40, 0xf9, 0xed, 0xe4, 0x53, 0xbf, 0x18, 0x4c, - 0x3d, 0x62, 0x36, 0xca, 0x87, 0xe3, 0x60, 0x99, 0x3d, 0x6c, 0xd9, 0xb4, 0x4d, 0xb3, 0x61, 0x61, - 0x7a, 0xea, 0x19, 0xb1, 0xea, 0x19, 0xf4, 0xcc, 0x33, 0x3e, 0x00, 0xe9, 0xf6, 0xf7, 0x92, 0x77, - 0xc4, 0xfb, 0xf5, 0x62, 0xcb, 0x53, 0xf5, 0xa6, 0xd4, 0xdd, 0x64, 0x50, 0x9b, 0x48, 0xe5, 0x6a, - 0xf2, 0xb9, 0xaf, 0xb5, 0x3e, 0xde, 0xe9, 0x8e, 0xaf, 0xfc, 0x6a, 0x1c, 0x14, 0xd7, 0xa9, 0x6d, - 0x62, 0x9d, 0x97, 0x3d, 0xf7, 0x5d, 0x83, 0x55, 0xf2, 0xf7, 0x1a, 0x75, 0x8a, 0x9d, 0x3a, 0x46, - 0xae, 0x6f, 0x85, 0x33, 0xab, 0x05, 0x81, 0x45, 0xff, 0x15, 0x14, 0x42, 0x9a, 0x19, 0x0c, 0xe0, - 0xeb, 0xa8, 0x94, 0xe0, 0xe5, 0x53, 0x58, 0x30, 0x35, 0x67, 0x76, 0x12, 0x49, 0xb9, 0x96, 0x5c, - 0x4d, 0x77, 0x02, 0x35, 0xf5, 0xa7, 0x82, 0x1b, 0x4f, 0x41, 0x36, 0xfc, 0xaa, 0x57, 0xbe, 0x0d, - 0x72, 0xdb, 0xef, 0x6f, 0xbe, 0xb3, 0xbe, 0xf7, 0xf6, 0xb6, 0x76, 0xb0, 0x57, 0xad, 0x6c, 0x6f, - 0xee, 0xee, 0xec, 0x6e, 0x6f, 0xcd, 0x8d, 0x2d, 0xe5, 0x9f, 0x3d, 0x5f, 0x89, 0x6c, 0x93, 0x65, - 0x30, 0x59, 0xad, 0xdc, 0xdf, 0x9f, 0x93, 0x96, 0x52, 0xcf, 0x9e, 0xaf, 0xb0, 0xdf, 0x9e, 0x12, - 0xb7, 0xb6, 0xd5, 0xdd, 0x77, 0xd7, 0xf7, 0x77, 0xdf, 0xdd, 0xae, 0xce, 0x8d, 0x2f, 0xcd, 0x3e, - 0x7b, 0xbe, 0x12, 0x26, 0x6d, 0x1c, 0x7f, 0xfc, 0xa2, 0x20, 0x7d, 0xfa, 0xa2, 0x20, 0xfd, 0xf5, - 0x45, 0x41, 0xfa, 0xc1, 0xcb, 0xc2, 0xd8, 0xa7, 0x2f, 0x0b, 0x63, 0x7f, 0x7e, 0x59, 0x18, 0x7b, - 0xb8, 0x77, 0x84, 0xe9, 0x71, 0xa3, 0x56, 0xd4, 0x6d, 0xb3, 0xb4, 0xeb, 0x2b, 0xf2, 0x2e, 0xac, - 0x91, 0x52, 0xa0, 0xd6, 0x9b, 0xba, 0xed, 0xa2, 0xf0, 0xe7, 0x31, 0xc4, 0x56, 0xc9, 0xb4, 0xbd, - 0xb9, 0x91, 0x66, 0x35, 0xec, 0xd5, 0x64, 0xa4, 0x36, 0xc5, 0xfe, 0x32, 0xe1, 0x8b, 0xff, 0x09, - 0x00, 0x00, 0xff, 0xff, 0x16, 0x7b, 0x31, 0x71, 0xe1, 0x31, 0x00, 0x00, + // 2486 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5b, 0xcb, 0x6f, 0x1c, 0x49, + 0x19, 0x77, 0xdb, 0x8e, 0xed, 0xa9, 0x99, 0xf1, 0xa3, 0xed, 0x35, 0xb3, 0x4e, 0xe2, 0xc7, 0x38, + 0x0f, 0x6f, 0xd8, 0xcc, 0x90, 0xb0, 0x28, 0x62, 0x24, 0x04, 0x7e, 0xee, 0x5a, 0x24, 0xce, 0xa4, + 0xc7, 0xde, 0x5d, 0x45, 0xa0, 0x56, 0x4d, 0x77, 0xd9, 0x2e, 0x32, 0xfd, 0x48, 0x57, 0x8d, 0x13, + 0xaf, 0x38, 0x70, 0x60, 0x05, 0xca, 0x09, 0x10, 0x2c, 0xe2, 0x10, 0xb1, 0x27, 0xce, 0x48, 0xf0, + 0x0f, 0xc0, 0x01, 0x2d, 0x88, 0xc3, 0xde, 0x40, 0x1c, 0x56, 0x28, 0x11, 0x82, 0xbf, 0x00, 0x71, + 0xe0, 0x80, 0xea, 0xd1, 0x3d, 0x3d, 0x33, 0x3d, 0x3d, 0x3d, 0xe3, 0xb1, 0xf6, 0x40, 0x2e, 0xc9, + 0xf4, 0x57, 0x5f, 0xfd, 0xea, 0xab, 0xaf, 0xea, 0xfb, 0xea, 0x57, 0x0f, 0x83, 0x37, 0xb0, 0xfd, + 0x1d, 0x64, 0x50, 0x7c, 0x82, 0x8a, 0xe8, 0xa9, 0x71, 0x0c, 0xed, 0x23, 0x54, 0x3c, 0xb9, 0x55, + 0x45, 0x14, 0xde, 0x2a, 0xba, 0x9e, 0xe3, 0x3a, 0x04, 0xd6, 0x0a, 0xae, 0xe7, 0x50, 0x47, 0x5d, + 0x08, 0x54, 0x0b, 0xbe, 0x6a, 0x41, 0xaa, 0x2e, 0x2c, 0x1a, 0x0e, 0xb1, 0x1c, 0x52, 0xac, 0x42, + 0xd2, 0xa8, 0x6f, 0x38, 0xd8, 0x16, 0x75, 0x17, 0x0a, 0xb2, 0xdc, 0xc4, 0x84, 0x7a, 0xb8, 0x5a, + 0xa7, 0xd8, 0xb1, 0x03, 0xbd, 0xb0, 0x50, 0xea, 0x7f, 0x41, 0xea, 0x5b, 0xe4, 0xa8, 0x78, 0x72, + 0x8b, 0xfd, 0x27, 0x0b, 0x5e, 0x17, 0x05, 0x3a, 0xff, 0x2a, 0x8a, 0x0f, 0x59, 0x34, 0x77, 0xe4, + 0x1c, 0x39, 0x42, 0xce, 0x7e, 0x49, 0x69, 0x5c, 0x07, 0x83, 0x6e, 0x08, 0xd5, 0xab, 0x0d, 0x55, + 0xc7, 0x83, 0x46, 0xad, 0xa1, 0x28, 0x3e, 0xa5, 0xda, 0x0c, 0xb4, 0xb0, 0xed, 0x14, 0xf9, 0xbf, + 0x42, 0x94, 0xff, 0xe5, 0x38, 0xb8, 0x5c, 0x71, 0x1d, 0x7a, 0x0f, 0x7a, 0x8f, 0x10, 0x2d, 0x43, + 0x0f, 0x5a, 0x07, 0xae, 0x09, 0x29, 0x2a, 0x4b, 0x17, 0xaa, 0x73, 0xe0, 0x02, 0xc5, 0xb4, 0x86, + 0x72, 0xca, 0xb2, 0xb2, 0x96, 0xd2, 0xc4, 0x87, 0xba, 0x0c, 0xd2, 0x26, 0x22, 0x86, 0x87, 0x5d, + 0xd6, 0xf7, 0xdc, 0x30, 0x2f, 0x0b, 0x8b, 0xd4, 0x8b, 0x20, 0x65, 0x71, 0x50, 0x1d, 0x9b, 0xb9, + 0x11, 0x5e, 0x3e, 0x21, 0x04, 0xbb, 0xa6, 0xba, 0x0b, 0x26, 0x2d, 0xf8, 0x08, 0x79, 0xfa, 0x21, + 0x42, 0xba, 0x07, 0x29, 0xca, 0x8d, 0x32, 0x8d, 0x8d, 0xd5, 0x4f, 0x3e, 0x5b, 0x52, 0xfe, 0xf6, + 0xd9, 0xd2, 0x45, 0xe1, 0x1f, 0x62, 0x3e, 0x2a, 0x60, 0xa7, 0x68, 0x41, 0x7a, 0x5c, 0xb8, 0x8b, + 0x8e, 0xa0, 0x71, 0xba, 0x85, 0x0c, 0x2d, 0xc3, 0xab, 0xee, 0x20, 0xa4, 0x41, 0x8a, 0x18, 0x14, + 0x6d, 0x86, 0xba, 0xd0, 0x03, 0x14, 0x0d, 0x43, 0xbd, 0x0f, 0xe6, 0x3d, 0x54, 0x83, 0xa7, 0x12, + 0x8c, 0x1c, 0x43, 0x4f, 0x42, 0x8e, 0x25, 0x87, 0x9c, 0x95, 0x10, 0x3b, 0x08, 0x55, 0x18, 0x00, + 0x47, 0xd6, 0xc0, 0xac, 0x85, 0x6d, 0xdd, 0xf5, 0xb0, 0x81, 0x74, 0x8a, 0x8d, 0x47, 0x3a, 0xc1, + 0x1f, 0xa0, 0xdc, 0x78, 0x72, 0xd8, 0x69, 0x0b, 0xdb, 0x65, 0x56, 0x7d, 0x1f, 0x1b, 0x8f, 0x2a, + 0xf8, 0x03, 0x6e, 0x2d, 0xc3, 0x7c, 0x5c, 0x87, 0x36, 0xc5, 0xf4, 0x34, 0x04, 0x3b, 0xd1, 0x83, + 0xb5, 0x16, 0xb6, 0x1f, 0x48, 0x84, 0x00, 0xf9, 0x1b, 0x60, 0x8c, 0x50, 0x48, 0xeb, 0x24, 0x97, + 0x5a, 0x56, 0xd6, 0x26, 0x6f, 0xaf, 0x15, 0x3a, 0x07, 0x50, 0x41, 0xcc, 0x9c, 0x0a, 0xd7, 0xd7, + 0x64, 0x3d, 0xf5, 0x12, 0x18, 0x63, 0xe6, 0x20, 0x2f, 0x07, 0xb8, 0x2d, 0xa3, 0xcc, 0x16, 0x4d, + 0xca, 0xd4, 0x1d, 0x90, 0x61, 0x96, 0xdb, 0x0e, 0x9b, 0x28, 0xb0, 0x96, 0x4b, 0x27, 0xb7, 0x37, + 0x6d, 0x61, 0x7b, 0x4f, 0xd6, 0x53, 0xb7, 0x00, 0x80, 0x26, 0x43, 0xc2, 0xf6, 0xa1, 0x93, 0xcb, + 0x2c, 0x2b, 0x6b, 0xe9, 0xdb, 0x57, 0xe3, 0x6c, 0x5d, 0x67, 0xda, 0xbb, 0xf6, 0xa1, 0xa3, 0xa5, + 0xa0, 0xff, 0x53, 0x5d, 0x05, 0x59, 0x16, 0xfc, 0xba, 0x89, 0x0c, 0x6c, 0xc1, 0x1a, 0xc9, 0x65, + 0x97, 0x95, 0xb5, 0xac, 0x96, 0x61, 0xc2, 0x2d, 0x29, 0x53, 0xaf, 0x82, 0xc9, 0xc7, 0x75, 0x87, + 0x86, 0xb4, 0x26, 0xb9, 0x56, 0x96, 0x4b, 0x7d, 0xb5, 0xd2, 0x83, 0x1f, 0x7e, 0xbc, 0x34, 0xf4, + 0xaf, 0x8f, 0x97, 0x86, 0xfe, 0xf4, 0xdb, 0x9b, 0x0b, 0x32, 0xc6, 0x8f, 0x9c, 0x93, 0xc0, 0x80, + 0x4d, 0xc7, 0xa6, 0xc8, 0xa6, 0xcf, 0xfe, 0xf9, 0xeb, 0x1b, 0xd7, 0x82, 0xa0, 0x8e, 0x8d, 0xbf, + 0xfc, 0x9f, 0x15, 0x30, 0xbf, 0x2d, 0x55, 0xb7, 0x6d, 0x58, 0xad, 0x9d, 0x3d, 0x34, 0xef, 0x82, + 0x8c, 0xdf, 0xf8, 0xfe, 0xa9, 0x8b, 0x78, 0x74, 0x76, 0x19, 0xe5, 0xed, 0x90, 0xbe, 0xd6, 0x54, + 0xbb, 0xf4, 0xa6, 0xdf, 0x67, 0xd6, 0xab, 0xa5, 0xa0, 0x57, 0xd1, 0x36, 0xe7, 0x3f, 0xca, 0x82, + 0x95, 0x0d, 0x48, 0x8d, 0x63, 0xbf, 0xfc, 0x9e, 0x63, 0xe2, 0x43, 0x6c, 0x40, 0x66, 0xd9, 0x99, + 0x7b, 0xf6, 0xa1, 0x02, 0xf2, 0xc4, 0x75, 0xa8, 0x2e, 0x53, 0x8f, 0xcb, 0x1c, 0xaa, 0xd7, 0xb9, + 0x47, 0x75, 0x7f, 0x55, 0x20, 0xb9, 0x91, 0xe5, 0x91, 0xb5, 0xf4, 0xed, 0xaf, 0xc6, 0x75, 0x38, + 0x76, 0x50, 0xb4, 0x45, 0x12, 0x57, 0x4c, 0xd4, 0x9f, 0x2b, 0x60, 0xcd, 0x44, 0x1e, 0x3e, 0x81, + 0x0c, 0xbd, 0x8b, 0x35, 0xa3, 0xdc, 0x9a, 0xaf, 0xc7, 0x59, 0xb3, 0x15, 0x60, 0x75, 0xb6, 0xe9, + 0x8a, 0xd9, 0x5d, 0x89, 0xa8, 0x75, 0x70, 0x29, 0xec, 0xa0, 0x1a, 0xac, 0xdb, 0xc6, 0x71, 0xc8, + 0x98, 0x0b, 0xdc, 0x98, 0xb7, 0x92, 0xb9, 0xe6, 0x2e, 0xaf, 0x1d, 0x58, 0xf0, 0x3a, 0xe9, 0x50, + 0x42, 0xd4, 0xef, 0x2b, 0x60, 0xc5, 0x45, 0x9e, 0x8b, 0x68, 0x1d, 0xd6, 0x3a, 0x36, 0x3e, 0xd6, + 0x7d, 0x5c, 0xca, 0x3e, 0x48, 0xa4, 0x05, 0x8b, 0x6e, 0x5c, 0x31, 0x51, 0x7f, 0xac, 0x80, 0x6b, + 0xe8, 0xa9, 0x8b, 0xbd, 0x53, 0xfd, 0xb0, 0x4e, 0xeb, 0x1e, 0x22, 0x1d, 0x6d, 0x19, 0xe7, 0xb6, + 0x7c, 0x2d, 0x3e, 0x28, 0x18, 0xd2, 0x8e, 0x00, 0x8a, 0xb4, 0x27, 0x8f, 0xba, 0xa9, 0x10, 0xf5, + 0x67, 0x0a, 0xb8, 0x4e, 0x3d, 0x68, 0x62, 0xfb, 0x48, 0xf7, 0xd0, 0x13, 0xe8, 0x99, 0xba, 0x01, + 0x2d, 0x17, 0xe2, 0x23, 0xbb, 0x75, 0xae, 0xf0, 0xcc, 0xde, 0x65, 0xaa, 0xec, 0x0b, 0x28, 0x8d, + 0x23, 0x6d, 0x4a, 0xa0, 0x96, 0xa9, 0xb2, 0x4a, 0xbb, 0x2b, 0x71, 0x5f, 0x55, 0xb1, 0x0d, 0xbd, + 0x53, 0xdd, 0xe1, 0xd1, 0xd5, 0xd9, 0x57, 0xa9, 0xee, 0xbe, 0xda, 0xe0, 0x48, 0xf7, 0x05, 0x50, + 0xb4, 0xaf, 0xaa, 0xdd, 0x54, 0x88, 0xfa, 0x53, 0x05, 0x5c, 0x6d, 0xb1, 0xa9, 0x43, 0x50, 0x01, + 0x6e, 0xd2, 0x46, 0x8f, 0x26, 0x45, 0xc5, 0xd5, 0x4a, 0x93, 0x5d, 0x91, 0x41, 0xf5, 0x5d, 0xb0, + 0x68, 0x22, 0xdb, 0xb1, 0x82, 0xd5, 0xa1, 0x6d, 0xe0, 0xd2, 0x7c, 0xe0, 0xee, 0xc4, 0x99, 0x23, + 0x40, 0xb7, 0x18, 0x8e, 0xbf, 0x9e, 0x04, 0x36, 0x5c, 0x34, 0xc3, 0xe2, 0x96, 0x81, 0x32, 0xc0, + 0x6b, 0x8c, 0xae, 0x98, 0x98, 0x18, 0x4e, 0xdd, 0xa6, 0x8d, 0x46, 0xc5, 0x8a, 0x58, 0x8c, 0x6b, + 0x74, 0x07, 0xa1, 0x2d, 0x59, 0x2f, 0x68, 0x6c, 0xf6, 0xb0, 0x5d, 0xa8, 0xfe, 0x40, 0x01, 0x79, + 0x39, 0xfc, 0x87, 0x8e, 0x67, 0x20, 0x53, 0x27, 0x88, 0xd2, 0x1a, 0xb2, 0x50, 0xa8, 0x45, 0xb6, + 0x76, 0x32, 0xb7, 0x97, 0xba, 0x13, 0x86, 0x1d, 0x0e, 0x52, 0x09, 0x30, 0x82, 0xd6, 0x97, 0xac, + 0xd8, 0x72, 0x52, 0x3a, 0x48, 0xbe, 0xc6, 0xde, 0x08, 0x56, 0xa3, 0xae, 0x4b, 0x4e, 0xfe, 0xa3, + 0x31, 0x90, 0xeb, 0x94, 0xd9, 0xfa, 0x5e, 0x8f, 0xe6, 0x03, 0x1e, 0x24, 0x18, 0xb0, 0xcf, 0x80, + 0x2e, 0x03, 0x20, 0x39, 0x87, 0xed, 0x58, 0x82, 0xfb, 0x6a, 0x29, 0x41, 0x38, 0x6c, 0xc7, 0x52, + 0x97, 0x40, 0xda, 0x67, 0x1b, 0xac, 0x9c, 0x13, 0x5a, 0x0d, 0x48, 0xaa, 0xc1, 0x14, 0x3a, 0xf0, + 0xc9, 0x06, 0x4d, 0x1d, 0x1a, 0x24, 0x9f, 0x1c, 0x4f, 0x0e, 0x1b, 0xc9, 0x27, 0xdb, 0xd9, 0xfe, + 0xc4, 0xe0, 0xd8, 0x7e, 0xaa, 0x5f, 0xb6, 0xdf, 0xca, 0x42, 0x41, 0xf2, 0x5e, 0xc6, 0xb0, 0xd0, + 0xf4, 0xa0, 0x58, 0xe8, 0x64, 0x22, 0x16, 0x3a, 0x15, 0xc5, 0x42, 0xef, 0x26, 0x8f, 0x90, 0x95, + 0x08, 0x16, 0xda, 0x3c, 0xf7, 0xf3, 0xbf, 0x9a, 0x00, 0x97, 0x63, 0x57, 0xdd, 0x81, 0x47, 0x47, + 0xcb, 0xf4, 0x1f, 0x6d, 0x9b, 0xfe, 0x4b, 0x20, 0x2d, 0x36, 0xb6, 0x3a, 0x73, 0x8f, 0x1f, 0x1f, + 0x42, 0xb4, 0x01, 0x09, 0x52, 0x57, 0x40, 0x46, 0x2a, 0xf0, 0x5a, 0x22, 0x30, 0x34, 0x59, 0xe9, + 0x01, 0x13, 0xa9, 0x05, 0x30, 0x2b, 0x55, 0x88, 0x01, 0x6b, 0x48, 0x3f, 0x84, 0x06, 0x75, 0x3c, + 0x3e, 0xd7, 0xb3, 0xda, 0x8c, 0x28, 0xaa, 0xb0, 0x92, 0x1d, 0x5e, 0xa0, 0x6e, 0x07, 0x6d, 0x52, + 0xc6, 0x99, 0x27, 0x38, 0x67, 0xbe, 0x12, 0x1a, 0x67, 0xb9, 0xd5, 0xf6, 0x9d, 0x7c, 0x9f, 0x7f, + 0x72, 0xbe, 0x2c, 0x2d, 0x63, 0xbf, 0xd5, 0x03, 0x30, 0x87, 0x6d, 0x4c, 0xb1, 0x60, 0x41, 0x47, + 0xd8, 0x66, 0xb3, 0x18, 0x3b, 0xa1, 0x69, 0xdc, 0x75, 0xf6, 0xa9, 0x12, 0xe0, 0x1e, 0xaf, 0xaf, + 0xb1, 0xea, 0xea, 0xb7, 0x41, 0xce, 0x82, 0x98, 0x0d, 0x2b, 0xb4, 0x0d, 0xd4, 0x0c, 0xdd, 0xc3, + 0xc4, 0x9e, 0x0f, 0x81, 0x84, 0xe1, 0xdb, 0x23, 0x38, 0x9d, 0x1c, 0xb4, 0x5b, 0x04, 0x67, 0x7a, + 0x80, 0x6a, 0x8a, 0xe0, 0x0e, 0x59, 0x30, 0x7b, 0x3e, 0x59, 0x70, 0xf2, 0x8c, 0x59, 0xb0, 0x35, + 0xdf, 0x4c, 0x0d, 0x24, 0xdf, 0x4c, 0xf7, 0x97, 0x6f, 0xfa, 0xdb, 0xa9, 0xc6, 0xa6, 0x81, 0xfc, + 0x3f, 0xc6, 0xc1, 0x4a, 0x57, 0x9a, 0x37, 0xf0, 0x64, 0xb1, 0x0a, 0xb2, 0x7e, 0x1c, 0x9f, 0x5a, + 0x55, 0xa7, 0x26, 0xd3, 0x85, 0x8c, 0xff, 0x0a, 0x97, 0xa9, 0xd7, 0xc1, 0x94, 0x54, 0x72, 0x3d, + 0xe7, 0x04, 0x9b, 0xc8, 0x93, 0x49, 0x63, 0x52, 0x88, 0xcb, 0x52, 0xda, 0x1a, 0xe5, 0x63, 0x7d, + 0x46, 0x79, 0xaf, 0xc9, 0xe5, 0x16, 0x98, 0xe3, 0x3b, 0x05, 0x4e, 0x49, 0x74, 0x8a, 0x2d, 0x44, + 0x28, 0xb4, 0x5c, 0x9e, 0x65, 0x46, 0xb4, 0xd9, 0x46, 0xd9, 0xbe, 0x5f, 0xc4, 0xaa, 0x84, 0x18, + 0x58, 0xa3, 0x4a, 0x4a, 0x54, 0x69, 0x94, 0x35, 0xaa, 0xcc, 0x81, 0x0b, 0x7c, 0x02, 0x88, 0x8c, + 0xa0, 0x89, 0x8f, 0xd6, 0x6c, 0x9b, 0x6e, 0xcb, 0xb6, 0xed, 0xc1, 0x9f, 0x19, 0x5c, 0xf0, 0x67, + 0x07, 0x1c, 0xfc, 0x93, 0xe7, 0x13, 0xfc, 0x53, 0x03, 0x0e, 0xfe, 0xe9, 0x3e, 0x83, 0xff, 0x8b, + 0x60, 0x46, 0x04, 0xbf, 0x8b, 0x3c, 0x0b, 0x13, 0xc2, 0xc2, 0x2c, 0x37, 0xc3, 0xa7, 0xd5, 0x34, + 0x2f, 0x28, 0x37, 0xe4, 0x7d, 0x32, 0xe5, 0x6e, 0x11, 0x9c, 0xff, 0xc3, 0x04, 0x58, 0xe9, 0xba, + 0xf5, 0x7d, 0x45, 0x0a, 0x7a, 0x48, 0x17, 0xf3, 0x60, 0x4c, 0x1c, 0x14, 0xc8, 0xe8, 0x95, 0x5f, + 0x1d, 0xc9, 0x02, 0x38, 0x3f, 0xb2, 0x90, 0x3e, 0x0f, 0xb2, 0xf0, 0x2a, 0x5f, 0x7c, 0x5e, 0xf9, + 0xa2, 0x99, 0x2c, 0xcc, 0xf4, 0x49, 0x16, 0xfa, 0x4a, 0x24, 0x5d, 0x53, 0x44, 0xfe, 0x27, 0x00, + 0xac, 0x26, 0x38, 0xd9, 0x3c, 0x9f, 0x2b, 0xa8, 0x4e, 0xb1, 0xd5, 0xc3, 0x45, 0x54, 0xaf, 0xb1, + 0xd5, 0xc3, 0xc5, 0x54, 0xf2, 0xd8, 0x1a, 0x1b, 0xdc, 0x56, 0x7a, 0x7c, 0xf0, 0x17, 0x67, 0x13, + 0xe7, 0x73, 0x71, 0x96, 0x3a, 0x9f, 0x8b, 0x33, 0x70, 0xc6, 0x8b, 0xb3, 0x0a, 0x50, 0xdf, 0x71, + 0xea, 0x5e, 0xed, 0x74, 0xd7, 0xa6, 0xc8, 0x43, 0x84, 0x6a, 0xcd, 0x5b, 0xa5, 0xee, 0x33, 0xaa, + 0xbd, 0xba, 0xfa, 0x1e, 0x98, 0x13, 0xd2, 0x9d, 0xba, 0xcd, 0x0f, 0x6d, 0x21, 0x45, 0x9b, 0xd0, + 0x0d, 0x25, 0xd5, 0xae, 0xb0, 0x91, 0x00, 0xa1, 0x6b, 0xbe, 0x6c, 0x9f, 0xd7, 0x7c, 0xf7, 0x02, + 0xee, 0xcd, 0x4f, 0x61, 0xc5, 0xa1, 0x45, 0x3a, 0x1e, 0x48, 0x2c, 0x81, 0x3c, 0xcc, 0x89, 0xcf, + 0xd2, 0xc5, 0x57, 0xe8, 0xd6, 0x70, 0x2a, 0xc1, 0xad, 0xe1, 0xf4, 0x40, 0x6e, 0x0d, 0xfb, 0x4d, + 0x89, 0xef, 0x25, 0x4f, 0x89, 0x6f, 0x06, 0x29, 0x31, 0x41, 0xb2, 0xcb, 0xef, 0x81, 0x54, 0xd0, + 0x60, 0x83, 0xb1, 0x2b, 0x61, 0xc6, 0x1e, 0x49, 0x02, 0x87, 0xa3, 0x49, 0x60, 0xfe, 0x17, 0xc3, + 0x60, 0x31, 0xfe, 0xc8, 0xf5, 0x7c, 0xf2, 0xeb, 0x1e, 0x98, 0x6e, 0x3a, 0x21, 0xc6, 0x46, 0x4f, + 0x97, 0xfc, 0x53, 0x24, 0x64, 0x27, 0x36, 0x50, 0x49, 0x4b, 0xee, 0xf0, 0xeb, 0x81, 0xc3, 0xe3, + 0x3b, 0x9e, 0xff, 0x8f, 0x02, 0x2e, 0xc6, 0x1c, 0xbb, 0xf7, 0xed, 0x98, 0x32, 0x98, 0x6c, 0xbe, + 0x0f, 0x90, 0x37, 0x8e, 0x6f, 0xc4, 0xdf, 0xf1, 0x85, 0x4c, 0xd0, 0xb2, 0x4d, 0x27, 0xfe, 0xa5, + 0xfb, 0xc9, 0x7b, 0x7f, 0x25, 0xe8, 0x7d, 0x4c, 0xd7, 0xf2, 0xbf, 0x9f, 0x00, 0xd7, 0x92, 0x5d, + 0x80, 0xbc, 0x7a, 0x01, 0xf2, 0xff, 0xf7, 0x02, 0xa4, 0xd3, 0x79, 0x44, 0xaa, 0xf7, 0xf3, 0x08, + 0xd0, 0xf9, 0x3c, 0x22, 0x2a, 0x45, 0xa4, 0xfb, 0x4f, 0x11, 0x8d, 0x6c, 0x99, 0x09, 0x67, 0xcb, + 0xb3, 0x2f, 0x73, 0x07, 0xd1, 0xcb, 0xdc, 0x97, 0x62, 0xef, 0xa9, 0xe5, 0x89, 0xd2, 0xe7, 0xbd, + 0xdc, 0x95, 0x1e, 0x26, 0xcf, 0x1c, 0xc5, 0xb8, 0x43, 0x80, 0xa8, 0xb5, 0xea, 0x77, 0x0a, 0x98, + 0x8b, 0xea, 0x28, 0xdb, 0xd0, 0xca, 0xd3, 0x38, 0x91, 0x33, 0xe4, 0x97, 0xba, 0x00, 0x26, 0x82, + 0x03, 0x38, 0x91, 0x31, 0x82, 0xef, 0x4e, 0x7b, 0xef, 0x91, 0x84, 0x7b, 0xef, 0xd1, 0xfe, 0xf6, + 0xde, 0xf9, 0x3f, 0x2a, 0x20, 0xd3, 0x64, 0x7b, 0xcb, 0x39, 0x82, 0xd2, 0xf5, 0x1c, 0x61, 0x38, + 0xf1, 0x39, 0xc2, 0x79, 0xf7, 0xe5, 0xdf, 0xc3, 0x60, 0x35, 0xf2, 0xfe, 0x7f, 0x40, 0x67, 0x33, + 0x0f, 0x41, 0x36, 0x78, 0x9a, 0xc0, 0xd9, 0xd3, 0x08, 0x0f, 0x84, 0xaf, 0xf4, 0xfc, 0x1e, 0x81, + 0xb3, 0xa9, 0x8c, 0x11, 0xfa, 0x52, 0xab, 0xe0, 0xb5, 0x00, 0x5b, 0x3e, 0x83, 0x70, 0x1d, 0x27, + 0x78, 0x1e, 0x53, 0x88, 0x6b, 0xc3, 0x87, 0x15, 0x8d, 0x94, 0x1d, 0xa7, 0xa6, 0xcd, 0x1a, 0x6d, + 0x32, 0xd2, 0x1f, 0x69, 0x4b, 0xe0, 0xd0, 0xfc, 0x7f, 0x47, 0x3a, 0x38, 0x7e, 0x40, 0x4b, 0xe9, + 0x79, 0x3a, 0xbe, 0x0e, 0x96, 0x22, 0x1d, 0xaf, 0x43, 0xd3, 0xc4, 0x3c, 0x01, 0xf4, 0x39, 0x04, + 0x97, 0x22, 0x86, 0x60, 0xdd, 0xc7, 0x54, 0x1f, 0x83, 0xcb, 0xd1, 0xcd, 0x8a, 0xa7, 0x13, 0xfe, + 0x4b, 0xa4, 0x5e, 0x1b, 0x5d, 0x88, 0x68, 0x54, 0x0c, 0xc2, 0x20, 0x87, 0xbf, 0x25, 0x0f, 0x7e, + 0x4f, 0x01, 0x33, 0x7e, 0x7b, 0xd8, 0xa6, 0xa2, 0x54, 0xbd, 0x0e, 0xa6, 0xa0, 0x21, 0x9e, 0x64, + 0x40, 0xd3, 0xf4, 0x10, 0x21, 0x72, 0xd8, 0x27, 0xa5, 0x78, 0x5d, 0x48, 0xd5, 0x0d, 0x00, 0x6c, + 0xf4, 0x44, 0x77, 0x59, 0x5d, 0xd2, 0xcb, 0x61, 0x59, 0xca, 0x46, 0x4f, 0x78, 0x8b, 0x24, 0xff, + 0x97, 0x61, 0xb0, 0xd6, 0x64, 0x6a, 0x19, 0xf1, 0xcd, 0x9e, 0x28, 0x1e, 0xd0, 0x34, 0x7c, 0x0b, + 0xcc, 0xbb, 0x02, 0x96, 0x8f, 0x55, 0x68, 0x95, 0x1f, 0xe1, 0xab, 0xfc, 0x9c, 0xeb, 0x37, 0xea, + 0xd4, 0x1a, 0xcb, 0xbc, 0x0e, 0xe6, 0x82, 0x01, 0xc6, 0x36, 0x0d, 0x06, 0x58, 0xcc, 0xaa, 0x9b, + 0x71, 0x03, 0xdc, 0xe6, 0x54, 0x4d, 0xf5, 0x5a, 0x45, 0xa4, 0xf4, 0xad, 0xe4, 0xe3, 0x7a, 0x2b, + 0x7a, 0x5c, 0x63, 0x9c, 0x95, 0x7f, 0xa9, 0x80, 0xd9, 0x88, 0x67, 0x32, 0x7d, 0x3b, 0xf1, 0x9b, + 0x60, 0x82, 0x18, 0xc7, 0xc8, 0xac, 0xd7, 0x90, 0x0c, 0xe3, 0xa4, 0x2f, 0x74, 0x2a, 0xb2, 0x9a, + 0x16, 0x00, 0x94, 0xde, 0x4e, 0xde, 0xf5, 0x4b, 0x41, 0xd7, 0x23, 0x7a, 0x93, 0xff, 0x70, 0x18, + 0x2c, 0xf1, 0x47, 0x32, 0x9b, 0x8e, 0x65, 0xd5, 0x6d, 0x4c, 0x4f, 0xd9, 0x20, 0x56, 0xd8, 0x80, + 0x9e, 0xb9, 0xc7, 0x07, 0x20, 0xd5, 0xfa, 0xf6, 0xf2, 0x8e, 0x7c, 0x57, 0x5f, 0x68, 0x7a, 0x42, + 0xdf, 0xb0, 0xba, 0x93, 0x0d, 0x5a, 0x03, 0xa9, 0x54, 0x49, 0xde, 0xf7, 0xb5, 0xe6, 0x87, 0x40, + 0x9d, 0xf1, 0xf3, 0xbf, 0x19, 0x06, 0x85, 0x75, 0xea, 0x58, 0xd8, 0x10, 0xb4, 0xe7, 0xbe, 0x67, + 0x72, 0x26, 0x7f, 0xaf, 0x5e, 0xa3, 0xd8, 0xad, 0x61, 0xe4, 0xf9, 0xa3, 0x70, 0x66, 0xb7, 0x20, + 0x30, 0xef, 0xbf, 0xa8, 0x42, 0x48, 0xb7, 0x82, 0x06, 0x7c, 0x1f, 0x15, 0x13, 0xbc, 0xa2, 0x0a, + 0x1b, 0xa6, 0xcd, 0x59, 0xed, 0x42, 0x52, 0xaa, 0x26, 0x77, 0xd3, 0x9d, 0xc0, 0x4d, 0xbd, 0xb9, + 0xe0, 0xc6, 0x53, 0x90, 0x09, 0xbf, 0x10, 0x56, 0x6f, 0x83, 0xb9, 0xed, 0xf7, 0x37, 0xdf, 0x59, + 0xdf, 0x7b, 0x7b, 0x5b, 0x3f, 0xd8, 0xab, 0x94, 0xb7, 0x37, 0x77, 0x77, 0x76, 0xb7, 0xb7, 0xa6, + 0x87, 0x16, 0x72, 0xcf, 0x9e, 0x2f, 0x47, 0x96, 0xa9, 0x2a, 0x18, 0xad, 0x94, 0xef, 0xef, 0x4f, + 0x2b, 0x0b, 0x13, 0xcf, 0x9e, 0x2f, 0xf3, 0xdf, 0xcc, 0x89, 0x5b, 0xdb, 0xda, 0xee, 0xbb, 0xeb, + 0xfb, 0xbb, 0xef, 0x6e, 0x57, 0xa6, 0x87, 0x17, 0xa6, 0x9e, 0x3d, 0x5f, 0x0e, 0x8b, 0x36, 0x8e, + 0x3f, 0x79, 0xb1, 0xa8, 0x7c, 0xfa, 0x62, 0x51, 0xf9, 0xfb, 0x8b, 0x45, 0xe5, 0x47, 0x2f, 0x17, + 0x87, 0x3e, 0x7d, 0xb9, 0x38, 0xf4, 0xd7, 0x97, 0x8b, 0x43, 0x0f, 0xf7, 0x8e, 0x30, 0x3d, 0xae, + 0x57, 0x0b, 0x86, 0x63, 0x15, 0x77, 0x7d, 0x47, 0xde, 0x85, 0x55, 0x52, 0x0c, 0xdc, 0x7a, 0xd3, + 0x70, 0x3c, 0x14, 0xfe, 0x3c, 0x86, 0xd8, 0x2e, 0x5a, 0x0e, 0xeb, 0x1b, 0x69, 0xb0, 0x61, 0xc6, + 0xc9, 0x48, 0x75, 0x8c, 0xff, 0xc5, 0xc4, 0x97, 0xff, 0x17, 0x00, 0x00, 0xff, 0xff, 0x86, 0x3e, + 0x35, 0xf5, 0x79, 0x32, 0x00, 0x00, } func (m *SpotMarketParamUpdateProposal) Marshal() (dAtA []byte, err error) { @@ -1397,6 +1408,16 @@ func (m *SpotMarketParamUpdateProposal) MarshalToSizedBuffer(dAtA []byte) (int, _ = i var l int _ = l + if m.QuoteDecimals != 0 { + i = encodeVarintProposal(dAtA, i, uint64(m.QuoteDecimals)) + i-- + dAtA[i] = 0x70 + } + if m.BaseDecimals != 0 { + i = encodeVarintProposal(dAtA, i, uint64(m.BaseDecimals)) + i-- + dAtA[i] = 0x68 + } if m.AdminInfo != nil { { size, err := m.AdminInfo.MarshalToSizedBuffer(dAtA[:i]) @@ -1764,6 +1785,16 @@ func (m *SpotMarketLaunchProposal) MarshalToSizedBuffer(dAtA []byte) (int, error _ = i var l int _ = l + if m.QuoteDecimals != 0 { + i = encodeVarintProposal(dAtA, i, uint64(m.QuoteDecimals)) + i-- + dAtA[i] = 0x78 + } + if m.BaseDecimals != 0 { + i = encodeVarintProposal(dAtA, i, uint64(m.BaseDecimals)) + i-- + dAtA[i] = 0x70 + } if m.AdminInfo != nil { { size, err := m.AdminInfo.MarshalToSizedBuffer(dAtA[:i]) @@ -3406,6 +3437,12 @@ func (m *SpotMarketParamUpdateProposal) Size() (n int) { l = m.AdminInfo.Size() n += 1 + l + sovProposal(uint64(l)) } + if m.BaseDecimals != 0 { + n += 1 + sovProposal(uint64(m.BaseDecimals)) + } + if m.QuoteDecimals != 0 { + n += 1 + sovProposal(uint64(m.QuoteDecimals)) + } return n } @@ -3550,6 +3587,12 @@ func (m *SpotMarketLaunchProposal) Size() (n int) { l = m.AdminInfo.Size() n += 1 + l + sovProposal(uint64(l)) } + if m.BaseDecimals != 0 { + n += 1 + sovProposal(uint64(m.BaseDecimals)) + } + if m.QuoteDecimals != 0 { + n += 1 + sovProposal(uint64(m.QuoteDecimals)) + } return n } @@ -4590,6 +4633,44 @@ func (m *SpotMarketParamUpdateProposal) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 13: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field BaseDecimals", wireType) + } + m.BaseDecimals = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowProposal + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.BaseDecimals |= uint32(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 14: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field QuoteDecimals", wireType) + } + m.QuoteDecimals = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowProposal + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.QuoteDecimals |= uint32(b&0x7F) << shift + if b < 0x80 { + break + } + } default: iNdEx = preIndex skippy, err := skipProposal(dAtA[iNdEx:]) @@ -5637,6 +5718,44 @@ func (m *SpotMarketLaunchProposal) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 14: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field BaseDecimals", wireType) + } + m.BaseDecimals = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowProposal + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.BaseDecimals |= uint32(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 15: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field QuoteDecimals", wireType) + } + m.QuoteDecimals = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowProposal + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.QuoteDecimals |= uint32(b&0x7F) << shift + if b < 0x80 { + break + } + } default: iNdEx = preIndex skippy, err := skipProposal(dAtA[iNdEx:]) diff --git a/chain/exchange/types/query.pb.go b/chain/exchange/types/query.pb.go index 865c480d..00a13881 100644 --- a/chain/exchange/types/query.pb.go +++ b/chain/exchange/types/query.pb.go @@ -6275,6 +6275,255 @@ func (m *QueryTraderDerivativeConditionalOrdersResponse) GetOrders() []*TrimmedD return nil } +type QueryFullSpotOrderbookRequest struct { + // market id + MarketId string `protobuf:"bytes,1,opt,name=market_id,json=marketId,proto3" json:"market_id,omitempty"` +} + +func (m *QueryFullSpotOrderbookRequest) Reset() { *m = QueryFullSpotOrderbookRequest{} } +func (m *QueryFullSpotOrderbookRequest) String() string { return proto.CompactTextString(m) } +func (*QueryFullSpotOrderbookRequest) ProtoMessage() {} +func (*QueryFullSpotOrderbookRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_523db28b8af54781, []int{122} +} +func (m *QueryFullSpotOrderbookRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryFullSpotOrderbookRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryFullSpotOrderbookRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryFullSpotOrderbookRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryFullSpotOrderbookRequest.Merge(m, src) +} +func (m *QueryFullSpotOrderbookRequest) XXX_Size() int { + return m.Size() +} +func (m *QueryFullSpotOrderbookRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryFullSpotOrderbookRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryFullSpotOrderbookRequest proto.InternalMessageInfo + +func (m *QueryFullSpotOrderbookRequest) GetMarketId() string { + if m != nil { + return m.MarketId + } + return "" +} + +type QueryFullSpotOrderbookResponse struct { + Bids []*TrimmedLimitOrder `protobuf:"bytes,1,rep,name=Bids,proto3" json:"Bids,omitempty"` + Asks []*TrimmedLimitOrder `protobuf:"bytes,2,rep,name=Asks,proto3" json:"Asks,omitempty"` +} + +func (m *QueryFullSpotOrderbookResponse) Reset() { *m = QueryFullSpotOrderbookResponse{} } +func (m *QueryFullSpotOrderbookResponse) String() string { return proto.CompactTextString(m) } +func (*QueryFullSpotOrderbookResponse) ProtoMessage() {} +func (*QueryFullSpotOrderbookResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_523db28b8af54781, []int{123} +} +func (m *QueryFullSpotOrderbookResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryFullSpotOrderbookResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryFullSpotOrderbookResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryFullSpotOrderbookResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryFullSpotOrderbookResponse.Merge(m, src) +} +func (m *QueryFullSpotOrderbookResponse) XXX_Size() int { + return m.Size() +} +func (m *QueryFullSpotOrderbookResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryFullSpotOrderbookResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryFullSpotOrderbookResponse proto.InternalMessageInfo + +func (m *QueryFullSpotOrderbookResponse) GetBids() []*TrimmedLimitOrder { + if m != nil { + return m.Bids + } + return nil +} + +func (m *QueryFullSpotOrderbookResponse) GetAsks() []*TrimmedLimitOrder { + if m != nil { + return m.Asks + } + return nil +} + +type QueryFullDerivativeOrderbookRequest struct { + // market id + MarketId string `protobuf:"bytes,1,opt,name=market_id,json=marketId,proto3" json:"market_id,omitempty"` +} + +func (m *QueryFullDerivativeOrderbookRequest) Reset() { *m = QueryFullDerivativeOrderbookRequest{} } +func (m *QueryFullDerivativeOrderbookRequest) String() string { return proto.CompactTextString(m) } +func (*QueryFullDerivativeOrderbookRequest) ProtoMessage() {} +func (*QueryFullDerivativeOrderbookRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_523db28b8af54781, []int{124} +} +func (m *QueryFullDerivativeOrderbookRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryFullDerivativeOrderbookRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryFullDerivativeOrderbookRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryFullDerivativeOrderbookRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryFullDerivativeOrderbookRequest.Merge(m, src) +} +func (m *QueryFullDerivativeOrderbookRequest) XXX_Size() int { + return m.Size() +} +func (m *QueryFullDerivativeOrderbookRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryFullDerivativeOrderbookRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryFullDerivativeOrderbookRequest proto.InternalMessageInfo + +func (m *QueryFullDerivativeOrderbookRequest) GetMarketId() string { + if m != nil { + return m.MarketId + } + return "" +} + +type QueryFullDerivativeOrderbookResponse struct { + Bids []*TrimmedLimitOrder `protobuf:"bytes,1,rep,name=Bids,proto3" json:"Bids,omitempty"` + Asks []*TrimmedLimitOrder `protobuf:"bytes,2,rep,name=Asks,proto3" json:"Asks,omitempty"` +} + +func (m *QueryFullDerivativeOrderbookResponse) Reset() { *m = QueryFullDerivativeOrderbookResponse{} } +func (m *QueryFullDerivativeOrderbookResponse) String() string { return proto.CompactTextString(m) } +func (*QueryFullDerivativeOrderbookResponse) ProtoMessage() {} +func (*QueryFullDerivativeOrderbookResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_523db28b8af54781, []int{125} +} +func (m *QueryFullDerivativeOrderbookResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryFullDerivativeOrderbookResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryFullDerivativeOrderbookResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryFullDerivativeOrderbookResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryFullDerivativeOrderbookResponse.Merge(m, src) +} +func (m *QueryFullDerivativeOrderbookResponse) XXX_Size() int { + return m.Size() +} +func (m *QueryFullDerivativeOrderbookResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryFullDerivativeOrderbookResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryFullDerivativeOrderbookResponse proto.InternalMessageInfo + +func (m *QueryFullDerivativeOrderbookResponse) GetBids() []*TrimmedLimitOrder { + if m != nil { + return m.Bids + } + return nil +} + +func (m *QueryFullDerivativeOrderbookResponse) GetAsks() []*TrimmedLimitOrder { + if m != nil { + return m.Asks + } + return nil +} + +type TrimmedLimitOrder struct { + Price cosmossdk_io_math.LegacyDec `protobuf:"bytes,1,opt,name=price,proto3,customtype=cosmossdk.io/math.LegacyDec" json:"price"` + // quantity of the order + Quantity cosmossdk_io_math.LegacyDec `protobuf:"bytes,2,opt,name=quantity,proto3,customtype=cosmossdk.io/math.LegacyDec" json:"quantity"` + OrderHash string `protobuf:"bytes,3,opt,name=order_hash,json=orderHash,proto3" json:"order_hash,omitempty"` + SubaccountId string `protobuf:"bytes,4,opt,name=subaccount_id,json=subaccountId,proto3" json:"subaccount_id,omitempty"` +} + +func (m *TrimmedLimitOrder) Reset() { *m = TrimmedLimitOrder{} } +func (m *TrimmedLimitOrder) String() string { return proto.CompactTextString(m) } +func (*TrimmedLimitOrder) ProtoMessage() {} +func (*TrimmedLimitOrder) Descriptor() ([]byte, []int) { + return fileDescriptor_523db28b8af54781, []int{126} +} +func (m *TrimmedLimitOrder) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *TrimmedLimitOrder) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_TrimmedLimitOrder.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *TrimmedLimitOrder) XXX_Merge(src proto.Message) { + xxx_messageInfo_TrimmedLimitOrder.Merge(m, src) +} +func (m *TrimmedLimitOrder) XXX_Size() int { + return m.Size() +} +func (m *TrimmedLimitOrder) XXX_DiscardUnknown() { + xxx_messageInfo_TrimmedLimitOrder.DiscardUnknown(m) +} + +var xxx_messageInfo_TrimmedLimitOrder proto.InternalMessageInfo + +func (m *TrimmedLimitOrder) GetOrderHash() string { + if m != nil { + return m.OrderHash + } + return "" +} + +func (m *TrimmedLimitOrder) GetSubaccountId() string { + if m != nil { + return m.SubaccountId + } + return "" +} + type QueryMarketAtomicExecutionFeeMultiplierRequest struct { MarketId string `protobuf:"bytes,1,opt,name=market_id,json=marketId,proto3" json:"market_id,omitempty"` } @@ -6287,7 +6536,7 @@ func (m *QueryMarketAtomicExecutionFeeMultiplierRequest) String() string { } func (*QueryMarketAtomicExecutionFeeMultiplierRequest) ProtoMessage() {} func (*QueryMarketAtomicExecutionFeeMultiplierRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_523db28b8af54781, []int{122} + return fileDescriptor_523db28b8af54781, []int{127} } func (m *QueryMarketAtomicExecutionFeeMultiplierRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6335,7 +6584,7 @@ func (m *QueryMarketAtomicExecutionFeeMultiplierResponse) String() string { } func (*QueryMarketAtomicExecutionFeeMultiplierResponse) ProtoMessage() {} func (*QueryMarketAtomicExecutionFeeMultiplierResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_523db28b8af54781, []int{123} + return fileDescriptor_523db28b8af54781, []int{128} } func (m *QueryMarketAtomicExecutionFeeMultiplierResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6372,7 +6621,7 @@ func (m *QueryActiveStakeGrantRequest) Reset() { *m = QueryActiveStakeGr func (m *QueryActiveStakeGrantRequest) String() string { return proto.CompactTextString(m) } func (*QueryActiveStakeGrantRequest) ProtoMessage() {} func (*QueryActiveStakeGrantRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_523db28b8af54781, []int{124} + return fileDescriptor_523db28b8af54781, []int{129} } func (m *QueryActiveStakeGrantRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6417,7 +6666,7 @@ func (m *QueryActiveStakeGrantResponse) Reset() { *m = QueryActiveStakeG func (m *QueryActiveStakeGrantResponse) String() string { return proto.CompactTextString(m) } func (*QueryActiveStakeGrantResponse) ProtoMessage() {} func (*QueryActiveStakeGrantResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_523db28b8af54781, []int{125} + return fileDescriptor_523db28b8af54781, []int{130} } func (m *QueryActiveStakeGrantResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6469,7 +6718,7 @@ func (m *QueryGrantAuthorizationRequest) Reset() { *m = QueryGrantAuthor func (m *QueryGrantAuthorizationRequest) String() string { return proto.CompactTextString(m) } func (*QueryGrantAuthorizationRequest) ProtoMessage() {} func (*QueryGrantAuthorizationRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_523db28b8af54781, []int{126} + return fileDescriptor_523db28b8af54781, []int{131} } func (m *QueryGrantAuthorizationRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6520,7 +6769,7 @@ func (m *QueryGrantAuthorizationResponse) Reset() { *m = QueryGrantAutho func (m *QueryGrantAuthorizationResponse) String() string { return proto.CompactTextString(m) } func (*QueryGrantAuthorizationResponse) ProtoMessage() {} func (*QueryGrantAuthorizationResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_523db28b8af54781, []int{127} + return fileDescriptor_523db28b8af54781, []int{132} } func (m *QueryGrantAuthorizationResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6557,7 +6806,7 @@ func (m *QueryGrantAuthorizationsRequest) Reset() { *m = QueryGrantAutho func (m *QueryGrantAuthorizationsRequest) String() string { return proto.CompactTextString(m) } func (*QueryGrantAuthorizationsRequest) ProtoMessage() {} func (*QueryGrantAuthorizationsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_523db28b8af54781, []int{128} + return fileDescriptor_523db28b8af54781, []int{133} } func (m *QueryGrantAuthorizationsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6602,7 +6851,7 @@ func (m *QueryGrantAuthorizationsResponse) Reset() { *m = QueryGrantAuth func (m *QueryGrantAuthorizationsResponse) String() string { return proto.CompactTextString(m) } func (*QueryGrantAuthorizationsResponse) ProtoMessage() {} func (*QueryGrantAuthorizationsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_523db28b8af54781, []int{129} + return fileDescriptor_523db28b8af54781, []int{134} } func (m *QueryGrantAuthorizationsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6764,6 +7013,11 @@ func init() { proto.RegisterType((*QueryTraderDerivativeConditionalOrdersRequest)(nil), "injective.exchange.v1beta1.QueryTraderDerivativeConditionalOrdersRequest") proto.RegisterType((*TrimmedDerivativeConditionalOrder)(nil), "injective.exchange.v1beta1.TrimmedDerivativeConditionalOrder") proto.RegisterType((*QueryTraderDerivativeConditionalOrdersResponse)(nil), "injective.exchange.v1beta1.QueryTraderDerivativeConditionalOrdersResponse") + proto.RegisterType((*QueryFullSpotOrderbookRequest)(nil), "injective.exchange.v1beta1.QueryFullSpotOrderbookRequest") + proto.RegisterType((*QueryFullSpotOrderbookResponse)(nil), "injective.exchange.v1beta1.QueryFullSpotOrderbookResponse") + proto.RegisterType((*QueryFullDerivativeOrderbookRequest)(nil), "injective.exchange.v1beta1.QueryFullDerivativeOrderbookRequest") + proto.RegisterType((*QueryFullDerivativeOrderbookResponse)(nil), "injective.exchange.v1beta1.QueryFullDerivativeOrderbookResponse") + proto.RegisterType((*TrimmedLimitOrder)(nil), "injective.exchange.v1beta1.TrimmedLimitOrder") proto.RegisterType((*QueryMarketAtomicExecutionFeeMultiplierRequest)(nil), "injective.exchange.v1beta1.QueryMarketAtomicExecutionFeeMultiplierRequest") proto.RegisterType((*QueryMarketAtomicExecutionFeeMultiplierResponse)(nil), "injective.exchange.v1beta1.QueryMarketAtomicExecutionFeeMultiplierResponse") proto.RegisterType((*QueryActiveStakeGrantRequest)(nil), "injective.exchange.v1beta1.QueryActiveStakeGrantRequest") @@ -6779,372 +7033,382 @@ func init() { } var fileDescriptor_523db28b8af54781 = []byte{ - // 5833 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x5d, 0x7d, 0x8c, 0x1c, 0xc9, - 0x55, 0x77, 0xcf, 0x7e, 0x78, 0xf7, 0xed, 0xa7, 0x6b, 0xd7, 0xeb, 0xf5, 0xdc, 0x9d, 0x3f, 0xda, - 0x71, 0xce, 0xe7, 0x9c, 0x77, 0xed, 0xf5, 0xf7, 0xb7, 0xf7, 0xc3, 0x6b, 0xef, 0xd9, 0x6b, 0x3b, - 0xb3, 0xeb, 0xbb, 0xe4, 0x02, 0x4c, 0x7a, 0x67, 0x6a, 0x67, 0x3b, 0xee, 0x99, 0x1e, 0x4f, 0xf7, - 0xec, 0x79, 0x31, 0x46, 0x40, 0x40, 0x89, 0x40, 0x02, 0xa4, 0x08, 0x10, 0x02, 0x21, 0xe0, 0x4f, - 0xa4, 0x08, 0x89, 0x08, 0x81, 0x12, 0x29, 0x51, 0x08, 0x42, 0x21, 0xe1, 0x23, 0x40, 0x08, 0x28, - 0x82, 0x23, 0xba, 0x0b, 0x44, 0x39, 0x81, 0xc4, 0x5f, 0x48, 0x08, 0x14, 0x50, 0x57, 0xbd, 0xaa, - 0xe9, 0xef, 0xa9, 0x9e, 0xdd, 0xd3, 0x25, 0xf0, 0xd7, 0x4e, 0x57, 0xd7, 0x7b, 0xf5, 0xde, 0xab, - 0x57, 0xaf, 0x5e, 0x7d, 0xfc, 0x7a, 0xe1, 0xfd, 0x66, 0xed, 0x63, 0xb4, 0xe4, 0x9a, 0x9b, 0x74, - 0x9a, 0x3e, 0x29, 0x6d, 0x18, 0xb5, 0x0a, 0x9d, 0xde, 0x3c, 0xb5, 0x46, 0x5d, 0xe3, 0xd4, 0xf4, - 0xe3, 0x26, 0x6d, 0x6c, 0x4d, 0xd5, 0x1b, 0xb6, 0x6b, 0x93, 0xbc, 0xac, 0x37, 0x25, 0xea, 0x4d, - 0x61, 0xbd, 0xfc, 0xf3, 0x15, 0xdb, 0xae, 0x58, 0x74, 0xda, 0xa8, 0x9b, 0xd3, 0x46, 0xad, 0x66, - 0xbb, 0x86, 0x6b, 0xda, 0x35, 0x87, 0x53, 0xe6, 0x5f, 0x4a, 0x69, 0x41, 0xb2, 0xe2, 0x55, 0x8f, - 0xa5, 0x54, 0xad, 0xd0, 0x1a, 0x75, 0x4c, 0xc1, 0xf4, 0x68, 0xab, 0xa6, 0xdd, 0x30, 0x4a, 0x56, - 0xab, 0x1e, 0x7f, 0xc4, 0x6a, 0xe3, 0x15, 0xbb, 0x62, 0xb3, 0x9f, 0xd3, 0xde, 0x2f, 0x5e, 0xaa, - 0xdf, 0x07, 0x58, 0x69, 0xae, 0x19, 0xa5, 0x92, 0xdd, 0xac, 0xb9, 0x64, 0x02, 0x7a, 0xdd, 0x86, - 0x51, 0xa6, 0x8d, 0x49, 0xed, 0x90, 0x76, 0xac, 0xbf, 0x80, 0x4f, 0xe4, 0x25, 0x18, 0x75, 0x64, - 0xad, 0x62, 0xcd, 0xae, 0x95, 0xe8, 0x64, 0xee, 0x90, 0x76, 0x6c, 0xa8, 0x30, 0xd2, 0x2a, 0xbf, - 0xe7, 0x15, 0xeb, 0x1f, 0x85, 0xe7, 0x3f, 0xe8, 0xd9, 0xaa, 0xc5, 0xf5, 0x7e, 0xa3, 0x4c, 0x1b, - 0x4e, 0x81, 0x3e, 0x6e, 0x52, 0xc7, 0x25, 0x47, 0x60, 0xc8, 0xc7, 0xca, 0x2c, 0x63, 0x4b, 0x83, - 0xad, 0xc2, 0xa5, 0x32, 0x79, 0x0e, 0xfa, 0xab, 0x46, 0xe3, 0x11, 0x65, 0x15, 0x72, 0xac, 0x42, - 0x1f, 0x2f, 0x58, 0x2a, 0xeb, 0x5f, 0xd4, 0xe0, 0x85, 0x84, 0x26, 0x9c, 0xba, 0x5d, 0x73, 0x28, - 0xb9, 0x07, 0xb0, 0xd6, 0xdc, 0x2a, 0xda, 0xac, 0x74, 0x52, 0x3b, 0xd4, 0x75, 0x6c, 0x60, 0x66, - 0x7a, 0x2a, 0xb9, 0xd7, 0xa6, 0x42, 0x9c, 0x16, 0x0c, 0xd7, 0x28, 0xf4, 0xaf, 0x35, 0xb7, 0x38, - 0x5f, 0xf2, 0x00, 0x06, 0x1c, 0x6a, 0x59, 0x82, 0x61, 0xae, 0x33, 0x86, 0xe0, 0xf1, 0xe0, 0x1c, - 0xf5, 0xdf, 0xd5, 0xe0, 0x68, 0xa8, 0xce, 0x9a, 0x6d, 0x3f, 0x5a, 0xa6, 0xae, 0x51, 0x36, 0x5c, - 0xe3, 0x35, 0xd3, 0xdd, 0x58, 0x66, 0xfa, 0x92, 0x15, 0xe8, 0xab, 0x62, 0x29, 0x33, 0xd5, 0xc0, - 0xcc, 0xf9, 0x0c, 0x0d, 0xfb, 0x99, 0x16, 0x24, 0xa3, 0x54, 0xfb, 0x92, 0x71, 0xe8, 0x31, 0x9d, - 0xb9, 0xe6, 0xd6, 0x64, 0xd7, 0x21, 0xed, 0x58, 0x5f, 0x81, 0x3f, 0xe8, 0xcf, 0x43, 0x9e, 0x19, - 0xfd, 0x26, 0xb6, 0xf8, 0xc0, 0x68, 0x18, 0x55, 0xd1, 0xab, 0x7a, 0x11, 0x9e, 0x8b, 0x7d, 0x8b, - 0x1d, 0x72, 0x03, 0x7a, 0xeb, 0xac, 0x04, 0x55, 0xd0, 0xd3, 0x54, 0xe0, 0xb4, 0x73, 0xdd, 0x5f, - 0x7e, 0xf3, 0xe0, 0xae, 0x02, 0xd2, 0xe9, 0x9f, 0xd2, 0xe0, 0x40, 0xa8, 0xd3, 0x17, 0x68, 0xdd, - 0x76, 0x4c, 0x37, 0x9b, 0x67, 0xdd, 0x05, 0x68, 0x3d, 0x33, 0xd5, 0x07, 0x66, 0xde, 0xaf, 0x66, - 0x50, 0x26, 0x91, 0x56, 0xf0, 0xd1, 0xeb, 0xef, 0x68, 0x70, 0x30, 0x51, 0x2a, 0xd4, 0x9d, 0x42, - 0x5f, 0x19, 0xcb, 0xd0, 0x15, 0x97, 0xd2, 0xda, 0x6b, 0xc3, 0x6e, 0x4a, 0x14, 0xdc, 0xac, 0xb9, - 0x8d, 0xad, 0x82, 0x64, 0x9d, 0xff, 0x28, 0x0c, 0x05, 0x5e, 0x91, 0x51, 0xe8, 0x7a, 0x44, 0xb7, - 0xd0, 0x08, 0xde, 0x4f, 0x72, 0x11, 0x7a, 0x36, 0x0d, 0xab, 0x49, 0x51, 0xed, 0x23, 0x69, 0x62, - 0x20, 0xaf, 0x02, 0xa7, 0xb8, 0x94, 0xbb, 0xa0, 0xe9, 0x07, 0x70, 0x64, 0x8b, 0x3e, 0x9e, 0x33, - 0x2c, 0xa3, 0x56, 0xa2, 0xd2, 0x07, 0xd6, 0x71, 0x58, 0x46, 0xdf, 0xa3, 0x25, 0x6e, 0x42, 0xdf, - 0x1a, 0x96, 0xa1, 0x25, 0x52, 0x45, 0x40, 0x7a, 0x74, 0x04, 0x49, 0xaa, 0x9f, 0x47, 0x5f, 0x9b, - 0xad, 0x54, 0x1a, 0xb4, 0x62, 0xb8, 0xf4, 0x55, 0xdb, 0x6a, 0x56, 0xa9, 0x70, 0x83, 0x49, 0xd8, - 0x2d, 0xba, 0x97, 0xeb, 0x2e, 0x1e, 0xf5, 0x26, 0x2a, 0x10, 0x21, 0x44, 0xf9, 0x1e, 0xc2, 0x1e, - 0x43, 0xbc, 0x2a, 0x6e, 0xb2, 0x77, 0x42, 0xd0, 0x63, 0x69, 0x82, 0xf2, 0x91, 0x8a, 0xcc, 0x46, - 0x8d, 0x20, 0x77, 0x47, 0xff, 0x70, 0x7c, 0xb3, 0xd2, 0x6f, 0xf3, 0xd0, 0x87, 0x12, 0xf2, 0xd6, - 0xfa, 0x0b, 0xf2, 0x99, 0xbc, 0x00, 0x20, 0x07, 0x2a, 0x0f, 0x3c, 0xfd, 0x85, 0x7e, 0x31, 0x52, - 0x1d, 0xfd, 0x3f, 0x45, 0x28, 0x8c, 0xf2, 0x46, 0x9d, 0x5c, 0xd8, 0xdf, 0xd2, 0x49, 0x8c, 0x8d, - 0xa0, 0x6e, 0x17, 0xd2, 0x74, 0x93, 0x8c, 0x67, 0x39, 0xad, 0x30, 0x59, 0xc9, 0x6e, 0x94, 0x0b, - 0xfb, 0x8c, 0xd8, 0xb7, 0x0e, 0x59, 0x83, 0xc9, 0x56, 0xab, 0xa8, 0x80, 0x68, 0x34, 0x97, 0xd1, - 0xa0, 0x13, 0x92, 0x93, 0xbf, 0xd8, 0xd1, 0x6f, 0xc0, 0xe1, 0xa0, 0xea, 0x01, 0x2a, 0xb4, 0x6d, - 0x20, 0xd0, 0x69, 0xa1, 0x89, 0xc4, 0x02, 0x3d, 0x8d, 0x03, 0x5a, 0x70, 0x11, 0x7a, 0xb9, 0xe8, - 0x18, 0xbb, 0x52, 0x25, 0xf7, 0x9b, 0x47, 0x44, 0x30, 0x4e, 0xad, 0x9f, 0x84, 0x49, 0xd6, 0xda, - 0x02, 0xad, 0xd9, 0xd5, 0x05, 0x5a, 0x32, 0xab, 0x86, 0x25, 0xc4, 0x1c, 0x87, 0x9e, 0xb2, 0x57, - 0x8c, 0x22, 0xf2, 0x07, 0xfd, 0x2c, 0xec, 0x8f, 0xa1, 0x40, 0xb1, 0x26, 0x61, 0x77, 0x99, 0x17, - 0x31, 0xa2, 0xee, 0x82, 0x78, 0xd4, 0x4f, 0xc7, 0x90, 0x49, 0x67, 0x9b, 0x80, 0x5e, 0xc6, 0x5c, - 0xb8, 0x1a, 0x3e, 0xe9, 0x2e, 0x86, 0xf7, 0x10, 0x11, 0x36, 0xf6, 0x2a, 0x0c, 0xb3, 0x7a, 0x45, - 0x6c, 0x43, 0xb8, 0xce, 0x4b, 0xe9, 0x21, 0xc4, 0xc7, 0x0a, 0x8d, 0x31, 0x54, 0xf6, 0x17, 0xea, - 0xf3, 0x69, 0x3d, 0x20, 0x65, 0x0e, 0x0e, 0x02, 0x2d, 0x3c, 0x08, 0x4c, 0x38, 0x92, 0xca, 0x04, - 0x75, 0x98, 0x83, 0xdd, 0x9d, 0x8e, 0x69, 0x41, 0xa8, 0xbf, 0x1e, 0xc9, 0x3c, 0x44, 0x9c, 0xcc, - 0x32, 0x07, 0xc9, 0xde, 0xce, 0xf9, 0x7b, 0xdb, 0x48, 0x9a, 0xe0, 0xa4, 0x06, 0xd7, 0x03, 0x33, - 0x89, 0x72, 0x08, 0x97, 0x44, 0xfa, 0x03, 0xd8, 0xc7, 0x9b, 0xa8, 0xdb, 0x2e, 0x57, 0xd0, 0xef, - 0x17, 0x8e, 0x6b, 0xb8, 0x4d, 0x47, 0x64, 0x7e, 0xfc, 0xa9, 0x5d, 0x00, 0xfa, 0x21, 0x74, 0xea, - 0x00, 0x47, 0x39, 0xe9, 0xef, 0xe6, 0x15, 0x85, 0xc1, 0xd3, 0xe7, 0x59, 0xc9, 0xa1, 0x20, 0xc8, - 0xf4, 0xb3, 0x30, 0x11, 0xe2, 0xae, 0x34, 0xae, 0x3f, 0x1c, 0x51, 0x53, 0xca, 0x74, 0x0d, 0x7a, - 0x79, 0x35, 0x34, 0xa0, 0xaa, 0x48, 0x48, 0xa5, 0x7f, 0x23, 0x87, 0x83, 0xcb, 0x7b, 0x27, 0x33, - 0x2c, 0x15, 0xa9, 0xbc, 0x5e, 0xb7, 0xcc, 0xaa, 0xc9, 0x93, 0x8e, 0xee, 0x02, 0x7f, 0x20, 0x0b, - 0x00, 0x2c, 0xab, 0x2c, 0x3a, 0x66, 0x99, 0xb2, 0x8c, 0x6b, 0x78, 0xe6, 0x68, 0x9a, 0x50, 0xac, - 0xd1, 0x15, 0xb3, 0x4c, 0x0b, 0xfd, 0xb6, 0xf8, 0x49, 0x8a, 0xb0, 0x9f, 0xb1, 0x2b, 0x96, 0x9a, - 0xd5, 0xa6, 0x65, 0x78, 0x94, 0xc5, 0x9a, 0xed, 0xad, 0x3c, 0x0c, 0x6b, 0xb2, 0xdb, 0x13, 0x64, - 0xee, 0x88, 0x97, 0xbc, 0x7c, 0xf3, 0xcd, 0x83, 0xcf, 0x95, 0x6c, 0xa7, 0x6a, 0x3b, 0x4e, 0xf9, - 0xd1, 0x94, 0x69, 0x4f, 0x57, 0x0d, 0x77, 0x63, 0xea, 0x2e, 0xad, 0x18, 0xa5, 0xad, 0x05, 0x5a, - 0x2a, 0xec, 0x63, 0x5c, 0xe6, 0x25, 0x93, 0x7b, 0xc8, 0x23, 0xb6, 0x81, 0xc7, 0x4d, 0xa3, 0xe6, - 0x9a, 0xee, 0xd6, 0x64, 0x4f, 0xe7, 0x0d, 0x7c, 0x10, 0x79, 0xe8, 0x7f, 0xa8, 0x61, 0x00, 0x0a, - 0x19, 0x16, 0xfb, 0xed, 0x0e, 0x8c, 0xae, 0x35, 0xb7, 0x9c, 0x62, 0xbd, 0x61, 0x96, 0x68, 0xd1, - 0xa2, 0x9b, 0xd4, 0x42, 0xa7, 0x3a, 0x9c, 0x66, 0xac, 0xbb, 0x5e, 0xc5, 0xc2, 0xb0, 0x47, 0xfa, - 0xc0, 0xa3, 0x64, 0xcf, 0x64, 0x19, 0xf6, 0x78, 0xa9, 0x78, 0x90, 0x5b, 0x4e, 0x95, 0xdb, 0x08, - 0xa3, 0x6d, 0xb1, 0xd3, 0x3f, 0xad, 0xc1, 0xf0, 0x62, 0xd3, 0xb2, 0x5a, 0xee, 0xb2, 0x5d, 0x37, - 0x23, 0x1f, 0x81, 0x3d, 0x55, 0xb3, 0x8c, 0xf2, 0x19, 0xb5, 0x72, 0xd1, 0xb5, 0xd7, 0x30, 0x6b, - 0x3b, 0x9e, 0x1a, 0xb5, 0xcc, 0x32, 0x13, 0x6c, 0xb6, 0x56, 0x5e, 0xbd, 0x3f, 0x87, 0x09, 0xeb, - 0x70, 0xd5, 0x57, 0x6a, 0xaf, 0xe9, 0x9f, 0xd4, 0x30, 0x81, 0x0a, 0x0a, 0xbd, 0xcd, 0x50, 0x40, - 0x66, 0x60, 0xe2, 0x0d, 0xd3, 0xdd, 0x28, 0x46, 0x05, 0xe7, 0xeb, 0x08, 0xe2, 0xbd, 0x5d, 0x0e, - 0x8a, 0x52, 0xc6, 0xd4, 0x28, 0x22, 0x09, 0x76, 0xfb, 0x42, 0x38, 0x84, 0xa4, 0x6a, 0x1f, 0xe4, - 0xd2, 0x0a, 0x23, 0x55, 0x74, 0xad, 0xd0, 0x7b, 0x95, 0x41, 0x9b, 0xac, 0x54, 0x2e, 0x51, 0x29, - 0x23, 0xd6, 0xbc, 0xbe, 0x79, 0x28, 0xe8, 0x1b, 0x59, 0x54, 0x12, 0x61, 0xe8, 0x67, 0xe4, 0x6a, - 0x48, 0x8c, 0x16, 0x67, 0x6e, 0xeb, 0xb6, 0xe1, 0x6c, 0xb4, 0x26, 0xcd, 0x54, 0xb5, 0x22, 0xd3, - 0x54, 0x2e, 0x66, 0x9a, 0x3a, 0x0c, 0x83, 0x3c, 0x34, 0x6d, 0x30, 0xc6, 0x93, 0x5d, 0xac, 0xc7, - 0x07, 0x58, 0x19, 0x6f, 0x4b, 0xb7, 0xc4, 0xf2, 0x27, 0x46, 0x0c, 0x54, 0x77, 0x09, 0x7a, 0x03, - 0xeb, 0xf0, 0x53, 0x69, 0xea, 0xae, 0x36, 0xcc, 0x6a, 0x95, 0x96, 0x3d, 0x76, 0x77, 0xbd, 0x40, - 0xc1, 0x78, 0x16, 0x90, 0x81, 0xdc, 0x5a, 0x58, 0x65, 0x9b, 0x12, 0xad, 0x36, 0x77, 0x4c, 0x65, - 0xdd, 0x82, 0xf7, 0xf1, 0x54, 0x82, 0x97, 0xcc, 0x96, 0xcb, 0x0d, 0xea, 0x38, 0x19, 0x5b, 0x7a, - 0x11, 0x46, 0x44, 0x33, 0x06, 0x67, 0x80, 0x6d, 0x0d, 0x1b, 0x01, 0xb6, 0xfa, 0xaf, 0xe5, 0x60, - 0x6f, 0xac, 0xc6, 0xde, 0x4a, 0x8d, 0x79, 0x1b, 0xe7, 0xcd, 0x42, 0xeb, 0xae, 0x76, 0xa1, 0x95, - 0x53, 0x78, 0x49, 0x82, 0x0c, 0xcc, 0x39, 0x75, 0x6a, 0x49, 0xe4, 0x31, 0x58, 0x37, 0x2d, 0xcb, - 0x58, 0xb3, 0xf8, 0x7c, 0xa4, 0xca, 0x40, 0x10, 0xb5, 0xf6, 0x0f, 0xba, 0x7d, 0xfb, 0x07, 0x5e, - 0xf4, 0x68, 0x79, 0x13, 0x9f, 0x32, 0x70, 0x06, 0xf3, 0x1c, 0xc6, 0x5b, 0xad, 0x96, 0xcc, 0xf2, - 0x64, 0x2f, 0x5f, 0xad, 0x96, 0xcc, 0xb2, 0xfe, 0x31, 0xcc, 0xb5, 0xa2, 0xbd, 0xbd, 0xf3, 0x9e, - 0xd5, 0x80, 0xa3, 0x6d, 0xfa, 0x7d, 0xe7, 0xdb, 0xbc, 0xea, 0x1b, 0xc2, 0xc1, 0xb8, 0xad, 0x94, - 0xe4, 0xfc, 0x97, 0xe6, 0x1b, 0x7b, 0x61, 0x7a, 0x99, 0x81, 0xf5, 0xcb, 0xc0, 0xe5, 0x73, 0xa5, - 0xb6, 0xb3, 0x74, 0x9f, 0x98, 0x31, 0xc8, 0x12, 0x0c, 0xaf, 0x51, 0xc7, 0x2d, 0xae, 0x35, 0xb7, - 0x90, 0x4d, 0x4e, 0x9d, 0xcd, 0xa0, 0x47, 0x3a, 0xd7, 0xdc, 0xe2, 0xac, 0xee, 0xc0, 0x08, 0x63, - 0xc5, 0x76, 0xd2, 0x38, 0xaf, 0x2e, 0x75, 0x5e, 0x43, 0x1e, 0xed, 0x0a, 0xb5, 0x2c, 0xc6, 0x4c, - 0x9f, 0xc7, 0x81, 0xba, 0x40, 0x1b, 0xe6, 0x26, 0xcb, 0x24, 0x3a, 0x30, 0xe1, 0x4f, 0xe6, 0xb0, - 0xdb, 0x93, 0xb9, 0xfc, 0x9f, 0x37, 0xe4, 0xef, 0x0b, 0x37, 0x6a, 0xd9, 0x60, 0x27, 0xd2, 0xda, - 0xd4, 0x84, 0xb4, 0x6b, 0xfb, 0x09, 0xa9, 0xfe, 0x79, 0x0d, 0x0e, 0x25, 0xcb, 0xfd, 0x03, 0x90, - 0x35, 0xfe, 0x7a, 0x17, 0x4c, 0xc5, 0xc6, 0xb7, 0x55, 0x7b, 0xde, 0xa8, 0x95, 0xa8, 0xf5, 0xb0, - 0xbe, 0x6a, 0xcf, 0x56, 0xbd, 0x70, 0xb4, 0x73, 0x53, 0xfa, 0x02, 0x0c, 0xac, 0x19, 0x0e, 0x2d, - 0x1a, 0x8c, 0x6f, 0x96, 0xf0, 0x0e, 0x1e, 0x1d, 0x17, 0x87, 0x2c, 0xc2, 0xe0, 0xe3, 0xa6, 0xed, - 0x4a, 0x36, 0xdd, 0xea, 0x6c, 0x06, 0x18, 0x21, 0xf2, 0xb9, 0x0b, 0x7d, 0x8e, 0xdb, 0x30, 0x5c, - 0x5a, 0xe1, 0x6b, 0x88, 0xe1, 0x99, 0x93, 0x69, 0x86, 0xe4, 0x66, 0xb1, 0xd8, 0x81, 0xca, 0x0a, - 0xd2, 0x15, 0x24, 0x07, 0x72, 0x17, 0x46, 0x1a, 0x74, 0x9d, 0x36, 0x68, 0xad, 0x44, 0x71, 0x58, - 0xf4, 0xaa, 0x3b, 0xda, 0xb0, 0xa4, 0xe5, 0xe3, 0xe2, 0x1f, 0x72, 0x70, 0xc6, 0xd7, 0x3d, 0x21, - 0x2f, 0x7b, 0x57, 0x3b, 0x29, 0x6c, 0xde, 0xae, 0x1d, 0x30, 0x6f, 0xf7, 0xbb, 0x61, 0xde, 0x9e, - 0xce, 0xcd, 0xbb, 0x8e, 0x1b, 0x3f, 0xf1, 0xd6, 0xdd, 0xb9, 0x84, 0xae, 0x01, 0xc7, 0x63, 0x26, - 0xf6, 0x8e, 0xda, 0x53, 0x4e, 0xeb, 0xbe, 0x9b, 0x83, 0xe7, 0x70, 0xea, 0x6f, 0x35, 0xf4, 0x7d, - 0x92, 0xdc, 0x5d, 0x66, 0x8b, 0x8f, 0x8a, 0x59, 0xcb, 0xe2, 0x55, 0x48, 0x12, 0xc8, 0x0c, 0xbb, - 0x3b, 0xc9, 0x0c, 0x0f, 0x8a, 0xcc, 0xd0, 0xf3, 0x9c, 0xbe, 0xb9, 0xfe, 0x77, 0xde, 0x3c, 0xc8, - 0x0b, 0xe2, 0x93, 0xc4, 0xde, 0x84, 0x24, 0x71, 0x77, 0x2b, 0x49, 0xdc, 0xc4, 0xbd, 0xbf, 0x24, - 0x3f, 0xc2, 0x89, 0xe0, 0x7e, 0x28, 0x6d, 0x3b, 0xaf, 0x90, 0xb6, 0xc5, 0xf5, 0x9d, 0x4c, 0xde, - 0x7e, 0x1c, 0x3e, 0xa0, 0xe4, 0x57, 0xef, 0x56, 0xfb, 0x3f, 0xa7, 0x45, 0x12, 0xa0, 0xf7, 0x70, - 0x19, 0xf8, 0x24, 0x92, 0x47, 0x25, 0x2c, 0x06, 0x77, 0xdc, 0x0e, 0x3f, 0x2b, 0x0e, 0x40, 0x7c, - 0x29, 0xdc, 0x7b, 0xb6, 0x9b, 0xf1, 0x49, 0x0d, 0xc0, 0x97, 0x30, 0xbc, 0x87, 0xe3, 0x5c, 0xff, - 0x82, 0x06, 0xe3, 0x0f, 0x68, 0xa3, 0x4e, 0xdd, 0xa6, 0x61, 0x71, 0x8b, 0xac, 0xb8, 0x86, 0x4b, - 0xc9, 0x03, 0x18, 0x10, 0x6a, 0xd7, 0xd6, 0x6d, 0xdc, 0x82, 0x48, 0x3d, 0xca, 0x0e, 0xb1, 0x59, - 0xaa, 0xad, 0xdb, 0x05, 0x34, 0x9d, 0xf7, 0x9b, 0x3c, 0x84, 0xc1, 0xf5, 0x66, 0xad, 0x6c, 0xd6, - 0x2a, 0x9c, 0x25, 0xdf, 0xa6, 0x9a, 0xc9, 0xc0, 0x72, 0x91, 0x93, 0x17, 0x06, 0x90, 0x8f, 0xc7, - 0x56, 0xff, 0x6c, 0x17, 0x8c, 0x2f, 0x36, 0x2d, 0x2b, 0xdc, 0xb1, 0x64, 0x21, 0xb4, 0x7f, 0xf2, - 0x72, 0xfa, 0x1e, 0x78, 0x90, 0x5a, 0xee, 0xb0, 0x7d, 0x18, 0x86, 0xeb, 0x42, 0x0a, 0xbf, 0xdc, - 0x27, 0x33, 0xc8, 0xcd, 0x2c, 0x7a, 0x7b, 0x57, 0x61, 0x48, 0x72, 0x62, 0x06, 0xf9, 0x90, 0x67, - 0x10, 0xb7, 0xd9, 0xa0, 0x0e, 0x67, 0xdc, 0xc5, 0x18, 0x9f, 0x4e, 0x63, 0x7c, 0xf3, 0x49, 0xdd, - 0x6c, 0x6c, 0x2d, 0x72, 0xaa, 0x96, 0x9d, 0x6f, 0xef, 0xf2, 0x6c, 0xc2, 0x0a, 0x19, 0xe7, 0x39, - 0xee, 0xb3, 0x38, 0xfd, 0x66, 0x08, 0xc1, 0xcc, 0xb1, 0xf9, 0xea, 0x21, 0x76, 0x6b, 0xb1, 0x67, - 0x67, 0xb6, 0x16, 0xe7, 0x7a, 0xa1, 0xdb, 0x53, 0x59, 0xb7, 0x70, 0x6d, 0x1b, 0x33, 0x2a, 0x31, - 0x12, 0xbc, 0x12, 0xde, 0xd9, 0x3b, 0xd9, 0x6e, 0x1b, 0x2c, 0xd2, 0x95, 0x72, 0x7f, 0xef, 0x32, - 0xee, 0x0b, 0x45, 0x6a, 0xa8, 0x2c, 0x02, 0xcd, 0x84, 0x00, 0x22, 0x25, 0xbd, 0x1d, 0xf2, 0xb7, - 0xec, 0x82, 0x8a, 0x5d, 0xbb, 0x39, 0x9c, 0xac, 0xc2, 0x15, 0x70, 0xf6, 0x50, 0x12, 0x97, 0x46, - 0x17, 0xbe, 0x41, 0x1e, 0xad, 0xe3, 0x41, 0x91, 0xa5, 0x88, 0x53, 0x70, 0xfe, 0xa8, 0x96, 0x37, - 0xdd, 0xc2, 0xd5, 0x55, 0xeb, 0x30, 0x8a, 0xcd, 0xb0, 0xec, 0x8a, 0x4f, 0x96, 0xb3, 0x2e, 0x7d, - 0x31, 0x72, 0x41, 0xe2, 0x81, 0xed, 0x98, 0xec, 0x4e, 0x54, 0x26, 0x3e, 0x1f, 0x83, 0xf7, 0x27, - 0xf0, 0x59, 0xaa, 0x05, 0x7b, 0x7b, 0xfb, 0x17, 0x8c, 0x1c, 0x98, 0x0e, 0xb5, 0x75, 0x73, 0x7d, - 0x9d, 0xf7, 0xf8, 0xbb, 0xd7, 0xe8, 0x2b, 0xe8, 0x1c, 0xa1, 0x0b, 0x3c, 0xf2, 0xf2, 0x4e, 0x16, - 0x63, 0xd5, 0x22, 0xbd, 0xe7, 0x33, 0xba, 0x1c, 0x80, 0x3d, 0xde, 0x4c, 0x48, 0x71, 0xf8, 0x4d, - 0xa9, 0x45, 0x51, 0xc1, 0x07, 0x8f, 0x73, 0x39, 0x0b, 0xfd, 0x11, 0xbc, 0xd8, 0xb6, 0x73, 0xe4, - 0x4e, 0x8a, 0x6c, 0xd6, 0x1b, 0x4c, 0xef, 0x4b, 0x0d, 0xb7, 0xfe, 0xc6, 0x34, 0xd1, 0xd8, 0xc7, - 0x73, 0xb0, 0x27, 0xd2, 0x1f, 0x64, 0x1f, 0xec, 0x36, 0x9d, 0xa2, 0x65, 0xd7, 0x2a, 0x8c, 0x73, - 0x5f, 0xa1, 0xd7, 0x74, 0xee, 0xda, 0xb5, 0xca, 0xf6, 0x53, 0xe6, 0x05, 0x18, 0xa0, 0x35, 0xb7, - 0xb1, 0x15, 0xd9, 0x6a, 0x69, 0xbf, 0x66, 0x66, 0x74, 0x3c, 0xec, 0xde, 0x83, 0x51, 0x2a, 0x84, - 0x2e, 0x62, 0x0a, 0x9e, 0x21, 0x80, 0x8f, 0x48, 0xe2, 0x65, 0x46, 0xab, 0x3f, 0x83, 0x93, 0xea, - 0x3e, 0x2a, 0x37, 0x2f, 0x03, 0xb6, 0x3f, 0x91, 0x3a, 0x23, 0x85, 0xb9, 0x05, 0x3b, 0xe1, 0x1a, - 0x0e, 0xeb, 0xb8, 0xe4, 0x40, 0x25, 0x8c, 0x55, 0xd1, 0x43, 0x63, 0xe9, 0xa5, 0xb8, 0xdd, 0xdb, - 0xc8, 0x51, 0xd0, 0x43, 0xf9, 0x7c, 0x24, 0x22, 0x6f, 0xc2, 0x3c, 0xab, 0x24, 0x72, 0x13, 0x23, - 0x6f, 0x22, 0x0f, 0x14, 0x7b, 0x39, 0x20, 0x76, 0x27, 0xd3, 0x7e, 0x40, 0xf4, 0x59, 0x5c, 0x29, - 0x27, 0xe4, 0x4c, 0x6a, 0x92, 0x1f, 0x49, 0x65, 0x21, 0x6f, 0x4d, 0x06, 0xdc, 0xa3, 0x83, 0x0c, - 0x2e, 0x18, 0x15, 0xe4, 0x1a, 0x25, 0x31, 0xa4, 0x61, 0xc3, 0xa5, 0xc0, 0x15, 0x47, 0x2f, 0x1a, - 0xcd, 0x76, 0x78, 0xc5, 0xb1, 0x75, 0x6f, 0x52, 0xdc, 0x1a, 0x13, 0x8c, 0xf5, 0x8b, 0x78, 0x5d, - 0x28, 0x7e, 0x46, 0x43, 0x49, 0xc6, 0xa1, 0x87, 0x5f, 0x6e, 0xd5, 0xd8, 0xe5, 0x56, 0xfe, 0xa0, - 0xef, 0xc7, 0xfb, 0x04, 0xcb, 0x76, 0xb9, 0x69, 0x51, 0x96, 0xf5, 0x89, 0x3b, 0x6f, 0xaf, 0xe3, - 0xfd, 0x87, 0xc0, 0x2b, 0x79, 0xd7, 0x20, 0x60, 0xcf, 0xd4, 0xeb, 0x26, 0xb7, 0xf8, 0x8d, 0x5e, - 0xce, 0x00, 0xed, 0xb7, 0x0f, 0xf6, 0xf2, 0x6e, 0x0b, 0x4d, 0x98, 0x7a, 0x19, 0xaf, 0x45, 0xbc, - 0xbb, 0x41, 0xfd, 0xb1, 0xff, 0xfc, 0xa5, 0x40, 0xdf, 0x30, 0x1a, 0xe5, 0x07, 0xb6, 0x59, 0x73, - 0x95, 0xee, 0xad, 0x9d, 0x81, 0x89, 0x3a, 0xe5, 0x8b, 0x82, 0xba, 0x6d, 0x5b, 0x45, 0xd7, 0xac, - 0x52, 0xc7, 0x35, 0xaa, 0x75, 0x16, 0x83, 0xbb, 0x0a, 0xe3, 0xf8, 0xf6, 0x81, 0x6d, 0x5b, 0xab, - 0xe2, 0x9d, 0xfe, 0xd3, 0xe2, 0x58, 0x33, 0xa6, 0x4d, 0xd4, 0x70, 0x0d, 0x9e, 0x13, 0x93, 0x1f, - 0xbb, 0x9b, 0x5c, 0x6c, 0xb0, 0x5a, 0xc5, 0x3a, 0xab, 0xc6, 0xe5, 0x50, 0x0b, 0xa9, 0x93, 0x7e, - 0x37, 0xf0, 0xb7, 0xa5, 0x1f, 0xc6, 0xe0, 0xe6, 0x7b, 0x33, 0x6f, 0x54, 0xeb, 0x86, 0x59, 0xa9, - 0x89, 0x2e, 0xf8, 0x5e, 0x37, 0x06, 0xb0, 0xd8, 0x3a, 0x28, 0xeb, 0x26, 0x3c, 0xef, 0xc9, 0xe8, - 0x19, 0x01, 0xa5, 0x2c, 0x61, 0x15, 0xff, 0xe2, 0xeb, 0x6c, 0xfa, 0x1a, 0xd8, 0xe0, 0x63, 0xd4, - 0xdf, 0x00, 0x0b, 0x37, 0xfb, 0xdd, 0xa4, 0x57, 0xe4, 0x27, 0x34, 0x38, 0x1a, 0x6a, 0x98, 0x75, - 0x82, 0x6c, 0xdd, 0x29, 0x6d, 0x50, 0xcf, 0x5f, 0x71, 0xfb, 0x7a, 0x2a, 0x7d, 0x5b, 0x50, 0x68, - 0xc5, 0x2d, 0x64, 0x5b, 0x85, 0xc3, 0x81, 0xa6, 0xbd, 0x22, 0x51, 0x69, 0x05, 0x19, 0x93, 0x1f, - 0x81, 0xfd, 0xae, 0xed, 0x1a, 0x56, 0x6c, 0x27, 0x65, 0x98, 0x42, 0x27, 0x18, 0x97, 0x48, 0x17, - 0x91, 0x5f, 0xd0, 0xe0, 0x84, 0x70, 0x30, 0x35, 0x55, 0xbb, 0x3b, 0x52, 0xf5, 0x18, 0x36, 0xb2, - 0xda, 0x56, 0xe3, 0x2a, 0x1c, 0x96, 0x02, 0x25, 0x6a, 0xde, 0xa3, 0xee, 0x9e, 0x2f, 0x88, 0x96, - 0x63, 0x0d, 0xa0, 0x5f, 0x46, 0x1f, 0x5d, 0x72, 0xee, 0xd7, 0x5d, 0x5a, 0xbe, 0xdf, 0x74, 0xef, - 0xaf, 0xf3, 0x0a, 0x4e, 0xfb, 0x8b, 0xb0, 0x0b, 0xe8, 0xbc, 0xb1, 0xc4, 0xe8, 0xbc, 0x87, 0x60, - 0xd0, 0x74, 0x8a, 0xb6, 0xf7, 0xbe, 0x68, 0x37, 0x5d, 0xcc, 0xaa, 0xc0, 0x94, 0x24, 0xfa, 0x8b, - 0xb8, 0xeb, 0x13, 0xe1, 0x81, 0x9b, 0x62, 0x32, 0x5e, 0x2d, 0x60, 0xee, 0x9e, 0x52, 0x11, 0x1b, - 0x4d, 0x09, 0x29, 0xfa, 0x35, 0x9c, 0x08, 0x17, 0x29, 0x5d, 0x30, 0x1d, 0xbe, 0xed, 0x86, 0x19, - 0xaf, 0x6f, 0x0a, 0x4f, 0x56, 0xfa, 0xbb, 0x1a, 0x4e, 0x83, 0x49, 0x0c, 0x50, 0x86, 0x17, 0x00, - 0x5c, 0x93, 0x36, 0xe4, 0x71, 0x91, 0x76, 0xac, 0xbb, 0xd0, 0xef, 0x95, 0xf0, 0x5d, 0x9d, 0x02, - 0x0c, 0xca, 0xec, 0xbb, 0xb5, 0x6d, 0x90, 0x9a, 0x9d, 0xf8, 0x1a, 0x5c, 0x35, 0x69, 0x83, 0xb5, - 0x36, 0x60, 0xb4, 0x9a, 0x26, 0xf7, 0x61, 0x40, 0x06, 0x35, 0xd7, 0xc2, 0x0d, 0x83, 0xa9, 0x0c, - 0x2c, 0x57, 0x57, 0xef, 0x16, 0x40, 0xc4, 0x33, 0xd7, 0x92, 0x11, 0xcc, 0x57, 0x4d, 0x38, 0xaa, - 0xe8, 0x94, 0x4f, 0x88, 0x03, 0xb4, 0xd8, 0x3a, 0x72, 0x66, 0xde, 0xbb, 0x4e, 0x69, 0xb1, 0x8c, - 0xef, 0x5b, 0xa3, 0x49, 0xcb, 0xa4, 0xb5, 0xe4, 0x3b, 0xb6, 0x1e, 0x2d, 0xd4, 0x6f, 0xe0, 0x44, - 0x83, 0xf7, 0xbd, 0x97, 0x4d, 0xa7, 0x6a, 0xb8, 0x25, 0xdf, 0x1e, 0xe6, 0x41, 0x18, 0x28, 0x37, - 0x1d, 0xb7, 0xb8, 0x6e, 0x94, 0x5c, 0x9b, 0x43, 0x53, 0xba, 0x0a, 0xe0, 0x15, 0x2d, 0xb2, 0x12, - 0xfd, 0xb7, 0xbb, 0x60, 0x24, 0x44, 0x4d, 0x74, 0x08, 0xac, 0x89, 0xd4, 0x2f, 0x62, 0x92, 0x59, - 0xe8, 0x37, 0x36, 0x0d, 0x33, 0xf3, 0x0d, 0x88, 0x16, 0x15, 0xb9, 0x08, 0x3d, 0x2c, 0x08, 0x64, - 0x49, 0xf1, 0x39, 0x05, 0x59, 0x84, 0x41, 0xbc, 0xe9, 0x5e, 0xdc, 0xb0, 0xad, 0xb2, 0xef, 0x90, - 0xa5, 0xfd, 0xe9, 0x0f, 0x12, 0xde, 0xb6, 0xad, 0x32, 0x79, 0x05, 0x86, 0xe9, 0x93, 0x3a, 0x2d, - 0x79, 0xe3, 0x97, 0xcb, 0xd2, 0xab, 0xce, 0x69, 0x48, 0x90, 0xb2, 0xe8, 0x43, 0xe6, 0x01, 0xca, - 0xe6, 0x3a, 0x1e, 0xe0, 0xf0, 0xed, 0x77, 0xc5, 0x15, 0x50, 0x8b, 0x4c, 0xff, 0x31, 0x9c, 0xdb, - 0x63, 0xba, 0x19, 0xbd, 0xed, 0x75, 0x20, 0x42, 0xf5, 0xaa, 0x7c, 0x8b, 0xa9, 0xcc, 0x07, 0x14, - 0x90, 0x02, 0x82, 0x65, 0x61, 0xcf, 0x5a, 0xb8, 0x0d, 0xfd, 0x28, 0x0e, 0x7e, 0xac, 0xea, 0x25, - 0x8a, 0x73, 0x2d, 0x6b, 0xc9, 0x50, 0xf5, 0x2b, 0x39, 0xd8, 0xeb, 0xab, 0xc2, 0x17, 0x5b, 0xcc, - 0x9e, 0xff, 0xcf, 0xfd, 0x49, 0xff, 0x65, 0x91, 0xcd, 0x27, 0x5a, 0x10, 0x7b, 0xb1, 0x06, 0x79, - 0xd1, 0x20, 0xdb, 0x41, 0xf7, 0xb7, 0xae, 0x74, 0x6d, 0x26, 0xd6, 0xfe, 0x85, 0x7d, 0x6b, 0xf1, - 0xed, 0xca, 0x69, 0x28, 0x14, 0x12, 0xbd, 0x54, 0xda, 0x74, 0x5c, 0xb3, 0x24, 0xfb, 0xf6, 0x22, - 0x0c, 0x05, 0x5e, 0x10, 0x02, 0xdd, 0x5e, 0x5c, 0xc7, 0x18, 0xcf, 0x7e, 0x7b, 0x5d, 0xd8, 0x82, - 0x06, 0x75, 0x17, 0xf8, 0x83, 0xee, 0xe0, 0x0c, 0x96, 0xd2, 0x86, 0x5c, 0xb4, 0x82, 0x23, 0x4b, - 0x55, 0x6e, 0xc9, 0x07, 0xf8, 0x14, 0x7c, 0xc4, 0x5e, 0xfe, 0xbf, 0x6c, 0xba, 0xf6, 0xab, 0x46, - 0xd3, 0x62, 0xd3, 0x84, 0x54, 0xe4, 0x8f, 0x35, 0x98, 0x08, 0xbf, 0xc1, 0xe6, 0x5f, 0x82, 0xd1, - 0xaa, 0xe1, 0xb8, 0xb4, 0x21, 0xce, 0x28, 0xa9, 0x98, 0x48, 0x47, 0x78, 0xf9, 0xac, 0x28, 0x26, - 0xa7, 0x60, 0xbc, 0x2c, 0x97, 0x00, 0xbe, 0xea, 0xfc, 0x28, 0x64, 0xac, 0xf5, 0xae, 0x45, 0x72, - 0x14, 0x86, 0x9d, 0xba, 0xed, 0xfa, 0x2a, 0xf3, 0xc3, 0xa0, 0x21, 0xaf, 0x34, 0x50, 0xad, 0xf4, - 0xc6, 0xcc, 0x49, 0x5f, 0xb5, 0x6e, 0x5e, 0xcd, 0x2b, 0x95, 0xd5, 0xf4, 0x05, 0x8c, 0xfb, 0xb8, - 0xf0, 0x5d, 0x58, 0x6c, 0xd8, 0x55, 0xa6, 0x92, 0x6f, 0xaf, 0x6b, 0xd3, 0x7b, 0x2e, 0x06, 0x77, - 0x32, 0x07, 0x59, 0xa1, 0x38, 0x6d, 0x15, 0xd7, 0xa8, 0x62, 0xb8, 0xa0, 0x4d, 0x52, 0xd7, 0xc6, - 0x62, 0x79, 0x7d, 0xdb, 0x74, 0x5c, 0xbb, 0x61, 0x96, 0x64, 0xae, 0x55, 0xb2, 0x7d, 0xa9, 0x54, - 0x2a, 0x0b, 0x17, 0x43, 0x4b, 0x12, 0x0b, 0xb9, 0x2f, 0x30, 0x24, 0x52, 0x42, 0xf6, 0x42, 0x05, - 0x85, 0x10, 0x60, 0x34, 0xe8, 0xfa, 0x9e, 0xf4, 0x3f, 0xd0, 0x60, 0x8c, 0xbd, 0xe6, 0xcd, 0x7a, - 0xc9, 0x95, 0xb7, 0x14, 0x24, 0x2f, 0x03, 0xe1, 0xcd, 0x54, 0x1a, 0x76, 0xb3, 0xee, 0xa5, 0xa3, - 0x0e, 0x2d, 0xa1, 0x8b, 0x8f, 0xb2, 0x37, 0xb7, 0xf0, 0xc5, 0x0a, 0x2d, 0x91, 0x7d, 0xb0, 0xbb, - 0x6a, 0x3c, 0x29, 0x1a, 0x15, 0x8a, 0x0e, 0xdf, 0x5b, 0x35, 0x9e, 0xcc, 0x56, 0x28, 0x99, 0x82, - 0x31, 0xb3, 0x56, 0xb2, 0x9a, 0x9e, 0xbc, 0xc6, 0x1b, 0xc5, 0x0d, 0xde, 0x08, 0x5e, 0xe9, 0xdb, - 0x83, 0xaf, 0x0a, 0xc6, 0x1b, 0xd8, 0xba, 0xe7, 0x78, 0xa2, 0xbe, 0x5c, 0xcb, 0xb3, 0x53, 0xde, - 0xc2, 0x08, 0x96, 0x8b, 0x35, 0xba, 0xfe, 0x9b, 0x1a, 0xee, 0xd7, 0x4b, 0x8c, 0x85, 0xe1, 0x9a, - 0x96, 0xe9, 0x6e, 0x29, 0x9d, 0x59, 0x96, 0x60, 0x2f, 0xd7, 0x0f, 0x45, 0xf2, 0x52, 0x54, 0x4f, - 0x71, 0x95, 0x44, 0x2c, 0xc6, 0x5e, 0x85, 0x31, 0x37, 0x5a, 0xa8, 0x7f, 0x3c, 0x17, 0xf0, 0x4d, - 0xbf, 0x88, 0x12, 0x8b, 0x01, 0x9b, 0xb2, 0x14, 0x4f, 0xf8, 0x0e, 0xb6, 0x9d, 0x0e, 0x5b, 0x24, - 0xe4, 0x35, 0x18, 0x15, 0x1a, 0x48, 0x83, 0xe5, 0x22, 0x07, 0x5a, 0x88, 0xe0, 0x95, 0x87, 0x30, - 0x58, 0xd3, 0x17, 0x78, 0x46, 0x90, 0x8b, 0x78, 0x45, 0x6e, 0xc3, 0x80, 0xbf, 0xc7, 0xba, 0x98, - 0x97, 0xbd, 0xa8, 0xe8, 0x65, 0x05, 0x68, 0xc8, 0x3e, 0x95, 0x40, 0xa2, 0x39, 0xb3, 0x66, 0x08, - 0x53, 0xb4, 0x3b, 0x57, 0xd5, 0x2b, 0x78, 0xd9, 0x3a, 0x44, 0x24, 0xc3, 0x63, 0xe8, 0xd8, 0x27, - 0xb5, 0xbf, 0x38, 0x0f, 0xec, 0x94, 0xf0, 0xa9, 0xcf, 0x63, 0x38, 0x11, 0x7b, 0xf4, 0x3f, 0x6f, - 0xd7, 0xca, 0x26, 0xbf, 0x25, 0xb6, 0xd3, 0xc8, 0xe3, 0xdf, 0xe8, 0x82, 0xc3, 0x91, 0x53, 0xe9, - 0x70, 0x7b, 0x3f, 0xb8, 0xf7, 0x3b, 0x6e, 0xc1, 0xa0, 0xdb, 0x30, 0x2b, 0x15, 0xda, 0x78, 0x90, - 0xf5, 0x80, 0x31, 0x40, 0xd8, 0xfe, 0x9e, 0xc7, 0x51, 0xd8, 0x6d, 0x3a, 0xec, 0x38, 0x9f, 0x65, - 0xa5, 0x7d, 0x73, 0x03, 0xef, 0xbc, 0x79, 0x50, 0x14, 0x15, 0xc4, 0x8f, 0xd0, 0x75, 0x90, 0xdd, - 0x09, 0xd7, 0x41, 0xfa, 0x5a, 0xd7, 0x41, 0x3e, 0xa1, 0x05, 0x2e, 0xd5, 0xa5, 0x3a, 0x85, 0x04, - 0x7d, 0x06, 0xaf, 0x24, 0x5c, 0xcd, 0x74, 0x25, 0x21, 0xcc, 0x57, 0x5e, 0x4c, 0x58, 0x46, 0x41, - 0xf0, 0x74, 0xce, 0xb5, 0xab, 0x66, 0xe9, 0xe6, 0x13, 0x5a, 0x6a, 0x7a, 0x95, 0x17, 0x29, 0x5d, - 0x6e, 0x5a, 0xae, 0x59, 0xb7, 0x4c, 0xda, 0x50, 0x9a, 0x63, 0x36, 0xf1, 0x48, 0x4a, 0x85, 0x1d, - 0x2a, 0x36, 0x0f, 0x50, 0x95, 0xa5, 0x59, 0x7c, 0xd1, 0x47, 0xa6, 0x5f, 0x10, 0xd8, 0x55, 0x66, - 0x90, 0x15, 0xd7, 0x78, 0x44, 0x6f, 0x35, 0x8c, 0xd6, 0x6d, 0xb7, 0x49, 0xd8, 0x5d, 0xf1, 0x9e, - 0x29, 0x15, 0xcb, 0x6d, 0x7c, 0xd4, 0x3f, 0x23, 0xa1, 0xa9, 0x11, 0x52, 0x14, 0xf0, 0x2a, 0xf4, - 0xb0, 0xca, 0xb8, 0x98, 0x4c, 0x0d, 0x51, 0x9c, 0x09, 0xa7, 0xe7, 0x54, 0x64, 0x05, 0x5a, 0x87, - 0x22, 0x45, 0xce, 0x48, 0x01, 0x21, 0x23, 0xcf, 0x35, 0x38, 0xaf, 0x61, 0x1a, 0x78, 0xd6, 0x57, - 0x31, 0x9b, 0x60, 0x4f, 0xb3, 0x4d, 0x77, 0xc3, 0x6e, 0x98, 0x3f, 0xca, 0xae, 0xc4, 0x45, 0x34, - 0x6e, 0x04, 0x35, 0x6e, 0xf8, 0x6d, 0x91, 0x0b, 0xda, 0xe2, 0x43, 0xb8, 0x1c, 0x8f, 0xe3, 0x8a, - 0xc6, 0x38, 0x0b, 0xbd, 0x78, 0xdd, 0x8f, 0xf7, 0xd4, 0x0b, 0xd8, 0x53, 0x7b, 0xa3, 0x3d, 0xb5, - 0x54, 0x73, 0x0b, 0x58, 0x59, 0x6e, 0x03, 0x45, 0x39, 0x3b, 0x6d, 0x05, 0xf6, 0x52, 0x88, 0x43, - 0xc9, 0xd4, 0xf2, 0x0e, 0x2d, 0xe1, 0xfb, 0x59, 0x8c, 0xaa, 0x98, 0x45, 0xc8, 0x51, 0x46, 0xc8, - 0x99, 0x8b, 0x9b, 0xa3, 0xbd, 0x8c, 0x8d, 0xa3, 0xb2, 0xf3, 0x18, 0x63, 0x2d, 0xa4, 0x3e, 0x7e, - 0x06, 0xfa, 0x25, 0x0e, 0x8e, 0x8c, 0xc3, 0xa8, 0xf7, 0xb7, 0xf8, 0xb0, 0xe6, 0xd4, 0x69, 0xc9, - 0x5c, 0x37, 0x69, 0x79, 0x74, 0x17, 0xd9, 0x0d, 0x5d, 0x73, 0xcd, 0xad, 0x51, 0x8d, 0xf4, 0x41, - 0xf7, 0x0a, 0xb5, 0xac, 0xd1, 0xdc, 0xf1, 0x57, 0x61, 0x3c, 0xee, 0x92, 0xa3, 0xc7, 0xc0, 0x47, - 0xcb, 0x18, 0x8f, 0xee, 0x22, 0x63, 0x30, 0xe2, 0xe5, 0x92, 0xaf, 0xd9, 0x0d, 0xc7, 0x5d, 0xb5, - 0xe7, 0xa8, 0xe3, 0x8e, 0x6a, 0xa2, 0xd0, 0x7b, 0x5a, 0xb5, 0xd9, 0xab, 0xd1, 0xdc, 0xcc, 0x9f, - 0x53, 0xe8, 0x61, 0x76, 0x24, 0x9f, 0xd5, 0x60, 0x2c, 0xe6, 0x3b, 0x08, 0xe4, 0x5c, 0x5b, 0xc4, - 0x7f, 0xec, 0x67, 0x15, 0xf2, 0xe7, 0x33, 0xd3, 0xf1, 0x5e, 0xd3, 0x67, 0x7e, 0xea, 0x6f, 0xbe, - 0xfd, 0xa9, 0xdc, 0xcb, 0xe4, 0xf8, 0xb4, 0xc2, 0x17, 0x47, 0x50, 0xc8, 0xbf, 0xd0, 0x80, 0x44, - 0x3f, 0x3c, 0x40, 0x2e, 0x75, 0xf4, 0xb5, 0x02, 0x2e, 0xff, 0xe5, 0x6d, 0x7c, 0xe9, 0x40, 0xbf, - 0xce, 0x74, 0xb8, 0x48, 0xce, 0xab, 0xe8, 0x30, 0xed, 0x44, 0x25, 0xff, 0x8a, 0x06, 0x7b, 0x22, - 0xfc, 0xc9, 0xc5, 0xec, 0x32, 0x09, 0x75, 0x2e, 0x75, 0x42, 0x8a, 0xda, 0x5c, 0x63, 0xda, 0x5c, - 0x20, 0xe7, 0x3a, 0xd3, 0x86, 0xfc, 0x89, 0x06, 0xa3, 0xe1, 0x2f, 0x2b, 0x90, 0x0b, 0xca, 0xfe, - 0x11, 0xfa, 0x58, 0x43, 0xfe, 0x62, 0x07, 0x94, 0xa8, 0xc9, 0x55, 0xa6, 0xc9, 0x79, 0x72, 0x56, - 0x49, 0x13, 0x1a, 0x96, 0xf9, 0xcf, 0x34, 0x18, 0x09, 0x7d, 0xae, 0x80, 0xb4, 0xf7, 0xf3, 0xf8, - 0x8f, 0x3d, 0xe4, 0x2f, 0x64, 0x27, 0x44, 0x2d, 0x16, 0x99, 0x16, 0x37, 0xc8, 0x35, 0x25, 0x2d, - 0x42, 0x1f, 0x75, 0x98, 0x7e, 0x8a, 0xbd, 0xf3, 0x8c, 0xf5, 0x4b, 0xf8, 0xeb, 0x0b, 0x24, 0xb3, - 0x58, 0x19, 0xfa, 0x25, 0xe9, 0x53, 0x0f, 0x19, 0xfb, 0x25, 0xfc, 0x99, 0x0a, 0xf2, 0x2f, 0x1a, - 0xec, 0x8d, 0x85, 0xd0, 0x93, 0xab, 0xea, 0x32, 0xc5, 0x7c, 0x83, 0x21, 0x7f, 0xad, 0x53, 0x72, - 0xd4, 0xeb, 0x1e, 0xd3, 0xeb, 0x36, 0x59, 0xcc, 0xa6, 0x97, 0x9f, 0xd7, 0xf4, 0x53, 0x99, 0x5a, - 0x3d, 0x23, 0x6f, 0x6a, 0x30, 0x11, 0xff, 0xad, 0x00, 0xd2, 0xa1, 0xa8, 0xb2, 0xf7, 0xae, 0x77, - 0x4c, 0x8f, 0xba, 0xce, 0x33, 0x5d, 0xaf, 0x92, 0xcb, 0x9d, 0xeb, 0xea, 0x90, 0x2f, 0x68, 0x30, - 0xe8, 0xff, 0xf8, 0x02, 0x39, 0xd3, 0x56, 0xac, 0x98, 0x8f, 0x52, 0xe4, 0xcf, 0x66, 0xa4, 0x42, - 0x15, 0xe6, 0x98, 0x0a, 0x57, 0xc8, 0x25, 0x25, 0x15, 0x02, 0x9f, 0x95, 0x98, 0x7e, 0xca, 0x1e, - 0x9f, 0x91, 0xcf, 0x69, 0x30, 0x14, 0xf8, 0x7c, 0x04, 0xc9, 0x26, 0x8c, 0xec, 0x90, 0x73, 0x59, - 0xc9, 0x50, 0x89, 0xcb, 0x4c, 0x89, 0xb3, 0xe4, 0x74, 0x76, 0x25, 0x1c, 0xf2, 0x3b, 0x1a, 0x0c, - 0xf8, 0xd0, 0xcc, 0xe4, 0x74, 0xfb, 0x69, 0x23, 0x82, 0xc2, 0xce, 0x9f, 0xc9, 0x46, 0x84, 0x72, - 0x9f, 0x64, 0x72, 0x1f, 0x27, 0xc7, 0xd2, 0xe4, 0x76, 0xea, 0xb6, 0x3b, 0x8d, 0xcb, 0x68, 0xf2, - 0x19, 0x0d, 0xc0, 0x87, 0x5c, 0x9f, 0xc9, 0xd0, 0xac, 0x10, 0xf5, 0x74, 0x26, 0x1a, 0x94, 0xf4, - 0x0a, 0x93, 0xf4, 0x1c, 0x39, 0xa3, 0x2a, 0x69, 0x60, 0x0c, 0x7f, 0x4e, 0x83, 0x91, 0x10, 0x68, - 0x5c, 0x61, 0x12, 0x89, 0x07, 0xbc, 0x2b, 0x4c, 0x22, 0x09, 0xf8, 0x74, 0xfd, 0x2c, 0x53, 0x62, - 0x9a, 0x9c, 0x68, 0xab, 0xc4, 0x7a, 0xd3, 0xb2, 0x8a, 0xc2, 0xe6, 0x5f, 0x8a, 0x7e, 0x31, 0xe0, - 0x5c, 0x46, 0x19, 0xd4, 0x33, 0xc4, 0x78, 0x18, 0xba, 0x7e, 0x83, 0x89, 0x7e, 0x89, 0x5c, 0xc8, - 0x22, 0x7a, 0xa0, 0x0f, 0x3e, 0xaf, 0xc1, 0x50, 0xe0, 0x6b, 0x0d, 0x0a, 0x83, 0x34, 0xee, 0xb3, - 0x19, 0x0a, 0x83, 0x34, 0xf6, 0xa3, 0x10, 0x6a, 0x29, 0x15, 0x53, 0xc1, 0x16, 0xb4, 0x01, 0x05, - 0xbe, 0xae, 0xc1, 0x68, 0x18, 0x7d, 0xa7, 0x30, 0x75, 0x27, 0xc0, 0xcf, 0x15, 0xa6, 0xee, 0x24, - 0x28, 0xb3, 0x7e, 0x87, 0x69, 0x72, 0x93, 0xcc, 0xab, 0x69, 0x12, 0x18, 0x0b, 0xd3, 0x4f, 0x03, - 0xbb, 0x5a, 0xcf, 0xc8, 0x7f, 0x68, 0x30, 0x99, 0x04, 0x64, 0x26, 0x37, 0xda, 0xcf, 0x50, 0xe9, - 0xd8, 0xf7, 0xfc, 0xec, 0x36, 0x38, 0xa0, 0xba, 0x0f, 0x99, 0xba, 0xf7, 0xc9, 0x72, 0x27, 0xea, - 0xa2, 0xaa, 0x32, 0x05, 0x13, 0xa7, 0x03, 0xcf, 0xc8, 0xb7, 0xbd, 0x05, 0x4c, 0xe4, 0x4b, 0x04, - 0x2a, 0x0b, 0x98, 0xa4, 0xaf, 0x28, 0xa8, 0x2c, 0x60, 0x12, 0x3f, 0x7d, 0x90, 0x59, 0xcd, 0xe2, - 0xda, 0x16, 0x82, 0x6c, 0x52, 0xfb, 0xf7, 0x4b, 0x1a, 0x8c, 0x86, 0x3f, 0x7d, 0xa8, 0xe0, 0xb6, - 0x09, 0x1f, 0x64, 0xcc, 0x5f, 0xec, 0x80, 0x12, 0x15, 0xbc, 0xc4, 0x14, 0x3c, 0x43, 0x66, 0xd2, - 0x14, 0x14, 0x5d, 0x18, 0xd2, 0xe2, 0x3b, 0x1a, 0xec, 0x6f, 0x8d, 0x87, 0xd5, 0x86, 0x51, 0x73, - 0x4c, 0x5a, 0x7b, 0x4f, 0x47, 0xa1, 0x7a, 0x7f, 0xb9, 0x42, 0xdc, 0xa2, 0xc2, 0x78, 0xfc, 0x5b, - 0x74, 0xcb, 0x20, 0x82, 0x42, 0xd1, 0x2d, 0x63, 0x61, 0xed, 0x8a, 0x6e, 0x19, 0x0f, 0x66, 0x57, - 0x5b, 0xf9, 0xf0, 0x99, 0x37, 0x0c, 0x14, 0x09, 0x84, 0xcf, 0x7f, 0xd3, 0x60, 0x32, 0x09, 0x39, - 0xaf, 0x10, 0x67, 0xda, 0x40, 0xf7, 0x15, 0xe2, 0x4c, 0x3b, 0xd8, 0xbe, 0x7e, 0x97, 0x69, 0xba, - 0x48, 0x16, 0xd2, 0x34, 0x6d, 0x1d, 0x74, 0xb6, 0xd1, 0xf7, 0x1b, 0x1a, 0x8c, 0xc5, 0xa0, 0xcd, - 0xc9, 0xe5, 0x0c, 0x82, 0x46, 0xe6, 0xbe, 0x2b, 0x9d, 0x11, 0xa3, 0x82, 0x0b, 0x4c, 0xc1, 0x6b, - 0xe4, 0x8a, 0xa2, 0x82, 0xf1, 0xf3, 0xe0, 0xbf, 0x6a, 0x30, 0x11, 0x0f, 0xa0, 0x54, 0x58, 0x10, - 0xa5, 0x22, 0x78, 0x15, 0x16, 0x44, 0xe9, 0xc8, 0x4d, 0xfd, 0x83, 0x4c, 0xc3, 0x3b, 0x64, 0x29, - 0x8b, 0x86, 0xe9, 0xe3, 0xf1, 0xe7, 0x73, 0x70, 0x20, 0x1d, 0xb7, 0x49, 0x16, 0x33, 0xce, 0x71, - 0x49, 0xea, 0xdf, 0xda, 0x36, 0x1f, 0x34, 0xc3, 0x47, 0x98, 0x19, 0x1e, 0x92, 0x95, 0xce, 0xcd, - 0x90, 0x3c, 0x6f, 0xfe, 0x77, 0x60, 0x20, 0x87, 0x66, 0xcf, 0x1b, 0x59, 0x1d, 0x34, 0x32, 0x87, - 0xce, 0x6e, 0x83, 0xc3, 0xb6, 0xd4, 0x57, 0x9c, 0x4f, 0xff, 0x47, 0x83, 0x83, 0x61, 0x2f, 0x0c, - 0xcf, 0x47, 0xef, 0xf9, 0x38, 0xc8, 0x6a, 0x81, 0x4c, 0x33, 0xd4, 0x1f, 0x69, 0xb0, 0x27, 0x02, - 0xd5, 0x53, 0xd8, 0x28, 0x4d, 0x02, 0xdd, 0x2a, 0x6c, 0x94, 0x26, 0x22, 0x03, 0xf5, 0x73, 0x4c, - 0xd3, 0x93, 0x64, 0x4a, 0x35, 0x68, 0xa3, 0xb8, 0x5f, 0xd5, 0x60, 0x34, 0x02, 0x16, 0xbd, 0x90, - 0x59, 0x10, 0xf5, 0x3c, 0x22, 0x09, 0x31, 0xa8, 0xb6, 0x03, 0x12, 0xd5, 0x20, 0x10, 0x93, 0xbf, - 0xa3, 0xc1, 0xbe, 0x04, 0x8c, 0x1f, 0xb9, 0x9e, 0x59, 0xb4, 0x20, 0xc2, 0x30, 0x7f, 0xa3, 0x73, - 0x06, 0xa8, 0xe2, 0x12, 0x53, 0x71, 0x9e, 0xcc, 0x66, 0x52, 0x51, 0x84, 0x9c, 0x80, 0xa6, 0x7f, - 0xa5, 0xc1, 0x78, 0x1c, 0x28, 0x83, 0x5c, 0xc9, 0x90, 0x98, 0x46, 0xd0, 0x89, 0xf9, 0xab, 0x1d, - 0x52, 0x67, 0xd9, 0x9e, 0x90, 0x05, 0xe1, 0x01, 0xf5, 0x7b, 0x1a, 0x8c, 0x89, 0xfd, 0x73, 0x1f, - 0x34, 0x44, 0x61, 0x27, 0x28, 0x8a, 0x31, 0x51, 0xd8, 0x09, 0x8a, 0x41, 0x9f, 0xa8, 0xed, 0x04, - 0x55, 0x19, 0x61, 0x91, 0x01, 0x3e, 0xc8, 0x6f, 0x69, 0xd0, 0x2f, 0x21, 0x25, 0xe4, 0x54, 0xdb, - 0x56, 0xc3, 0xb8, 0x94, 0xfc, 0x4c, 0x16, 0x12, 0x14, 0xf3, 0x04, 0x13, 0xf3, 0x45, 0x72, 0x34, - 0x4d, 0xcc, 0xba, 0x94, 0xea, 0x2f, 0x35, 0x18, 0x8b, 0x41, 0x35, 0x92, 0x2c, 0x07, 0x4d, 0x11, - 0xb9, 0xaf, 0x74, 0x46, 0x9c, 0x65, 0xdb, 0x5d, 0x6a, 0x10, 0x71, 0x95, 0x7f, 0xd7, 0x20, 0x9f, - 0x8c, 0x9b, 0x24, 0x73, 0x1d, 0xc8, 0x16, 0x02, 0xa7, 0xe6, 0xe7, 0xb7, 0xc5, 0x23, 0xcb, 0x88, - 0x4f, 0x54, 0x33, 0x30, 0xe2, 0x7f, 0x29, 0x07, 0x47, 0x14, 0x70, 0x8b, 0xe4, 0x4e, 0x06, 0xb9, - 0xdb, 0x21, 0x74, 0xf3, 0x77, 0x77, 0x86, 0x19, 0x5a, 0x63, 0x85, 0x59, 0x63, 0x99, 0xdc, 0x49, - 0x0d, 0x0f, 0xf2, 0x7a, 0x82, 0x9a, 0x5d, 0xfe, 0x4e, 0x83, 0xb1, 0x18, 0x24, 0xa3, 0x82, 0x73, - 0x27, 0xc3, 0x30, 0x15, 0x9c, 0x3b, 0x05, 0x83, 0xa9, 0xdf, 0x64, 0x7a, 0x5e, 0x27, 0x57, 0x53, - 0x7b, 0x5d, 0x7e, 0x48, 0xc1, 0xf7, 0x69, 0x89, 0x80, 0x66, 0xdf, 0xd2, 0x60, 0x5f, 0x02, 0xd8, - 0x51, 0x61, 0x36, 0x4b, 0x47, 0x6d, 0x2a, 0xcc, 0x66, 0x6d, 0x20, 0x9b, 0xaa, 0x47, 0x16, 0x1e, - 0x93, 0x44, 0x15, 0xdf, 0xd6, 0x60, 0x22, 0x1e, 0x15, 0xa9, 0x90, 0x3c, 0xa6, 0x82, 0x3b, 0x15, - 0x92, 0xc7, 0x74, 0x64, 0xa7, 0x7e, 0x9b, 0xe9, 0x37, 0x47, 0x6e, 0x64, 0xea, 0x45, 0xfc, 0x1a, - 0x47, 0xa4, 0x23, 0x13, 0xe0, 0x9c, 0x0a, 0x1d, 0x99, 0x8e, 0x6d, 0x57, 0xe8, 0xc8, 0x36, 0x48, - 0x52, 0xb5, 0x8e, 0xe4, 0x57, 0xca, 0xc4, 0xa5, 0xcb, 0xb8, 0xed, 0xb5, 0x3d, 0x51, 0xc0, 0x99, - 0xe2, 0xb6, 0x52, 0x0c, 0x4e, 0x52, 0x21, 0x19, 0x4e, 0x84, 0x3b, 0xea, 0xe7, 0x99, 0x42, 0xa7, - 0xc8, 0x74, 0x9a, 0x42, 0x31, 0x48, 0x33, 0xf2, 0xd7, 0x1a, 0x4c, 0x3e, 0x68, 0x61, 0xd7, 0xbe, - 0x2f, 0x94, 0x51, 0xba, 0xd0, 0xe1, 0x47, 0xf5, 0x85, 0x95, 0xfa, 0xaa, 0xb8, 0xf3, 0x1c, 0x04, - 0x3d, 0x2a, 0x04, 0xc8, 0x64, 0x28, 0xa7, 0x42, 0x80, 0x4c, 0xc1, 0x78, 0xea, 0x17, 0x99, 0x4e, - 0xa7, 0xc9, 0x29, 0xe5, 0x0e, 0x12, 0xd0, 0x44, 0xf2, 0x96, 0x06, 0x13, 0xf1, 0x58, 0x34, 0x85, - 0x88, 0x91, 0x8a, 0x82, 0x53, 0x88, 0x18, 0xe9, 0x20, 0x38, 0xfd, 0x16, 0x53, 0x6b, 0x96, 0x5c, - 0x4f, 0x53, 0x2b, 0x00, 0x0d, 0xf3, 0x83, 0xe2, 0x7c, 0xd7, 0x23, 0xbc, 0x2e, 0x8b, 0x41, 0x82, - 0x29, 0x74, 0x59, 0x32, 0x76, 0x4d, 0xa1, 0xcb, 0x52, 0x40, 0x6d, 0x6a, 0x5d, 0x16, 0x0b, 0x7b, - 0x23, 0x5f, 0xd3, 0x60, 0x4f, 0x04, 0xbf, 0xa4, 0x30, 0x9c, 0x92, 0xa0, 0x6d, 0x0a, 0xc3, 0x29, - 0x11, 0x2e, 0xa5, 0xb6, 0xf9, 0x17, 0x05, 0x54, 0x4d, 0x3f, 0xf5, 0x81, 0xe9, 0x9e, 0x91, 0x7f, - 0xd4, 0x60, 0x5f, 0x02, 0xa4, 0x47, 0x21, 0xa2, 0xa7, 0xc3, 0xa9, 0x14, 0x22, 0x7a, 0x1b, 0x34, - 0x91, 0x5a, 0xcc, 0x10, 0xff, 0x1a, 0x26, 0x06, 0x70, 0x44, 0xfe, 0x49, 0x83, 0xfd, 0x89, 0xb0, - 0x1d, 0x32, 0x9b, 0xc5, 0x93, 0x62, 0x61, 0x45, 0xf9, 0xb9, 0xed, 0xb0, 0xc8, 0x72, 0xdd, 0x20, - 0xe0, 0x92, 0x0c, 0xa2, 0xea, 0xad, 0xdb, 0x1c, 0xf2, 0x69, 0x0d, 0x86, 0x83, 0x70, 0xa0, 0xf4, - 0xc5, 0x5b, 0x2c, 0xa8, 0x28, 0x7d, 0xf1, 0x16, 0x8f, 0x36, 0xd2, 0xcf, 0x30, 0xb1, 0xa7, 0xc8, - 0xcb, 0xa9, 0x6b, 0x4c, 0xd3, 0xb5, 0x8b, 0x1c, 0xc7, 0x63, 0x32, 0xe1, 0xbe, 0xae, 0xe1, 0xf7, - 0x0b, 0x22, 0x90, 0x1d, 0x85, 0x91, 0x94, 0x04, 0x16, 0x52, 0x18, 0x49, 0x89, 0x08, 0x21, 0xb5, - 0x5b, 0x37, 0x5c, 0x05, 0x99, 0x0b, 0x4d, 0x3f, 0x0d, 0x60, 0x93, 0x58, 0xf6, 0x3e, 0x11, 0x0f, - 0x01, 0x52, 0x08, 0xe7, 0xa9, 0xf0, 0x23, 0x85, 0x70, 0x9e, 0x8e, 0x3d, 0x52, 0xdb, 0xcd, 0xd8, - 0x90, 0x3c, 0x8a, 0x01, 0xa0, 0x12, 0x5b, 0x97, 0xc4, 0x40, 0xc5, 0x15, 0x62, 0x78, 0x32, 0x3a, - 0x5d, 0x21, 0x86, 0xa7, 0xa0, 0xd3, 0xd5, 0xd6, 0x25, 0x7e, 0xfc, 0x7a, 0xd1, 0x5e, 0xc7, 0x09, - 0xd8, 0xf1, 0xcd, 0x4e, 0xff, 0xac, 0xc1, 0xfe, 0x44, 0x54, 0xba, 0x42, 0x70, 0x68, 0x07, 0x7d, - 0x57, 0x08, 0x0e, 0x6d, 0x41, 0xf1, 0xfa, 0x2c, 0xd3, 0xf5, 0x32, 0xb9, 0x98, 0x9a, 0xd4, 0xc6, - 0x28, 0x5a, 0x94, 0x9f, 0xe3, 0xf8, 0x8a, 0x06, 0xa3, 0x61, 0x28, 0x93, 0xc2, 0xde, 0x68, 0x02, - 0x40, 0x2b, 0x7f, 0xb1, 0x03, 0xca, 0x2c, 0xca, 0xb4, 0xfe, 0x63, 0x14, 0x92, 0x07, 0xd6, 0x20, - 0x5f, 0xd4, 0x60, 0x3c, 0x06, 0x19, 0xa4, 0x72, 0x47, 0x2c, 0x0e, 0xc9, 0xa4, 0x70, 0xfd, 0x24, - 0x16, 0xcb, 0xa4, 0x76, 0xfa, 0xbd, 0xc6, 0x48, 0x05, 0x48, 0x4d, 0x6e, 0x56, 0xff, 0x6a, 0x0e, - 0x0e, 0xb7, 0xc5, 0xa8, 0x90, 0xa5, 0xcc, 0xa7, 0x06, 0x49, 0xe0, 0xa7, 0xfc, 0x2b, 0x3b, 0xc1, - 0x0a, 0x15, 0xff, 0x61, 0xa6, 0xf8, 0x6b, 0xe4, 0x61, 0xb6, 0xc3, 0xa8, 0x52, 0x8b, 0x61, 0xea, - 0x69, 0xc4, 0xf7, 0x34, 0xd0, 0xdb, 0xe3, 0x5c, 0xc8, 0x2b, 0x8a, 0x4e, 0xa8, 0x80, 0xbd, 0xc9, - 0xdf, 0xd9, 0x11, 0x5e, 0x59, 0x52, 0x16, 0x83, 0x71, 0xe2, 0x87, 0x33, 0x45, 0x6f, 0x66, 0x6f, - 0x81, 0x6e, 0xc8, 0x9f, 0x6a, 0x30, 0x1a, 0x46, 0xcd, 0xa8, 0x5c, 0x29, 0x8e, 0xc7, 0xe8, 0xa8, - 0x5c, 0x29, 0x4e, 0x80, 0xe8, 0xa8, 0x5d, 0x12, 0x33, 0xf8, 0x1e, 0x97, 0xe3, 0x91, 0x73, 0x94, - 0xc8, 0xf4, 0x53, 0x44, 0xbe, 0x3c, 0x23, 0xdf, 0xd4, 0x80, 0x44, 0x81, 0x1c, 0x0a, 0x97, 0x1f, - 0x12, 0x11, 0x38, 0x0a, 0x97, 0x1f, 0x92, 0x71, 0x36, 0x6a, 0x37, 0xad, 0x10, 0xea, 0xe2, 0x67, - 0x20, 0x54, 0x6a, 0x3c, 0xf3, 0x29, 0xf7, 0x75, 0x0d, 0xc6, 0x62, 0xb0, 0x33, 0xa4, 0x13, 0x09, - 0x33, 0x4c, 0x8c, 0x29, 0x70, 0x1d, 0xb5, 0x1d, 0x90, 0x18, 0xfd, 0x9c, 0x96, 0x82, 0x73, 0x1b, - 0x5f, 0x7e, 0xeb, 0x80, 0xf6, 0xb5, 0xb7, 0x0e, 0x68, 0xdf, 0x7a, 0xeb, 0x80, 0xf6, 0x8b, 0x6f, - 0x1f, 0xd8, 0xf5, 0xb5, 0xb7, 0x0f, 0xec, 0xfa, 0xfb, 0xb7, 0x0f, 0xec, 0x7a, 0xfd, 0x5e, 0xc5, - 0x74, 0x37, 0x9a, 0x6b, 0x53, 0x25, 0xbb, 0x3a, 0xbd, 0x24, 0xf8, 0xdf, 0x35, 0xd6, 0x9c, 0x56, - 0x6b, 0x27, 0x4a, 0x76, 0x83, 0xfa, 0x1f, 0x37, 0x0c, 0xb3, 0x86, 0x07, 0x0d, 0x4e, 0x4b, 0x14, - 0x77, 0xab, 0x4e, 0x9d, 0xb5, 0x5e, 0xf6, 0x4f, 0x68, 0x4f, 0xff, 0x6f, 0x00, 0x00, 0x00, 0xff, - 0xff, 0x1e, 0xed, 0xe6, 0xe6, 0x7a, 0x77, 0x00, 0x00, + // 5988 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x3d, 0x6d, 0x8c, 0x1c, 0xc9, + 0x55, 0xee, 0xd9, 0x0f, 0xef, 0xbe, 0xfd, 0x74, 0xed, 0x7a, 0xbd, 0x9e, 0xbb, 0xf3, 0x47, 0x3b, + 0xbe, 0xf3, 0x39, 0xe7, 0x1d, 0x7b, 0xfd, 0xfd, 0xed, 0x9d, 0x5d, 0xaf, 0xbd, 0xe7, 0x5d, 0xdb, + 0x37, 0xbb, 0xbe, 0xcb, 0x5d, 0x80, 0x49, 0xef, 0x4c, 0xef, 0x6c, 0x9f, 0x7b, 0xa6, 0xc7, 0xd3, + 0x3d, 0x7b, 0x5e, 0x8c, 0x11, 0x10, 0x50, 0x22, 0x90, 0x00, 0x29, 0x02, 0x84, 0x40, 0x08, 0xf8, + 0xc1, 0x0f, 0x44, 0x84, 0x44, 0x84, 0x40, 0x89, 0x94, 0x28, 0x04, 0xa1, 0x70, 0x41, 0x70, 0x90, + 0x23, 0xa0, 0x08, 0x8e, 0xe8, 0x2e, 0x10, 0xe5, 0x04, 0x12, 0xbf, 0x90, 0x10, 0x28, 0x41, 0x5d, + 0xf5, 0xaa, 0xa6, 0xbf, 0xa7, 0x7a, 0x76, 0x4f, 0xbe, 0x90, 0x5f, 0xde, 0xa9, 0xae, 0xf7, 0xea, + 0xbd, 0x7a, 0xaf, 0xde, 0x7b, 0x55, 0xf5, 0x5e, 0x19, 0x9e, 0x35, 0x6a, 0xaf, 0xeb, 0x25, 0xc7, + 0xd8, 0xd0, 0x73, 0xfa, 0xc3, 0xd2, 0xba, 0x56, 0xab, 0xe8, 0xb9, 0x8d, 0x13, 0xab, 0xba, 0xa3, + 0x9d, 0xc8, 0x3d, 0x68, 0xea, 0x8d, 0xcd, 0xa9, 0x7a, 0xc3, 0x72, 0x2c, 0x92, 0x15, 0xfd, 0xa6, + 0x78, 0xbf, 0x29, 0xec, 0x97, 0x7d, 0xba, 0x62, 0x59, 0x15, 0x53, 0xcf, 0x69, 0x75, 0x23, 0xa7, + 0xd5, 0x6a, 0x96, 0xa3, 0x39, 0x86, 0x55, 0xb3, 0x19, 0x64, 0xf6, 0xf9, 0x84, 0x11, 0x04, 0x2a, + 0xd6, 0xf5, 0x48, 0x42, 0xd7, 0x8a, 0x5e, 0xd3, 0x6d, 0x83, 0x23, 0x3d, 0xdc, 0xea, 0x69, 0x35, + 0xb4, 0x92, 0xd9, 0xea, 0xc7, 0x7e, 0x62, 0xb7, 0xf1, 0x8a, 0x55, 0xb1, 0xe8, 0x9f, 0x39, 0xf7, + 0x2f, 0xd6, 0xaa, 0xde, 0x01, 0x58, 0x6e, 0xae, 0x6a, 0xa5, 0x92, 0xd5, 0xac, 0x39, 0x64, 0x02, + 0x7a, 0x9d, 0x86, 0x56, 0xd6, 0x1b, 0x93, 0xca, 0x01, 0xe5, 0x48, 0x7f, 0x01, 0x7f, 0x91, 0xe7, + 0x61, 0xd4, 0x16, 0xbd, 0x8a, 0x35, 0xab, 0x56, 0xd2, 0x27, 0x33, 0x07, 0x94, 0x23, 0x43, 0x85, + 0x91, 0x56, 0xfb, 0x6d, 0xb7, 0x59, 0xfd, 0x04, 0x3c, 0xfd, 0x92, 0x3b, 0x57, 0x2d, 0xac, 0x77, + 0x1a, 0x65, 0xbd, 0x61, 0x17, 0xf4, 0x07, 0x4d, 0xdd, 0x76, 0xc8, 0x21, 0x18, 0xf2, 0xa0, 0x32, + 0xca, 0x38, 0xd2, 0x60, 0xab, 0x71, 0xa1, 0x4c, 0x9e, 0x82, 0xfe, 0xaa, 0xd6, 0xb8, 0xaf, 0xd3, + 0x0e, 0x19, 0xda, 0xa1, 0x8f, 0x35, 0x2c, 0x94, 0xd5, 0x2f, 0x2b, 0xf0, 0x4c, 0xcc, 0x10, 0x76, + 0xdd, 0xaa, 0xd9, 0x3a, 0xb9, 0x0d, 0xb0, 0xda, 0xdc, 0x2c, 0x5a, 0xb4, 0x75, 0x52, 0x39, 0xd0, + 0x75, 0x64, 0x60, 0x3a, 0x37, 0x15, 0x2f, 0xb5, 0xa9, 0x00, 0xa6, 0x39, 0xcd, 0xd1, 0x0a, 0xfd, + 0xab, 0xcd, 0x4d, 0x86, 0x97, 0xdc, 0x85, 0x01, 0x5b, 0x37, 0x4d, 0x8e, 0x30, 0xd3, 0x19, 0x42, + 0x70, 0x71, 0x30, 0x8c, 0xea, 0x1f, 0x2a, 0x70, 0x38, 0xd0, 0x67, 0xd5, 0xb2, 0xee, 0x2f, 0xe9, + 0x8e, 0x56, 0xd6, 0x1c, 0xed, 0x15, 0xc3, 0x59, 0x5f, 0xa2, 0xfc, 0x92, 0x65, 0xe8, 0xab, 0x62, + 0x2b, 0x9d, 0xaa, 0x81, 0xe9, 0xb3, 0x29, 0x06, 0xf6, 0x22, 0x2d, 0x08, 0x44, 0x89, 0xf3, 0x4b, + 0xc6, 0xa1, 0xc7, 0xb0, 0xf3, 0xcd, 0xcd, 0xc9, 0xae, 0x03, 0xca, 0x91, 0xbe, 0x02, 0xfb, 0xa1, + 0x3e, 0x0d, 0x59, 0x3a, 0xe9, 0xd7, 0x71, 0xc4, 0xbb, 0x5a, 0x43, 0xab, 0x72, 0xa9, 0xaa, 0x45, + 0x78, 0x2a, 0xf2, 0x2b, 0x0a, 0xe4, 0x1a, 0xf4, 0xd6, 0x69, 0x0b, 0xb2, 0xa0, 0x26, 0xb1, 0xc0, + 0x60, 0xf3, 0xdd, 0x5f, 0x7d, 0x67, 0xff, 0x8e, 0x02, 0xc2, 0xa9, 0x9f, 0x51, 0x60, 0x5f, 0x40, + 0xe8, 0x73, 0x7a, 0xdd, 0xb2, 0x0d, 0x27, 0x9d, 0x66, 0x2d, 0x02, 0xb4, 0x7e, 0x53, 0xd6, 0x07, + 0xa6, 0x9f, 0x95, 0x9b, 0x50, 0x4a, 0x91, 0x52, 0xf0, 0xc0, 0xab, 0xef, 0x2b, 0xb0, 0x3f, 0x96, + 0x2a, 0xe4, 0x5d, 0x87, 0xbe, 0x32, 0xb6, 0xa1, 0x2a, 0x2e, 0x24, 0x8d, 0xd7, 0x06, 0xdd, 0x14, + 0x6f, 0xb8, 0x5e, 0x73, 0x1a, 0x9b, 0x05, 0x81, 0x3a, 0xfb, 0x09, 0x18, 0xf2, 0x7d, 0x22, 0xa3, + 0xd0, 0x75, 0x5f, 0xdf, 0xc4, 0x49, 0x70, 0xff, 0x24, 0xe7, 0xa1, 0x67, 0x43, 0x33, 0x9b, 0x3a, + 0xb2, 0x7d, 0x28, 0x89, 0x0c, 0xc4, 0x55, 0x60, 0x10, 0x17, 0x32, 0xe7, 0x14, 0x75, 0x1f, 0xae, + 0x6c, 0x2e, 0xe3, 0xbc, 0x66, 0x6a, 0xb5, 0x92, 0x2e, 0x74, 0x60, 0x0d, 0x97, 0x65, 0xf8, 0x3b, + 0xce, 0xc4, 0x75, 0xe8, 0x5b, 0xc5, 0x36, 0x9c, 0x89, 0x44, 0x12, 0x10, 0x1e, 0x15, 0x41, 0x80, + 0xaa, 0x67, 0x51, 0xd7, 0x66, 0x2a, 0x95, 0x86, 0x5e, 0xd1, 0x1c, 0xfd, 0x65, 0xcb, 0x6c, 0x56, + 0x75, 0xae, 0x06, 0x93, 0xb0, 0x93, 0x8b, 0x97, 0xf1, 0xce, 0x7f, 0xaa, 0x4d, 0x64, 0x20, 0x04, + 0x88, 0xf4, 0xdd, 0x83, 0x5d, 0x1a, 0xff, 0x54, 0xdc, 0xa0, 0xdf, 0x38, 0xa1, 0x47, 0x92, 0x08, + 0x65, 0x2b, 0x15, 0x91, 0x8d, 0x6a, 0x7e, 0xec, 0xb6, 0xfa, 0x6a, 0xf4, 0xb0, 0x42, 0x6f, 0xb3, + 0xd0, 0x87, 0x14, 0xb2, 0xd1, 0xfa, 0x0b, 0xe2, 0x37, 0x79, 0x06, 0x40, 0x2c, 0x54, 0x66, 0x78, + 0xfa, 0x0b, 0xfd, 0x7c, 0xa5, 0xda, 0xea, 0x7f, 0x73, 0x53, 0x18, 0xc6, 0x8d, 0x3c, 0x39, 0xb0, + 0xb7, 0xc5, 0x13, 0x5f, 0x1b, 0x7e, 0xde, 0xce, 0x25, 0xf1, 0x26, 0x10, 0xcf, 0x30, 0x58, 0x3e, + 0x65, 0x25, 0xab, 0x51, 0x2e, 0xec, 0xd1, 0x22, 0xbf, 0xda, 0x64, 0x15, 0x26, 0x5b, 0xa3, 0x22, + 0x03, 0x7c, 0xd0, 0x4c, 0xca, 0x09, 0x9d, 0x10, 0x98, 0xbc, 0xcd, 0xb6, 0x7a, 0x0d, 0x0e, 0xfa, + 0x59, 0xf7, 0x41, 0xe1, 0xdc, 0xfa, 0x0c, 0x9d, 0x12, 0x70, 0x24, 0x26, 0xa8, 0x49, 0x18, 0x70, + 0x06, 0xe7, 0xa1, 0x97, 0x91, 0x8e, 0xb6, 0x2b, 0x91, 0x72, 0xef, 0xf4, 0x70, 0x0b, 0xc6, 0xa0, + 0xd5, 0xe3, 0x30, 0x49, 0x47, 0x9b, 0xd3, 0x6b, 0x56, 0x75, 0x4e, 0x2f, 0x19, 0x55, 0xcd, 0xe4, + 0x64, 0x8e, 0x43, 0x4f, 0xd9, 0x6d, 0x46, 0x12, 0xd9, 0x0f, 0xf5, 0x34, 0xec, 0x8d, 0x80, 0x40, + 0xb2, 0x26, 0x61, 0x67, 0x99, 0x35, 0x51, 0xa0, 0xee, 0x02, 0xff, 0xa9, 0x9e, 0x8c, 0x00, 0x13, + 0xca, 0x36, 0x01, 0xbd, 0x14, 0x39, 0x57, 0x35, 0xfc, 0xa5, 0x3a, 0x68, 0xde, 0x03, 0x40, 0x38, + 0xd8, 0xcb, 0x30, 0x4c, 0xfb, 0x15, 0x71, 0x0c, 0xae, 0x3a, 0xcf, 0x27, 0x9b, 0x10, 0x0f, 0x2a, + 0x9c, 0x8c, 0xa1, 0xb2, 0xb7, 0x51, 0x9d, 0x4d, 0x92, 0x80, 0xa0, 0xd9, 0xbf, 0x08, 0x94, 0xe0, + 0x22, 0x30, 0xe0, 0x50, 0x22, 0x12, 0xe4, 0x21, 0x0f, 0x3b, 0x3b, 0x5d, 0xd3, 0x1c, 0x50, 0x7d, + 0x2d, 0x14, 0x79, 0x70, 0x3b, 0x99, 0xc6, 0x07, 0x09, 0x69, 0x67, 0xbc, 0xd2, 0xd6, 0xe2, 0x1c, + 0x9c, 0xe0, 0xe0, 0xaa, 0xcf, 0x93, 0x48, 0x9b, 0x70, 0x01, 0xa4, 0xde, 0x85, 0x3d, 0x6c, 0x88, + 0xba, 0xe5, 0x30, 0x06, 0xbd, 0x7a, 0x61, 0x3b, 0x9a, 0xd3, 0xb4, 0x79, 0xe4, 0xc7, 0x7e, 0xb5, + 0x33, 0x40, 0x3f, 0x82, 0x4a, 0xed, 0xc3, 0x28, 0x9c, 0xfe, 0x4e, 0xd6, 0x91, 0x4f, 0x78, 0xb2, + 0x9f, 0x15, 0x18, 0x0a, 0x1c, 0x4c, 0x3d, 0x0d, 0x13, 0x01, 0xec, 0x52, 0xeb, 0xfa, 0xd5, 0x10, + 0x9b, 0x82, 0xa6, 0x2b, 0xd0, 0xcb, 0xba, 0xe1, 0x04, 0xca, 0x92, 0x84, 0x50, 0xea, 0x37, 0x32, + 0xb8, 0xb8, 0xdc, 0x6f, 0x22, 0xc2, 0x92, 0xa1, 0xca, 0x95, 0xba, 0x69, 0x54, 0x0d, 0x16, 0x74, + 0x74, 0x17, 0xd8, 0x0f, 0x32, 0x07, 0x40, 0xa3, 0xca, 0xa2, 0x6d, 0x94, 0x75, 0x1a, 0x71, 0x0d, + 0x4f, 0x1f, 0x4e, 0x22, 0x8a, 0x0e, 0xba, 0x6c, 0x94, 0xf5, 0x42, 0xbf, 0xc5, 0xff, 0x24, 0x45, + 0xd8, 0x4b, 0xd1, 0x15, 0x4b, 0xcd, 0x6a, 0xd3, 0xd4, 0x5c, 0xc8, 0x62, 0xcd, 0x72, 0x77, 0x1e, + 0x9a, 0x39, 0xd9, 0xed, 0x12, 0x92, 0x3f, 0xe4, 0x06, 0x2f, 0xdf, 0x7c, 0x67, 0xff, 0x53, 0x25, + 0xcb, 0xae, 0x5a, 0xb6, 0x5d, 0xbe, 0x3f, 0x65, 0x58, 0xb9, 0xaa, 0xe6, 0xac, 0x4f, 0x2d, 0xea, + 0x15, 0xad, 0xb4, 0x39, 0xa7, 0x97, 0x0a, 0x7b, 0x28, 0x96, 0x59, 0x81, 0xe4, 0x36, 0xe2, 0x88, + 0x1c, 0xe0, 0x41, 0x53, 0xab, 0x39, 0x86, 0xb3, 0x39, 0xd9, 0xd3, 0xf9, 0x00, 0x2f, 0x21, 0x0e, + 0xf5, 0x4f, 0x15, 0x34, 0x40, 0x81, 0x89, 0x45, 0xb9, 0xdd, 0x82, 0xd1, 0xd5, 0xe6, 0xa6, 0x5d, + 0xac, 0x37, 0x8c, 0x92, 0x5e, 0x34, 0xf5, 0x0d, 0xdd, 0x44, 0xa5, 0x3a, 0x98, 0x34, 0x59, 0x8b, + 0x6e, 0xc7, 0xc2, 0xb0, 0x0b, 0x7a, 0xd7, 0x85, 0xa4, 0xbf, 0xc9, 0x12, 0xec, 0x72, 0x43, 0x71, + 0x3f, 0xb6, 0x8c, 0x2c, 0xb6, 0x11, 0x0a, 0xdb, 0x42, 0xa7, 0x7e, 0x56, 0x81, 0xe1, 0xf9, 0xa6, + 0x69, 0xb6, 0xd4, 0x65, 0xab, 0x6a, 0x46, 0x3e, 0x0e, 0xbb, 0xaa, 0x46, 0x19, 0xe9, 0xd3, 0x6a, + 0xe5, 0xa2, 0x63, 0xad, 0x62, 0xd4, 0x76, 0x34, 0xd1, 0x6a, 0x19, 0x65, 0x4a, 0xd8, 0x4c, 0xad, + 0xbc, 0x72, 0x27, 0x8f, 0x01, 0xeb, 0x70, 0xd5, 0xd3, 0x6a, 0xad, 0xaa, 0x9f, 0x56, 0x30, 0x80, + 0xf2, 0x13, 0xbd, 0x45, 0x53, 0x40, 0xa6, 0x61, 0xe2, 0x0d, 0xc3, 0x59, 0x2f, 0x86, 0x09, 0x67, + 0xfb, 0x08, 0xe2, 0x7e, 0x5d, 0xf2, 0x93, 0x52, 0xc6, 0xd0, 0x28, 0x44, 0x09, 0x8a, 0x7d, 0x2e, + 0x68, 0x42, 0x12, 0xb9, 0xf7, 0x63, 0x69, 0x99, 0x91, 0x2a, 0xaa, 0x56, 0xe0, 0xbb, 0xcc, 0xa2, + 0x8d, 0x67, 0x2a, 0x13, 0xcb, 0x94, 0x16, 0x39, 0xbd, 0x1e, 0x3f, 0xe4, 0xd7, 0x8d, 0x34, 0x2c, + 0x71, 0x33, 0xf4, 0x73, 0x62, 0x37, 0xc4, 0x57, 0x8b, 0x9d, 0xdf, 0xbc, 0xa9, 0xd9, 0xeb, 0x2d, + 0xa7, 0x99, 0xc8, 0x56, 0xc8, 0x4d, 0x65, 0x22, 0xdc, 0xd4, 0x41, 0x18, 0x64, 0xa6, 0x69, 0x9d, + 0x22, 0x9e, 0xec, 0xa2, 0x12, 0x1f, 0xa0, 0x6d, 0x6c, 0x2c, 0xd5, 0xe4, 0xdb, 0x9f, 0x08, 0x32, + 0x90, 0xdd, 0x05, 0xe8, 0xf5, 0xed, 0xc3, 0x4f, 0x24, 0xb1, 0xbb, 0xd2, 0x30, 0xaa, 0x55, 0xbd, + 0xec, 0xa2, 0x5b, 0x74, 0x0d, 0x05, 0xc5, 0x59, 0x40, 0x04, 0xe2, 0x68, 0x61, 0x85, 0x1e, 0x4a, + 0xb4, 0xc6, 0xdc, 0x36, 0x96, 0x55, 0x13, 0x3e, 0xc2, 0x42, 0x09, 0xd6, 0x32, 0x53, 0x2e, 0x37, + 0x74, 0xdb, 0x4e, 0x39, 0xd2, 0x73, 0x30, 0xc2, 0x87, 0xd1, 0x18, 0x02, 0x1c, 0x6b, 0x58, 0xf3, + 0xa1, 0x55, 0x7f, 0x23, 0x03, 0xbb, 0x23, 0x39, 0x76, 0x77, 0x6a, 0x54, 0xdb, 0x18, 0x6e, 0x6a, + 0x5a, 0x77, 0xb4, 0x33, 0xad, 0x0c, 0xc2, 0x0d, 0x12, 0x84, 0x61, 0xce, 0xc8, 0x43, 0x0b, 0x20, + 0x17, 0xc1, 0x9a, 0x61, 0x9a, 0xda, 0xaa, 0xc9, 0xfc, 0x91, 0x2c, 0x02, 0x0e, 0xd4, 0x3a, 0x3f, + 0xe8, 0xf6, 0x9c, 0x1f, 0xb8, 0xd6, 0xa3, 0xa5, 0x4d, 0xcc, 0x65, 0xa0, 0x07, 0x73, 0x15, 0xc6, + 0xdd, 0xad, 0x96, 0x8c, 0xf2, 0x64, 0x2f, 0xdb, 0xad, 0x96, 0x8c, 0xb2, 0xfa, 0x3a, 0xc6, 0x5a, + 0x61, 0x69, 0x6f, 0xbf, 0x66, 0x35, 0xe0, 0x70, 0x1b, 0xb9, 0x6f, 0xff, 0x98, 0x97, 0x3d, 0x4b, + 0xd8, 0x6f, 0xb7, 0xa5, 0x82, 0x9c, 0xff, 0x51, 0x3c, 0x6b, 0x2f, 0x08, 0x2f, 0x22, 0xb0, 0x7e, + 0x61, 0xb8, 0x3c, 0xaa, 0xd4, 0xd6, 0x4b, 0xf7, 0x71, 0x8f, 0x41, 0x16, 0x60, 0x78, 0x55, 0xb7, + 0x9d, 0xe2, 0x6a, 0x73, 0x13, 0xd1, 0x64, 0xe4, 0xd1, 0x0c, 0xba, 0xa0, 0xf9, 0xe6, 0x26, 0x43, + 0x75, 0x0b, 0x46, 0x28, 0x2a, 0x7a, 0x92, 0xc6, 0x70, 0x75, 0xc9, 0xe3, 0x1a, 0x72, 0x61, 0x97, + 0x75, 0xd3, 0xa4, 0xc8, 0xd4, 0x59, 0x5c, 0xa8, 0x73, 0x7a, 0xc3, 0xd8, 0xa0, 0x91, 0x44, 0x07, + 0x53, 0xf8, 0xd3, 0x19, 0x14, 0x7b, 0x3c, 0x96, 0xff, 0xf7, 0x13, 0xf9, 0xc7, 0x5c, 0x8d, 0x5a, + 0x73, 0xb0, 0x1d, 0x61, 0x6d, 0x62, 0x40, 0xda, 0xb5, 0xf5, 0x80, 0x54, 0xfd, 0xa2, 0x02, 0x07, + 0xe2, 0xe9, 0xfe, 0x01, 0x88, 0x1a, 0x7f, 0xb3, 0x0b, 0xa6, 0x22, 0xed, 0xdb, 0x8a, 0x35, 0xab, + 0xd5, 0x4a, 0xba, 0x79, 0xaf, 0xbe, 0x62, 0xcd, 0x54, 0x5d, 0x73, 0xb4, 0x7d, 0x2e, 0x7d, 0x0e, + 0x06, 0x56, 0x35, 0x5b, 0x2f, 0x6a, 0x14, 0x6f, 0x1a, 0xf3, 0x0e, 0x2e, 0x1c, 0x23, 0x87, 0xcc, + 0xc3, 0xe0, 0x83, 0xa6, 0xe5, 0x08, 0x34, 0xdd, 0xf2, 0x68, 0x06, 0x28, 0x20, 0xe2, 0x59, 0x84, + 0x3e, 0xdb, 0x69, 0x68, 0x8e, 0x5e, 0x61, 0x7b, 0x88, 0xe1, 0xe9, 0xe3, 0x49, 0x13, 0xc9, 0xa6, + 0xc5, 0xa4, 0x17, 0x2a, 0xcb, 0x08, 0x57, 0x10, 0x18, 0xc8, 0x22, 0x8c, 0x34, 0xf4, 0x35, 0xbd, + 0xa1, 0xd7, 0x4a, 0x3a, 0x2e, 0x8b, 0x5e, 0x79, 0x45, 0x1b, 0x16, 0xb0, 0x6c, 0x5d, 0xfc, 0x53, + 0x06, 0x4e, 0x79, 0xc4, 0x13, 0xd0, 0xb2, 0x0f, 0x54, 0x48, 0xc1, 0xe9, 0xed, 0xda, 0x86, 0xe9, + 0xed, 0xfe, 0x20, 0xa6, 0xb7, 0xa7, 0xf3, 0xe9, 0x5d, 0xc3, 0x83, 0x9f, 0xe8, 0xd9, 0xdd, 0xbe, + 0x80, 0xae, 0x01, 0x47, 0x23, 0x1c, 0x7b, 0x47, 0xe3, 0x49, 0x87, 0x75, 0xdf, 0xcd, 0xc0, 0x53, + 0xe8, 0xfa, 0x5b, 0x03, 0x7d, 0x48, 0x82, 0xbb, 0x8b, 0x74, 0xf3, 0x51, 0x31, 0x6a, 0x69, 0xb4, + 0x0a, 0x41, 0x7c, 0x91, 0x61, 0x77, 0x27, 0x91, 0xe1, 0x7e, 0x1e, 0x19, 0xba, 0x9a, 0xd3, 0x97, + 0xef, 0x7f, 0xff, 0x9d, 0xfd, 0xac, 0x21, 0x3a, 0x48, 0xec, 0x8d, 0x09, 0x12, 0x77, 0xb6, 0x82, + 0xc4, 0x0d, 0x3c, 0xfb, 0x8b, 0xd3, 0x23, 0x74, 0x04, 0x77, 0x02, 0x61, 0xdb, 0x59, 0x89, 0xb0, + 0x2d, 0x4a, 0x76, 0x22, 0x78, 0xfb, 0x49, 0xf8, 0xa8, 0x94, 0x5e, 0x7d, 0x50, 0xe3, 0xff, 0x82, + 0x12, 0x0a, 0x80, 0x9e, 0xe0, 0x36, 0xf0, 0x61, 0x28, 0x8e, 0x8a, 0xd9, 0x0c, 0x6e, 0xfb, 0x3c, + 0xfc, 0x3c, 0xbf, 0x00, 0xf1, 0x84, 0x70, 0x4f, 0xec, 0x34, 0xe3, 0xd3, 0x0a, 0x80, 0x27, 0x60, + 0x78, 0x82, 0xeb, 0x5c, 0xfd, 0x92, 0x02, 0xe3, 0x77, 0xf5, 0x46, 0x5d, 0x77, 0x9a, 0x9a, 0xc9, + 0x66, 0x64, 0xd9, 0xd1, 0x1c, 0x9d, 0xdc, 0x85, 0x01, 0xce, 0x76, 0x6d, 0xcd, 0xc2, 0x23, 0x88, + 0xc4, 0xab, 0xec, 0x00, 0x9a, 0x85, 0xda, 0x9a, 0x55, 0xc0, 0xa9, 0x73, 0xff, 0x26, 0xf7, 0x60, + 0x70, 0xad, 0x59, 0x2b, 0x1b, 0xb5, 0x0a, 0x43, 0xc9, 0x8e, 0xa9, 0xa6, 0x53, 0xa0, 0x9c, 0x67, + 0xe0, 0x85, 0x01, 0xc4, 0xe3, 0xa2, 0x55, 0x3f, 0xdf, 0x05, 0xe3, 0xf3, 0x4d, 0xd3, 0x0c, 0x0a, + 0x96, 0xcc, 0x05, 0xce, 0x4f, 0x5e, 0x48, 0x3e, 0x03, 0xf7, 0x43, 0x8b, 0x13, 0xb6, 0x57, 0x61, + 0xb8, 0xce, 0xa9, 0xf0, 0xd2, 0x7d, 0x3c, 0x05, 0xdd, 0x74, 0x46, 0x6f, 0xee, 0x28, 0x0c, 0x09, + 0x4c, 0x74, 0x42, 0x3e, 0xe6, 0x4e, 0x88, 0xd3, 0x6c, 0xe8, 0x36, 0x43, 0xdc, 0x45, 0x11, 0x9f, + 0x4c, 0x42, 0x7c, 0xfd, 0x61, 0xdd, 0x68, 0x6c, 0xce, 0x33, 0xa8, 0xd6, 0x3c, 0xdf, 0xdc, 0xe1, + 0xce, 0x09, 0x6d, 0xa4, 0x98, 0xf3, 0x4c, 0x67, 0xd1, 0xfd, 0xa6, 0x30, 0xc1, 0x54, 0xb1, 0xd9, + 0xee, 0x21, 0xf2, 0x68, 0xb1, 0x67, 0x7b, 0x8e, 0x16, 0xf3, 0xbd, 0xd0, 0xed, 0xb2, 0xac, 0x9a, + 0xb8, 0xb7, 0x8d, 0x58, 0x95, 0x68, 0x09, 0x5e, 0x0c, 0x9e, 0xec, 0x1d, 0x6f, 0x77, 0x0c, 0x16, + 0x12, 0xa5, 0x38, 0xdf, 0xbb, 0x88, 0xe7, 0x42, 0xa1, 0x1e, 0x32, 0x9b, 0x40, 0x23, 0xc6, 0x80, + 0x08, 0x4a, 0x6f, 0x06, 0xf4, 0x2d, 0x3d, 0xa1, 0xfc, 0xd4, 0x2e, 0x8f, 0xce, 0x2a, 0xd8, 0x01, + 0xbd, 0x87, 0x14, 0xb9, 0x7a, 0x78, 0xe3, 0xeb, 0xc7, 0xd1, 0xba, 0x1e, 0xe4, 0x51, 0x0a, 0xbf, + 0x05, 0x67, 0x3f, 0xe5, 0xe2, 0xa6, 0x1b, 0xb8, 0xbb, 0x6a, 0x5d, 0x46, 0x51, 0x0f, 0x4b, 0x53, + 0x7c, 0xd2, 0xdc, 0x75, 0xa9, 0xf3, 0xa1, 0x04, 0x89, 0xbb, 0x96, 0x6d, 0xd0, 0x9c, 0xa8, 0x54, + 0x78, 0x5e, 0x87, 0x67, 0x63, 0xf0, 0x2c, 0xd4, 0xfc, 0xd2, 0xde, 0x7a, 0x82, 0x91, 0x0d, 0xb9, + 0xc0, 0x58, 0xd7, 0xd7, 0xd6, 0x98, 0xc4, 0x3f, 0xb8, 0x41, 0x5f, 0x44, 0xe5, 0x08, 0x24, 0xf0, + 0x88, 0xe4, 0x9d, 0x34, 0x93, 0x55, 0x0b, 0x49, 0xcf, 0x33, 0xe9, 0x62, 0x01, 0xf6, 0xb8, 0x9e, + 0x50, 0xc7, 0xe5, 0x37, 0x25, 0x67, 0x45, 0x39, 0x1e, 0xbc, 0xce, 0x65, 0x28, 0xd4, 0xfb, 0xf0, + 0x5c, 0x5b, 0xe1, 0x88, 0x93, 0x14, 0x31, 0xac, 0xbb, 0x98, 0x3e, 0x92, 0x68, 0x6e, 0xbd, 0x83, + 0x29, 0x7c, 0xb0, 0x4f, 0x66, 0x60, 0x57, 0x48, 0x1e, 0x64, 0x0f, 0xec, 0x34, 0xec, 0xa2, 0x69, + 0xd5, 0x2a, 0x14, 0x73, 0x5f, 0xa1, 0xd7, 0xb0, 0x17, 0xad, 0x5a, 0x65, 0xeb, 0x21, 0xf3, 0x1c, + 0x0c, 0xe8, 0x35, 0xa7, 0xb1, 0x19, 0x3a, 0x6a, 0x69, 0xbf, 0x67, 0xa6, 0x70, 0xcc, 0xec, 0xde, + 0x86, 0x51, 0x9d, 0x13, 0x5d, 0xc4, 0x10, 0x3c, 0x85, 0x01, 0x1f, 0x11, 0xc0, 0x4b, 0x14, 0x56, + 0x7d, 0x0c, 0xc7, 0xe5, 0x75, 0x54, 0x1c, 0x5e, 0xfa, 0xe6, 0xfe, 0x58, 0xa2, 0x47, 0x0a, 0x62, + 0xf3, 0x0b, 0xe1, 0x0a, 0x2e, 0xeb, 0xa8, 0xe0, 0x40, 0xc6, 0x8c, 0x55, 0x51, 0x43, 0x23, 0xe1, + 0x05, 0xb9, 0xdd, 0x5b, 0x88, 0x51, 0x50, 0x43, 0x99, 0x3f, 0xe2, 0x96, 0x37, 0xc6, 0xcf, 0x4a, + 0x91, 0xdc, 0x44, 0xcb, 0x1b, 0x8b, 0x03, 0xc9, 0x5e, 0xf2, 0x91, 0xdd, 0x89, 0xdb, 0xf7, 0x91, + 0x3e, 0x83, 0x3b, 0xe5, 0x98, 0x98, 0x49, 0x8e, 0xf2, 0x43, 0x89, 0x28, 0x44, 0xd6, 0xa4, 0x4f, + 0x3d, 0x3a, 0x88, 0xe0, 0xfc, 0x56, 0x41, 0xec, 0x51, 0x62, 0x4d, 0x1a, 0x0e, 0x5c, 0xf2, 0xa5, + 0x38, 0xba, 0xd6, 0x68, 0xa6, 0xc3, 0x14, 0xc7, 0x56, 0xde, 0x24, 0xcf, 0x1a, 0xe3, 0x88, 0xd5, + 0xf3, 0x98, 0x2e, 0x14, 0xed, 0xd1, 0x90, 0x92, 0x71, 0xe8, 0x61, 0xc9, 0xad, 0x0a, 0x4d, 0x6e, + 0x65, 0x3f, 0xd4, 0xbd, 0x98, 0x4f, 0xb0, 0x64, 0x95, 0x9b, 0xa6, 0x4e, 0xa3, 0x3e, 0x9e, 0xf3, + 0xf6, 0x1a, 0xe6, 0x3f, 0xf8, 0x3e, 0x89, 0x5c, 0x03, 0xdf, 0x7c, 0x26, 0xa6, 0x9b, 0xdc, 0x60, + 0x19, 0xbd, 0x0c, 0x01, 0xce, 0xdf, 0x1e, 0xd8, 0xcd, 0xc4, 0x16, 0x70, 0x98, 0x6a, 0x19, 0xd3, + 0x22, 0x3e, 0x58, 0xa3, 0xfe, 0xc0, 0x7b, 0xff, 0x52, 0xd0, 0xdf, 0xd0, 0x1a, 0xe5, 0xbb, 0x96, + 0x51, 0x73, 0xa4, 0xf2, 0xd6, 0x4e, 0xc1, 0x44, 0x5d, 0x67, 0x9b, 0x82, 0xba, 0x65, 0x99, 0x45, + 0xc7, 0xa8, 0xea, 0xb6, 0xa3, 0x55, 0xeb, 0xd4, 0x06, 0x77, 0x15, 0xc6, 0xf1, 0xeb, 0x5d, 0xcb, + 0x32, 0x57, 0xf8, 0x37, 0xf5, 0x67, 0xf9, 0xb5, 0x66, 0xc4, 0x98, 0xc8, 0xe1, 0x2a, 0x3c, 0xc5, + 0x9d, 0x1f, 0xcd, 0x4d, 0x2e, 0x36, 0x68, 0xaf, 0x62, 0x9d, 0x76, 0x63, 0x74, 0xc8, 0x99, 0xd4, + 0x49, 0xaf, 0x1a, 0x78, 0xc7, 0x52, 0x0f, 0xa2, 0x71, 0xf3, 0x7c, 0x99, 0xd5, 0xaa, 0x75, 0xcd, + 0xa8, 0xd4, 0xb8, 0x08, 0xbe, 0xd7, 0x8d, 0x06, 0x2c, 0xb2, 0x0f, 0xd2, 0xba, 0x01, 0x4f, 0xbb, + 0x34, 0xba, 0x93, 0x80, 0x54, 0x96, 0xb0, 0x8b, 0x77, 0xf3, 0x75, 0x3a, 0x79, 0x0f, 0xac, 0xb1, + 0x35, 0xea, 0x1d, 0x80, 0x9a, 0x9b, 0xbd, 0x4e, 0xdc, 0x27, 0xf2, 0x53, 0x0a, 0x1c, 0x0e, 0x0c, + 0x4c, 0x85, 0x20, 0x46, 0xb7, 0x4b, 0xeb, 0xba, 0xab, 0xaf, 0x78, 0x7c, 0x3d, 0x95, 0x7c, 0x2c, + 0xc8, 0xb9, 0x62, 0x33, 0x64, 0x99, 0x85, 0x83, 0xbe, 0xa1, 0xdd, 0x26, 0xde, 0x69, 0x19, 0x11, + 0x93, 0x1f, 0x83, 0xbd, 0x8e, 0xe5, 0x68, 0x66, 0xa4, 0x90, 0x52, 0xb8, 0xd0, 0x09, 0x8a, 0x25, + 0x24, 0x22, 0xf2, 0x4b, 0x0a, 0x1c, 0xe3, 0x0a, 0x26, 0xc7, 0x6a, 0x77, 0x47, 0xac, 0x1e, 0xc1, + 0x41, 0x56, 0xda, 0x72, 0x5c, 0x85, 0x83, 0x82, 0xa0, 0x58, 0xce, 0x7b, 0xe4, 0xd5, 0xf3, 0x19, + 0x3e, 0x72, 0xe4, 0x04, 0xa8, 0x17, 0x51, 0x47, 0x17, 0xec, 0x3b, 0x75, 0x47, 0x2f, 0xdf, 0x69, + 0x3a, 0x77, 0xd6, 0x58, 0x07, 0xbb, 0x7d, 0x22, 0xec, 0x1c, 0x2a, 0x6f, 0x24, 0x30, 0x2a, 0xef, + 0x01, 0x18, 0x34, 0xec, 0xa2, 0xe5, 0x7e, 0x2f, 0x5a, 0x4d, 0x07, 0xa3, 0x2a, 0x30, 0x04, 0x88, + 0xfa, 0x1c, 0x9e, 0xfa, 0x84, 0x70, 0xe0, 0xa1, 0x98, 0xb0, 0x57, 0x73, 0x18, 0xbb, 0x27, 0x74, + 0xc4, 0x41, 0x13, 0x4c, 0x8a, 0x7a, 0x05, 0x1d, 0xe1, 0xbc, 0xae, 0xcf, 0x19, 0x36, 0x3b, 0x76, + 0xc3, 0x88, 0xd7, 0xe3, 0xc2, 0xe3, 0x99, 0xfe, 0xae, 0x82, 0x6e, 0x30, 0x0e, 0x01, 0xd2, 0xf0, + 0x0c, 0x80, 0x63, 0xe8, 0x0d, 0x71, 0x5d, 0xa4, 0x1c, 0xe9, 0x2e, 0xf4, 0xbb, 0x2d, 0xec, 0x54, + 0xa7, 0x00, 0x83, 0x22, 0xfa, 0x6e, 0x1d, 0x1b, 0x24, 0x46, 0x27, 0x9e, 0x01, 0x57, 0x0c, 0xbd, + 0x41, 0x47, 0x1b, 0xd0, 0x5a, 0x43, 0x93, 0x3b, 0x30, 0x20, 0x8c, 0x9a, 0x63, 0xe2, 0x81, 0xc1, + 0x54, 0x0a, 0x94, 0x2b, 0x2b, 0x8b, 0x05, 0xe0, 0xf6, 0xcc, 0x31, 0x85, 0x05, 0xf3, 0x74, 0xe3, + 0x8a, 0xca, 0x85, 0xf2, 0x29, 0x7e, 0x81, 0x16, 0xd9, 0x47, 0x78, 0xe6, 0xdd, 0x6b, 0xba, 0x5e, + 0x2c, 0xe3, 0xf7, 0xd6, 0x6a, 0x52, 0x52, 0x71, 0x2d, 0xf0, 0x8e, 0xad, 0x85, 0x1b, 0xd5, 0x6b, + 0xe8, 0x68, 0x30, 0xdf, 0x7b, 0xc9, 0xb0, 0xab, 0x9a, 0x53, 0xf2, 0x9c, 0x61, 0xee, 0x87, 0x81, + 0x72, 0xd3, 0x76, 0x8a, 0x6b, 0x5a, 0xc9, 0xb1, 0x58, 0x69, 0x4a, 0x57, 0x01, 0xdc, 0xa6, 0x79, + 0xda, 0xa2, 0xfe, 0x6e, 0x17, 0x8c, 0x04, 0xa0, 0x89, 0x0a, 0xbe, 0x3d, 0x91, 0x7c, 0x22, 0x26, + 0x99, 0x81, 0x7e, 0x6d, 0x43, 0x33, 0x52, 0x67, 0x40, 0xb4, 0xa0, 0xc8, 0x79, 0xe8, 0xa1, 0x46, + 0x20, 0x4d, 0x88, 0xcf, 0x20, 0xc8, 0x3c, 0x0c, 0x62, 0xa6, 0x7b, 0x71, 0xdd, 0x32, 0xcb, 0x9e, + 0x4b, 0x96, 0xf6, 0xb7, 0x3f, 0x08, 0x78, 0xd3, 0x32, 0xcb, 0xe4, 0x45, 0x18, 0xd6, 0x1f, 0xd6, + 0xf5, 0x92, 0xbb, 0x7e, 0x19, 0x2d, 0xbd, 0xf2, 0x98, 0x86, 0x38, 0x28, 0xb5, 0x3e, 0x64, 0x16, + 0xa0, 0x6c, 0xac, 0xe1, 0x05, 0x0e, 0x3b, 0x7e, 0x97, 0xdc, 0x01, 0xb5, 0xc0, 0xd4, 0x9f, 0x40, + 0xdf, 0x1e, 0x21, 0x66, 0xd4, 0xb6, 0xd7, 0x80, 0x70, 0xd6, 0xab, 0xe2, 0x2b, 0x86, 0x32, 0x1f, + 0x95, 0xa8, 0x14, 0xe0, 0x28, 0x0b, 0xbb, 0x56, 0x83, 0x63, 0xa8, 0x87, 0x71, 0xf1, 0x63, 0x57, + 0x37, 0x50, 0xcc, 0xb7, 0x66, 0x4b, 0x98, 0xaa, 0x5f, 0xcb, 0xc0, 0x6e, 0x4f, 0x17, 0xb6, 0xd9, + 0xa2, 0xf3, 0xf9, 0x43, 0xae, 0x4f, 0xea, 0xaf, 0xf2, 0x68, 0x3e, 0x76, 0x06, 0x51, 0x8a, 0x35, + 0xc8, 0xf2, 0x01, 0xe9, 0x09, 0xba, 0x77, 0x74, 0xa9, 0xb4, 0x99, 0xc8, 0xf9, 0x2f, 0xec, 0x59, + 0x8d, 0x1e, 0x57, 0xb8, 0xa1, 0x80, 0x49, 0x74, 0x43, 0x69, 0xc3, 0x76, 0x8c, 0x92, 0x90, 0xed, + 0x79, 0x18, 0xf2, 0x7d, 0x20, 0x04, 0xba, 0x5d, 0xbb, 0x8e, 0x36, 0x9e, 0xfe, 0xed, 0x8a, 0xb0, + 0x55, 0x1a, 0xd4, 0x5d, 0x60, 0x3f, 0x54, 0x1b, 0x3d, 0x58, 0xc2, 0x18, 0x62, 0xd3, 0x0a, 0xb6, + 0x68, 0x95, 0xc9, 0x92, 0xf7, 0xe1, 0x29, 0x78, 0x80, 0xdd, 0xf8, 0x7f, 0xc9, 0x70, 0xac, 0x97, + 0xb5, 0xa6, 0x49, 0xdd, 0x84, 0x60, 0xe4, 0xcf, 0x15, 0x98, 0x08, 0x7e, 0xc1, 0xe1, 0x9f, 0x87, + 0xd1, 0xaa, 0x66, 0x3b, 0x7a, 0x83, 0xdf, 0x51, 0xea, 0xdc, 0x91, 0x8e, 0xb0, 0xf6, 0x19, 0xde, + 0x4c, 0x4e, 0xc0, 0x78, 0x59, 0x6c, 0x01, 0x3c, 0xdd, 0xd9, 0x55, 0xc8, 0x58, 0xeb, 0x5b, 0x0b, + 0xe4, 0x30, 0x0c, 0xdb, 0x75, 0xcb, 0xf1, 0x74, 0x66, 0x97, 0x41, 0x43, 0x6e, 0xab, 0xaf, 0x5b, + 0xe9, 0x8d, 0xe9, 0xe3, 0x9e, 0x6e, 0xdd, 0xac, 0x9b, 0xdb, 0x2a, 0xba, 0xa9, 0x73, 0x68, 0xf7, + 0x71, 0xe3, 0x3b, 0x37, 0xdf, 0xb0, 0xaa, 0x94, 0x25, 0xcf, 0x59, 0xd7, 0x86, 0xfb, 0xbb, 0xe8, + 0x3f, 0xc9, 0x1c, 0xa4, 0x8d, 0xfc, 0xb6, 0x95, 0xa7, 0x51, 0x45, 0x60, 0xc1, 0x39, 0x49, 0xdc, + 0x1b, 0xf3, 0xed, 0xf5, 0x4d, 0xc3, 0x76, 0xac, 0x86, 0x51, 0x12, 0xb1, 0x56, 0xc9, 0xf2, 0x84, + 0x52, 0x89, 0x28, 0x1c, 0x34, 0x2d, 0x71, 0x28, 0xc4, 0xb9, 0xc0, 0x10, 0x0f, 0x09, 0xe9, 0x07, + 0x99, 0x2a, 0x04, 0x1f, 0xa2, 0x41, 0xc7, 0xf3, 0x4b, 0xfd, 0x13, 0x05, 0xc6, 0xe8, 0x67, 0x36, + 0xac, 0x1b, 0x5c, 0xb9, 0x5b, 0x41, 0xf2, 0x02, 0x10, 0x36, 0x4c, 0xa5, 0x61, 0x35, 0xeb, 0x6e, + 0x38, 0x6a, 0xeb, 0x25, 0x54, 0xf1, 0x51, 0xfa, 0xe5, 0x06, 0x7e, 0x58, 0xd6, 0x4b, 0x64, 0x0f, + 0xec, 0xac, 0x6a, 0x0f, 0x8b, 0x5a, 0x45, 0x47, 0x85, 0xef, 0xad, 0x6a, 0x0f, 0x67, 0x2a, 0x3a, + 0x99, 0x82, 0x31, 0xa3, 0x56, 0x32, 0x9b, 0x2e, 0xbd, 0xda, 0x1b, 0xc5, 0x75, 0x36, 0x08, 0xa6, + 0xf4, 0xed, 0xc2, 0x4f, 0x05, 0xed, 0x0d, 0x1c, 0xdd, 0x55, 0x3c, 0xde, 0x5f, 0xec, 0xe5, 0xe9, + 0x2d, 0x6f, 0x61, 0x04, 0xdb, 0xf9, 0x1e, 0x5d, 0xfd, 0x6d, 0x05, 0xcf, 0xeb, 0x45, 0x8d, 0x85, + 0xe6, 0x18, 0xa6, 0xe1, 0x6c, 0x4a, 0xdd, 0x59, 0x96, 0x60, 0x37, 0xe3, 0x0f, 0x49, 0x72, 0x43, + 0x54, 0x97, 0x71, 0x99, 0x40, 0x2c, 0x62, 0xbe, 0x0a, 0x63, 0x4e, 0xb8, 0x51, 0xfd, 0x64, 0xc6, + 0xa7, 0x9b, 0x5e, 0x12, 0x45, 0x2d, 0x06, 0x6c, 0x88, 0x56, 0xbc, 0xe1, 0xdb, 0xdf, 0xd6, 0x1d, + 0xb6, 0x40, 0xc8, 0x2b, 0x30, 0xca, 0x39, 0x10, 0x13, 0x96, 0x09, 0x5d, 0x68, 0x61, 0x05, 0xaf, + 0xb8, 0x84, 0xc1, 0x9e, 0x1e, 0xc3, 0x33, 0x82, 0x58, 0xf8, 0x27, 0x72, 0x13, 0x06, 0xbc, 0x12, + 0xeb, 0xa2, 0x5a, 0xf6, 0x9c, 0xa4, 0x96, 0x15, 0xa0, 0x21, 0x64, 0x2a, 0x0a, 0x89, 0xf2, 0x46, + 0x4d, 0xe3, 0x53, 0xd1, 0xee, 0x5e, 0x55, 0xad, 0x60, 0xb2, 0x75, 0x00, 0x48, 0x98, 0xc7, 0xc0, + 0xb5, 0x4f, 0xa2, 0xbc, 0x18, 0x0e, 0x14, 0x4a, 0xf0, 0xd6, 0xe7, 0x01, 0x1c, 0x8b, 0xbc, 0xfa, + 0x9f, 0xb5, 0x6a, 0x65, 0x83, 0x65, 0x89, 0x6d, 0x77, 0xe5, 0xf1, 0x6f, 0x75, 0xc1, 0xc1, 0xd0, + 0xad, 0x74, 0x70, 0xbc, 0x1f, 0xdc, 0xfc, 0x8e, 0x1b, 0x30, 0xe8, 0x34, 0x8c, 0x4a, 0x45, 0x6f, + 0xdc, 0x4d, 0x7b, 0xc1, 0xe8, 0x03, 0x6c, 0x9f, 0xe7, 0x71, 0x18, 0x76, 0x1a, 0x36, 0xbd, 0xce, + 0xa7, 0x51, 0x69, 0x5f, 0x7e, 0xe0, 0xfd, 0x77, 0xf6, 0xf3, 0xa6, 0x02, 0xff, 0x23, 0x90, 0x0e, + 0xb2, 0x33, 0x26, 0x1d, 0xa4, 0xaf, 0x95, 0x0e, 0xf2, 0x29, 0xc5, 0x97, 0x54, 0x97, 0xa8, 0x14, + 0xa2, 0xe8, 0xd3, 0x9f, 0x92, 0x70, 0x39, 0x55, 0x4a, 0x42, 0x10, 0xaf, 0x48, 0x4c, 0xb8, 0x84, + 0x06, 0x84, 0x27, 0xf0, 0xa7, 0x4a, 0xaa, 0x54, 0x7f, 0x8f, 0x1f, 0x84, 0x45, 0x80, 0x23, 0xdd, + 0x33, 0xd0, 0x9d, 0x37, 0x84, 0x17, 0x39, 0x26, 0x41, 0xb5, 0x27, 0x7d, 0x82, 0x82, 0xba, 0x28, + 0x66, 0xec, 0xfb, 0xbc, 0x22, 0x33, 0x2d, 0x0a, 0x17, 0x54, 0x1c, 0xac, 0xfb, 0xef, 0x3d, 0xd3, + 0x31, 0xfb, 0x07, 0x3c, 0xb2, 0x8c, 0x45, 0xf2, 0xa1, 0x62, 0xf9, 0xeb, 0x0a, 0xec, 0x0a, 0x7d, + 0x7b, 0xa2, 0x8b, 0xde, 0xbf, 0x4c, 0xba, 0x82, 0xcb, 0x24, 0x64, 0xf7, 0xba, 0x23, 0xae, 0x0c, + 0x97, 0x70, 0xe1, 0xe0, 0x6d, 0xb2, 0x63, 0x55, 0x8d, 0xd2, 0xf5, 0x87, 0x7a, 0xa9, 0xe9, 0x2a, + 0xf7, 0xbc, 0xae, 0x2f, 0x35, 0x4d, 0xc7, 0xa8, 0x9b, 0x86, 0xde, 0x90, 0x92, 0xe9, 0x06, 0x5e, + 0xa1, 0xca, 0xa0, 0x43, 0xe9, 0xce, 0x02, 0x54, 0x45, 0x6b, 0x9a, 0x69, 0xf4, 0x80, 0xa9, 0xe7, + 0x78, 0xad, 0x35, 0x15, 0xea, 0xb2, 0xa3, 0xdd, 0xd7, 0x6f, 0x34, 0xb4, 0x56, 0x76, 0xe6, 0x24, + 0xec, 0xac, 0xb8, 0xbf, 0x75, 0x9d, 0x1f, 0x0f, 0xe1, 0x4f, 0xf5, 0x73, 0xa2, 0x94, 0x3a, 0x04, + 0x8a, 0x04, 0x5e, 0x86, 0x1e, 0xda, 0x19, 0x0f, 0x3f, 0x12, 0x5d, 0x2a, 0x43, 0xc2, 0xe0, 0x19, + 0x14, 0x59, 0x86, 0xd6, 0x25, 0x5e, 0x91, 0x21, 0x92, 0xa8, 0xe8, 0x12, 0xf7, 0x70, 0x0c, 0xd7, + 0xb0, 0xee, 0xfb, 0xad, 0xae, 0xa0, 0x9d, 0xa0, 0xbf, 0x66, 0x9a, 0xce, 0xba, 0xd5, 0x30, 0x7e, + 0x9c, 0xa6, 0x70, 0x86, 0x38, 0x6e, 0xf8, 0x39, 0x6e, 0x78, 0xe7, 0x22, 0xe3, 0x9f, 0x8b, 0x8f, + 0xe1, 0xf1, 0x51, 0x14, 0x56, 0x9c, 0x8c, 0xd3, 0xd0, 0x8b, 0xe9, 0xa9, 0x4c, 0x52, 0xcf, 0xa0, + 0xa4, 0x76, 0x87, 0x25, 0xb5, 0x50, 0x73, 0x0a, 0xd8, 0x59, 0x1c, 0x5b, 0x86, 0x31, 0xdb, 0x6d, + 0x09, 0x76, 0x43, 0xde, 0x03, 0xf1, 0xd0, 0x22, 0xe7, 0x9b, 0xb0, 0xf3, 0x57, 0x0a, 0x55, 0x4c, + 0x43, 0xe4, 0x28, 0x05, 0x64, 0xc8, 0x79, 0xa6, 0x73, 0x2f, 0x45, 0x63, 0xcb, 0x9c, 0x94, 0x47, + 0xcc, 0x16, 0x42, 0x1f, 0x3d, 0x05, 0xfd, 0xa2, 0x6e, 0x93, 0x8c, 0xc3, 0xa8, 0xfb, 0x6f, 0xf1, + 0x5e, 0xcd, 0xae, 0xeb, 0x25, 0x63, 0xcd, 0xd0, 0xcb, 0xa3, 0x3b, 0xc8, 0x4e, 0xe8, 0xca, 0x37, + 0x37, 0x47, 0x15, 0xd2, 0x07, 0xdd, 0xcb, 0xba, 0x69, 0x8e, 0x66, 0x8e, 0xbe, 0x0c, 0xe3, 0x51, + 0x49, 0xb9, 0x2e, 0x02, 0x0f, 0x2c, 0x45, 0x3c, 0xba, 0x83, 0x8c, 0xc1, 0x88, 0xbb, 0xf7, 0x79, + 0xc5, 0x6a, 0xd8, 0xce, 0x8a, 0x95, 0xd7, 0x6d, 0x67, 0x54, 0xe1, 0x8d, 0xee, 0xaf, 0x15, 0x8b, + 0x7e, 0x1a, 0xcd, 0x4c, 0x7f, 0x7f, 0x1d, 0x7a, 0xe8, 0x3c, 0x92, 0x77, 0x15, 0xd8, 0xbd, 0x78, + 0x32, 0x60, 0x73, 0xf3, 0x96, 0x75, 0x9f, 0x5c, 0x6d, 0xfb, 0x46, 0x45, 0xb2, 0xc9, 0xcf, 0x5e, + 0xeb, 0x1c, 0x01, 0x93, 0xa4, 0x3a, 0xff, 0x33, 0x5f, 0xff, 0xf6, 0x67, 0x32, 0xd7, 0xc8, 0x95, + 0x5c, 0xc2, 0x53, 0x38, 0xad, 0x6d, 0x6a, 0x6e, 0xf1, 0xa4, 0x20, 0x3f, 0xf7, 0x48, 0x98, 0xa6, + 0xc7, 0xe4, 0x4d, 0x05, 0x46, 0x16, 0x4f, 0x0a, 0x2f, 0x4a, 0xd9, 0x3b, 0x2f, 0x45, 0x5d, 0x94, + 0xe3, 0xce, 0x5e, 0xe8, 0x04, 0x14, 0x59, 0xba, 0x46, 0x59, 0xba, 0x40, 0xce, 0x25, 0xb1, 0xe4, + 0x6e, 0xa6, 0x63, 0x99, 0xf9, 0xbc, 0x02, 0x63, 0x11, 0x2f, 0xad, 0x90, 0x33, 0x6d, 0xa9, 0x8a, + 0x7c, 0xb8, 0x25, 0x7b, 0x36, 0x35, 0x1c, 0xb2, 0x32, 0x4d, 0x59, 0x79, 0x81, 0x1c, 0xcd, 0x49, + 0xbc, 0x69, 0x84, 0x44, 0xfe, 0xb5, 0x02, 0x24, 0xfc, 0xb4, 0x09, 0xb9, 0xd0, 0xd1, 0x7b, 0x28, + 0x8c, 0xfe, 0x8b, 0x5b, 0x78, 0x4b, 0x45, 0xbd, 0x4a, 0x79, 0x38, 0x4f, 0xce, 0xca, 0xf0, 0x90, + 0xb3, 0xc3, 0x94, 0xbf, 0xa9, 0xc0, 0xae, 0x10, 0x7e, 0x09, 0xe5, 0x8a, 0x7b, 0x3f, 0x20, 0x7b, + 0xa1, 0x13, 0x50, 0xe4, 0xe6, 0x0a, 0xe5, 0xe6, 0x1c, 0x39, 0xd3, 0x19, 0x37, 0xe4, 0x2f, 0x14, + 0x18, 0x0d, 0xbe, 0xdd, 0x42, 0xce, 0x49, 0xeb, 0x47, 0xe0, 0x39, 0x98, 0xec, 0xf9, 0x0e, 0x20, + 0x91, 0x93, 0xcb, 0x94, 0x93, 0xb3, 0xe4, 0xb4, 0x14, 0x27, 0x7a, 0x90, 0xe6, 0xbf, 0x52, 0x60, + 0x24, 0xf0, 0x20, 0x0a, 0x69, 0xaf, 0xe7, 0xd1, 0xcf, 0xc9, 0x64, 0xcf, 0xa5, 0x07, 0x4c, 0x63, + 0xbf, 0x44, 0x43, 0xe0, 0xd9, 0x98, 0xdc, 0x23, 0x94, 0xce, 0x63, 0x2a, 0x97, 0xe0, 0xfb, 0x2e, + 0x24, 0x35, 0x59, 0x29, 0xe4, 0x12, 0xf7, 0x98, 0x4c, 0x4a, 0xb9, 0x04, 0x1f, 0xc2, 0x21, 0xff, + 0xa6, 0xc0, 0xee, 0xc8, 0x47, 0x3a, 0xc8, 0x65, 0x79, 0x9a, 0x22, 0x5e, 0x79, 0xc9, 0x5e, 0xe9, + 0x14, 0x1c, 0xf9, 0xba, 0x4d, 0xf9, 0xba, 0x49, 0xe6, 0xd3, 0xf1, 0xe5, 0xc5, 0xe5, 0x33, 0xd2, + 0xef, 0x28, 0x30, 0x11, 0xfd, 0x1a, 0x09, 0xe9, 0x90, 0x54, 0x21, 0xbd, 0xab, 0x1d, 0xc3, 0x23, + 0xaf, 0xb3, 0x94, 0xd7, 0xcb, 0xe4, 0x62, 0xe7, 0xbc, 0xda, 0xe4, 0x4b, 0x0a, 0x0c, 0x7a, 0x9f, + 0x77, 0x21, 0xa7, 0xda, 0x92, 0x15, 0xf1, 0xec, 0x4d, 0xf6, 0x74, 0x4a, 0x28, 0x64, 0x21, 0x4f, + 0x59, 0xb8, 0x44, 0x2e, 0x48, 0xb1, 0xe0, 0x7b, 0xb8, 0x26, 0xf7, 0x88, 0xfe, 0x7c, 0x4c, 0xbe, + 0xa0, 0xc0, 0x90, 0xef, 0x81, 0x1a, 0x92, 0x8e, 0x18, 0x21, 0x90, 0x33, 0x69, 0xc1, 0x90, 0x89, + 0x8b, 0x94, 0x89, 0xd3, 0xe4, 0x64, 0x7a, 0x26, 0x6c, 0xf2, 0xfb, 0x0a, 0x0c, 0x78, 0xde, 0x4b, + 0x20, 0x27, 0xdb, 0xbb, 0x8d, 0xd0, 0x3b, 0x0f, 0xd9, 0x53, 0xe9, 0x80, 0x90, 0xee, 0xe3, 0x94, + 0xee, 0xa3, 0xe4, 0x48, 0xdb, 0x10, 0x06, 0x0f, 0xea, 0xc8, 0xe7, 0x14, 0x00, 0xcf, 0xdb, 0x18, + 0xd3, 0x29, 0x86, 0xe5, 0xa4, 0x9e, 0x4c, 0x05, 0x83, 0x94, 0x5e, 0xa2, 0x94, 0x9e, 0x21, 0xa7, + 0x64, 0x29, 0xf5, 0xad, 0xe1, 0x2f, 0x28, 0x30, 0x12, 0x78, 0x96, 0x42, 0xc2, 0x89, 0x44, 0x3f, + 0xa9, 0x21, 0xe1, 0x44, 0x62, 0x5e, 0xc0, 0x50, 0x4f, 0x53, 0x26, 0x72, 0xe4, 0x58, 0x5b, 0x26, + 0xd6, 0x9a, 0xa6, 0x59, 0xe4, 0x73, 0xfe, 0x95, 0xf0, 0x9b, 0x24, 0x67, 0x52, 0xd2, 0x20, 0x1f, + 0x21, 0x46, 0x3f, 0x74, 0x91, 0x22, 0xd8, 0xf5, 0x90, 0xee, 0x93, 0xc1, 0x17, 0x15, 0x18, 0xf2, + 0x05, 0xd2, 0x12, 0x8b, 0x34, 0x32, 0x66, 0x3f, 0x93, 0x16, 0x2c, 0x4d, 0x48, 0x45, 0x59, 0xb0, + 0x38, 0xac, 0x8f, 0x81, 0xb7, 0x15, 0x18, 0x0d, 0xd6, 0xf7, 0x4a, 0xb8, 0xee, 0x98, 0x07, 0x2e, + 0x24, 0x5c, 0x77, 0xdc, 0x63, 0x09, 0xea, 0x2d, 0xca, 0xc9, 0x75, 0x32, 0x2b, 0xc7, 0x89, 0x6f, + 0x2d, 0xe4, 0x1e, 0xf9, 0xce, 0x8f, 0x1e, 0x93, 0xff, 0x52, 0x60, 0x32, 0xee, 0xa9, 0x04, 0xd2, + 0x7e, 0xe3, 0xd7, 0xe6, 0x75, 0x8d, 0xec, 0xcc, 0x16, 0x30, 0x20, 0xbb, 0xf7, 0x28, 0xbb, 0x77, + 0xc8, 0x52, 0x27, 0xec, 0x22, 0xab, 0x22, 0x04, 0xe3, 0xf7, 0x8f, 0x8f, 0xc9, 0xb7, 0xdd, 0x0d, + 0x4c, 0xe8, 0xad, 0x13, 0x99, 0x0d, 0x4c, 0xdc, 0x3b, 0x2d, 0x32, 0x1b, 0x98, 0xd8, 0xc7, 0x55, + 0x52, 0xb3, 0x59, 0x5c, 0xdd, 0xc4, 0x32, 0xbe, 0x44, 0xf9, 0x7e, 0x45, 0x81, 0xd1, 0xe0, 0xe3, + 0xaa, 0x12, 0x6a, 0x1b, 0xf3, 0xe4, 0x6b, 0xf6, 0x7c, 0x07, 0x90, 0xc8, 0xe0, 0x05, 0xca, 0xe0, + 0x29, 0x32, 0x9d, 0xc4, 0x20, 0x17, 0x61, 0x80, 0x8b, 0xef, 0x28, 0xb0, 0xb7, 0xb5, 0x1e, 0x56, + 0x1a, 0x5a, 0xcd, 0x36, 0xf4, 0xda, 0x13, 0x5d, 0x85, 0xf2, 0xf2, 0x72, 0x38, 0xb9, 0x45, 0x89, + 0xf5, 0xf8, 0xf7, 0xa8, 0x96, 0xfe, 0x1a, 0x2d, 0x49, 0xb5, 0x8c, 0x7c, 0x38, 0x43, 0x52, 0x2d, + 0xa3, 0x9f, 0xcb, 0x90, 0xdb, 0xf9, 0x30, 0xcf, 0x1b, 0x2c, 0x45, 0xf3, 0x99, 0xcf, 0xff, 0x50, + 0x60, 0x32, 0xee, 0x6d, 0x0e, 0x09, 0x3b, 0xd3, 0xe6, 0x71, 0x10, 0x09, 0x3b, 0xd3, 0xee, 0x61, + 0x10, 0x75, 0x91, 0x72, 0x3a, 0x4f, 0xe6, 0x24, 0xcf, 0xa8, 0x92, 0xf9, 0xfd, 0x86, 0x02, 0x63, + 0x11, 0x27, 0x62, 0xe4, 0x62, 0x0a, 0x42, 0x43, 0xbe, 0xef, 0x52, 0x67, 0xc0, 0xc8, 0xe0, 0x1c, + 0x65, 0xf0, 0x0a, 0xb9, 0x24, 0xc9, 0x60, 0xb4, 0x1f, 0xfc, 0x77, 0x05, 0x26, 0xa2, 0x4b, 0xb4, + 0x25, 0x36, 0x44, 0x89, 0x6f, 0x04, 0x48, 0x6c, 0x88, 0x92, 0x6b, 0xc3, 0xd5, 0x97, 0x28, 0x87, + 0xb7, 0xc8, 0x42, 0x1a, 0x0e, 0x93, 0xd7, 0xe3, 0x2f, 0x66, 0x60, 0x5f, 0x72, 0x65, 0x38, 0x99, + 0x4f, 0xe9, 0xe3, 0xe2, 0xd8, 0xbf, 0xb1, 0x65, 0x3c, 0x38, 0x0d, 0x1f, 0xa7, 0xd3, 0x70, 0x8f, + 0x2c, 0x77, 0x3e, 0x0d, 0xf1, 0x7e, 0xf3, 0x7f, 0x7d, 0x0b, 0x39, 0xe0, 0x3d, 0xaf, 0xa5, 0x55, + 0xd0, 0x90, 0x0f, 0x9d, 0xd9, 0x02, 0x86, 0x2d, 0xb1, 0x2f, 0xe9, 0x4f, 0xbf, 0xaf, 0xc0, 0xfe, + 0xa0, 0x16, 0x06, 0xfd, 0xd1, 0x13, 0x5f, 0x07, 0x69, 0x67, 0x20, 0x95, 0x87, 0xfa, 0x33, 0x05, + 0x76, 0x85, 0x8a, 0x81, 0x25, 0x0e, 0x4a, 0xe3, 0xca, 0xfa, 0x25, 0x0e, 0x4a, 0x63, 0x6b, 0x8f, + 0xd5, 0x33, 0x94, 0xd3, 0xe3, 0x64, 0x4a, 0xd6, 0x68, 0x23, 0xb9, 0x5f, 0x53, 0x60, 0x34, 0x54, + 0x8e, 0x7e, 0x2e, 0x35, 0x21, 0xf2, 0x71, 0x44, 0x5c, 0x4d, 0xb2, 0xdc, 0x09, 0x48, 0x98, 0x03, + 0x9f, 0x4d, 0xfe, 0x8e, 0x02, 0x7b, 0x62, 0xaa, 0x88, 0x25, 0x6e, 0x7f, 0x92, 0x6b, 0x98, 0xb3, + 0xd7, 0x3a, 0x47, 0x80, 0x2c, 0x2e, 0x50, 0x16, 0x67, 0xc9, 0x4c, 0x2a, 0x16, 0xb9, 0xc9, 0xf1, + 0x71, 0xfa, 0xb7, 0x0a, 0x8c, 0x47, 0x95, 0x7d, 0x91, 0x4b, 0x29, 0x02, 0xd3, 0x50, 0xfd, 0x73, + 0xf6, 0x72, 0x87, 0xd0, 0x69, 0x8e, 0x27, 0x44, 0x43, 0x70, 0x41, 0xfd, 0x91, 0x02, 0x63, 0xfc, + 0xfc, 0xdc, 0x53, 0x7c, 0x26, 0x71, 0x12, 0x14, 0xae, 0x62, 0x93, 0x38, 0x09, 0x8a, 0xa8, 0x6f, + 0x93, 0x3b, 0x09, 0xaa, 0x52, 0xc0, 0x22, 0x2d, 0x29, 0x23, 0xbf, 0xa3, 0x40, 0xbf, 0x28, 0x5a, + 0x23, 0x27, 0xda, 0x8e, 0x1a, 0xac, 0x7c, 0xcb, 0x4e, 0xa7, 0x01, 0x41, 0x32, 0x8f, 0x51, 0x32, + 0x9f, 0x23, 0x87, 0x93, 0xc8, 0xac, 0x0b, 0xaa, 0xfe, 0x46, 0x81, 0xb1, 0x88, 0xba, 0x69, 0x92, + 0xe6, 0xa2, 0x29, 0x44, 0xf7, 0xa5, 0xce, 0x80, 0xd3, 0x1c, 0xbb, 0x0b, 0x0e, 0x42, 0xaa, 0xf2, + 0x9f, 0x0a, 0x64, 0xe3, 0x2b, 0xb3, 0x49, 0xbe, 0x03, 0xda, 0x02, 0xe5, 0xef, 0xd9, 0xd9, 0x2d, + 0xe1, 0x48, 0xb3, 0xe2, 0x63, 0xd9, 0xf4, 0xad, 0xf8, 0x5f, 0xc9, 0xc0, 0x21, 0x89, 0xca, 0x68, + 0x72, 0x2b, 0x05, 0xdd, 0xed, 0xde, 0x00, 0xc8, 0x2e, 0x6e, 0x0f, 0x32, 0x9c, 0x8d, 0x65, 0x3a, + 0x1b, 0x4b, 0xe4, 0x56, 0xa2, 0x79, 0x10, 0x09, 0x25, 0x72, 0xf3, 0xf2, 0x0f, 0x0a, 0x8c, 0x45, + 0xd4, 0x4a, 0x4b, 0x28, 0x77, 0x7c, 0xa1, 0xb7, 0x84, 0x72, 0x27, 0x54, 0x79, 0xab, 0xd7, 0x29, + 0x9f, 0x57, 0xc9, 0xe5, 0x44, 0xa9, 0x8b, 0xa7, 0x5a, 0x3c, 0x8f, 0xd7, 0xf8, 0x38, 0xfb, 0x96, + 0x02, 0x7b, 0x62, 0xca, 0xa9, 0x25, 0xbc, 0x59, 0x72, 0x5d, 0xb8, 0x84, 0x37, 0x6b, 0x53, 0x14, + 0x2e, 0x7b, 0x65, 0xe1, 0x22, 0x89, 0x65, 0xf1, 0x3d, 0x05, 0x26, 0xa2, 0xeb, 0xae, 0x25, 0x82, + 0xc7, 0xc4, 0xf2, 0x71, 0x89, 0xe0, 0x31, 0xb9, 0x76, 0x5c, 0xbd, 0x49, 0xf9, 0xcb, 0x93, 0x6b, + 0xa9, 0xa4, 0x88, 0xef, 0xfd, 0x84, 0x04, 0x19, 0x53, 0x30, 0x2e, 0x21, 0xc8, 0xe4, 0xd7, 0x33, + 0x24, 0x04, 0xd9, 0xa6, 0x56, 0x5d, 0x4e, 0x90, 0x2c, 0x1b, 0x8f, 0xa7, 0x75, 0x47, 0x1d, 0xaf, + 0xed, 0x0a, 0x97, 0xb4, 0x4a, 0x1e, 0x2b, 0x45, 0x54, 0x62, 0x4b, 0x04, 0xc3, 0xb1, 0x05, 0xd5, + 0xea, 0x59, 0xca, 0xd0, 0x09, 0x92, 0x4b, 0x62, 0x28, 0xa2, 0x96, 0x95, 0xfc, 0x9d, 0x02, 0x93, + 0x77, 0x5b, 0xd5, 0xb1, 0x1f, 0x0a, 0x66, 0xa4, 0x12, 0x3a, 0xbc, 0x75, 0xc3, 0x41, 0xa6, 0xbe, + 0xc6, 0xab, 0x2a, 0xfc, 0x65, 0xd5, 0x12, 0x06, 0x32, 0xbe, 0x58, 0x5c, 0xc2, 0x40, 0x26, 0x54, + 0x91, 0xab, 0xe7, 0x29, 0x4f, 0x27, 0xc9, 0x09, 0x69, 0x01, 0xf1, 0xe2, 0x67, 0xf2, 0xae, 0x02, + 0x13, 0xd1, 0xd5, 0xae, 0x12, 0x16, 0x23, 0xb1, 0xce, 0x56, 0xc2, 0x62, 0x24, 0x97, 0xd9, 0xaa, + 0x37, 0x28, 0x5b, 0x33, 0xe4, 0x6a, 0x12, 0x5b, 0xbe, 0xe2, 0x53, 0x6f, 0xd9, 0xad, 0x27, 0x3d, + 0xc2, 0x15, 0x59, 0x44, 0xad, 0xa9, 0x84, 0xc8, 0xe2, 0xab, 0x63, 0x25, 0x44, 0x96, 0x50, 0x36, + 0x2b, 0x27, 0xb2, 0xc8, 0xc2, 0x5a, 0xf2, 0x96, 0x02, 0xbb, 0x42, 0x15, 0x92, 0x12, 0xcb, 0x29, + 0xae, 0x78, 0x56, 0x62, 0x39, 0xc5, 0x16, 0x64, 0xca, 0x1d, 0xfe, 0x85, 0x4b, 0x36, 0x73, 0x8f, + 0x3c, 0xe5, 0xba, 0x8f, 0xc9, 0x3f, 0x2b, 0xb0, 0x27, 0xa6, 0x68, 0x50, 0xc2, 0xa2, 0x27, 0x17, + 0x6c, 0x4a, 0x58, 0xf4, 0x36, 0xf5, 0x8a, 0x72, 0x36, 0x83, 0xff, 0xe7, 0x53, 0x11, 0x25, 0x8d, + 0xe4, 0x5f, 0x14, 0xd8, 0x1b, 0x5b, 0x18, 0x48, 0x66, 0xd2, 0x68, 0x52, 0x64, 0xe1, 0x62, 0x36, + 0xbf, 0x15, 0x14, 0x69, 0xd2, 0x0d, 0x7c, 0x2a, 0x49, 0x8b, 0xe0, 0xdd, 0x7d, 0x9b, 0x4d, 0x3e, + 0xab, 0xc0, 0xb0, 0xbf, 0xe0, 0x30, 0x79, 0xf3, 0x16, 0x59, 0xb6, 0x98, 0xbc, 0x79, 0x8b, 0xae, + 0x67, 0x54, 0x4f, 0x51, 0xb2, 0xa7, 0xc8, 0x0b, 0x89, 0x7b, 0x4c, 0xc3, 0xb1, 0x8a, 0xac, 0x52, + 0xd0, 0xa0, 0xc4, 0xbd, 0xad, 0xe0, 0x0b, 0x29, 0xa1, 0xa2, 0x40, 0x89, 0x95, 0x14, 0x57, 0x8e, + 0x28, 0xb1, 0x92, 0x62, 0x6b, 0x10, 0xe5, 0xb2, 0x6e, 0x18, 0x0b, 0x22, 0x16, 0xca, 0x3d, 0xf2, + 0x55, 0x3f, 0xd2, 0xe8, 0x7d, 0x22, 0xba, 0xc8, 0x50, 0xc2, 0x9c, 0x27, 0x16, 0x38, 0x4a, 0x98, + 0xf3, 0xe4, 0xea, 0x46, 0xb9, 0xd3, 0x8c, 0x75, 0x81, 0xa3, 0xe8, 0x2b, 0x85, 0xa4, 0xfb, 0x92, + 0x88, 0xc7, 0x28, 0x24, 0x6c, 0x78, 0xfc, 0xfb, 0x17, 0x12, 0x36, 0x3c, 0xe1, 0xfd, 0x0b, 0xb9, + 0x7d, 0x89, 0xf7, 0x85, 0x8c, 0xa2, 0xb5, 0x86, 0x0e, 0xd8, 0xf6, 0x78, 0xa7, 0x7f, 0x55, 0x60, + 0x6f, 0xec, 0xbb, 0x17, 0x12, 0xc6, 0xa1, 0xdd, 0xe3, 0x1a, 0x12, 0xc6, 0xa1, 0xed, 0xb3, 0x1b, + 0xea, 0x0c, 0xe5, 0xf5, 0x22, 0x39, 0x9f, 0x18, 0xd4, 0x46, 0x30, 0x5a, 0x14, 0x0f, 0xfe, 0xbc, + 0xa9, 0xc0, 0x68, 0xb0, 0x58, 0x52, 0xe2, 0x6c, 0x34, 0xa6, 0x04, 0x34, 0x7b, 0xbe, 0x03, 0xc8, + 0x34, 0xcc, 0xb4, 0xfe, 0x4f, 0x3a, 0x04, 0xf7, 0xed, 0x41, 0xbe, 0xac, 0xc0, 0x78, 0x44, 0xed, + 0xa1, 0x4c, 0x8e, 0x58, 0x54, 0xad, 0xa4, 0x44, 0xfa, 0x49, 0x64, 0xb5, 0xa4, 0xdc, 0xed, 0xf7, + 0x2a, 0x05, 0xe5, 0x65, 0xb0, 0xe2, 0xb0, 0xfa, 0xd7, 0x33, 0x70, 0xb0, 0x6d, 0x15, 0x1c, 0x59, + 0x48, 0x7d, 0x6b, 0x10, 0x57, 0x5e, 0x99, 0x7d, 0x71, 0x3b, 0x50, 0x21, 0xe3, 0x3f, 0x4a, 0x19, + 0x7f, 0x85, 0xdc, 0x4b, 0x77, 0x19, 0x55, 0x6a, 0x21, 0x4c, 0xbc, 0x8d, 0xf8, 0x9e, 0x02, 0x6a, + 0xfb, 0xca, 0x24, 0xf2, 0xa2, 0xa4, 0x12, 0x4a, 0x54, 0x4b, 0x65, 0x6f, 0x6d, 0x0b, 0xae, 0x34, + 0x21, 0x8b, 0x46, 0x31, 0xb1, 0xcb, 0x99, 0xa2, 0xeb, 0xd9, 0x5b, 0x65, 0x52, 0xe4, 0x2f, 0x15, + 0x18, 0x0d, 0xd6, 0x39, 0xc9, 0xa4, 0x14, 0x47, 0x57, 0x55, 0xc9, 0xa4, 0x14, 0xc7, 0x14, 0x55, + 0xc9, 0x25, 0x89, 0x69, 0xec, 0x8c, 0xcb, 0x76, 0xc1, 0x59, 0x5d, 0x4f, 0xee, 0x11, 0xd6, 0x2a, + 0x3d, 0x26, 0xdf, 0x54, 0x80, 0x84, 0x4b, 0x6f, 0x24, 0x92, 0x1f, 0x62, 0x6b, 0xa6, 0x24, 0x92, + 0x1f, 0xe2, 0x2b, 0xa3, 0xe4, 0x32, 0xad, 0xb0, 0x38, 0xc9, 0x8b, 0x80, 0xb3, 0xd4, 0x78, 0xec, + 0x61, 0xee, 0x6d, 0x05, 0xc6, 0x22, 0xaa, 0x9d, 0x48, 0x27, 0x14, 0xa6, 0x70, 0x8c, 0x09, 0x05, + 0x56, 0x72, 0x27, 0x20, 0x11, 0xfc, 0xd9, 0x2d, 0x06, 0xf3, 0xeb, 0x5f, 0x7d, 0x77, 0x9f, 0xf2, + 0xd6, 0xbb, 0xfb, 0x94, 0x6f, 0xbd, 0xbb, 0x4f, 0xf9, 0xe5, 0xf7, 0xf6, 0xed, 0x78, 0xeb, 0xbd, + 0x7d, 0x3b, 0xfe, 0xf1, 0xbd, 0x7d, 0x3b, 0x5e, 0xbb, 0x5d, 0x31, 0x9c, 0xf5, 0xe6, 0xea, 0x54, + 0xc9, 0xaa, 0xe6, 0x16, 0x38, 0xfe, 0x45, 0x6d, 0xd5, 0x6e, 0x8d, 0x76, 0xac, 0x64, 0x35, 0x74, + 0xef, 0xcf, 0x75, 0xcd, 0xa8, 0xe1, 0x45, 0x83, 0xdd, 0x22, 0xc5, 0xd9, 0xac, 0xeb, 0xf6, 0x6a, + 0x2f, 0xfd, 0x6f, 0xae, 0x4f, 0xfe, 0x5f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x04, 0xe4, 0x86, 0x01, + 0xdc, 0x7b, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -7159,6 +7423,8 @@ const _ = grpc.SupportPackageIsVersion4 // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. type QueryClient interface { + L3DerivativeOrderBook(ctx context.Context, in *QueryFullDerivativeOrderbookRequest, opts ...grpc.CallOption) (*QueryFullDerivativeOrderbookResponse, error) + L3SpotOrderBook(ctx context.Context, in *QueryFullSpotOrderbookRequest, opts ...grpc.CallOption) (*QueryFullSpotOrderbookResponse, error) // Retrieves exchange params QueryExchangeParams(ctx context.Context, in *QueryExchangeParamsRequest, opts ...grpc.CallOption) (*QueryExchangeParamsResponse, error) // Retrieves a Subaccount's Deposits @@ -7293,6 +7559,24 @@ func NewQueryClient(cc grpc1.ClientConn) QueryClient { return &queryClient{cc} } +func (c *queryClient) L3DerivativeOrderBook(ctx context.Context, in *QueryFullDerivativeOrderbookRequest, opts ...grpc.CallOption) (*QueryFullDerivativeOrderbookResponse, error) { + out := new(QueryFullDerivativeOrderbookResponse) + err := c.cc.Invoke(ctx, "/injective.exchange.v1beta1.Query/L3DerivativeOrderBook", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *queryClient) L3SpotOrderBook(ctx context.Context, in *QueryFullSpotOrderbookRequest, opts ...grpc.CallOption) (*QueryFullSpotOrderbookResponse, error) { + out := new(QueryFullSpotOrderbookResponse) + err := c.cc.Invoke(ctx, "/injective.exchange.v1beta1.Query/L3SpotOrderBook", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *queryClient) QueryExchangeParams(ctx context.Context, in *QueryExchangeParamsRequest, opts ...grpc.CallOption) (*QueryExchangeParamsResponse, error) { out := new(QueryExchangeParamsResponse) err := c.cc.Invoke(ctx, "/injective.exchange.v1beta1.Query/QueryExchangeParams", in, out, opts...) @@ -7835,6 +8119,8 @@ func (c *queryClient) GrantAuthorizations(ctx context.Context, in *QueryGrantAut // QueryServer is the server API for Query service. type QueryServer interface { + L3DerivativeOrderBook(context.Context, *QueryFullDerivativeOrderbookRequest) (*QueryFullDerivativeOrderbookResponse, error) + L3SpotOrderBook(context.Context, *QueryFullSpotOrderbookRequest) (*QueryFullSpotOrderbookResponse, error) // Retrieves exchange params QueryExchangeParams(context.Context, *QueryExchangeParamsRequest) (*QueryExchangeParamsResponse, error) // Retrieves a Subaccount's Deposits @@ -7965,6 +8251,12 @@ type QueryServer interface { type UnimplementedQueryServer struct { } +func (*UnimplementedQueryServer) L3DerivativeOrderBook(ctx context.Context, req *QueryFullDerivativeOrderbookRequest) (*QueryFullDerivativeOrderbookResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method L3DerivativeOrderBook not implemented") +} +func (*UnimplementedQueryServer) L3SpotOrderBook(ctx context.Context, req *QueryFullSpotOrderbookRequest) (*QueryFullSpotOrderbookResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method L3SpotOrderBook not implemented") +} func (*UnimplementedQueryServer) QueryExchangeParams(ctx context.Context, req *QueryExchangeParamsRequest) (*QueryExchangeParamsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method QueryExchangeParams not implemented") } @@ -8150,6 +8442,42 @@ func RegisterQueryServer(s grpc1.Server, srv QueryServer) { s.RegisterService(&_Query_serviceDesc, srv) } +func _Query_L3DerivativeOrderBook_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryFullDerivativeOrderbookRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).L3DerivativeOrderBook(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/injective.exchange.v1beta1.Query/L3DerivativeOrderBook", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).L3DerivativeOrderBook(ctx, req.(*QueryFullDerivativeOrderbookRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Query_L3SpotOrderBook_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryFullSpotOrderbookRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).L3SpotOrderBook(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/injective.exchange.v1beta1.Query/L3SpotOrderBook", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).L3SpotOrderBook(ctx, req.(*QueryFullSpotOrderbookRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _Query_QueryExchangeParams_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(QueryExchangeParamsRequest) if err := dec(in); err != nil { @@ -9234,6 +9562,14 @@ var _Query_serviceDesc = grpc.ServiceDesc{ ServiceName: "injective.exchange.v1beta1.Query", HandlerType: (*QueryServer)(nil), Methods: []grpc.MethodDesc{ + { + MethodName: "L3DerivativeOrderBook", + Handler: _Query_L3DerivativeOrderBook_Handler, + }, + { + MethodName: "L3SpotOrderBook", + Handler: _Query_L3SpotOrderBook_Handler, + }, { MethodName: "QueryExchangeParams", Handler: _Query_QueryExchangeParams_Handler, @@ -14394,7 +14730,7 @@ func (m *QueryTraderDerivativeConditionalOrdersResponse) MarshalToSizedBuffer(dA return len(dAtA) - i, nil } -func (m *QueryMarketAtomicExecutionFeeMultiplierRequest) Marshal() (dAtA []byte, err error) { +func (m *QueryFullSpotOrderbookRequest) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -14404,12 +14740,12 @@ func (m *QueryMarketAtomicExecutionFeeMultiplierRequest) Marshal() (dAtA []byte, return dAtA[:n], nil } -func (m *QueryMarketAtomicExecutionFeeMultiplierRequest) MarshalTo(dAtA []byte) (int, error) { +func (m *QueryFullSpotOrderbookRequest) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *QueryMarketAtomicExecutionFeeMultiplierRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *QueryFullSpotOrderbookRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -14424,7 +14760,7 @@ func (m *QueryMarketAtomicExecutionFeeMultiplierRequest) MarshalToSizedBuffer(dA return len(dAtA) - i, nil } -func (m *QueryMarketAtomicExecutionFeeMultiplierResponse) Marshal() (dAtA []byte, err error) { +func (m *QueryFullSpotOrderbookResponse) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -14434,30 +14770,48 @@ func (m *QueryMarketAtomicExecutionFeeMultiplierResponse) Marshal() (dAtA []byte return dAtA[:n], nil } -func (m *QueryMarketAtomicExecutionFeeMultiplierResponse) MarshalTo(dAtA []byte) (int, error) { +func (m *QueryFullSpotOrderbookResponse) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *QueryMarketAtomicExecutionFeeMultiplierResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *QueryFullSpotOrderbookResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l - { - size := m.Multiplier.Size() - i -= size - if _, err := m.Multiplier.MarshalTo(dAtA[i:]); err != nil { - return 0, err + if len(m.Asks) > 0 { + for iNdEx := len(m.Asks) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Asks[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + } + if len(m.Bids) > 0 { + for iNdEx := len(m.Bids) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Bids[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa } - i = encodeVarintQuery(dAtA, i, uint64(size)) } - i-- - dAtA[i] = 0xa return len(dAtA) - i, nil } -func (m *QueryActiveStakeGrantRequest) Marshal() (dAtA []byte, err error) { +func (m *QueryFullDerivativeOrderbookRequest) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -14467,22 +14821,223 @@ func (m *QueryActiveStakeGrantRequest) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *QueryActiveStakeGrantRequest) MarshalTo(dAtA []byte) (int, error) { +func (m *QueryFullDerivativeOrderbookRequest) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *QueryActiveStakeGrantRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *QueryFullDerivativeOrderbookRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l - if len(m.Grantee) > 0 { - i -= len(m.Grantee) - copy(dAtA[i:], m.Grantee) - i = encodeVarintQuery(dAtA, i, uint64(len(m.Grantee))) - i-- - dAtA[i] = 0xa + if len(m.MarketId) > 0 { + i -= len(m.MarketId) + copy(dAtA[i:], m.MarketId) + i = encodeVarintQuery(dAtA, i, uint64(len(m.MarketId))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *QueryFullDerivativeOrderbookResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryFullDerivativeOrderbookResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryFullDerivativeOrderbookResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Asks) > 0 { + for iNdEx := len(m.Asks) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Asks[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + } + if len(m.Bids) > 0 { + for iNdEx := len(m.Bids) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Bids[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func (m *TrimmedLimitOrder) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *TrimmedLimitOrder) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *TrimmedLimitOrder) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.SubaccountId) > 0 { + i -= len(m.SubaccountId) + copy(dAtA[i:], m.SubaccountId) + i = encodeVarintQuery(dAtA, i, uint64(len(m.SubaccountId))) + i-- + dAtA[i] = 0x22 + } + if len(m.OrderHash) > 0 { + i -= len(m.OrderHash) + copy(dAtA[i:], m.OrderHash) + i = encodeVarintQuery(dAtA, i, uint64(len(m.OrderHash))) + i-- + dAtA[i] = 0x1a + } + { + size := m.Quantity.Size() + i -= size + if _, err := m.Quantity.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + { + size := m.Price.Size() + i -= size + if _, err := m.Price.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func (m *QueryMarketAtomicExecutionFeeMultiplierRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryMarketAtomicExecutionFeeMultiplierRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryMarketAtomicExecutionFeeMultiplierRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.MarketId) > 0 { + i -= len(m.MarketId) + copy(dAtA[i:], m.MarketId) + i = encodeVarintQuery(dAtA, i, uint64(len(m.MarketId))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *QueryMarketAtomicExecutionFeeMultiplierResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryMarketAtomicExecutionFeeMultiplierResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryMarketAtomicExecutionFeeMultiplierResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size := m.Multiplier.Size() + i -= size + if _, err := m.Multiplier.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func (m *QueryActiveStakeGrantRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryActiveStakeGrantRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryActiveStakeGrantRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Grantee) > 0 { + i -= len(m.Grantee) + copy(dAtA[i:], m.Grantee) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Grantee))) + i-- + dAtA[i] = 0xa } return len(dAtA) - i, nil } @@ -16683,7 +17238,7 @@ func (m *QueryTraderDerivativeConditionalOrdersResponse) Size() (n int) { return n } -func (m *QueryMarketAtomicExecutionFeeMultiplierRequest) Size() (n int) { +func (m *QueryFullSpotOrderbookRequest) Size() (n int) { if m == nil { return 0 } @@ -16696,95 +17251,184 @@ func (m *QueryMarketAtomicExecutionFeeMultiplierRequest) Size() (n int) { return n } -func (m *QueryMarketAtomicExecutionFeeMultiplierResponse) Size() (n int) { +func (m *QueryFullSpotOrderbookResponse) Size() (n int) { if m == nil { return 0 } var l int _ = l - l = m.Multiplier.Size() - n += 1 + l + sovQuery(uint64(l)) + if len(m.Bids) > 0 { + for _, e := range m.Bids { + l = e.Size() + n += 1 + l + sovQuery(uint64(l)) + } + } + if len(m.Asks) > 0 { + for _, e := range m.Asks { + l = e.Size() + n += 1 + l + sovQuery(uint64(l)) + } + } return n } -func (m *QueryActiveStakeGrantRequest) Size() (n int) { +func (m *QueryFullDerivativeOrderbookRequest) Size() (n int) { if m == nil { return 0 } var l int _ = l - l = len(m.Grantee) + l = len(m.MarketId) if l > 0 { n += 1 + l + sovQuery(uint64(l)) } return n } -func (m *QueryActiveStakeGrantResponse) Size() (n int) { +func (m *QueryFullDerivativeOrderbookResponse) Size() (n int) { if m == nil { return 0 } var l int _ = l - if m.Grant != nil { - l = m.Grant.Size() - n += 1 + l + sovQuery(uint64(l)) + if len(m.Bids) > 0 { + for _, e := range m.Bids { + l = e.Size() + n += 1 + l + sovQuery(uint64(l)) + } } - if m.EffectiveGrant != nil { - l = m.EffectiveGrant.Size() - n += 1 + l + sovQuery(uint64(l)) + if len(m.Asks) > 0 { + for _, e := range m.Asks { + l = e.Size() + n += 1 + l + sovQuery(uint64(l)) + } } return n } -func (m *QueryGrantAuthorizationRequest) Size() (n int) { +func (m *TrimmedLimitOrder) Size() (n int) { if m == nil { return 0 } var l int _ = l - l = len(m.Granter) + l = m.Price.Size() + n += 1 + l + sovQuery(uint64(l)) + l = m.Quantity.Size() + n += 1 + l + sovQuery(uint64(l)) + l = len(m.OrderHash) if l > 0 { n += 1 + l + sovQuery(uint64(l)) } - l = len(m.Grantee) + l = len(m.SubaccountId) if l > 0 { n += 1 + l + sovQuery(uint64(l)) } return n } -func (m *QueryGrantAuthorizationResponse) Size() (n int) { +func (m *QueryMarketAtomicExecutionFeeMultiplierRequest) Size() (n int) { if m == nil { return 0 } var l int _ = l - l = m.Amount.Size() + l = len(m.MarketId) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryMarketAtomicExecutionFeeMultiplierResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.Multiplier.Size() n += 1 + l + sovQuery(uint64(l)) return n } -func (m *QueryGrantAuthorizationsRequest) Size() (n int) { +func (m *QueryActiveStakeGrantRequest) Size() (n int) { if m == nil { return 0 } var l int _ = l - l = len(m.Granter) + l = len(m.Grantee) if l > 0 { n += 1 + l + sovQuery(uint64(l)) } return n } -func (m *QueryGrantAuthorizationsResponse) Size() (n int) { +func (m *QueryActiveStakeGrantResponse) Size() (n int) { if m == nil { return 0 } var l int _ = l - l = m.TotalGrantAmount.Size() + if m.Grant != nil { + l = m.Grant.Size() + n += 1 + l + sovQuery(uint64(l)) + } + if m.EffectiveGrant != nil { + l = m.EffectiveGrant.Size() + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryGrantAuthorizationRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Granter) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + l = len(m.Grantee) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryGrantAuthorizationResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.Amount.Size() + n += 1 + l + sovQuery(uint64(l)) + return n +} + +func (m *QueryGrantAuthorizationsRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Granter) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryGrantAuthorizationsResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.TotalGrantAmount.Size() n += 1 + l + sovQuery(uint64(l)) if len(m.Grants) > 0 { for _, e := range m.Grants { @@ -29814,6 +30458,588 @@ func (m *QueryTraderDerivativeConditionalOrdersResponse) Unmarshal(dAtA []byte) } return nil } +func (m *QueryFullSpotOrderbookRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryFullSpotOrderbookRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryFullSpotOrderbookRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MarketId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.MarketId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryFullSpotOrderbookResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryFullSpotOrderbookResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryFullSpotOrderbookResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Bids", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Bids = append(m.Bids, &TrimmedLimitOrder{}) + if err := m.Bids[len(m.Bids)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Asks", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Asks = append(m.Asks, &TrimmedLimitOrder{}) + if err := m.Asks[len(m.Asks)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryFullDerivativeOrderbookRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryFullDerivativeOrderbookRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryFullDerivativeOrderbookRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MarketId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.MarketId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryFullDerivativeOrderbookResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryFullDerivativeOrderbookResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryFullDerivativeOrderbookResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Bids", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Bids = append(m.Bids, &TrimmedLimitOrder{}) + if err := m.Bids[len(m.Bids)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Asks", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Asks = append(m.Asks, &TrimmedLimitOrder{}) + if err := m.Asks[len(m.Asks)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *TrimmedLimitOrder) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: TrimmedLimitOrder: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: TrimmedLimitOrder: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Price", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Price.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Quantity", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Quantity.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OrderHash", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.OrderHash = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SubaccountId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.SubaccountId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *QueryMarketAtomicExecutionFeeMultiplierRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 diff --git a/chain/exchange/types/reclamation.go b/chain/exchange/types/reclamation.go deleted file mode 100644 index e1d7d3f0..00000000 --- a/chain/exchange/types/reclamation.go +++ /dev/null @@ -1,41 +0,0 @@ -package types - -import ( - "fmt" - - sdksecp256k1 "github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1" - - "github.com/InjectiveLabs/sdk-go/chain/crypto/ethsecp256k1" - - sdk "github.com/cosmos/cosmos-sdk/types" -) - -func ValidateFundsReclaimSignature( - lockedAccountPubKey, signature []byte, -) error { - // validate the signature of the locked account - lockedPubKey := sdksecp256k1.PubKey{ - Key: lockedAccountPubKey, - } - - correctPubKey := ethsecp256k1.PubKey{ - Key: lockedAccountPubKey, - } - - lockedAddress := sdk.AccAddress(lockedPubKey.Address()) - recipient := sdk.AccAddress(correctPubKey.Address()) - - signMessage := ConstructFundsReclaimMessage(recipient, lockedAddress) - - if !lockedPubKey.VerifySignature(signMessage, signature) { - return ErrInvalidSignature - } - return nil -} - -func ConstructFundsReclaimMessage( - recipient, signer sdk.AccAddress, -) []byte { - message := fmt.Sprintf("I authorize %s to reclaim my funds from locked account %s on Injective", recipient.String(), signer.String()) - return []byte(message) -} diff --git a/chain/exchange/types/spot_orders.go b/chain/exchange/types/spot_orders.go index ac5b243e..f7e34d45 100644 --- a/chain/exchange/types/spot_orders.go +++ b/chain/exchange/types/spot_orders.go @@ -24,6 +24,14 @@ func (o *SpotOrder) ToSpotMarketOrder(sender sdk.AccAddress, balanceHold math.Le TriggerPrice: o.TriggerPrice, } } +func (m *SpotLimitOrder) ToStandardized() *TrimmedLimitOrder { + return &TrimmedLimitOrder{ + Price: m.OrderInfo.Price, + Quantity: m.OrderInfo.Quantity, + OrderHash: common.BytesToHash(m.OrderHash).Hex(), + SubaccountId: m.OrderInfo.SubaccountId, + } +} func (o *SpotOrder) GetNewSpotLimitOrder(sender sdk.AccAddress, orderHash common.Hash) *SpotLimitOrder { if o.OrderInfo.FeeRecipient == "" { @@ -143,7 +151,9 @@ func (m *SpotLimitOrder) GetUnfilledFeeAmount(fee math.LegacyDec) math.LegacyDec return m.GetUnfilledNotional().Mul(fee) } -func (m *SpotOrder) GetBalanceHoldAndMarginDenom(market *SpotMarket) (balanceHold math.LegacyDec, denom string) { +func (m *SpotOrder) GetBalanceHoldAndMarginDenom(market *SpotMarket) (math.LegacyDec, string) { + var denom string + var balanceHold math.LegacyDec if m.IsBuy() { denom = market.QuoteDenom if m.OrderType.IsPostOnly() { @@ -165,7 +175,9 @@ func (m *SpotOrder) GetBalanceHoldAndMarginDenom(market *SpotMarket) (balanceHol return balanceHold, denom } -func (m *SpotLimitOrder) GetUnfilledMarginHoldAndMarginDenom(market *SpotMarket, isTransient bool) (balanceHold math.LegacyDec, denom string) { +func (m *SpotLimitOrder) GetUnfilledMarginHoldAndMarginDenom(market *SpotMarket, isTransient bool) (math.LegacyDec, string) { + var denom string + var balanceHold math.LegacyDec if m.IsBuy() { var tradeFeeRate math.LegacyDec diff --git a/chain/exchange/types/tx.pb.go b/chain/exchange/types/tx.pb.go index 4a78fb8f..fb3514dd 100644 --- a/chain/exchange/types/tx.pb.go +++ b/chain/exchange/types/tx.pb.go @@ -638,6 +638,10 @@ type MsgInstantSpotMarketLaunch struct { // min_notional defines the minimum notional (in quote asset) required for // orders in the market MinNotional cosmossdk_io_math.LegacyDec `protobuf:"bytes,7,opt,name=min_notional,json=minNotional,proto3,customtype=cosmossdk.io/math.LegacyDec" json:"min_notional"` + // base token decimals + BaseDecimals uint32 `protobuf:"varint,8,opt,name=base_decimals,json=baseDecimals,proto3" json:"base_decimals,omitempty"` + // quote token decimals + QuoteDecimals uint32 `protobuf:"varint,9,opt,name=quote_decimals,json=quoteDecimals,proto3" json:"quote_decimals,omitempty"` } func (m *MsgInstantSpotMarketLaunch) Reset() { *m = MsgInstantSpotMarketLaunch{} } @@ -3674,254 +3678,256 @@ func init() { } var fileDescriptor_bd45b74cb6d81462 = []byte{ - // 3942 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x3c, 0x4b, 0x6c, 0x1c, 0xc7, - 0x95, 0x6a, 0x0e, 0x39, 0x24, 0x1f, 0x29, 0x89, 0x6a, 0x52, 0xe2, 0x70, 0xf8, 0x93, 0x9a, 0x92, - 0xf5, 0x27, 0xf5, 0xff, 0x8c, 0x56, 0x96, 0xf8, 0x91, 0x6c, 0xae, 0x45, 0x4b, 0x1e, 0xca, 0xbb, - 0xde, 0x85, 0xbd, 0x83, 0x66, 0x4f, 0x71, 0xd8, 0xe6, 0x4c, 0xf7, 0xa8, 0xbb, 0x47, 0x12, 0x8d, - 0x05, 0xd6, 0xeb, 0xc3, 0x42, 0xfb, 0xc1, 0x62, 0x17, 0x58, 0x60, 0x81, 0x05, 0x0c, 0x18, 0x58, - 0x20, 0x06, 0x9c, 0x20, 0x91, 0x83, 0x20, 0xf0, 0x21, 0x3f, 0x04, 0x39, 0x18, 0x3e, 0x29, 0x01, - 0x02, 0x04, 0x39, 0x28, 0x81, 0x7d, 0xb0, 0xe1, 0x53, 0x90, 0x4b, 0x80, 0xe4, 0x12, 0x74, 0x55, - 0x75, 0x4d, 0x7f, 0xaa, 0xba, 0x7b, 0x46, 0xa4, 0x2d, 0x07, 0xbe, 0x48, 0xec, 0xaa, 0xf7, 0x5e, - 0xbd, 0xf7, 0xea, 0x7d, 0xaa, 0x5e, 0x55, 0x0d, 0x4c, 0xe9, 0xc6, 0xeb, 0x48, 0x73, 0xf4, 0xbb, - 0x68, 0x06, 0xdd, 0xd7, 0xd6, 0x54, 0xa3, 0x82, 0x66, 0xee, 0x9e, 0x5c, 0x41, 0x8e, 0x7a, 0x72, - 0xc6, 0xb9, 0x3f, 0x5d, 0xb7, 0x4c, 0xc7, 0x94, 0xf3, 0x0c, 0x68, 0xda, 0x03, 0x9a, 0xa6, 0x40, - 0xf9, 0x09, 0xcd, 0xb4, 0x6b, 0xa6, 0x3d, 0xb3, 0xa2, 0xda, 0x4d, 0x4c, 0xcd, 0xd4, 0x0d, 0x82, - 0x9b, 0x9f, 0xa6, 0xfd, 0x65, 0xdd, 0x76, 0x2c, 0x7d, 0xa5, 0xe1, 0xe8, 0xa6, 0xc1, 0xe0, 0xfc, - 0x8d, 0x14, 0x7e, 0x98, 0xc2, 0xd7, 0xec, 0xca, 0xcc, 0xdd, 0x93, 0xee, 0x7f, 0xb4, 0x63, 0x84, - 0x74, 0x94, 0xf0, 0xd7, 0x0c, 0xf9, 0xa0, 0x5d, 0x43, 0x15, 0xb3, 0x62, 0x92, 0x76, 0xf7, 0x2f, - 0xda, 0x7a, 0x38, 0x46, 0x34, 0x26, 0x06, 0x01, 0x3d, 0xd0, 0x04, 0x35, 0x2d, 0x55, 0xab, 0x36, - 0x01, 0xc9, 0x27, 0x05, 0xdb, 0xa5, 0xd6, 0x74, 0xc3, 0x9c, 0xc1, 0xff, 0x92, 0x26, 0xe5, 0xdd, - 0x0c, 0x0c, 0x2e, 0xd9, 0x95, 0x97, 0xeb, 0x65, 0xd5, 0x41, 0xcb, 0x75, 0xd3, 0x59, 0x52, 0xad, - 0x75, 0xe4, 0xc8, 0x43, 0xd0, 0xa5, 0x96, 0x6b, 0xba, 0x91, 0x93, 0xf6, 0x4a, 0x87, 0x7a, 0x8b, - 0xe4, 0x43, 0x1e, 0x85, 0xde, 0x1a, 0xee, 0x2f, 0xe9, 0xe5, 0x5c, 0x07, 0xee, 0xe9, 0x21, 0x0d, - 0x8b, 0x65, 0x79, 0x1c, 0xc0, 0x40, 0xf7, 0x4a, 0x8e, 0xae, 0xad, 0x23, 0x2b, 0x97, 0xc1, 0xbd, - 0xbd, 0x06, 0xba, 0x77, 0x1b, 0x37, 0xc8, 0x7f, 0x07, 0xc3, 0x6e, 0x77, 0x4d, 0x37, 0x4a, 0x75, - 0x4b, 0xd7, 0x10, 0x06, 0x2c, 0xd9, 0xfa, 0x1b, 0x28, 0xd7, 0xe9, 0xc2, 0xce, 0x4d, 0x7d, 0xf8, - 0x78, 0x72, 0xdb, 0xaf, 0x1f, 0x4f, 0x8e, 0x12, 0xdd, 0xd8, 0xe5, 0xf5, 0x69, 0xdd, 0x9c, 0xa9, - 0xa9, 0xce, 0xda, 0xf4, 0x0d, 0x54, 0x51, 0xb5, 0x8d, 0x05, 0xa4, 0x15, 0x07, 0x0d, 0x74, 0x6f, - 0x49, 0x37, 0x6e, 0xb9, 0x14, 0x5c, 0xc2, 0xcb, 0xfa, 0x1b, 0x48, 0x2e, 0x41, 0xde, 0x23, 0x7d, - 0xa7, 0xa1, 0x1a, 0x8e, 0xee, 0x6c, 0xf8, 0xa8, 0x77, 0xa5, 0xa7, 0xbe, 0x87, 0x50, 0x7f, 0x89, - 0x12, 0x61, 0x03, 0x2c, 0xc1, 0x80, 0x37, 0x80, 0x61, 0xba, 0x93, 0xad, 0x56, 0x73, 0xd9, 0xf4, - 0x64, 0x77, 0x10, 0xb2, 0x2f, 0x52, 0xd4, 0xc2, 0xe9, 0x07, 0xef, 0x4c, 0x6e, 0xfb, 0xec, 0x9d, - 0xc9, 0x6d, 0x6f, 0x7d, 0xfa, 0xf0, 0x08, 0x51, 0xed, 0xbf, 0x7d, 0xfa, 0xf0, 0xc8, 0x18, 0x9b, - 0x66, 0xce, 0x8c, 0x28, 0xe3, 0x30, 0xca, 0x69, 0x2e, 0x22, 0xbb, 0x6e, 0x1a, 0x36, 0x52, 0xfe, - 0xd0, 0x09, 0x23, 0xac, 0x7f, 0x01, 0x59, 0xfa, 0x5d, 0xd5, 0xb5, 0x87, 0xaf, 0xa7, 0x73, 0xcb, - 0xa7, 0x53, 0x7e, 0x15, 0x72, 0x2e, 0x39, 0xdd, 0xd0, 0x1d, 0x5d, 0xad, 0x96, 0x6a, 0xaa, 0x55, - 0xd1, 0x8d, 0x92, 0xa5, 0x3a, 0xba, 0x99, 0xeb, 0x4e, 0x4f, 0x76, 0xb7, 0x81, 0xee, 0x2d, 0x12, - 0x1a, 0x4b, 0x98, 0x44, 0xd1, 0xa5, 0x20, 0x97, 0x61, 0x0c, 0x33, 0xab, 0xea, 0x86, 0x83, 0x0c, - 0xd5, 0xd0, 0x50, 0x70, 0x84, 0x9e, 0xf4, 0x23, 0x8c, 0xb8, 0x8c, 0x37, 0xe9, 0xf8, 0x46, 0x29, - 0x5c, 0xe4, 0x9b, 0xa4, 0x12, 0x35, 0xc9, 0xb0, 0x6d, 0x29, 0x53, 0xb0, 0x4f, 0xd8, 0xc9, 0xcc, - 0xf3, 0x03, 0x09, 0x76, 0x32, 0xa8, 0x5b, 0xaa, 0xa5, 0xd6, 0x6c, 0xf9, 0x1c, 0xf4, 0xaa, 0x0d, - 0x67, 0xcd, 0xb4, 0x74, 0x67, 0x83, 0x18, 0xe6, 0x5c, 0xee, 0x17, 0xdf, 0x3b, 0x3e, 0x44, 0x63, - 0xe3, 0x6c, 0xb9, 0x6c, 0x21, 0xdb, 0x5e, 0x76, 0x2c, 0xdd, 0xa8, 0x14, 0x9b, 0xa0, 0xf2, 0x55, - 0xc8, 0xd6, 0x31, 0x05, 0x6c, 0xb3, 0x7d, 0xa7, 0x94, 0x69, 0x71, 0x7c, 0x9f, 0x26, 0x63, 0xcd, - 0x75, 0xba, 0xfa, 0x29, 0x52, 0xbc, 0xc2, 0x51, 0x57, 0xca, 0x26, 0x45, 0x57, 0xd2, 0x5c, 0x54, - 0x52, 0x82, 0xaa, 0x8c, 0xc0, 0x70, 0xa8, 0x89, 0x49, 0xf5, 0x1d, 0x09, 0x60, 0xc9, 0xae, 0x2c, - 0xa0, 0xba, 0x69, 0xeb, 0x8e, 0xbc, 0x07, 0xb2, 0x36, 0x32, 0xca, 0xc8, 0xa2, 0x6e, 0x46, 0xbf, - 0xe4, 0x29, 0xd8, 0x6e, 0x37, 0x56, 0x54, 0x4d, 0x33, 0x1b, 0x86, 0xcf, 0xd7, 0xfa, 0x9b, 0x8d, - 0x8b, 0x65, 0xf9, 0x3c, 0x64, 0xd5, 0x9a, 0xfb, 0x37, 0xf6, 0xb5, 0xbe, 0x53, 0x23, 0x34, 0xf3, - 0x4c, 0xbb, 0x99, 0x89, 0x89, 0x33, 0x6f, 0xea, 0x86, 0x27, 0x0c, 0x01, 0x2f, 0x1c, 0xf5, 0x4f, - 0x1d, 0x1d, 0xd2, 0x95, 0x68, 0xd0, 0x2f, 0x11, 0x65, 0x51, 0x19, 0x02, 0xb9, 0xf9, 0xc5, 0xe4, - 0x78, 0x5f, 0x82, 0xbe, 0x25, 0xbb, 0xf2, 0xb7, 0xba, 0xb3, 0x56, 0xb6, 0xd4, 0x7b, 0x5f, 0x92, - 0x20, 0xc7, 0x04, 0x82, 0x0c, 0xf9, 0x05, 0xf1, 0x78, 0x54, 0x76, 0xe3, 0xc4, 0xe5, 0x7d, 0x32, - 0x51, 0xbe, 0x2d, 0xe1, 0xe9, 0x9a, 0xb7, 0x10, 0x8d, 0x93, 0x37, 0xf4, 0x9a, 0xee, 0xdc, 0xb4, - 0x5c, 0xf6, 0x45, 0x62, 0xcd, 0x42, 0x97, 0xe9, 0x02, 0x50, 0x7b, 0x3a, 0x10, 0x67, 0x4f, 0x2e, - 0x49, 0x4c, 0x8d, 0x32, 0x4f, 0x30, 0x0b, 0x17, 0x04, 0xbc, 0xef, 0xf5, 0xf3, 0xce, 0x63, 0x4a, - 0x79, 0x15, 0x26, 0x05, 0x5d, 0x9e, 0x4c, 0x6e, 0x28, 0xc6, 0xa3, 0x94, 0xd6, 0x54, 0x7b, 0x8d, - 0xf2, 0xde, 0x8b, 0x5b, 0x9e, 0x57, 0xed, 0x35, 0x79, 0x00, 0x32, 0x1a, 0x9b, 0x0b, 0xf7, 0xcf, - 0x42, 0x8f, 0xc7, 0x8d, 0xf2, 0x03, 0x09, 0xc6, 0x97, 0xec, 0xca, 0x9c, 0xea, 0x68, 0x6b, 0xbc, - 0x31, 0x6c, 0xa1, 0x52, 0xe6, 0x21, 0x8b, 0x87, 0x70, 0xbd, 0x2c, 0xd3, 0xaa, 0x56, 0x28, 0x6a, - 0xe1, 0x59, 0x81, 0x5a, 0x9e, 0xf1, 0xab, 0x45, 0xcc, 0x9c, 0xf2, 0x5d, 0x09, 0x0e, 0xc4, 0x42, - 0x30, 0x1d, 0xed, 0x83, 0xfe, 0xa6, 0x8e, 0x90, 0x9d, 0x93, 0xf6, 0x66, 0x0e, 0xf5, 0x16, 0xfb, - 0x98, 0x96, 0x90, 0x2d, 0x4f, 0xc3, 0xa0, 0x86, 0x69, 0x94, 0x4b, 0x84, 0xbd, 0x92, 0xa6, 0x97, - 0x89, 0x78, 0xbd, 0xc5, 0x5d, 0xb4, 0x8b, 0x90, 0x9d, 0xd7, 0xcb, 0xb6, 0x7c, 0x0c, 0xe4, 0x55, - 0x55, 0xaf, 0x86, 0xc0, 0x33, 0x18, 0x7c, 0x80, 0xf4, 0x34, 0xa1, 0x7d, 0x3a, 0xff, 0x71, 0x06, - 0xf2, 0x4b, 0x76, 0x65, 0xd1, 0xb0, 0x1d, 0xd5, 0x70, 0x9a, 0xb9, 0xfa, 0x86, 0xda, 0x30, 0xb4, - 0x35, 0xa1, 0xc2, 0xf7, 0x40, 0x96, 0x26, 0x5b, 0x32, 0x93, 0xf4, 0xcb, 0x9d, 0x7d, 0xd7, 0x73, - 0x4a, 0x65, 0x64, 0x98, 0x35, 0x2f, 0x11, 0xbb, 0x2d, 0x0b, 0x6e, 0x83, 0x3c, 0x09, 0x7d, 0x77, - 0x1a, 0xa6, 0xe3, 0xf5, 0xe3, 0xe4, 0x5b, 0x04, 0xdc, 0x44, 0x00, 0x8a, 0x30, 0xc8, 0xcb, 0xd2, - 0x2d, 0xe4, 0xd1, 0x81, 0x5a, 0x38, 0x45, 0xbf, 0x02, 0x7b, 0x04, 0xe9, 0xb9, 0x85, 0x3c, 0xea, - 0xb2, 0x15, 0xc9, 0xcd, 0xd7, 0xa1, 0x3f, 0x90, 0x97, 0x5b, 0x48, 0xa0, 0x7d, 0x35, 0xdf, 0x1a, - 0xeb, 0x92, 0xc0, 0xf2, 0xa6, 0xfc, 0x96, 0x27, 0x98, 0x22, 0x65, 0x3f, 0x28, 0xe2, 0xde, 0x66, - 0xd4, 0xec, 0xc6, 0xae, 0x4b, 0xc1, 0x6e, 0x21, 0xab, 0x8e, 0x9c, 0x06, 0x4e, 0xde, 0xed, 0x4f, - 0x76, 0x68, 0x36, 0x33, 0x91, 0xd9, 0x9c, 0x84, 0x3e, 0xb2, 0xa6, 0x2f, 0xb9, 0x26, 0xe0, 0x4d, - 0x37, 0x69, 0x9a, 0x53, 0x3d, 0x47, 0xc0, 0x00, 0x18, 0x8b, 0xcc, 0x73, 0x91, 0x22, 0xbd, 0xe4, - 0x36, 0xb9, 0x8e, 0x40, 0x41, 0x6c, 0x4d, 0xad, 0xa2, 0xd2, 0xaa, 0xaa, 0x39, 0xa6, 0x85, 0xa7, - 0x6e, 0x7b, 0x71, 0x17, 0xe9, 0x5a, 0x76, 0x7b, 0xae, 0xe3, 0x0e, 0xf9, 0x1a, 0x1b, 0xd3, 0xd9, - 0xa8, 0x23, 0x3c, 0x25, 0x3b, 0x4e, 0xed, 0xf7, 0xc5, 0x03, 0xba, 0xcb, 0xf0, 0xa2, 0xc1, 0x4d, - 0xfc, 0x79, 0x7b, 0xa3, 0x8e, 0x3c, 0xce, 0xdc, 0xbf, 0xe5, 0x45, 0xd8, 0x51, 0x53, 0xd7, 0x91, - 0x55, 0x5a, 0x45, 0xc8, 0x5d, 0xbc, 0xa0, 0x56, 0xd6, 0x2e, 0xfd, 0x18, 0xf5, 0x3a, 0x42, 0x45, - 0xd5, 0xc1, 0xa4, 0x9c, 0x20, 0xa9, 0xde, 0x16, 0x48, 0x39, 0x7e, 0x52, 0x2f, 0xc3, 0x10, 0x77, - 0xe5, 0x06, 0xe9, 0x09, 0xca, 0x7a, 0x74, 0xd9, 0xf6, 0x1a, 0xe4, 0x84, 0x4b, 0xb6, 0xbe, 0x16, - 0x96, 0xb0, 0x35, 0xee, 0x7a, 0x4d, 0xe4, 0xd4, 0xfd, 0x5b, 0xe3, 0xd4, 0xdb, 0x37, 0xd9, 0xa9, - 0x77, 0xb4, 0xe9, 0xd4, 0x57, 0x05, 0x4e, 0x7d, 0x88, 0xe3, 0xd4, 0x5c, 0x7f, 0x54, 0x0e, 0xc3, - 0xc1, 0x04, 0x10, 0xe6, 0xde, 0xff, 0xda, 0x0d, 0x53, 0x4d, 0xd8, 0x39, 0xdd, 0x50, 0xad, 0x8d, - 0x9b, 0x75, 0x97, 0x13, 0xfb, 0x89, 0x5c, 0x7c, 0x0a, 0xb6, 0x7b, 0xde, 0xb7, 0x51, 0x5b, 0x31, - 0xab, 0xd4, 0xc9, 0xa9, 0xd7, 0x2e, 0xe3, 0x36, 0xf9, 0x20, 0xec, 0xa4, 0x40, 0x75, 0xcb, 0xbc, - 0xab, 0xbb, 0xd4, 0x89, 0xab, 0xef, 0x20, 0xcd, 0xb7, 0x68, 0x6b, 0xd8, 0x37, 0xbb, 0xda, 0xf4, - 0xcd, 0x56, 0x43, 0x42, 0xd4, 0x97, 0xbb, 0x37, 0xcf, 0x97, 0x7b, 0xda, 0xf5, 0xe5, 0x93, 0x30, - 0x84, 0xee, 0xd7, 0x75, 0xec, 0x65, 0x46, 0xc9, 0xd1, 0x6b, 0xc8, 0x76, 0xd4, 0x5a, 0x1d, 0x07, - 0x87, 0x4c, 0x71, 0xb0, 0xd9, 0x77, 0xdb, 0xeb, 0x72, 0x51, 0x6c, 0xe4, 0x38, 0x55, 0x54, 0x43, - 0x86, 0xe3, 0x43, 0x01, 0x82, 0xd2, 0xec, 0x6b, 0xa2, 0xb0, 0xcd, 0x74, 0x9f, 0x7f, 0x33, 0x1d, - 0x8a, 0xdc, 0xfd, 0x69, 0xf3, 0xf0, 0xf6, 0xad, 0x71, 0xd9, 0x1d, 0x9b, 0xec, 0xb2, 0x3b, 0xdb, - 0x74, 0xd9, 0x05, 0x81, 0xcb, 0x1e, 0xe3, 0xb8, 0xac, 0xd0, 0xc7, 0x94, 0xe3, 0x70, 0x34, 0x05, - 0x18, 0x73, 0xdd, 0x9f, 0x07, 0x5c, 0xf7, 0x9a, 0x3b, 0xed, 0x1b, 0xd7, 0x1b, 0x4e, 0xc3, 0x42, - 0xf6, 0xd3, 0x9f, 0x9d, 0x43, 0x1e, 0x9d, 0xdd, 0x5c, 0x8f, 0xee, 0x16, 0x79, 0xf4, 0x1e, 0xc8, - 0x62, 0xff, 0xd8, 0xc0, 0xee, 0x97, 0x29, 0xd2, 0x2f, 0x8e, 0xa7, 0xf7, 0x6e, 0x9e, 0xa7, 0xc3, - 0x66, 0x67, 0xed, 0xbe, 0xad, 0xcb, 0xda, 0xfd, 0x5b, 0x96, 0xb5, 0xbf, 0x0e, 0x01, 0xc9, 0xbe, - 0x1a, 0x0c, 0x01, 0x42, 0x30, 0x16, 0x02, 0x1e, 0x4a, 0x90, 0x0b, 0xec, 0xab, 0x09, 0xd4, 0x96, - 0x17, 0x02, 0x2e, 0x0a, 0x84, 0xdd, 0xc7, 0x2f, 0x04, 0xf8, 0xb8, 0x52, 0xde, 0x97, 0x60, 0xaf, - 0xa8, 0x33, 0x6d, 0x2d, 0xa0, 0x08, 0xdd, 0x16, 0xb2, 0x1b, 0x55, 0xc7, 0x2b, 0x8e, 0x9d, 0x4a, - 0x92, 0x21, 0x38, 0x88, 0x8b, 0x89, 0x05, 0x92, 0x8a, 0x1e, 0x21, 0xaf, 0xbe, 0x90, 0xe1, 0xd5, - 0x17, 0x7e, 0x29, 0xc1, 0x1e, 0x3e, 0x15, 0xf9, 0x0a, 0xf4, 0x78, 0x46, 0x49, 0xab, 0x7b, 0xa9, - 0x4c, 0x87, 0x21, 0xc9, 0x17, 0xa1, 0x0b, 0x7b, 0x0a, 0x09, 0xc2, 0xe9, 0xb0, 0x09, 0x86, 0x7c, - 0x16, 0x32, 0xab, 0x08, 0x11, 0x96, 0xd3, 0x21, 0xba, 0xf0, 0xd1, 0xba, 0x09, 0x99, 0x8b, 0x66, - 0x55, 0x33, 0x45, 0x31, 0xe9, 0xb9, 0xa0, 0x0d, 0x1d, 0x8d, 0xd3, 0x7f, 0x93, 0x30, 0xc7, 0x92, - 0x0a, 0x0f, 0x12, 0xea, 0x26, 0x62, 0xe6, 0x94, 0x15, 0x5c, 0x36, 0x11, 0x03, 0x6c, 0x46, 0x69, - 0xe9, 0xa7, 0x7e, 0x73, 0x0d, 0xe4, 0xe4, 0x2f, 0x52, 0x4b, 0x97, 0x39, 0x5a, 0x3a, 0x1c, 0xd5, - 0x92, 0x80, 0x3f, 0x05, 0xc1, 0xa1, 0x24, 0x98, 0xcd, 0xd0, 0xd5, 0x47, 0x12, 0x5e, 0x90, 0xf8, - 0xea, 0x58, 0xbc, 0x59, 0x11, 0x17, 0xe3, 0x16, 0x43, 0xc5, 0xb8, 0x36, 0xf4, 0xe5, 0x95, 0xe4, - 0xae, 0x3e, 0x48, 0x88, 0xc4, 0x49, 0x4c, 0x2a, 0x1f, 0x48, 0x38, 0x14, 0x27, 0xc1, 0x3d, 0x8d, - 0xa5, 0xb9, 0x47, 0x12, 0xae, 0x7f, 0xcf, 0xbb, 0x89, 0xb9, 0xca, 0x22, 0xb8, 0x50, 0xed, 0xb1, - 0x07, 0x64, 0x91, 0x62, 0x78, 0x86, 0x53, 0x0c, 0x0f, 0xda, 0x4c, 0xa7, 0xc0, 0x66, 0xba, 0x9a, - 0x36, 0x33, 0xc3, 0x99, 0x9e, 0xd1, 0x80, 0x3d, 0x07, 0x79, 0x57, 0xc6, 0x70, 0xb1, 0x31, 0xd4, - 0xca, 0xd2, 0xe0, 0x7b, 0x24, 0x0d, 0x92, 0xb9, 0x0a, 0xc2, 0x88, 0xad, 0xed, 0x0a, 0x74, 0x96, - 0x55, 0x47, 0x4d, 0x53, 0xf8, 0xc5, 0x94, 0x16, 0x54, 0x47, 0xa5, 0x56, 0x86, 0x11, 0x0b, 0x67, - 0x1f, 0x24, 0x24, 0x40, 0x2e, 0x3f, 0xca, 0x75, 0x1c, 0x50, 0xb8, 0x7d, 0xcc, 0x98, 0x72, 0xd0, - 0x6d, 0x37, 0x34, 0x0d, 0xd9, 0xc4, 0x8e, 0x7a, 0x8a, 0xde, 0x67, 0x30, 0x78, 0xef, 0x0b, 0x12, - 0x0a, 0xb8, 0xf6, 0x56, 0x4b, 0xff, 0x2c, 0x47, 0xfa, 0x23, 0x02, 0xe9, 0x39, 0x8c, 0x29, 0x37, - 0xe1, 0x70, 0x22, 0x50, 0x4b, 0xfa, 0xf8, 0x7d, 0x37, 0x0c, 0x79, 0x14, 0xc9, 0x39, 0x56, 0x82, - 0x0a, 0x52, 0x9d, 0xf3, 0x5c, 0x81, 0x71, 0xbb, 0x6e, 0x3a, 0x25, 0xe6, 0x21, 0x76, 0xc9, 0x31, - 0x4b, 0x1a, 0xe6, 0xb8, 0xa4, 0x56, 0xab, 0xd4, 0x1d, 0x73, 0x36, 0x5b, 0x1e, 0x2c, 0x96, 0xed, - 0xdb, 0x26, 0x11, 0x69, 0xb6, 0x5a, 0x95, 0x5f, 0x80, 0xa9, 0x32, 0x0b, 0x1c, 0x62, 0x32, 0x9d, - 0x98, 0xcc, 0x44, 0x39, 0x74, 0xb4, 0x18, 0x22, 0xf6, 0x0f, 0xb0, 0x1b, 0x73, 0x43, 0xe3, 0x01, - 0x23, 0x91, 0xeb, 0x6a, 0x75, 0x1a, 0xa5, 0xa2, 0x6c, 0x33, 0xbb, 0xf3, 0x86, 0x90, 0x5f, 0x87, - 0x51, 0x1f, 0xb3, 0x91, 0x51, 0xb2, 0xad, 0x8f, 0x92, 0x2b, 0x07, 0xe3, 0x74, 0x73, 0x2c, 0x8e, - 0x2c, 0x38, 0x02, 0xe6, 0xba, 0x5b, 0x3d, 0x89, 0x09, 0xcb, 0x82, 0xc9, 0xc8, 0x75, 0x91, 0x2c, - 0x64, 0x94, 0x9e, 0xf6, 0x52, 0x0c, 0x5f, 0x22, 0x32, 0xe2, 0x1d, 0x98, 0x5c, 0xc1, 0x46, 0x5c, - 0x32, 0x89, 0x15, 0x47, 0x35, 0xd8, 0xdb, 0xba, 0x06, 0x47, 0x57, 0xa2, 0x8e, 0xc1, 0x94, 0x58, - 0x84, 0x83, 0xa1, 0x21, 0x85, 0x16, 0x06, 0xd8, 0xc2, 0xf6, 0xad, 0x44, 0xeb, 0x0a, 0x21, 0x23, - 0xbb, 0x17, 0x27, 0x06, 0x51, 0x5e, 0x5f, 0xbb, 0xca, 0x13, 0x08, 0x83, 0xa9, 0x16, 0x4e, 0x72, - 0x42, 0xca, 0x78, 0x24, 0xa4, 0xf8, 0x7d, 0x5b, 0x79, 0x90, 0x85, 0x31, 0x5e, 0x07, 0x8b, 0x1c, - 0xd3, 0x30, 0x88, 0xad, 0x8c, 0x2a, 0x22, 0x18, 0x45, 0x76, 0xb9, 0x5d, 0x34, 0x08, 0x93, 0x0e, - 0xb9, 0x00, 0x23, 0x3e, 0xab, 0x09, 0x61, 0x75, 0x60, 0xac, 0xe1, 0x26, 0x40, 0x10, 0xf7, 0x08, - 0xec, 0x6a, 0x5a, 0xb4, 0xb7, 0x0e, 0x20, 0xf1, 0x61, 0x27, 0x33, 0x50, 0xba, 0x16, 0x38, 0x07, - 0xc3, 0x61, 0xeb, 0xf4, 0x30, 0x48, 0x28, 0xd8, 0x1d, 0x32, 0x33, 0x8a, 0x37, 0x0b, 0xe3, 0xa1, - 0xc9, 0x09, 0xf1, 0xd8, 0x85, 0x79, 0xcc, 0x07, 0xf4, 0x1c, 0x64, 0xf3, 0x32, 0x8c, 0xf2, 0xe6, - 0xd7, 0x1b, 0x3e, 0x4b, 0x02, 0x5a, 0x74, 0xa2, 0x28, 0x07, 0xe7, 0x21, 0xe7, 0xad, 0x62, 0xfc, - 0xfe, 0x8b, 0xd7, 0x26, 0xdd, 0x84, 0x75, 0xda, 0xdf, 0x4c, 0x6c, 0x78, 0x39, 0x73, 0x16, 0x86, - 0xe9, 0x72, 0x26, 0x82, 0xd7, 0x83, 0xf1, 0x86, 0x48, 0x77, 0x08, 0x6d, 0x1e, 0x26, 0xbc, 0xf1, - 0xa2, 0xfe, 0x8c, 0xb1, 0x7b, 0x31, 0xf6, 0x28, 0x85, 0x0a, 0x19, 0x1e, 0x21, 0x32, 0x0b, 0xe3, - 0x74, 0x6c, 0x01, 0x0d, 0xe2, 0x1d, 0x79, 0x02, 0xc4, 0x25, 0xf1, 0xd7, 0xa0, 0x78, 0x7c, 0xf0, - 0xdd, 0x03, 0xd3, 0xe9, 0x23, 0x71, 0x9c, 0x42, 0x72, 0x72, 0x1a, 0xa6, 0xf5, 0x3c, 0xec, 0xa3, - 0xec, 0xc4, 0x90, 0xea, 0xc7, 0xa4, 0x28, 0xdf, 0x02, 0x4a, 0xbe, 0xfc, 0xf7, 0x23, 0x09, 0x26, - 0x38, 0xdb, 0xa1, 0x34, 0x15, 0x81, 0x4d, 0xdb, 0xa7, 0x5c, 0xe2, 0x78, 0xf0, 0xc1, 0xb8, 0xdd, - 0x9c, 0xbf, 0x32, 0xf0, 0x43, 0x09, 0x9e, 0x89, 0x07, 0x49, 0xbb, 0x49, 0x79, 0x25, 0x5c, 0x1f, - 0xb8, 0x90, 0x4e, 0xa2, 0x27, 0xab, 0x12, 0xfc, 0xae, 0x03, 0xc6, 0xe2, 0x68, 0x7d, 0x05, 0x6b, - 0x05, 0xf2, 0xdf, 0xc0, 0x0e, 0x7c, 0x89, 0x46, 0x37, 0x8d, 0x52, 0x19, 0x55, 0x1d, 0x15, 0xaf, - 0xee, 0xfb, 0x4e, 0x1d, 0x8e, 0xbd, 0x8d, 0x44, 0x31, 0x16, 0x5c, 0x04, 0x6a, 0x20, 0xdb, 0xeb, - 0xfe, 0x46, 0xf9, 0x12, 0x64, 0xeb, 0xea, 0x86, 0xd9, 0x70, 0x5a, 0x39, 0xa1, 0xa7, 0x28, 0x3e, - 0x95, 0xff, 0x8c, 0xac, 0x81, 0x39, 0x3b, 0xdb, 0x2f, 0xd4, 0xec, 0x13, 0xd7, 0xc2, 0xf1, 0x0c, - 0x2a, 0x3f, 0x91, 0xf0, 0x62, 0x38, 0x1e, 0xea, 0xe9, 0x36, 0xfe, 0x3f, 0xd1, 0x4a, 0x24, 0xce, - 0x34, 0x21, 0x65, 0x7d, 0x79, 0x3b, 0x4f, 0xd6, 0x5d, 0x53, 0xed, 0x75, 0x6c, 0x6a, 0x5d, 0xb4, - 0x7b, 0x49, 0xb5, 0xd7, 0x3d, 0x81, 0xb2, 0x4d, 0x81, 0x12, 0xf7, 0x74, 0x5c, 0x01, 0x15, 0x85, - 0x14, 0x89, 0x78, 0x7d, 0x6c, 0x93, 0xfa, 0xcf, 0x1d, 0xf8, 0x6e, 0xab, 0x68, 0xb3, 0xf3, 0x15, - 0x52, 0xd2, 0x05, 0x8e, 0x92, 0xf6, 0x47, 0x95, 0x14, 0x95, 0x51, 0x39, 0x80, 0x0b, 0x44, 0xa2, - 0x6e, 0xa6, 0xaa, 0xb7, 0x25, 0xe8, 0x65, 0xcb, 0xe0, 0xa0, 0x02, 0xa4, 0x24, 0x05, 0x74, 0x24, - 0x2a, 0x20, 0x13, 0xaf, 0x80, 0x4e, 0x81, 0x02, 0x9a, 0xe5, 0x0b, 0xe5, 0xfb, 0x24, 0xd5, 0xfa, - 0x36, 0xaf, 0xe1, 0x15, 0xc3, 0xd6, 0xed, 0xbb, 0x13, 0x53, 0x6c, 0x0c, 0x57, 0xca, 0x0d, 0x9c, - 0x61, 0x63, 0x20, 0x5a, 0xda, 0x71, 0xff, 0x4b, 0x07, 0xec, 0x5e, 0xb2, 0x2b, 0xcb, 0x4c, 0xd5, - 0xb7, 0x2d, 0xd5, 0xb0, 0x57, 0x63, 0x6c, 0xf9, 0x04, 0x0c, 0xd9, 0x66, 0xc3, 0xd2, 0x50, 0x89, - 0x37, 0x69, 0x32, 0xe9, 0x5b, 0xf6, 0x4f, 0x1d, 0x5e, 0x8f, 0xdb, 0x8e, 0x6e, 0x90, 0xd3, 0x6e, - 0x9e, 0xb1, 0x0f, 0xfb, 0x00, 0x96, 0xf9, 0x77, 0x34, 0x3b, 0x5b, 0xbb, 0xa3, 0x39, 0x1d, 0xd2, - 0xef, 0x84, 0x5f, 0xbf, 0x51, 0x71, 0x95, 0x49, 0x5c, 0x46, 0x8f, 0x76, 0x30, 0x83, 0x7e, 0xab, - 0x03, 0xdf, 0xe3, 0xbc, 0x76, 0xdf, 0x41, 0x96, 0xa1, 0x56, 0xff, 0x52, 0xf4, 0x74, 0x2c, 0xa4, - 0xa7, 0xc0, 0xdd, 0xfe, 0xb0, 0xb0, 0xf4, 0x6e, 0x7f, 0xb8, 0x99, 0xe9, 0xe8, 0x33, 0x09, 0xd7, - 0x6f, 0x6e, 0xe8, 0x77, 0x1a, 0x3a, 0xbe, 0x85, 0x4c, 0x17, 0x0c, 0x4f, 0x56, 0xbf, 0x09, 0x04, - 0x8f, 0x4c, 0x28, 0x78, 0xb0, 0x05, 0x40, 0x67, 0x7b, 0x0b, 0x00, 0xc9, 0x5b, 0x00, 0x1c, 0x8f, - 0xdb, 0xb5, 0x46, 0x24, 0x52, 0x26, 0xf0, 0xa6, 0x35, 0xd2, 0xce, 0x54, 0xf1, 0x2e, 0x49, 0xa6, - 0xd7, 0x6a, 0xc8, 0xaa, 0x20, 0x43, 0xdb, 0x58, 0xc6, 0xf7, 0x33, 0xe8, 0x2b, 0x87, 0x2d, 0x53, - 0x47, 0xe1, 0x64, 0x5c, 0xe2, 0xe3, 0x32, 0x43, 0x13, 0x1f, 0xb7, 0xaf, 0x79, 0x7f, 0xbc, 0x03, - 0x3f, 0xda, 0x58, 0x34, 0xdc, 0x4d, 0x91, 0xcd, 0xa4, 0x25, 0x47, 0xc6, 0x4f, 0x89, 0x0b, 0x04, - 0xf4, 0xd2, 0x19, 0x32, 0x93, 0x4b, 0xcc, 0x3f, 0x5a, 0x59, 0xac, 0x52, 0x1f, 0x39, 0x15, 0x52, - 0xaa, 0x12, 0x3c, 0x0f, 0xe6, 0xe9, 0x84, 0x3e, 0x36, 0xe0, 0x77, 0x86, 0xd5, 0xba, 0x80, 0xbe, - 0x56, 0x6b, 0x58, 0xad, 0x7c, 0x9d, 0x50, 0xb5, 0xf2, 0x3b, 0x99, 0x5a, 0x3f, 0x92, 0xb0, 0x73, - 0xde, 0xb2, 0xf4, 0xbb, 0x7a, 0x15, 0x55, 0x50, 0xf9, 0xda, 0x7d, 0xa4, 0x35, 0x1c, 0x34, 0x6f, - 0x1a, 0x8e, 0xa5, 0x6a, 0x62, 0xff, 0x1b, 0x82, 0xae, 0xd5, 0x86, 0x51, 0xb6, 0xa9, 0x2a, 0xc9, - 0x87, 0x7c, 0x18, 0x06, 0x34, 0x8a, 0x59, 0x52, 0xc9, 0x5b, 0x0f, 0xaa, 0xb4, 0x9d, 0x5e, 0x3b, - 0x7d, 0x02, 0x22, 0xcb, 0x74, 0x69, 0x40, 0xf4, 0x44, 0xb2, 0xfd, 0x65, 0xc1, 0x41, 0xfb, 0x01, - 0xbf, 0xb8, 0x42, 0x5e, 0xdd, 0x40, 0xb2, 0x3f, 0x0e, 0x80, 0xa5, 0xfb, 0xd7, 0x01, 0x30, 0xbf, - 0xa5, 0xb2, 0xbe, 0xba, 0x8a, 0x33, 0x7e, 0x6c, 0x1a, 0x38, 0xe1, 0x4e, 0xd5, 0x7b, 0xbf, 0x99, - 0x3c, 0x54, 0xd1, 0x9d, 0xb5, 0xc6, 0xca, 0xb4, 0x66, 0xd6, 0xe8, 0x63, 0x3f, 0xfa, 0xdf, 0x71, - 0xbb, 0xbc, 0x3e, 0xe3, 0x6c, 0xd4, 0x91, 0x8d, 0x11, 0xec, 0x62, 0x2f, 0x26, 0xbf, 0xa0, 0xaf, - 0xae, 0x16, 0x06, 0x39, 0x32, 0x29, 0xaf, 0xc1, 0xc0, 0x92, 0x5d, 0x29, 0xa2, 0x7b, 0xaa, 0x55, - 0xb6, 0x6f, 0xd6, 0x9d, 0x9b, 0x0d, 0xa1, 0xa6, 0x49, 0x9d, 0x90, 0xa3, 0x94, 0x11, 0xbf, 0x52, - 0x02, 0xa4, 0x94, 0x3c, 0x0e, 0xa8, 0x81, 0x36, 0xff, 0xfb, 0x96, 0xdd, 0xb8, 0x53, 0xab, 0xaa, - 0x7a, 0xed, 0x86, 0xa9, 0xad, 0xa3, 0xf2, 0x75, 0x3c, 0x79, 0x62, 0x27, 0x1a, 0xac, 0x62, 0xb0, - 0x59, 0x62, 0xe9, 0xb7, 0x1a, 0x2b, 0x2f, 0xa0, 0x0d, 0x3c, 0xf1, 0xfd, 0x45, 0x5e, 0x97, 0x3c, - 0x06, 0xbd, 0xb6, 0x5e, 0x31, 0x54, 0xa7, 0x61, 0x91, 0x4d, 0x78, 0x7f, 0xb1, 0xd9, 0x10, 0xbf, - 0xde, 0x88, 0xf2, 0x45, 0xd7, 0x1b, 0xd1, 0x0e, 0x26, 0xd2, 0x9b, 0xe4, 0xa9, 0xcb, 0xb2, 0x5e, - 0x31, 0xf0, 0x12, 0x7a, 0x19, 0xb2, 0xee, 0xdf, 0x54, 0x90, 0xfe, 0xb9, 0x4b, 0x9f, 0x3f, 0x9e, - 0xcc, 0xda, 0xb8, 0xe5, 0x8f, 0x8f, 0x27, 0x8f, 0xa7, 0x98, 0xc5, 0x59, 0x4d, 0xa3, 0x76, 0x5a, - 0xa4, 0xa4, 0xe4, 0x31, 0xe8, 0x5c, 0x20, 0x4b, 0x59, 0x97, 0x64, 0xcf, 0xe7, 0x8f, 0x27, 0xb1, - 0xcd, 0x16, 0x71, 0xab, 0x72, 0x1f, 0x3f, 0x1a, 0xc2, 0x1c, 0x98, 0x9a, 0x7c, 0x80, 0xc8, 0x4f, - 0x2e, 0x7b, 0x91, 0xda, 0x07, 0x46, 0x70, 0xbf, 0x8b, 0x3d, 0x6e, 0x17, 0xbe, 0xce, 0x35, 0x0f, - 0x5d, 0x77, 0xd5, 0x6a, 0x03, 0xd1, 0x9d, 0xeb, 0xc1, 0xb8, 0x84, 0xec, 0x93, 0xcf, 0xdb, 0x8d, - 0x63, 0x5c, 0xe5, 0x3f, 0x32, 0xd8, 0xcf, 0x67, 0xcb, 0x35, 0xdd, 0x20, 0x35, 0x61, 0xce, 0x96, - 0xba, 0xbd, 0xed, 0xd6, 0x8b, 0x30, 0xe0, 0xbb, 0x47, 0x49, 0x6a, 0x31, 0xcd, 0x92, 0x8a, 0x94, - 0x14, 0xbc, 0x76, 0x36, 0x91, 0xf1, 0xf5, 0x26, 0xe1, 0x55, 0xce, 0xce, 0xd6, 0xaf, 0x72, 0x76, - 0x89, 0xaf, 0x72, 0x5e, 0x85, 0xac, 0xed, 0xa8, 0x4e, 0xc3, 0xa6, 0xd7, 0xec, 0x0e, 0xc5, 0xaa, - 0x15, 0xcb, 0xba, 0x8c, 0xe1, 0x8b, 0x14, 0xaf, 0x50, 0x88, 0x2b, 0x6e, 0xc4, 0x2b, 0x5a, 0x39, - 0x8a, 0x6b, 0x1b, 0xf1, 0x40, 0xcc, 0x70, 0xbf, 0x49, 0x1e, 0x36, 0xcd, 0x92, 0x47, 0x6b, 0x6f, - 0xa0, 0x65, 0x47, 0x5d, 0x47, 0xcf, 0x59, 0xaa, 0xe1, 0x88, 0xbd, 0xf1, 0x3a, 0x64, 0x2b, 0x18, - 0x82, 0x6e, 0xaa, 0xa6, 0xe3, 0xc4, 0xc3, 0xb4, 0x3c, 0xf2, 0x58, 0xb5, 0x45, 0x8a, 0x5d, 0x38, - 0x11, 0xf7, 0xaa, 0x89, 0xc7, 0x91, 0xb2, 0x0f, 0x3f, 0x8d, 0xe0, 0x75, 0x31, 0x81, 0x36, 0x70, - 0x6c, 0x99, 0x75, 0xb9, 0x51, 0x1d, 0x1f, 0x84, 0x50, 0x9a, 0x1c, 0x74, 0x63, 0x7e, 0xd8, 0xb5, - 0x4c, 0xef, 0x33, 0x3e, 0x4a, 0x44, 0x47, 0xa0, 0x51, 0x22, 0xda, 0xe1, 0xf1, 0x76, 0xea, 0xd1, - 0x41, 0xc8, 0x2c, 0xd9, 0x15, 0x59, 0x85, 0x6e, 0xef, 0x71, 0xdf, 0x33, 0x09, 0x1e, 0x47, 0xe1, - 0xf2, 0xd3, 0xe9, 0xe0, 0x58, 0x7e, 0x29, 0x43, 0x0f, 0x7b, 0x77, 0x97, 0xe4, 0xd5, 0x1e, 0x60, - 0x7e, 0x26, 0x25, 0x20, 0x1b, 0xe5, 0xbf, 0x25, 0x18, 0x16, 0x3d, 0x48, 0x3a, 0x97, 0x40, 0x4c, - 0x80, 0x97, 0x7f, 0xb6, 0x3d, 0x3c, 0xc6, 0xd3, 0x3b, 0x12, 0x8c, 0xc5, 0x3e, 0x9e, 0xb9, 0x94, - 0x6e, 0x00, 0x2e, 0x72, 0x7e, 0xfe, 0x09, 0x90, 0x19, 0x8b, 0xdf, 0x92, 0x60, 0x6f, 0xe2, 0x2d, - 0xe2, 0x2b, 0xe9, 0x46, 0x12, 0x12, 0xc8, 0x3f, 0xf7, 0x84, 0x04, 0x18, 0xbb, 0x0f, 0x24, 0x18, - 0xe2, 0xbe, 0x7c, 0x3c, 0x9d, 0x30, 0x02, 0x0f, 0x29, 0x7f, 0xa9, 0x0d, 0x24, 0xc6, 0xca, 0xff, - 0x49, 0x90, 0x8f, 0x79, 0x75, 0x78, 0x31, 0x81, 0xb6, 0x18, 0x35, 0x3f, 0xdb, 0x36, 0x2a, 0x63, - 0xee, 0xdf, 0x25, 0xd8, 0xcd, 0xbf, 0x19, 0x7a, 0x26, 0xb5, 0xcc, 0x3e, 0xac, 0xfc, 0x5f, 0xb5, - 0x83, 0xc5, 0xb8, 0xd9, 0x80, 0x9d, 0xe1, 0x0b, 0x49, 0x49, 0x41, 0x24, 0x04, 0x9f, 0x3f, 0xd7, - 0x1a, 0x7c, 0x40, 0x11, 0xfc, 0xbb, 0x41, 0x67, 0x52, 0x69, 0x39, 0x84, 0x95, 0xa8, 0x88, 0xf8, - 0xbb, 0x3d, 0xff, 0x04, 0xbb, 0xa2, 0x77, 0x54, 0x4e, 0xa4, 0x21, 0xe9, 0xc7, 0xc8, 0x5f, 0x68, - 0x15, 0x83, 0x31, 0xf0, 0xbf, 0x12, 0x8c, 0x88, 0xb7, 0x37, 0x49, 0x74, 0x85, 0x98, 0xf9, 0xab, - 0xed, 0x62, 0x06, 0xdc, 0x29, 0xe6, 0x32, 0xea, 0xc5, 0x54, 0x06, 0xc8, 0x43, 0x4d, 0x74, 0xa7, - 0x14, 0x97, 0x48, 0xdd, 0x28, 0x99, 0x78, 0xb5, 0xf1, 0x4a, 0x7a, 0xb7, 0xe5, 0x12, 0x48, 0x8c, - 0x92, 0xa9, 0xef, 0x23, 0xbe, 0x2d, 0xc1, 0x68, 0xdc, 0x59, 0x70, 0xa1, 0x45, 0x8d, 0xf8, 0x23, - 0xc1, 0x5c, 0xfb, 0xb8, 0xc1, 0xe8, 0xc4, 0x3d, 0x2d, 0x3a, 0x93, 0xca, 0xcd, 0x43, 0x58, 0xc9, - 0xd1, 0x29, 0xee, 0x70, 0x06, 0x6b, 0x2b, 0xae, 0x9c, 0x5f, 0x48, 0xef, 0xf2, 0x61, 0xdc, 0x44, - 0x6d, 0xa5, 0x29, 0xc7, 0xfb, 0x52, 0xb4, 0xf8, 0x8d, 0x5e, 0xca, 0x14, 0x2d, 0x24, 0x90, 0x36, - 0x45, 0x27, 0x3e, 0x4d, 0x92, 0xff, 0x5f, 0x82, 0xf1, 0xf8, 0x2b, 0xd3, 0xe9, 0x92, 0x89, 0x00, - 0x3b, 0xbf, 0xf0, 0x24, 0xd8, 0x8c, 0xcb, 0x6f, 0x48, 0x30, 0x91, 0x70, 0x74, 0x7c, 0xb9, 0xf5, - 0x81, 0xfc, 0x8e, 0x72, 0xed, 0x89, 0xd0, 0x19, 0xa3, 0xff, 0x23, 0x41, 0x4e, 0x78, 0x6e, 0x78, - 0x3e, 0x95, 0xe1, 0x47, 0x11, 0xf3, 0x57, 0xda, 0x44, 0x0c, 0xe8, 0x2f, 0xe1, 0xfa, 0xe9, 0xe5, - 0xf4, 0xb6, 0xcf, 0x41, 0x4f, 0xd4, 0x5f, 0xca, 0xeb, 0xa3, 0x6f, 0x49, 0x20, 0x73, 0x4e, 0xa9, - 0x4e, 0x26, 0x95, 0x17, 0x22, 0x28, 0xf9, 0x8b, 0x2d, 0xa3, 0x30, 0x26, 0xfe, 0x11, 0x06, 0x22, - 0xe7, 0x3f, 0x49, 0x3b, 0x9c, 0x30, 0x42, 0xfe, 0x7c, 0x8b, 0x08, 0xfe, 0x55, 0x47, 0xf4, 0x64, - 0x25, 0x69, 0xd5, 0x11, 0xc1, 0x48, 0x5c, 0x75, 0x08, 0xcf, 0x34, 0x70, 0xbc, 0xe7, 0x1f, 0x68, - 0x24, 0xc5, 0x7b, 0x2e, 0x56, 0x62, 0xbc, 0x8f, 0x3d, 0x93, 0x90, 0xff, 0x53, 0x82, 0x3d, 0x82, - 0x03, 0x89, 0xb3, 0x89, 0x41, 0x90, 0x87, 0x96, 0xbf, 0xdc, 0x16, 0x5a, 0x80, 0x21, 0x41, 0x29, - 0xff, 0x6c, 0xe2, 0x5e, 0xbb, 0x2d, 0x86, 0xe2, 0xeb, 0xe0, 0xb2, 0x0d, 0xdb, 0x83, 0xd5, 0xd8, - 0x63, 0x09, 0xf4, 0x02, 0xd0, 0xf9, 0x33, 0xad, 0x40, 0x07, 0x22, 0x4a, 0x42, 0xdd, 0x2e, 0x49, - 0xac, 0x78, 0xf4, 0xc4, 0x88, 0x92, 0xae, 0x4e, 0x25, 0xd7, 0xa1, 0x3f, 0xf0, 0x2b, 0x4f, 0x47, - 0x13, 0xc8, 0xfa, 0x81, 0xf3, 0xa7, 0x5b, 0x00, 0xf6, 0x87, 0x8f, 0xc8, 0xef, 0xd7, 0xcd, 0xa4, - 0x22, 0xd4, 0x44, 0x48, 0x0c, 0x1f, 0xa2, 0x1f, 0x5e, 0xc3, 0xe6, 0x29, 0xf8, 0xd5, 0xb5, 0xb3, - 0xa9, 0x68, 0x86, 0xd1, 0x12, 0xcd, 0x33, 0xfe, 0xa7, 0xb6, 0x70, 0x11, 0x80, 0x5b, 0x25, 0x4c, - 0x52, 0x2e, 0x0f, 0x29, 0xb1, 0x08, 0x10, 0x57, 0xe2, 0xc3, 0xd9, 0x85, 0x53, 0xe0, 0x4b, 0xca, - 0x2e, 0x51, 0x94, 0xc4, 0xec, 0x22, 0xae, 0xe5, 0xe5, 0xbb, 0xde, 0xfc, 0xf4, 0xe1, 0x11, 0x69, - 0x6e, 0xed, 0xc3, 0x8f, 0x27, 0xa4, 0x47, 0x1f, 0x4f, 0x48, 0xbf, 0xfd, 0x78, 0x42, 0xfa, 0xaf, - 0x4f, 0x26, 0xb6, 0x3d, 0xfa, 0x64, 0x62, 0xdb, 0xaf, 0x3e, 0x99, 0xd8, 0xf6, 0xf7, 0x2f, 0xfa, - 0x8a, 0xfc, 0x8b, 0xde, 0x28, 0x37, 0xd4, 0x15, 0x7b, 0x86, 0x8d, 0x79, 0x5c, 0x33, 0x2d, 0xe4, - 0xff, 0x5c, 0x53, 0x75, 0x63, 0xa6, 0x66, 0x96, 0x1b, 0x55, 0x64, 0x37, 0x7f, 0x9e, 0x11, 0x1f, - 0x08, 0xac, 0x64, 0xf1, 0x4f, 0x2b, 0x9e, 0xfe, 0x73, 0x00, 0x00, 0x00, 0xff, 0xff, 0x5c, 0x05, - 0xa8, 0x24, 0x9c, 0x52, 0x00, 0x00, + // 3976 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x3c, 0x4b, 0x6c, 0x1c, 0x47, + 0x76, 0x6a, 0x0e, 0x39, 0x24, 0x1f, 0x3f, 0xa2, 0x9a, 0x94, 0x38, 0x1c, 0xfe, 0xa4, 0xa6, 0x64, + 0xfd, 0x49, 0xfd, 0x3f, 0xa3, 0xc8, 0x12, 0x3f, 0x92, 0xcd, 0x58, 0xb4, 0xe4, 0xa1, 0x9c, 0x38, + 0x81, 0x9d, 0x41, 0xb3, 0xa7, 0x38, 0x6c, 0x73, 0xa6, 0x7b, 0xd4, 0xdd, 0x23, 0x89, 0x46, 0x80, + 0x38, 0x3e, 0x04, 0x4a, 0x1c, 0x04, 0x09, 0x10, 0x20, 0x40, 0x00, 0x03, 0x06, 0x02, 0xc4, 0x80, + 0x13, 0x24, 0x72, 0x10, 0x04, 0x3e, 0x24, 0x41, 0x10, 0xe4, 0x60, 0xf8, 0xa4, 0x04, 0x08, 0xb0, + 0xd8, 0x83, 0x76, 0x61, 0x1f, 0x6c, 0xf8, 0xb4, 0xd8, 0xcb, 0x02, 0xbb, 0x97, 0x45, 0x57, 0x55, + 0xd7, 0xf4, 0xa7, 0xaa, 0xbb, 0x67, 0x44, 0xda, 0xf2, 0xc2, 0x17, 0x89, 0x5d, 0xf5, 0xde, 0xab, + 0xf7, 0x5e, 0xbd, 0x4f, 0xd5, 0xab, 0xaa, 0x81, 0x19, 0xdd, 0x78, 0x1b, 0x69, 0x8e, 0x7e, 0x1f, + 0xcd, 0xa1, 0x87, 0xda, 0x86, 0x6a, 0x54, 0xd0, 0xdc, 0xfd, 0xd3, 0x6b, 0xc8, 0x51, 0x4f, 0xcf, + 0x39, 0x0f, 0x67, 0xeb, 0x96, 0xe9, 0x98, 0x72, 0x9e, 0x01, 0xcd, 0x7a, 0x40, 0xb3, 0x14, 0x28, + 0x3f, 0xa5, 0x99, 0x76, 0xcd, 0xb4, 0xe7, 0xd6, 0x54, 0xbb, 0x89, 0xa9, 0x99, 0xba, 0x41, 0x70, + 0xf3, 0xb3, 0xb4, 0xbf, 0xac, 0xdb, 0x8e, 0xa5, 0xaf, 0x35, 0x1c, 0xdd, 0x34, 0x18, 0x9c, 0xbf, + 0x91, 0xc2, 0x8f, 0x52, 0xf8, 0x9a, 0x5d, 0x99, 0xbb, 0x7f, 0xda, 0xfd, 0x8f, 0x76, 0x8c, 0x91, + 0x8e, 0x12, 0xfe, 0x9a, 0x23, 0x1f, 0xb4, 0x6b, 0xa4, 0x62, 0x56, 0x4c, 0xd2, 0xee, 0xfe, 0x45, + 0x5b, 0x8f, 0xc6, 0x88, 0xc6, 0xc4, 0x20, 0xa0, 0x87, 0x9a, 0xa0, 0xa6, 0xa5, 0x6a, 0xd5, 0x26, + 0x20, 0xf9, 0xa4, 0x60, 0x7b, 0xd4, 0x9a, 0x6e, 0x98, 0x73, 0xf8, 0x5f, 0xd2, 0xa4, 0x7c, 0x94, + 0x81, 0xe1, 0x15, 0xbb, 0xf2, 0x7a, 0xbd, 0xac, 0x3a, 0x68, 0xb5, 0x6e, 0x3a, 0x2b, 0xaa, 0xb5, + 0x89, 0x1c, 0x79, 0x04, 0xba, 0xd4, 0x72, 0x4d, 0x37, 0x72, 0xd2, 0x7e, 0xe9, 0x48, 0x6f, 0x91, + 0x7c, 0xc8, 0xe3, 0xd0, 0x5b, 0xc3, 0xfd, 0x25, 0xbd, 0x9c, 0xeb, 0xc0, 0x3d, 0x3d, 0xa4, 0x61, + 0xb9, 0x2c, 0x4f, 0x02, 0x18, 0xe8, 0x41, 0xc9, 0xd1, 0xb5, 0x4d, 0x64, 0xe5, 0x32, 0xb8, 0xb7, + 0xd7, 0x40, 0x0f, 0xee, 0xe2, 0x06, 0xf9, 0xf7, 0x60, 0xd4, 0xed, 0xae, 0xe9, 0x46, 0xa9, 0x6e, + 0xe9, 0x1a, 0xc2, 0x80, 0x25, 0x5b, 0x7f, 0x07, 0xe5, 0x3a, 0x5d, 0xd8, 0x85, 0x99, 0xcf, 0x9e, + 0x4e, 0xef, 0xfa, 0xf1, 0xd3, 0xe9, 0x71, 0xa2, 0x1b, 0xbb, 0xbc, 0x39, 0xab, 0x9b, 0x73, 0x35, + 0xd5, 0xd9, 0x98, 0xbd, 0x85, 0x2a, 0xaa, 0xb6, 0xb5, 0x84, 0xb4, 0xe2, 0xb0, 0x81, 0x1e, 0xac, + 0xe8, 0xc6, 0x1d, 0x97, 0x82, 0x4b, 0x78, 0x55, 0x7f, 0x07, 0xc9, 0x25, 0xc8, 0x7b, 0xa4, 0xef, + 0x35, 0x54, 0xc3, 0xd1, 0x9d, 0x2d, 0x1f, 0xf5, 0xae, 0xf4, 0xd4, 0xf7, 0x11, 0xea, 0xaf, 0x51, + 0x22, 0x6c, 0x80, 0x15, 0x18, 0xf2, 0x06, 0x30, 0x4c, 0x77, 0xb2, 0xd5, 0x6a, 0x2e, 0x9b, 0x9e, + 0xec, 0x20, 0x21, 0xfb, 0x2a, 0x45, 0x2d, 0x9c, 0x7d, 0xf4, 0xe1, 0xf4, 0xae, 0xaf, 0x3f, 0x9c, + 0xde, 0xf5, 0xde, 0x57, 0x8f, 0x8f, 0x11, 0xd5, 0xfe, 0xd9, 0x57, 0x8f, 0x8f, 0x4d, 0xb0, 0x69, + 0xe6, 0xcc, 0x88, 0x32, 0x09, 0xe3, 0x9c, 0xe6, 0x22, 0xb2, 0xeb, 0xa6, 0x61, 0x23, 0xe5, 0x17, + 0x9d, 0x30, 0xc6, 0xfa, 0x97, 0x90, 0xa5, 0xdf, 0x57, 0x5d, 0x7b, 0xf8, 0x61, 0x3a, 0x77, 0x7c, + 0x3a, 0xe5, 0x37, 0x21, 0xe7, 0x92, 0xd3, 0x0d, 0xdd, 0xd1, 0xd5, 0x6a, 0xa9, 0xa6, 0x5a, 0x15, + 0xdd, 0x28, 0x59, 0xaa, 0xa3, 0x9b, 0xb9, 0xee, 0xf4, 0x64, 0xf7, 0x1a, 0xe8, 0xc1, 0x32, 0xa1, + 0xb1, 0x82, 0x49, 0x14, 0x5d, 0x0a, 0x72, 0x19, 0x26, 0x30, 0xb3, 0xaa, 0x6e, 0x38, 0xc8, 0x50, + 0x0d, 0x0d, 0x05, 0x47, 0xe8, 0x49, 0x3f, 0xc2, 0x98, 0xcb, 0x78, 0x93, 0x8e, 0x6f, 0x94, 0xc2, + 0x65, 0xbe, 0x49, 0x2a, 0x51, 0x93, 0x0c, 0xdb, 0x96, 0x32, 0x03, 0x07, 0x84, 0x9d, 0xcc, 0x3c, + 0x3f, 0x95, 0x60, 0x37, 0x83, 0xba, 0xa3, 0x5a, 0x6a, 0xcd, 0x96, 0x2f, 0x40, 0xaf, 0xda, 0x70, + 0x36, 0x4c, 0x4b, 0x77, 0xb6, 0x88, 0x61, 0x2e, 0xe4, 0xfe, 0xef, 0x5f, 0x4f, 0x8e, 0xd0, 0xd8, + 0x38, 0x5f, 0x2e, 0x5b, 0xc8, 0xb6, 0x57, 0x1d, 0x4b, 0x37, 0x2a, 0xc5, 0x26, 0xa8, 0x7c, 0x1d, + 0xb2, 0x75, 0x4c, 0x01, 0xdb, 0x6c, 0xdf, 0x19, 0x65, 0x56, 0x1c, 0xdf, 0x67, 0xc9, 0x58, 0x0b, + 0x9d, 0xae, 0x7e, 0x8a, 0x14, 0xaf, 0x70, 0xdc, 0x95, 0xb2, 0x49, 0xd1, 0x95, 0x34, 0x17, 0x95, + 0x94, 0xa0, 0x2a, 0x63, 0x30, 0x1a, 0x6a, 0x62, 0x52, 0xfd, 0xb3, 0x04, 0xb0, 0x62, 0x57, 0x96, + 0x50, 0xdd, 0xb4, 0x75, 0x47, 0xde, 0x07, 0x59, 0x1b, 0x19, 0x65, 0x64, 0x51, 0x37, 0xa3, 0x5f, + 0xf2, 0x0c, 0x0c, 0xd8, 0x8d, 0x35, 0x55, 0xd3, 0xcc, 0x86, 0xe1, 0xf3, 0xb5, 0xfe, 0x66, 0xe3, + 0x72, 0x59, 0xbe, 0x08, 0x59, 0xb5, 0xe6, 0xfe, 0x8d, 0x7d, 0xad, 0xef, 0xcc, 0x18, 0xcd, 0x3c, + 0xb3, 0x6e, 0x66, 0x62, 0xe2, 0x2c, 0x9a, 0xba, 0xe1, 0x09, 0x43, 0xc0, 0x0b, 0xc7, 0xfd, 0x53, + 0x47, 0x87, 0x74, 0x25, 0x1a, 0xf6, 0x4b, 0x44, 0x59, 0x54, 0x46, 0x40, 0x6e, 0x7e, 0x31, 0x39, + 0x3e, 0x91, 0xa0, 0x6f, 0xc5, 0xae, 0xfc, 0xae, 0xee, 0x6c, 0x94, 0x2d, 0xf5, 0xc1, 0x77, 0x24, + 0xc8, 0x09, 0x81, 0x20, 0x23, 0x7e, 0x41, 0x3c, 0x1e, 0x95, 0xbd, 0x38, 0x71, 0x79, 0x9f, 0x4c, + 0x94, 0x7f, 0x92, 0xf0, 0x74, 0x2d, 0x5a, 0x88, 0xc6, 0xc9, 0x5b, 0x7a, 0x4d, 0x77, 0x6e, 0x5b, + 0x2e, 0xfb, 0x22, 0xb1, 0xe6, 0xa1, 0xcb, 0x74, 0x01, 0xa8, 0x3d, 0x1d, 0x8a, 0xb3, 0x27, 0x97, + 0x24, 0xa6, 0x46, 0x99, 0x27, 0x98, 0x85, 0x4b, 0x02, 0xde, 0xf7, 0xfb, 0x79, 0xe7, 0x31, 0xa5, + 0xbc, 0x09, 0xd3, 0x82, 0x2e, 0x4f, 0x26, 0x37, 0x14, 0xe3, 0x51, 0x4a, 0x1b, 0xaa, 0xbd, 0x41, + 0x79, 0xef, 0xc5, 0x2d, 0x2f, 0xab, 0xf6, 0x86, 0x3c, 0x04, 0x19, 0x8d, 0xcd, 0x85, 0xfb, 0x67, + 0xa1, 0xc7, 0xe3, 0x46, 0xf9, 0x77, 0x09, 0x26, 0x57, 0xec, 0xca, 0x82, 0xea, 0x68, 0x1b, 0xbc, + 0x31, 0x6c, 0xa1, 0x52, 0x16, 0x21, 0x8b, 0x87, 0x70, 0xbd, 0x2c, 0xd3, 0xaa, 0x56, 0x28, 0x6a, + 0xe1, 0x45, 0x81, 0x5a, 0x5e, 0xf0, 0xab, 0x45, 0xcc, 0x9c, 0xf2, 0x2f, 0x12, 0x1c, 0x8a, 0x85, + 0x60, 0x3a, 0x3a, 0x00, 0xfd, 0x4d, 0x1d, 0x21, 0x3b, 0x27, 0xed, 0xcf, 0x1c, 0xe9, 0x2d, 0xf6, + 0x31, 0x2d, 0x21, 0x5b, 0x9e, 0x85, 0x61, 0x0d, 0xd3, 0x28, 0x97, 0x08, 0x7b, 0x25, 0x4d, 0x2f, + 0x13, 0xf1, 0x7a, 0x8b, 0x7b, 0x68, 0x17, 0x21, 0xbb, 0xa8, 0x97, 0x6d, 0xf9, 0x04, 0xc8, 0xeb, + 0xaa, 0x5e, 0x0d, 0x81, 0x67, 0x30, 0xf8, 0x10, 0xe9, 0x69, 0x42, 0xfb, 0x74, 0xfe, 0x7e, 0x27, + 0xe4, 0x57, 0xec, 0xca, 0xb2, 0x61, 0x3b, 0xaa, 0xe1, 0x34, 0x73, 0xf5, 0x2d, 0xb5, 0x61, 0x68, + 0x1b, 0x42, 0x85, 0xef, 0x83, 0x2c, 0x4d, 0xb6, 0x64, 0x26, 0xe9, 0x97, 0x3b, 0xfb, 0xae, 0xe7, + 0x94, 0xca, 0xc8, 0x30, 0x6b, 0x5e, 0x22, 0x76, 0x5b, 0x96, 0xdc, 0x06, 0x79, 0x1a, 0xfa, 0xee, + 0x35, 0x4c, 0xc7, 0xeb, 0xc7, 0xc9, 0xb7, 0x08, 0xb8, 0x89, 0x00, 0x14, 0x61, 0x98, 0x97, 0xa5, + 0x5b, 0xc8, 0xa3, 0x43, 0xb5, 0x70, 0x8a, 0x7e, 0x03, 0xf6, 0x09, 0xd2, 0x73, 0x0b, 0x79, 0xd4, + 0x65, 0x2b, 0x92, 0x9b, 0x6f, 0x42, 0x7f, 0x20, 0x2f, 0xb7, 0x90, 0x40, 0xfb, 0x6a, 0xbe, 0xa4, + 0x3c, 0x03, 0x03, 0x54, 0x6b, 0x9a, 0x5e, 0x53, 0xab, 0x36, 0xce, 0x93, 0x03, 0xc5, 0x7e, 0xa2, + 0x38, 0xd2, 0x26, 0x1f, 0x82, 0x41, 0x4f, 0x77, 0x14, 0xaa, 0x17, 0x43, 0x0d, 0x50, 0xf5, 0x91, + 0xc6, 0xc2, 0x15, 0x81, 0x15, 0xcf, 0xf8, 0xad, 0x58, 0x30, 0xdd, 0xca, 0x41, 0x50, 0xc4, 0xbd, + 0xcd, 0x08, 0xdc, 0x8d, 0xc3, 0x00, 0x05, 0xbb, 0x83, 0xac, 0x3a, 0x72, 0x1a, 0x78, 0x21, 0xd0, + 0xbe, 0xe1, 0x84, 0x2c, 0x23, 0x13, 0xb1, 0x8c, 0x69, 0xe8, 0x23, 0xfb, 0x83, 0x92, 0xab, 0x15, + 0xcf, 0x74, 0x48, 0xd3, 0x82, 0xea, 0x39, 0x15, 0x06, 0xc0, 0x58, 0xc4, 0x66, 0x8a, 0x14, 0xe9, + 0x35, 0xb7, 0xc9, 0x75, 0x2a, 0x0a, 0x62, 0x6b, 0x6a, 0x15, 0x95, 0xd6, 0x55, 0xcd, 0x31, 0x2d, + 0x6c, 0x06, 0x03, 0xc5, 0x3d, 0xa4, 0x6b, 0xd5, 0xed, 0xb9, 0x89, 0x3b, 0xe4, 0x1b, 0x6c, 0x4c, + 0x67, 0xab, 0x8e, 0xf0, 0xf4, 0x0e, 0x9e, 0x39, 0xe8, 0x8b, 0x2d, 0x74, 0xc7, 0xe2, 0x45, 0x96, + 0xdb, 0xf8, 0xf3, 0xee, 0x56, 0x1d, 0x79, 0x9c, 0xb9, 0x7f, 0xcb, 0xcb, 0x30, 0x58, 0x53, 0x37, + 0x91, 0x55, 0x5a, 0x47, 0xc8, 0x5d, 0x08, 0xa1, 0x56, 0xd6, 0x41, 0xfd, 0x18, 0xf5, 0x26, 0x42, + 0x45, 0xd5, 0xc1, 0xa4, 0x9c, 0x20, 0xa9, 0xde, 0x16, 0x48, 0x39, 0x7e, 0x52, 0xaf, 0xc3, 0x08, + 0x77, 0x15, 0x08, 0xe9, 0x09, 0xca, 0x7a, 0x74, 0x09, 0xf8, 0x16, 0xe4, 0x84, 0xcb, 0xbf, 0xbe, + 0x16, 0x96, 0xc3, 0x35, 0xee, 0xda, 0x4f, 0x14, 0x20, 0xfa, 0x77, 0x26, 0x40, 0x0c, 0x6c, 0x73, + 0x80, 0x18, 0x6c, 0x2f, 0x40, 0x14, 0xae, 0x0b, 0x9c, 0xfa, 0x08, 0xc7, 0xa9, 0xb9, 0xfe, 0xa8, + 0x1c, 0x85, 0xc3, 0x09, 0x20, 0xcc, 0xbd, 0xff, 0xb4, 0x1b, 0x66, 0x9a, 0xb0, 0x0b, 0xba, 0xa1, + 0x5a, 0x5b, 0xb7, 0xeb, 0x2e, 0x27, 0xf6, 0x33, 0xb9, 0xf8, 0x0c, 0x0c, 0x78, 0xde, 0xb7, 0x55, + 0x5b, 0x33, 0xab, 0xd4, 0xc9, 0xa9, 0xd7, 0xae, 0xe2, 0x36, 0xf9, 0x30, 0xec, 0xa6, 0x40, 0x75, + 0xcb, 0xbc, 0xaf, 0xbb, 0xd4, 0x89, 0xab, 0x0f, 0x92, 0xe6, 0x3b, 0xb4, 0x35, 0xec, 0x9b, 0x5d, + 0x6d, 0xfa, 0x66, 0xab, 0x21, 0x21, 0xea, 0xcb, 0xdd, 0xdb, 0xe7, 0xcb, 0x3d, 0xed, 0xfa, 0xf2, + 0x69, 0x18, 0x41, 0x0f, 0xeb, 0x3a, 0xf6, 0x32, 0xa3, 0xe4, 0xe8, 0x35, 0x64, 0x3b, 0x6a, 0xad, + 0x8e, 0x83, 0x43, 0xa6, 0x38, 0xdc, 0xec, 0xbb, 0xeb, 0x75, 0xb9, 0x28, 0x36, 0x72, 0x9c, 0x2a, + 0xaa, 0x21, 0xc3, 0xf1, 0xa1, 0x00, 0x41, 0x69, 0xf6, 0x35, 0x51, 0xd8, 0xc6, 0xbc, 0xcf, 0xbf, + 0x31, 0x0f, 0x45, 0xee, 0xfe, 0xb4, 0x39, 0x7d, 0x60, 0x67, 0x5c, 0x76, 0x70, 0x9b, 0x5d, 0x76, + 0x77, 0x9b, 0x2e, 0xbb, 0x24, 0x70, 0xd9, 0x13, 0x1c, 0x97, 0x15, 0xfa, 0x98, 0x72, 0x12, 0x8e, + 0xa7, 0x00, 0x63, 0xae, 0xfb, 0xbf, 0x01, 0xd7, 0xbd, 0xe1, 0x4e, 0xfb, 0xd6, 0xcd, 0x86, 0xd3, + 0xb0, 0x90, 0xfd, 0xfc, 0x67, 0xe7, 0x90, 0x47, 0x67, 0xb7, 0xd7, 0xa3, 0xbb, 0x45, 0x1e, 0xbd, + 0x0f, 0xb2, 0xd8, 0x3f, 0xb6, 0xb0, 0xfb, 0x65, 0x8a, 0xf4, 0x8b, 0xe3, 0xe9, 0xbd, 0xdb, 0xe7, + 0xe9, 0xb0, 0xdd, 0x59, 0xbb, 0x6f, 0xe7, 0xb2, 0x76, 0xff, 0x8e, 0x65, 0xed, 0x1f, 0x42, 0x40, + 0xb2, 0xaf, 0x06, 0x43, 0x80, 0x10, 0x8c, 0x85, 0x80, 0xc7, 0x12, 0xe4, 0x02, 0x7b, 0x74, 0x02, + 0xb5, 0xe3, 0x45, 0x85, 0xcb, 0x02, 0x61, 0x0f, 0xf0, 0x8b, 0x0a, 0x3e, 0xae, 0x94, 0x4f, 0x24, + 0xd8, 0x2f, 0xea, 0x4c, 0x5b, 0x57, 0x28, 0x42, 0xb7, 0x85, 0xec, 0x46, 0xd5, 0xf1, 0x0a, 0x6d, + 0x67, 0x92, 0x64, 0x08, 0x0e, 0xe2, 0x62, 0x62, 0x81, 0xa4, 0xa2, 0x47, 0xc8, 0xab, 0x55, 0x64, + 0x78, 0xb5, 0x8a, 0xff, 0x97, 0x60, 0x1f, 0x9f, 0x8a, 0x7c, 0x0d, 0x7a, 0x3c, 0xa3, 0xa4, 0x95, + 0xc2, 0x54, 0xa6, 0xc3, 0x90, 0xe4, 0xcb, 0xd0, 0x85, 0x3d, 0x85, 0x04, 0xe1, 0x74, 0xd8, 0x04, + 0x43, 0x3e, 0x0f, 0x99, 0x75, 0x84, 0x08, 0xcb, 0xe9, 0x10, 0x5d, 0xf8, 0x68, 0x0d, 0x86, 0xcc, + 0x45, 0xb3, 0x42, 0x9a, 0xa2, 0x30, 0xf5, 0x52, 0xd0, 0x86, 0x8e, 0xc7, 0xe9, 0xbf, 0x49, 0x98, + 0x63, 0x49, 0x85, 0x47, 0x09, 0x35, 0x18, 0x31, 0x73, 0xca, 0x1a, 0x2e, 0xc1, 0x88, 0x01, 0xb6, + 0xa3, 0x4c, 0xf5, 0xdf, 0x7e, 0x73, 0x0d, 0xe4, 0xe4, 0x6f, 0x53, 0x4b, 0x57, 0x39, 0x5a, 0x3a, + 0x1a, 0xd5, 0x92, 0x80, 0x3f, 0x05, 0xc1, 0x91, 0x24, 0x98, 0xed, 0xd0, 0xd5, 0xe7, 0x12, 0x5e, + 0x90, 0xf8, 0x6a, 0x62, 0xbc, 0x59, 0x11, 0x17, 0xf6, 0x96, 0x43, 0x85, 0xbd, 0x36, 0xf4, 0xe5, + 0x95, 0xf7, 0xae, 0x3f, 0x4a, 0x88, 0xc4, 0x49, 0x4c, 0x2a, 0x9f, 0x4a, 0x38, 0x14, 0x27, 0xc1, + 0x3d, 0x8f, 0x65, 0xbe, 0x27, 0x12, 0xae, 0xa5, 0x2f, 0xba, 0x89, 0xb9, 0xca, 0x22, 0xb8, 0x50, + 0xed, 0xb1, 0x87, 0x6d, 0x91, 0xc2, 0x7a, 0x86, 0x53, 0x58, 0x0f, 0xda, 0x4c, 0xa7, 0xc0, 0x66, + 0xba, 0x9a, 0x36, 0x33, 0xc7, 0x99, 0x9e, 0xf1, 0x80, 0x3d, 0x07, 0x79, 0x57, 0x26, 0x70, 0xe1, + 0x32, 0xd4, 0xca, 0xd2, 0xe0, 0xc7, 0x24, 0x0d, 0x92, 0xb9, 0x0a, 0xc2, 0x88, 0xad, 0xed, 0x1a, + 0x74, 0x96, 0x55, 0x47, 0x4d, 0x53, 0x44, 0xc6, 0x94, 0x96, 0x54, 0x47, 0xa5, 0x56, 0x86, 0x11, + 0x0b, 0xe7, 0x1f, 0x25, 0x24, 0x40, 0x2e, 0x3f, 0xca, 0x4d, 0x1c, 0x50, 0xb8, 0x7d, 0xcc, 0x98, + 0x72, 0xd0, 0x6d, 0x37, 0x34, 0x0d, 0xd9, 0xc4, 0x8e, 0x7a, 0x8a, 0xde, 0x67, 0x30, 0x78, 0x1f, + 0x08, 0x12, 0x0a, 0xb8, 0xf6, 0x4e, 0x4b, 0xff, 0x22, 0x47, 0xfa, 0x63, 0x02, 0xe9, 0x39, 0x8c, + 0x29, 0xb7, 0xe1, 0x68, 0x22, 0x50, 0x4b, 0xfa, 0xf8, 0x79, 0x37, 0x8c, 0x78, 0x14, 0xc9, 0x99, + 0x58, 0x82, 0x0a, 0x52, 0x9d, 0x19, 0x5d, 0x83, 0x49, 0xbb, 0x6e, 0x3a, 0x25, 0xe6, 0x21, 0x76, + 0xc9, 0x31, 0x4b, 0x1a, 0xe6, 0xb8, 0xa4, 0x56, 0xab, 0xd4, 0x1d, 0x73, 0x36, 0x5b, 0x1e, 0x2c, + 0x97, 0xed, 0xbb, 0x26, 0x11, 0x69, 0xbe, 0x5a, 0x95, 0x5f, 0x81, 0x99, 0x32, 0x0b, 0x1c, 0x62, + 0x32, 0x9d, 0x98, 0xcc, 0x54, 0x39, 0x74, 0x4c, 0x19, 0x22, 0xf6, 0x07, 0xb0, 0x17, 0x73, 0x43, + 0xe3, 0x01, 0x23, 0x91, 0xeb, 0x6a, 0x75, 0x1a, 0xa5, 0xa2, 0x6c, 0x33, 0xbb, 0xf3, 0x86, 0x90, + 0xdf, 0x86, 0x71, 0x1f, 0xb3, 0x91, 0x51, 0xb2, 0xad, 0x8f, 0x92, 0x2b, 0x07, 0xe3, 0x74, 0x73, + 0x2c, 0x8e, 0x2c, 0x38, 0x02, 0xe6, 0xba, 0x5b, 0x3d, 0xd5, 0x09, 0xcb, 0x82, 0xc9, 0xc8, 0x75, + 0x91, 0x2c, 0x64, 0x94, 0x9e, 0xf6, 0x52, 0x0c, 0x5f, 0x22, 0x32, 0xe2, 0x3d, 0x98, 0x5e, 0xc3, + 0x46, 0x5c, 0x32, 0x89, 0x15, 0x47, 0x35, 0xd8, 0xdb, 0xba, 0x06, 0xc7, 0xd7, 0xa2, 0x8e, 0xc1, + 0x94, 0x58, 0x84, 0xc3, 0xa1, 0x21, 0x85, 0x16, 0x06, 0xd8, 0xc2, 0x0e, 0xac, 0x45, 0xeb, 0x0a, + 0x21, 0x23, 0x7b, 0x10, 0x27, 0x06, 0x51, 0x5e, 0x5f, 0xbb, 0xca, 0x13, 0x08, 0x83, 0xa9, 0x16, + 0x4e, 0x73, 0x42, 0xca, 0x64, 0x24, 0xa4, 0xf8, 0x7d, 0x5b, 0x79, 0x94, 0x85, 0x09, 0x5e, 0x07, + 0x8b, 0x1c, 0xb3, 0x30, 0x8c, 0xad, 0x8c, 0x2a, 0x22, 0x18, 0x45, 0xf6, 0xb8, 0x5d, 0x34, 0x08, + 0x93, 0x0e, 0xb9, 0x00, 0x63, 0x3e, 0xab, 0x09, 0x61, 0x75, 0x60, 0xac, 0xd1, 0x26, 0x40, 0x10, + 0xf7, 0x18, 0xec, 0x69, 0x5a, 0xb4, 0xb7, 0x0e, 0x20, 0xf1, 0x61, 0x37, 0x33, 0x50, 0xba, 0x16, + 0xb8, 0x00, 0xa3, 0x61, 0xeb, 0xf4, 0x30, 0x48, 0x28, 0xd8, 0x1b, 0x32, 0x33, 0x8a, 0x37, 0x0f, + 0x93, 0xa1, 0xc9, 0x09, 0xf1, 0xd8, 0x85, 0x79, 0xcc, 0x07, 0xf4, 0x1c, 0x64, 0xf3, 0x2a, 0x8c, + 0xf3, 0xe6, 0xd7, 0x1b, 0x3e, 0x4b, 0x02, 0x5a, 0x74, 0xa2, 0x28, 0x07, 0x17, 0x21, 0xe7, 0xad, + 0x62, 0xfc, 0xfe, 0x8b, 0xd7, 0x26, 0xdd, 0x84, 0x75, 0xda, 0xdf, 0x4c, 0x6c, 0x78, 0x39, 0x73, + 0x1e, 0x46, 0xe9, 0x72, 0x26, 0x82, 0xd7, 0x83, 0xf1, 0x46, 0x48, 0x77, 0x08, 0x6d, 0x11, 0xa6, + 0xbc, 0xf1, 0xa2, 0xfe, 0x8c, 0xb1, 0x7b, 0x31, 0xf6, 0x38, 0x85, 0x0a, 0x19, 0x1e, 0x21, 0x32, + 0x0f, 0x93, 0x74, 0x6c, 0x01, 0x0d, 0xe2, 0x1d, 0x79, 0x02, 0xc4, 0x25, 0xf1, 0xdb, 0xa0, 0x78, + 0x7c, 0xf0, 0xdd, 0x03, 0xd3, 0xe9, 0x23, 0x71, 0x9c, 0x42, 0x72, 0x72, 0x1a, 0xa6, 0xf5, 0x32, + 0x1c, 0xa0, 0xec, 0xc4, 0x90, 0xea, 0xc7, 0xa4, 0x28, 0xdf, 0x02, 0x4a, 0xbe, 0xfc, 0xf7, 0x9f, + 0x12, 0x4c, 0x71, 0xb6, 0x43, 0x69, 0x2a, 0x02, 0xdb, 0xb6, 0x4f, 0xb9, 0xc2, 0xf1, 0xe0, 0xc3, + 0x71, 0xbb, 0x39, 0x7f, 0x65, 0xe0, 0x3f, 0x24, 0x78, 0x21, 0x1e, 0x24, 0xed, 0x26, 0xe5, 0x8d, + 0x70, 0x7d, 0xe0, 0x52, 0x3a, 0x89, 0x9e, 0xad, 0x4a, 0xf0, 0xb3, 0x0e, 0x98, 0x88, 0xa3, 0xf5, + 0x3d, 0xac, 0x15, 0xc8, 0xbf, 0x03, 0x83, 0xf8, 0x42, 0x8e, 0x6e, 0x1a, 0xa5, 0x32, 0xaa, 0x3a, + 0x2a, 0x5e, 0xdd, 0xf7, 0x9d, 0x39, 0x1a, 0x7b, 0xb3, 0x89, 0x62, 0x2c, 0xb9, 0x08, 0xd4, 0x40, + 0x06, 0xea, 0xfe, 0x46, 0xf9, 0x0a, 0x64, 0xeb, 0xea, 0x96, 0xd9, 0x70, 0x5a, 0x39, 0xed, 0xa7, + 0x28, 0x3e, 0x95, 0xff, 0x0f, 0x59, 0x03, 0x73, 0x76, 0xb6, 0xdf, 0xaa, 0xd9, 0x27, 0xae, 0x85, + 0xe3, 0x19, 0x54, 0xfe, 0x4b, 0xc2, 0x8b, 0xe1, 0x78, 0xa8, 0xe7, 0xdb, 0xf8, 0x7f, 0x45, 0x2b, + 0x91, 0x38, 0xd3, 0x84, 0x94, 0xf5, 0xdd, 0xed, 0x3c, 0x59, 0x77, 0x4d, 0xb5, 0x37, 0xb1, 0xa9, + 0x75, 0xd1, 0xee, 0x15, 0xd5, 0xde, 0xf4, 0x04, 0xca, 0x36, 0x05, 0x4a, 0xdc, 0xd3, 0x71, 0x05, + 0x54, 0x14, 0x52, 0x24, 0xe2, 0xf5, 0xb1, 0x4d, 0xea, 0x1f, 0x77, 0xe0, 0x7b, 0xb2, 0xa2, 0xcd, + 0xce, 0xf7, 0x48, 0x49, 0x97, 0x38, 0x4a, 0x3a, 0x18, 0x55, 0x52, 0x54, 0x46, 0xe5, 0x10, 0x2e, + 0x10, 0x89, 0xba, 0x99, 0xaa, 0x3e, 0x90, 0xa0, 0x97, 0x2d, 0x83, 0x83, 0x0a, 0x90, 0x92, 0x14, + 0xd0, 0x91, 0xa8, 0x80, 0x4c, 0xbc, 0x02, 0x3a, 0x05, 0x0a, 0x68, 0x96, 0x2f, 0x94, 0x7f, 0x23, + 0xa9, 0xd6, 0xb7, 0x79, 0x0d, 0xaf, 0x18, 0x76, 0x6e, 0xdf, 0x9d, 0x98, 0x62, 0x63, 0xb8, 0x52, + 0x6e, 0xe1, 0x0c, 0x1b, 0x03, 0xd1, 0xd2, 0x8e, 0xfb, 0x4f, 0x3a, 0x60, 0xef, 0x8a, 0x5d, 0x59, + 0x65, 0xaa, 0xbe, 0x6b, 0xa9, 0x86, 0xbd, 0x1e, 0x63, 0xcb, 0xa7, 0x60, 0xc4, 0x36, 0x1b, 0x96, + 0x86, 0x4a, 0xbc, 0x49, 0x93, 0x49, 0xdf, 0xaa, 0x7f, 0xea, 0xf0, 0x7a, 0xdc, 0x76, 0x74, 0x83, + 0x9c, 0x76, 0xf3, 0x8c, 0x7d, 0xd4, 0x07, 0xb0, 0xca, 0xbf, 0xef, 0xd9, 0xd9, 0xda, 0x7d, 0xcf, + 0xd9, 0x90, 0x7e, 0xa7, 0xfc, 0xfa, 0x8d, 0x8a, 0xab, 0x4c, 0xe3, 0x32, 0x7a, 0xb4, 0x83, 0x19, + 0xf4, 0x7b, 0x1d, 0xf8, 0x4e, 0xe8, 0x8d, 0x87, 0x0e, 0xb2, 0x0c, 0xb5, 0xfa, 0x9b, 0xa2, 0xa7, + 0x13, 0x21, 0x3d, 0x05, 0xde, 0x09, 0x84, 0x85, 0xa5, 0xef, 0x04, 0xc2, 0xcd, 0x4c, 0x47, 0x5f, + 0x4b, 0xb8, 0x7e, 0x73, 0x4b, 0xbf, 0xd7, 0xd0, 0xf1, 0x8d, 0x66, 0xba, 0x60, 0x78, 0xb6, 0xfa, + 0x4d, 0x20, 0x78, 0x64, 0x42, 0xc1, 0x83, 0x2d, 0x00, 0x3a, 0xdb, 0x5b, 0x00, 0x48, 0xde, 0x02, + 0xe0, 0x64, 0xdc, 0xae, 0x35, 0x22, 0x91, 0x32, 0x85, 0x37, 0xad, 0x91, 0x76, 0xa6, 0x8a, 0x8f, + 0x48, 0x32, 0xbd, 0x51, 0x43, 0x56, 0x05, 0x19, 0xda, 0xd6, 0x2a, 0xbe, 0x9f, 0x41, 0x5f, 0x4c, + 0xec, 0x98, 0x3a, 0x0a, 0xa7, 0xe3, 0x12, 0x1f, 0x97, 0x19, 0x9a, 0xf8, 0xb8, 0x7d, 0xcd, 0xbb, + 0xe8, 0x1d, 0xf8, 0x01, 0xc8, 0xb2, 0xe1, 0x6e, 0x8a, 0x6c, 0x26, 0x2d, 0x39, 0x32, 0x7e, 0x4e, + 0x5c, 0x20, 0xa0, 0x97, 0xce, 0x90, 0x99, 0x5c, 0x61, 0xfe, 0xd1, 0xca, 0x62, 0x95, 0xfa, 0xc8, + 0x99, 0x90, 0x52, 0x95, 0xe0, 0x79, 0x30, 0x4f, 0x27, 0xf4, 0xe1, 0x02, 0xbf, 0x33, 0xac, 0xd6, + 0x25, 0xf4, 0x83, 0x5a, 0xc3, 0x6a, 0xe5, 0xeb, 0x84, 0xaa, 0x95, 0xdf, 0xc9, 0xd4, 0xfa, 0xb9, + 0x84, 0x9d, 0xf3, 0x8e, 0xa5, 0xdf, 0xd7, 0xab, 0xa8, 0x82, 0xca, 0x37, 0x1e, 0x22, 0xad, 0xe1, + 0xa0, 0x45, 0xd3, 0x70, 0x2c, 0x55, 0x13, 0xfb, 0xdf, 0x08, 0x74, 0xad, 0x37, 0x8c, 0xb2, 0x4d, + 0x55, 0x49, 0x3e, 0xe4, 0xa3, 0x30, 0xa4, 0x51, 0xcc, 0x92, 0x4a, 0xde, 0x8d, 0x50, 0xa5, 0xed, + 0xf6, 0xda, 0xe9, 0x73, 0x12, 0x59, 0xa6, 0x4b, 0x03, 0xa2, 0x27, 0x92, 0xed, 0xaf, 0x0a, 0x0e, + 0xda, 0x0f, 0xf9, 0xc5, 0x15, 0xf2, 0xea, 0x06, 0x92, 0x83, 0x71, 0x00, 0x2c, 0xdd, 0xbf, 0x0d, + 0x80, 0xf9, 0x2d, 0x95, 0xf5, 0xf5, 0x75, 0x9c, 0xf1, 0x63, 0xd3, 0xc0, 0x29, 0x77, 0xaa, 0x3e, + 0xfe, 0xc9, 0xf4, 0x91, 0x8a, 0xee, 0x6c, 0x34, 0xd6, 0x66, 0x35, 0xb3, 0x46, 0x1f, 0x0e, 0xd2, + 0xff, 0x4e, 0xda, 0xe5, 0xcd, 0x39, 0x67, 0xab, 0x8e, 0x6c, 0x8c, 0x60, 0x17, 0x7b, 0x31, 0xf9, + 0x25, 0x7d, 0x7d, 0xbd, 0x30, 0xcc, 0x91, 0x49, 0x79, 0x0b, 0x86, 0x56, 0xec, 0x4a, 0x11, 0x3d, + 0x50, 0xad, 0xb2, 0x7d, 0xbb, 0xee, 0xdc, 0x6e, 0x08, 0x35, 0x4d, 0xea, 0x84, 0x1c, 0xa5, 0x8c, + 0xf9, 0x95, 0x12, 0x20, 0xa5, 0xe4, 0x71, 0x40, 0x0d, 0xb4, 0xf9, 0xdf, 0xca, 0xec, 0xc5, 0x9d, + 0x5a, 0x55, 0xd5, 0x6b, 0xb7, 0x4c, 0x6d, 0x13, 0x95, 0x6f, 0xe2, 0xc9, 0x13, 0x3b, 0xd1, 0x70, + 0x15, 0x83, 0xcd, 0x13, 0x4b, 0xbf, 0xd3, 0x58, 0x7b, 0x05, 0x6d, 0xe1, 0x89, 0xef, 0x2f, 0xf2, + 0xba, 0xe4, 0x09, 0xe8, 0xb5, 0xf5, 0x8a, 0xa1, 0x3a, 0x0d, 0x8b, 0x6c, 0xc2, 0xfb, 0x8b, 0xcd, + 0x86, 0xf8, 0xf5, 0x46, 0x94, 0x2f, 0xba, 0xde, 0x88, 0x76, 0x30, 0x91, 0xde, 0x25, 0xcf, 0x66, + 0x56, 0xf5, 0x8a, 0x81, 0x97, 0xd0, 0xab, 0x90, 0x75, 0xff, 0xa6, 0x82, 0xf4, 0x2f, 0x5c, 0xf9, + 0xe6, 0xe9, 0x74, 0xd6, 0xc6, 0x2d, 0xbf, 0x7c, 0x3a, 0x7d, 0x32, 0xc5, 0x2c, 0xce, 0x6b, 0x1a, + 0xb5, 0xd3, 0x22, 0x25, 0x25, 0x4f, 0x40, 0xe7, 0x12, 0x59, 0xca, 0xba, 0x24, 0x7b, 0xbe, 0x79, + 0x3a, 0x8d, 0x6d, 0xb6, 0x88, 0x5b, 0x95, 0x87, 0xf8, 0x01, 0x12, 0xe6, 0xc0, 0xd4, 0xe4, 0x43, + 0x44, 0x7e, 0x72, 0xd9, 0x8b, 0xd4, 0x3e, 0x30, 0x82, 0xfb, 0x5d, 0xec, 0x71, 0xbb, 0xf0, 0x75, + 0xae, 0x45, 0xe8, 0xba, 0xaf, 0x56, 0x1b, 0x88, 0xee, 0x5c, 0x0f, 0xc7, 0x25, 0x64, 0x9f, 0x7c, + 0xde, 0x6e, 0x1c, 0xe3, 0x2a, 0x7f, 0x9e, 0xc1, 0x7e, 0x3e, 0x5f, 0xae, 0xe9, 0x06, 0xa9, 0x09, + 0x73, 0xb6, 0xd4, 0xed, 0x6d, 0xb7, 0x5e, 0x85, 0x21, 0xdf, 0x3d, 0x4a, 0x52, 0x8b, 0x69, 0x96, + 0x54, 0xa4, 0xa4, 0xe0, 0xb5, 0xbb, 0x89, 0x8c, 0xaf, 0x37, 0x09, 0xaf, 0x72, 0x76, 0xb6, 0x7e, + 0x95, 0xb3, 0x4b, 0x7c, 0x95, 0xf3, 0x3a, 0x64, 0x6d, 0x47, 0x75, 0x1a, 0x36, 0xbd, 0x66, 0x77, + 0x24, 0x56, 0xad, 0x58, 0xd6, 0x55, 0x0c, 0x5f, 0xa4, 0x78, 0x85, 0x42, 0x5c, 0x71, 0x23, 0x5e, + 0xd1, 0xca, 0x71, 0x5c, 0xdb, 0x88, 0x07, 0x62, 0x86, 0xfb, 0x0f, 0xe4, 0x91, 0xd4, 0x3c, 0x79, + 0x00, 0xf7, 0x0e, 0x5a, 0x75, 0xd4, 0x4d, 0xf4, 0x92, 0xa5, 0x1a, 0x8e, 0xd8, 0x1b, 0x6f, 0x42, + 0xb6, 0x82, 0x21, 0xe8, 0xa6, 0x6a, 0x36, 0x4e, 0x3c, 0x4c, 0xcb, 0x23, 0x8f, 0x55, 0x5b, 0xa4, + 0xd8, 0x85, 0x53, 0x71, 0x2f, 0xa4, 0x78, 0x1c, 0x29, 0x07, 0xf0, 0xd3, 0x08, 0x5e, 0x17, 0x13, + 0x68, 0x0b, 0xc7, 0x96, 0x79, 0x97, 0x1b, 0xd5, 0xf1, 0x41, 0x08, 0xa5, 0xc9, 0x41, 0x37, 0xe6, + 0x87, 0x5d, 0xcb, 0xf4, 0x3e, 0xe3, 0xa3, 0x44, 0x74, 0x04, 0x1a, 0x25, 0xa2, 0x1d, 0x1e, 0x6f, + 0x67, 0x9e, 0x1c, 0x86, 0xcc, 0x8a, 0x5d, 0x91, 0x55, 0xe8, 0xf6, 0x1e, 0x0a, 0xbe, 0x90, 0xe0, + 0x71, 0x14, 0x2e, 0x3f, 0x9b, 0x0e, 0x8e, 0xe5, 0x97, 0x32, 0xf4, 0xb0, 0x37, 0x7c, 0x49, 0x5e, + 0xed, 0x01, 0xe6, 0xe7, 0x52, 0x02, 0xb2, 0x51, 0xfe, 0x4a, 0x82, 0x51, 0xd1, 0xe3, 0xa6, 0x0b, + 0x09, 0xc4, 0x04, 0x78, 0xf9, 0x17, 0xdb, 0xc3, 0x63, 0x3c, 0x7d, 0x28, 0xc1, 0x44, 0xec, 0xe3, + 0x99, 0x2b, 0xe9, 0x06, 0xe0, 0x22, 0xe7, 0x17, 0x9f, 0x01, 0x99, 0xb1, 0xf8, 0x8f, 0x12, 0xec, + 0x4f, 0xbc, 0x45, 0x7c, 0x2d, 0xdd, 0x48, 0x42, 0x02, 0xf9, 0x97, 0x9e, 0x91, 0x00, 0x63, 0xf7, + 0x91, 0x04, 0x23, 0xdc, 0x57, 0x94, 0x67, 0x13, 0x46, 0xe0, 0x21, 0xe5, 0xaf, 0xb4, 0x81, 0xc4, + 0x58, 0xf9, 0x5b, 0x09, 0xf2, 0x31, 0x2f, 0x18, 0x2f, 0x27, 0xd0, 0x16, 0xa3, 0xe6, 0xe7, 0xdb, + 0x46, 0x65, 0xcc, 0xbd, 0x2f, 0xc1, 0x5e, 0xfe, 0xcd, 0xd0, 0x73, 0xa9, 0x65, 0xf6, 0x61, 0xe5, + 0x7f, 0xab, 0x1d, 0x2c, 0xc6, 0xcd, 0x16, 0xec, 0x0e, 0x5f, 0x48, 0x4a, 0x0a, 0x22, 0x21, 0xf8, + 0xfc, 0x85, 0xd6, 0xe0, 0x03, 0x8a, 0xe0, 0xdf, 0x0d, 0x3a, 0x97, 0x4a, 0xcb, 0x21, 0xac, 0x44, + 0x45, 0xc4, 0xdf, 0xed, 0xf9, 0x23, 0xd8, 0x13, 0xbd, 0xa3, 0x72, 0x2a, 0x0d, 0x49, 0x3f, 0x46, + 0xfe, 0x52, 0xab, 0x18, 0x8c, 0x81, 0xbf, 0x91, 0x60, 0x4c, 0xbc, 0xbd, 0x49, 0xa2, 0x2b, 0xc4, + 0xcc, 0x5f, 0x6f, 0x17, 0x33, 0xe0, 0x4e, 0x31, 0x97, 0x51, 0x2f, 0xa7, 0x32, 0x40, 0x1e, 0x6a, + 0xa2, 0x3b, 0xa5, 0xb8, 0x44, 0xea, 0x46, 0xc9, 0xc4, 0xab, 0x8d, 0xd7, 0xd2, 0xbb, 0x2d, 0x97, + 0x40, 0x62, 0x94, 0x4c, 0x7d, 0x1f, 0xf1, 0x03, 0x09, 0xc6, 0xe3, 0xce, 0x82, 0x0b, 0x2d, 0x6a, + 0xc4, 0x1f, 0x09, 0x16, 0xda, 0xc7, 0x0d, 0x46, 0x27, 0xee, 0x69, 0xd1, 0xb9, 0x54, 0x6e, 0x1e, + 0xc2, 0x4a, 0x8e, 0x4e, 0x71, 0x87, 0x33, 0x58, 0x5b, 0x71, 0xe5, 0xfc, 0x42, 0x7a, 0x97, 0x0f, + 0xe3, 0x26, 0x6a, 0x2b, 0x4d, 0x39, 0xde, 0x97, 0xa2, 0xc5, 0x6f, 0xf4, 0x52, 0xa6, 0x68, 0x21, + 0x81, 0xb4, 0x29, 0x3a, 0xf1, 0x69, 0x92, 0xfc, 0x77, 0x12, 0x4c, 0xc6, 0x5f, 0x99, 0x4e, 0x97, + 0x4c, 0x04, 0xd8, 0xf9, 0xa5, 0x67, 0xc1, 0x66, 0x5c, 0xfe, 0xbd, 0x04, 0x53, 0x09, 0x47, 0xc7, + 0x57, 0x5b, 0x1f, 0xc8, 0xef, 0x28, 0x37, 0x9e, 0x09, 0x9d, 0x31, 0xfa, 0xd7, 0x12, 0xe4, 0x84, + 0xe7, 0x86, 0x17, 0x53, 0x19, 0x7e, 0x14, 0x31, 0x7f, 0xad, 0x4d, 0xc4, 0x80, 0xfe, 0x12, 0xae, + 0x9f, 0x5e, 0x4d, 0x6f, 0xfb, 0x1c, 0xf4, 0x44, 0xfd, 0xa5, 0xbc, 0x3e, 0xfa, 0x9e, 0x04, 0x32, + 0xe7, 0x94, 0xea, 0x74, 0x52, 0x79, 0x21, 0x82, 0x92, 0xbf, 0xdc, 0x32, 0x0a, 0x63, 0xe2, 0x0f, + 0x61, 0x28, 0x72, 0xfe, 0x93, 0xb4, 0xc3, 0x09, 0x23, 0xe4, 0x2f, 0xb6, 0x88, 0xe0, 0x5f, 0x75, + 0x44, 0x4f, 0x56, 0x92, 0x56, 0x1d, 0x11, 0x8c, 0xc4, 0x55, 0x87, 0xf0, 0x4c, 0x03, 0xc7, 0x7b, + 0xfe, 0x81, 0x46, 0x52, 0xbc, 0xe7, 0x62, 0x25, 0xc6, 0xfb, 0xd8, 0x33, 0x09, 0xf9, 0x2f, 0x24, + 0xd8, 0x27, 0x38, 0x90, 0x38, 0x9f, 0x18, 0x04, 0x79, 0x68, 0xf9, 0xab, 0x6d, 0xa1, 0x05, 0x18, + 0x12, 0x94, 0xf2, 0xcf, 0x27, 0xee, 0xb5, 0xdb, 0x62, 0x28, 0xbe, 0x0e, 0x2e, 0xdb, 0x30, 0x10, + 0xac, 0xc6, 0x9e, 0x48, 0xa0, 0x17, 0x80, 0xce, 0x9f, 0x6b, 0x05, 0x3a, 0x10, 0x51, 0x12, 0xea, + 0x76, 0x49, 0x62, 0xc5, 0xa3, 0x27, 0x46, 0x94, 0x74, 0x75, 0x2a, 0xb9, 0x0e, 0xfd, 0x81, 0x5f, + 0x8c, 0x3a, 0x9e, 0x40, 0xd6, 0x0f, 0x9c, 0x3f, 0xdb, 0x02, 0xb0, 0x3f, 0x7c, 0x44, 0x7e, 0x0b, + 0x6f, 0x2e, 0x15, 0xa1, 0x26, 0x42, 0x62, 0xf8, 0x10, 0xfd, 0x88, 0x1b, 0x36, 0x4f, 0xc1, 0x2f, + 0xb8, 0x9d, 0x4f, 0x45, 0x33, 0x8c, 0x96, 0x68, 0x9e, 0xf1, 0x3f, 0xdb, 0x85, 0x8b, 0x00, 0xdc, + 0x2a, 0x61, 0x92, 0x72, 0x79, 0x48, 0x89, 0x45, 0x80, 0xb8, 0x12, 0x1f, 0xce, 0x2e, 0x9c, 0x02, + 0x5f, 0x52, 0x76, 0x89, 0xa2, 0x24, 0x66, 0x17, 0x71, 0x2d, 0x2f, 0xdf, 0xf5, 0xee, 0x57, 0x8f, + 0x8f, 0x49, 0x0b, 0x1b, 0x9f, 0x7d, 0x31, 0x25, 0x3d, 0xf9, 0x62, 0x4a, 0xfa, 0xe9, 0x17, 0x53, + 0xd2, 0x5f, 0x7e, 0x39, 0xb5, 0xeb, 0xc9, 0x97, 0x53, 0xbb, 0x7e, 0xf4, 0xe5, 0xd4, 0xae, 0xdf, + 0x7f, 0xd5, 0x57, 0xe4, 0x5f, 0xf6, 0x46, 0xb9, 0xa5, 0xae, 0xd9, 0x73, 0x6c, 0xcc, 0x93, 0x9a, + 0x69, 0x21, 0xff, 0xe7, 0x86, 0xaa, 0x1b, 0x73, 0x35, 0xb3, 0xdc, 0xa8, 0x22, 0xbb, 0xf9, 0x53, + 0x8f, 0xf8, 0x40, 0x60, 0x2d, 0x8b, 0x7f, 0xa6, 0xf1, 0xec, 0xaf, 0x03, 0x00, 0x00, 0xff, 0xff, + 0xcf, 0xe6, 0x59, 0x86, 0xe8, 0x52, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -5942,6 +5948,16 @@ func (m *MsgInstantSpotMarketLaunch) MarshalToSizedBuffer(dAtA []byte) (int, err _ = i var l int _ = l + if m.QuoteDecimals != 0 { + i = encodeVarintTx(dAtA, i, uint64(m.QuoteDecimals)) + i-- + dAtA[i] = 0x48 + } + if m.BaseDecimals != 0 { + i = encodeVarintTx(dAtA, i, uint64(m.BaseDecimals)) + i-- + dAtA[i] = 0x40 + } { size := m.MinNotional.Size() i -= size @@ -9232,6 +9248,12 @@ func (m *MsgInstantSpotMarketLaunch) Size() (n int) { n += 1 + l + sovTx(uint64(l)) l = m.MinNotional.Size() n += 1 + l + sovTx(uint64(l)) + if m.BaseDecimals != 0 { + n += 1 + sovTx(uint64(m.BaseDecimals)) + } + if m.QuoteDecimals != 0 { + n += 1 + sovTx(uint64(m.QuoteDecimals)) + } return n } @@ -12459,6 +12481,44 @@ func (m *MsgInstantSpotMarketLaunch) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 8: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field BaseDecimals", wireType) + } + m.BaseDecimals = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.BaseDecimals |= uint32(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 9: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field QuoteDecimals", wireType) + } + m.QuoteDecimals = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.QuoteDecimals |= uint32(b&0x7F) << shift + if b < 0x80 { + break + } + } default: iNdEx = preIndex skippy, err := skipTx(dAtA[iNdEx:]) diff --git a/chain/exchange/types/wasm_maker_contract.go b/chain/exchange/types/wasm_maker_contract.go deleted file mode 100644 index 8b75eb9f..00000000 --- a/chain/exchange/types/wasm_maker_contract.go +++ /dev/null @@ -1,23 +0,0 @@ -package types - -import ( - "cosmossdk.io/math" -) - -type MintToUser struct { - SubaccountIDSender string `json:"subaccount_id_sender"` - Amount string `json:"amount"` -} - -type MintToUserMsg struct { - MintToUser MintToUser `json:"mint_to_user"` -} - -func NewMintToUserMsg(subaccountIDSender string, amount math.Int) MintToUserMsg { - return MintToUserMsg{ - MintToUser: MintToUser{ - SubaccountIDSender: subaccountIDSender, - Amount: amount.String(), - }, - } -} diff --git a/chain/helpers/common.go b/chain/helpers/common.go new file mode 100644 index 00000000..2254ea53 --- /dev/null +++ b/chain/helpers/common.go @@ -0,0 +1,27 @@ +package helpers + +import ( + sdk "github.com/cosmos/cosmos-sdk/types" +) + +func HasDuplicate[T comparable](elements []T) bool { + seen := make(map[T]struct{}) + for idx := range elements { + if _, ok := seen[elements[idx]]; ok { + return true // Duplicate found + } + seen[elements[idx]] = struct{}{} + } + return false +} + +func HasDuplicateCoins(slice []sdk.Coin) bool { + seen := make(map[string]struct{}) + for _, item := range slice { + if _, ok := seen[item.Denom]; ok { + return true + } + seen[item.Denom] = struct{}{} + } + return false +} diff --git a/chain/insurance/types/errors.go b/chain/insurance/types/errors.go deleted file mode 100644 index fb934756..00000000 --- a/chain/insurance/types/errors.go +++ /dev/null @@ -1,20 +0,0 @@ -package types - -import ( - "cosmossdk.io/errors" -) - -var ( - ErrInsuranceFundAlreadyExists = errors.Register(ModuleName, 1, "insurance fund already exists") - ErrInsuranceFundNotFound = errors.Register(ModuleName, 2, "insurance fund not found") - ErrRedemptionAlreadyExists = errors.Register(ModuleName, 3, "redemption already exists") - ErrInvalidDepositAmount = errors.Register(ModuleName, 4, "invalid deposit amount") - ErrInvalidDepositDenom = errors.Register(ModuleName, 5, "invalid deposit denom") - ErrPayoutTooLarge = errors.Register(ModuleName, 6, "insurance payout exceeds deposits") - ErrInvalidTicker = errors.Register(ModuleName, 7, "invalid ticker") - ErrInvalidQuoteDenom = errors.Register(ModuleName, 8, "invalid quote denom") - ErrInvalidOracle = errors.Register(ModuleName, 9, "invalid oracle") - ErrInvalidExpirationTime = errors.Register(ModuleName, 10, "invalid expiration time") - ErrInvalidMarketID = errors.Register(ModuleName, 11, "invalid marketID") - ErrInvalidShareDenom = errors.Register(ModuleName, 12, "invalid share denom") -) diff --git a/chain/insurance/types/events.go b/chain/insurance/types/events.go deleted file mode 100644 index ab1254f4..00000000 --- a/chain/insurance/types/events.go +++ /dev/null @@ -1 +0,0 @@ -package types diff --git a/chain/insurance/types/expected_keepers.go b/chain/insurance/types/expected_keepers.go deleted file mode 100644 index 0e5195ef..00000000 --- a/chain/insurance/types/expected_keepers.go +++ /dev/null @@ -1,20 +0,0 @@ -package types - -import ( - "context" - - sdk "github.com/cosmos/cosmos-sdk/types" - banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" -) - -// BankKeeper defines the expected bank keeper methods -type BankKeeper interface { - GetBalance(ctx context.Context, addr sdk.AccAddress, denom string) sdk.Coin - GetAllBalances(ctx context.Context, addr sdk.AccAddress) sdk.Coins - SendCoinsFromModuleToModule(ctx context.Context, senderModule, recipientModule string, amt sdk.Coins) error - SendCoinsFromModuleToAccount(ctx context.Context, senderModule string, recipientAddr sdk.AccAddress, amt sdk.Coins) error - SendCoinsFromAccountToModule(ctx context.Context, senderAddr sdk.AccAddress, recipientModule string, amt sdk.Coins) error - MintCoins(ctx context.Context, moduleName string, amt sdk.Coins) error - BurnCoins(ctx context.Context, moduleName string, amt sdk.Coins) error - SetDenomMetaData(ctx context.Context, denomMeta banktypes.Metadata) -} diff --git a/chain/insurance/types/genesis.go b/chain/insurance/types/genesis.go deleted file mode 100644 index 701f339e..00000000 --- a/chain/insurance/types/genesis.go +++ /dev/null @@ -1,33 +0,0 @@ -package types - -import ( - "errors" -) - -func NewGenesisState() GenesisState { - return GenesisState{} -} - -func (gs GenesisState) Validate() error { - if gs.NextRedemptionScheduleId == 0 { - return errors.New("NextRedemptionScheduleId should NOT be zero") - } - if gs.NextShareDenomId == 0 { - return errors.New("NextShareDenomId should NOT be zero") - } - - if err := gs.Params.Validate(); err != nil { - return err - } - return nil -} - -func DefaultGenesisState() *GenesisState { - return &GenesisState{ - Params: DefaultParams(), - NextShareDenomId: 1, - NextRedemptionScheduleId: 1, - RedemptionSchedule: []RedemptionSchedule{}, - InsuranceFunds: []InsuranceFund{}, - } -} diff --git a/chain/insurance/types/insurance.go b/chain/insurance/types/insurance.go deleted file mode 100644 index de861276..00000000 --- a/chain/insurance/types/insurance.go +++ /dev/null @@ -1,56 +0,0 @@ -package types - -import ( - "fmt" - "time" - - "cosmossdk.io/math" - "github.com/ethereum/go-ethereum/common" - - oracletypes "github.com/InjectiveLabs/sdk-go/chain/oracle/types" -) - -var ( - InsuranceFundInitialSupply = math.NewIntWithDecimal(1, 18) - InsuranceFundProtocolOwnedLiquiditySupply = math.NewIntWithDecimal(1, 16) - InsuranceFundCreatorSupply = InsuranceFundInitialSupply.Sub(InsuranceFundProtocolOwnedLiquiditySupply) -) - -func NewInsuranceFund( - marketID common.Hash, - depositDenom, poolTokenDenom string, - redemptionNoticePeriodDuration time.Duration, - ticker, oracleBase, oracleQuote string, oracleType oracletypes.OracleType, expiry int64, -) *InsuranceFund { - - return &InsuranceFund{ - DepositDenom: depositDenom, - InsurancePoolTokenDenom: poolTokenDenom, - RedemptionNoticePeriodDuration: redemptionNoticePeriodDuration, - Balance: math.ZeroInt(), - TotalShare: math.ZeroInt(), - MarketId: marketID.Hex(), - MarketTicker: ticker, - OracleBase: oracleBase, - OracleQuote: oracleQuote, - OracleType: oracleType, - Expiry: expiry, - } - -} - -func (fund InsuranceFund) ShareDenom() string { - return fund.InsurancePoolTokenDenom -} - -func (fund *InsuranceFund) AddTotalShare(shares math.Int) { - fund.TotalShare = fund.TotalShare.Add(shares) -} - -func (fund *InsuranceFund) SubTotalShare(shares math.Int) { - fund.TotalShare = fund.TotalShare.Sub(shares) -} - -func ShareDenomFromId(id uint64) string { - return fmt.Sprintf("share%d", id) -} diff --git a/chain/insurance/types/key.go b/chain/insurance/types/key.go deleted file mode 100644 index 1dd40c09..00000000 --- a/chain/insurance/types/key.go +++ /dev/null @@ -1,38 +0,0 @@ -package types - -import ( - "time" - - sdk "github.com/cosmos/cosmos-sdk/types" -) - -const ( - ModuleName = "insurance" - StoreKey = ModuleName -) - -var ( - // Key for insurance prefixes - InsuranceFundPrefixKey = []byte{0x02} - - // Key for insurance redemption prefixes - RedemptionSchedulePrefixKey = []byte{0x03} - - GlobalShareDenomIdPrefixKey = []byte{0x04, 0x00} - GlobalRedemptionScheduleIdPrefixKey = []byte{0x05, 0x00} - - ParamsKey = []byte{0x10} -) - -// GetRedemptionScheduleKey provides the key to store a single pending redemption -func GetRedemptionScheduleKey(redemptionID uint64, claimTime time.Time) []byte { - key := RedemptionSchedulePrefixKey - key = append(key, sdk.FormatTimeBytes(claimTime)...) - key = append(key, sdk.Uint64ToBigEndian(redemptionID)...) - return key -} - -// GetRedemptionScheduleKey provides the key to store a single pending redemption -func (sh RedemptionSchedule) GetRedemptionScheduleKey() []byte { - return GetRedemptionScheduleKey(sh.Id, sh.ClaimableRedemptionTime) -} diff --git a/chain/insurance/types/msgs.go b/chain/insurance/types/msgs.go deleted file mode 100644 index 689f01f8..00000000 --- a/chain/insurance/types/msgs.go +++ /dev/null @@ -1,184 +0,0 @@ -package types - -import ( - "cosmossdk.io/errors" - sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - - oracletypes "github.com/InjectiveLabs/sdk-go/chain/oracle/types" -) - -const RouterKey = ModuleName - -var ( - _ sdk.Msg = &MsgCreateInsuranceFund{} - _ sdk.Msg = &MsgUnderwrite{} - _ sdk.Msg = &MsgRequestRedemption{} - _ sdk.Msg = &MsgUpdateParams{} -) - -// Route implements the sdk.Msg interface. It should return the name of the module -func (msg MsgUpdateParams) Route() string { return RouterKey } - -// Type implements the sdk.Msg interface. It should return the action. -func (msg MsgUpdateParams) Type() string { return "updateParams" } - -// ValidateBasic implements the sdk.Msg interface. It runs stateless checks on the message -func (msg MsgUpdateParams) ValidateBasic() error { - if _, err := sdk.AccAddressFromBech32(msg.Authority); err != nil { - return errors.Wrap(err, "invalid authority address") - } - - if err := msg.Params.Validate(); err != nil { - return err - } - - return nil -} - -// GetSignBytes implements the sdk.Msg interface. It encodes the message for signing -func (msg *MsgUpdateParams) GetSignBytes() []byte { - return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(msg)) -} - -// GetSigners implements the sdk.Msg interface. It defines whose signature is required -func (msg MsgUpdateParams) GetSigners() []sdk.AccAddress { - sender, err := sdk.AccAddressFromBech32(msg.Authority) - if err != nil { - panic(err) - } - return []sdk.AccAddress{sender} -} - -// Route implements the sdk.Msg interface. It should return the name of the module -func (msg MsgCreateInsuranceFund) Route() string { return RouterKey } - -// Type implements the sdk.Msg interface. It should return the action. -func (msg MsgCreateInsuranceFund) Type() string { return "createInsuranceFund" } - -// ValidateBasic implements the sdk.Msg interface. It runs stateless checks on the message -func (msg MsgCreateInsuranceFund) ValidateBasic() error { - if msg.Sender == "" { - return errors.Wrap(sdkerrors.ErrInvalidAddress, msg.Sender) - } - if msg.Ticker == "" || len(msg.Ticker) > 40 { - return errors.Wrapf(ErrInvalidTicker, "ticker should not be empty or exceed 40 characters") - } - if msg.QuoteDenom == "" { - return errors.Wrap(ErrInvalidQuoteDenom, "quote denom should not be empty") - } - if msg.OracleBase == "" { - return errors.Wrap(ErrInvalidOracle, "oracle base should not be empty") - } - if msg.OracleQuote == "" { - return errors.Wrap(ErrInvalidOracle, "oracle quote should not be empty") - } - if msg.OracleType == oracletypes.OracleType_Unspecified { - return errors.Wrap(ErrInvalidOracle, "oracle type should not be unspecified") - } - if msg.QuoteDenom != msg.InitialDeposit.Denom { - return errors.Wrapf(ErrInvalidDepositDenom, "oracle quote denom %s does not match deposit denom %s", msg.QuoteDenom, msg.InitialDeposit.Denom) - } - - if msg.OracleType == oracletypes.OracleType_Provider && msg.Expiry != BinaryOptionsExpiryFlag && msg.Expiry != PerpetualExpiryFlag { - return errors.Wrap(ErrInvalidExpirationTime, "oracle expiration time should be -2 or -1 for OracleType_Provider") - } - - if !msg.InitialDeposit.IsValid() { - return errors.Wrap(sdkerrors.ErrInvalidCoins, msg.InitialDeposit.String()) - } - if !msg.InitialDeposit.IsPositive() || msg.InitialDeposit.Amount.GT(MaxUnderwritingAmount) { - return errors.Wrap(sdkerrors.ErrInvalidCoins, msg.InitialDeposit.String()) - } - return nil -} - -// GetSignBytes implements the sdk.Msg interface. It encodes the message for signing -func (msg *MsgCreateInsuranceFund) GetSignBytes() []byte { - return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(msg)) -} - -// GetSigners implements the sdk.Msg interface. It defines whose signature is required -func (msg MsgCreateInsuranceFund) GetSigners() []sdk.AccAddress { - sender, err := sdk.AccAddressFromBech32(msg.Sender) - if err != nil { - panic(err) - } - return []sdk.AccAddress{sender} -} - -// Route implements the sdk.Msg interface. It should return the name of the module -func (msg MsgUnderwrite) Route() string { return RouterKey } - -// Type implements the sdk.Msg interface. It should return the action. -func (msg MsgUnderwrite) Type() string { return "underwrite" } - -// ValidateBasic implements the sdk.Msg interface. It runs stateless checks on the message -func (msg MsgUnderwrite) ValidateBasic() error { - if msg.Sender == "" { - return errors.Wrap(sdkerrors.ErrInvalidAddress, msg.Sender) - } - if msg.MarketId == "" { - return errors.Wrap(ErrInvalidMarketID, msg.MarketId) - } - if !msg.Deposit.IsValid() { - return errors.Wrap(sdkerrors.ErrInvalidCoins, msg.Deposit.String()) - } - if !msg.Deposit.IsPositive() || msg.Deposit.Amount.GT(MaxUnderwritingAmount) { - return errors.Wrap(sdkerrors.ErrInvalidCoins, msg.Deposit.String()) - } - return nil -} - -// GetSignBytes implements the sdk.Msg interface. It encodes the message for signing -func (msg *MsgUnderwrite) GetSignBytes() []byte { - return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(msg)) -} - -// GetSigners implements the sdk.Msg interface. It defines whose signature is required -func (msg MsgUnderwrite) GetSigners() []sdk.AccAddress { - sender, err := sdk.AccAddressFromBech32(msg.Sender) - if err != nil { - panic(err) - } - return []sdk.AccAddress{sender} -} - -// Route implements the sdk.Msg interface. It should return the name of the module -func (msg MsgRequestRedemption) Route() string { return RouterKey } - -// Type implements the sdk.Msg interface. It should return the action. -func (msg MsgRequestRedemption) Type() string { return "requestRedemption" } - -// ValidateBasic implements the sdk.Msg interface. It runs stateless checks on the message -func (msg MsgRequestRedemption) ValidateBasic() error { - if msg.Sender == "" { - return errors.Wrap(sdkerrors.ErrInvalidAddress, msg.Sender) - } - if msg.MarketId == "" { - return errors.Wrap(ErrInvalidMarketID, msg.MarketId) - } - - if !msg.Amount.IsValid() { - return errors.Wrap(sdkerrors.ErrInvalidCoins, msg.Amount.String()) - } - - if !msg.Amount.IsPositive() { - return errors.Wrap(sdkerrors.ErrInvalidCoins, msg.Amount.String()) - } - return nil -} - -// GetSignBytes implements the sdk.Msg interface. It encodes the message for signing -func (msg *MsgRequestRedemption) GetSignBytes() []byte { - return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(msg)) -} - -// GetSigners implements the sdk.Msg interface. It defines whose signature is required -func (msg MsgRequestRedemption) GetSigners() []sdk.AccAddress { - sender, err := sdk.AccAddressFromBech32(msg.Sender) - if err != nil { - panic(err) - } - return []sdk.AccAddress{sender} -} diff --git a/chain/insurance/types/params.go b/chain/insurance/types/params.go deleted file mode 100644 index 7cd8f19a..00000000 --- a/chain/insurance/types/params.go +++ /dev/null @@ -1,78 +0,0 @@ -package types - -import ( - "fmt" - "time" - - "cosmossdk.io/math" - paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" -) - -var _ paramtypes.ParamSet = &Params{} - -// insurance params default values -const ( - // DefaultInsurancePeriodDurationSeconds represents the number of seconds in two weeks - DefaultInsurancePeriod = time.Hour * 24 * 14 - DefaultBinaryOptionsInsurancePeriod = time.Minute -) - -// MaxUnderwritingAmount equals 1 trillion * 1e18 -var MaxUnderwritingAmount, _ = math.NewIntFromString("1000000000000000000000000000") -var PerpetualExpiryFlag int64 = -1 -var BinaryOptionsExpiryFlag int64 = -2 - -// Parameter keys -var ( - KeyDefaultRedemptionNoticePeriodDuration = []byte("defaultRedemptionNoticePeriodDuration") -) - -// ParamKeyTable returns the parameter key table. -func ParamKeyTable() paramtypes.KeyTable { - return paramtypes.NewKeyTable().RegisterParamSet(&Params{}) -} - -// NewParams creates a new Params instance -func NewParams( - defaultRedemptionNoticePeriodDuration time.Duration, -) Params { - return Params{ - DefaultRedemptionNoticePeriodDuration: defaultRedemptionNoticePeriodDuration, - } -} - -// ParamSetPairs returns the parameter set pairs. -func (p *Params) ParamSetPairs() paramtypes.ParamSetPairs { - return paramtypes.ParamSetPairs{ - paramtypes.NewParamSetPair(KeyDefaultRedemptionNoticePeriodDuration, &p.DefaultRedemptionNoticePeriodDuration, validateNoticePeriodDuration), - } -} - -// DefaultParams returns a default set of parameters. -func DefaultParams() Params { - return Params{ - DefaultRedemptionNoticePeriodDuration: DefaultInsurancePeriod, - } -} - -// Validate performs basic validation on insurance parameters. -func (p Params) Validate() error { - if err := validateNoticePeriodDuration(p.DefaultRedemptionNoticePeriodDuration); err != nil { - return err - } - - return nil -} - -func validateNoticePeriodDuration(i interface{}) error { - v, ok := i.(time.Duration) - if !ok { - return fmt.Errorf("invalid parameter type: %T", i) - } - - if v == 0 { - return fmt.Errorf("DefaultRedemptionNoticePeriodDuration must be positive: %d", v) - } - - return nil -} diff --git a/chain/insurance/types/paramset.go b/chain/insurance/types/paramset.go deleted file mode 100644 index 80d0852b..00000000 --- a/chain/insurance/types/paramset.go +++ /dev/null @@ -1,26 +0,0 @@ -package types - -type ( - ValueValidatorFn func(value interface{}) error - - // ParamSetPair is used for associating paramsubspace key and field of param - // structs. - ParamSetPair struct { - Key []byte - Value interface{} - ValidatorFn ValueValidatorFn - } -) - -// NewParamSetPair creates a new ParamSetPair instance. -func NewParamSetPair(key []byte, value interface{}, vfn ValueValidatorFn) ParamSetPair { - return ParamSetPair{key, value, vfn} -} - -// ParamSetPairs Slice of KeyFieldPair -type ParamSetPairs []ParamSetPair - -// ParamSet defines an interface for structs containing parameters for a module -type ParamSet interface { - ParamSetPairs() ParamSetPairs -} diff --git a/chain/ocr/types/expected_keepers.go b/chain/ocr/types/expected_keepers.go deleted file mode 100644 index feb64c63..00000000 --- a/chain/ocr/types/expected_keepers.go +++ /dev/null @@ -1,29 +0,0 @@ -package types - -import ( - "context" - - sdk "github.com/cosmos/cosmos-sdk/types" - bank "github.com/cosmos/cosmos-sdk/x/bank/types" - params "github.com/cosmos/cosmos-sdk/x/params/types" -) - -// ParamSubspace defines the expected Subspace interfacace -type ParamSubspace interface { - WithKeyTable(table params.KeyTable) params.Subspace - Get(ctx sdk.Context, key []byte, ptr interface{}) - GetParamSet(ctx sdk.Context, ps params.ParamSet) - SetParamSet(ctx sdk.Context, ps params.ParamSet) -} - -// BankKeeper defines the expected bank keeper methods -type BankKeeper interface { - GetBalance(ctx context.Context, addr sdk.AccAddress, denom string) sdk.Coin - GetAllBalances(ctx context.Context, addr sdk.AccAddress) sdk.Coins - SendCoinsFromModuleToModule(ctx context.Context, senderModule, recipientModule string, amt sdk.Coins) error - SendCoinsFromModuleToAccount(ctx context.Context, senderModule string, recipientAddr sdk.AccAddress, amt sdk.Coins) error - SendCoinsFromAccountToModule(ctx context.Context, senderAddr sdk.AccAddress, recipientModule string, amt sdk.Coins) error - MintCoins(ctx context.Context, moduleName string, amt sdk.Coins) error - BurnCoins(ctx context.Context, moduleName string, amt sdk.Coins) error - SetDenomMetaData(ctx context.Context, denomMeta bank.Metadata) -} diff --git a/chain/ocr/types/genesis.go b/chain/ocr/types/genesis.go deleted file mode 100644 index 3739aca4..00000000 --- a/chain/ocr/types/genesis.go +++ /dev/null @@ -1,18 +0,0 @@ -package types - -func NewGenesisState() GenesisState { - return GenesisState{} -} - -func (gs GenesisState) Validate() error { - if err := gs.Params.Validate(); err != nil { - return err - } - return nil -} - -func DefaultGenesisState() *GenesisState { - return &GenesisState{ - Params: DefaultParams(), - } -} diff --git a/chain/ocr/types/hooks.go b/chain/ocr/types/hooks.go deleted file mode 100644 index 5bec4b95..00000000 --- a/chain/ocr/types/hooks.go +++ /dev/null @@ -1,38 +0,0 @@ -package types - -import ( - "cosmossdk.io/math" - sdk "github.com/cosmos/cosmos-sdk/types" -) - -type OcrHooks interface { - AfterSetFeedConfig(ctx sdk.Context, feedConfig *FeedConfig) - AfterTransmit(ctx sdk.Context, feedId string, answer math.LegacyDec, timestamp int64) - AfterFundFeedRewardPool(ctx sdk.Context, feedId string, newPoolAmount sdk.Coin) -} - -var _ OcrHooks = MultiOcrHooks{} - -type MultiOcrHooks []OcrHooks - -func NewMultiOcrHooks(hooks ...OcrHooks) MultiOcrHooks { - return hooks -} - -func (h MultiOcrHooks) AfterSetFeedConfig(ctx sdk.Context, feedConfig *FeedConfig) { - for i := range h { - h[i].AfterSetFeedConfig(ctx, feedConfig) - } -} - -func (h MultiOcrHooks) AfterTransmit(ctx sdk.Context, feedId string, answer math.LegacyDec, timestamp int64) { - for i := range h { - h[i].AfterTransmit(ctx, feedId, answer, timestamp) - } -} - -func (h MultiOcrHooks) AfterFundFeedRewardPool(ctx sdk.Context, feedId string, newPoolAmount sdk.Coin) { - for i := range h { - h[i].AfterFundFeedRewardPool(ctx, feedId, newPoolAmount) - } -} diff --git a/chain/ocr/types/msgs.go b/chain/ocr/types/msgs.go deleted file mode 100644 index 836a1c4a..00000000 --- a/chain/ocr/types/msgs.go +++ /dev/null @@ -1,470 +0,0 @@ -package types - -import ( - "cosmossdk.io/errors" - sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" -) - -const ( - TypeMsgCreateFeed = "createFeed" - TypeMsgUpdateFeed = "updateFeed" - TypeMsgTransmit = "transmit" - TypeMsgFundFeedRewardPool = "fundFeedRewardPool" - TypeMsgWithdrawFeedRewardPool = "withdrawFeedRewardPool" - TypeMsgSetPayees = "setPayees" - TypeMsgTransferPayeeship = "transferPayeeship" - TypeMsgAcceptPayeeship = "acceptPayeeship" - TypeMsgUpdateParams = "updateParams" -) - -var ( - _ sdk.Msg = &MsgCreateFeed{} - _ sdk.Msg = &MsgUpdateFeed{} - _ sdk.Msg = &MsgTransmit{} - _ sdk.Msg = &MsgFundFeedRewardPool{} - _ sdk.Msg = &MsgWithdrawFeedRewardPool{} - _ sdk.Msg = &MsgSetPayees{} - _ sdk.Msg = &MsgTransferPayeeship{} - _ sdk.Msg = &MsgAcceptPayeeship{} - _ sdk.Msg = &MsgUpdateParams{} -) - -// Route implements the sdk.Msg interface. It should return the name of the module -func (msg MsgUpdateParams) Route() string { return RouterKey } - -// Type implements the sdk.Msg interface. It should return the action. -func (msg MsgUpdateParams) Type() string { return TypeMsgUpdateParams } - -// ValidateBasic implements the sdk.Msg interface for MsgUpdateParams. -func (msg MsgUpdateParams) ValidateBasic() error { - if _, err := sdk.AccAddressFromBech32(msg.Authority); err != nil { - return errors.Wrap(err, "invalid authority address") - } - - if err := msg.Params.Validate(); err != nil { - return err - } - - return nil -} - -// GetSignBytes implements the sdk.Msg interface. It encodes the message for signing -func (msg *MsgUpdateParams) GetSignBytes() []byte { - return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(msg)) -} - -// GetSigners implements the sdk.Msg interface. It defines whose signature is required -func (msg MsgUpdateParams) GetSigners() []sdk.AccAddress { - sender, err := sdk.AccAddressFromBech32(msg.Authority) - if err != nil { - panic(err) - } - - return []sdk.AccAddress{sender} -} - -// Route implements the sdk.Msg interface. It should return the name of the module -func (msg MsgCreateFeed) Route() string { return RouterKey } - -// Type implements the sdk.Msg interface. It should return the action. -func (msg MsgCreateFeed) Type() string { return TypeMsgCreateFeed } - -// ValidateBasic implements the sdk.Msg interface for MsgCreateFeed. -func (msg MsgCreateFeed) ValidateBasic() error { - if msg.Sender == "" { - return errors.Wrap(sdkerrors.ErrInvalidAddress, msg.Sender) - } - - if err := msg.Config.ValidateBasic(); err != nil { - return err - } - - return nil -} - -// GetSignBytes implements the sdk.Msg interface. It encodes the message for signing -func (msg *MsgCreateFeed) GetSignBytes() []byte { - return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(msg)) -} - -// GetSigners implements the sdk.Msg interface. It defines whose signature is required -func (msg MsgCreateFeed) GetSigners() []sdk.AccAddress { - sender, err := sdk.AccAddressFromBech32(msg.Sender) - if err != nil { - panic(err) - } - - return []sdk.AccAddress{sender} -} - -// Route implements the sdk.Msg interface. It should return the name of the module -func (msg MsgUpdateFeed) Route() string { return RouterKey } - -// Type implements the sdk.Msg interface. It should return the action. -func (msg MsgUpdateFeed) Type() string { return TypeMsgUpdateFeed } - -// ValidateBasic implements the sdk.Msg interface for MsgUpdateFeed. -func (msg MsgUpdateFeed) ValidateBasic() error { - if msg.Sender == "" { - return errors.Wrap(sdkerrors.ErrInvalidAddress, msg.Sender) - } - - if msg.FeedId == "" || len(msg.FeedId) > FeedIDMaxLength { - return errors.Wrap(sdkerrors.ErrInvalidRequest, "feedId not valid") - } - - seenTransmitters := make(map[string]struct{}, len(msg.Transmitters)) - for _, transmitter := range msg.Transmitters { - addr, err := sdk.AccAddressFromBech32(transmitter) - if err != nil { - return err - } - - if _, ok := seenTransmitters[addr.String()]; ok { - return ErrRepeatedAddress - } else { - seenTransmitters[addr.String()] = struct{}{} - } - } - - seenSigners := make(map[string]struct{}, len(msg.Signers)) - for _, signer := range msg.Signers { - addr, err := sdk.AccAddressFromBech32(signer) - if err != nil { - return err - } - - if _, ok := seenSigners[addr.String()]; ok { - return ErrRepeatedAddress - } else { - seenSigners[addr.String()] = struct{}{} - } - } - - if msg.LinkPerTransmission != nil { - if msg.LinkPerTransmission.IsNil() || !msg.LinkPerTransmission.IsPositive() { - return errors.Wrap(ErrIncorrectConfig, "LinkPerTransmission must be positive") - } - } - - if msg.LinkPerObservation != nil { - if msg.LinkPerObservation.IsNil() || !msg.LinkPerObservation.IsPositive() { - return errors.Wrap(ErrIncorrectConfig, "LinkPerObservation must be positive") - } - } - - if msg.LinkDenom == "" { - return sdkerrors.ErrInvalidCoins - } - - if msg.FeedAdmin != "" { - if _, err := sdk.AccAddressFromBech32(msg.FeedAdmin); err != nil { - return err - } - } - - if msg.BillingAdmin != "" { - if _, err := sdk.AccAddressFromBech32(msg.BillingAdmin); err != nil { - return err - } - } - - return nil -} - -// GetSignBytes implements the sdk.Msg interface. It encodes the message for signing -func (msg *MsgUpdateFeed) GetSignBytes() []byte { - return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(msg)) -} - -// GetSigners implements the sdk.Msg interface. It defines whose signature is required -func (msg MsgUpdateFeed) GetSigners() []sdk.AccAddress { - sender, err := sdk.AccAddressFromBech32(msg.Sender) - if err != nil { - panic(err) - } - - return []sdk.AccAddress{sender} -} - -// Route implements the sdk.Msg interface. It should return the name of the module -func (msg MsgTransmit) Route() string { return RouterKey } - -// Type implements the sdk.Msg interface. It should return the action. -func (msg MsgTransmit) Type() string { return TypeMsgTransmit } - -// ValidateBasic implements the sdk.Msg interface for MsgTransmit. -func (msg MsgTransmit) ValidateBasic() error { - if msg.Transmitter == "" { - return ErrNoTransmitter - } - - switch { - case len(msg.ConfigDigest) == 0: - return errors.Wrap(ErrIncorrectTransmissionData, "missing config digest") - case msg.FeedId == "": - return errors.Wrap(ErrIncorrectTransmissionData, "missing feed hash") - case msg.Report == nil: - return errors.Wrap(ErrIncorrectTransmissionData, "missing report") - } - - if len(msg.Report.Observers) > MaxNumOracles { - return errors.Wrap(ErrIncorrectTransmissionData, "too many observers") - } else if len(msg.Report.Observations) != len(msg.Report.Observers) { - return errors.Wrap(ErrIncorrectTransmissionData, "wrong observations count") - } - - if len(msg.Report.Observations) > MaxNumOracles { - return errors.Wrap(sdkerrors.ErrInvalidRequest, "num observations out of bounds") - } - - for i := 0; i < len(msg.Report.Observations)-1; i++ { - inOrder := msg.Report.Observations[i].LTE(msg.Report.Observations[i+1]) - if !inOrder { - return errors.Wrap(sdkerrors.ErrInvalidRequest, "observations not sorted") - } - } - return nil -} - -// GetSignBytes implements the sdk.Msg interface. It encodes the message for signing -func (msg *MsgTransmit) GetSignBytes() []byte { - return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(msg)) -} - -// GetSigners implements the sdk.Msg interface. It defines whose signature is required -func (msg MsgTransmit) GetSigners() []sdk.AccAddress { - transmitter, err := sdk.AccAddressFromBech32(msg.Transmitter) - if err != nil { - panic(err) - } - - return []sdk.AccAddress{transmitter} -} - -// Route implements the sdk.Msg interface. It should return the name of the module -func (msg MsgFundFeedRewardPool) Route() string { return RouterKey } - -// Type implements the sdk.Msg interface. It should return the action. -func (msg MsgFundFeedRewardPool) Type() string { return TypeMsgFundFeedRewardPool } - -// ValidateBasic implements the sdk.Msg interface for MsgFundFeedRewardPool. -func (msg MsgFundFeedRewardPool) ValidateBasic() error { - if msg.Sender == "" { - return errors.Wrap(sdkerrors.ErrInvalidAddress, msg.Sender) - } - - if msg.FeedId == "" || len(msg.FeedId) > FeedIDMaxLength { - return errors.Wrap(sdkerrors.ErrInvalidRequest, "feedId not valid") - } - - if !msg.Amount.IsValid() { - return errors.Wrap(sdkerrors.ErrInvalidCoins, msg.Amount.String()) - } - - return nil -} - -// GetSignBytes implements the sdk.Msg interface. It encodes the message for signing -func (msg *MsgFundFeedRewardPool) GetSignBytes() []byte { - return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(msg)) -} - -// GetSigners implements the sdk.Msg interface. It defines whose signature is required -func (msg MsgFundFeedRewardPool) GetSigners() []sdk.AccAddress { - sender, err := sdk.AccAddressFromBech32(msg.Sender) - if err != nil { - panic(err) - } - - return []sdk.AccAddress{sender} -} - -// Route implements the sdk.Msg interface. It should return the name of the module -func (msg MsgWithdrawFeedRewardPool) Route() string { return RouterKey } - -// Type implements the sdk.Msg interface. It should return the action. -func (msg MsgWithdrawFeedRewardPool) Type() string { return TypeMsgWithdrawFeedRewardPool } - -// ValidateBasic implements the sdk.Msg interface for MsgWithdrawFeedRewardPool. -func (msg MsgWithdrawFeedRewardPool) ValidateBasic() error { - if msg.Sender == "" { - return errors.Wrap(sdkerrors.ErrInvalidAddress, msg.Sender) - } - - if msg.FeedId == "" || len(msg.FeedId) > FeedIDMaxLength { - return errors.Wrap(sdkerrors.ErrInvalidRequest, "feedId not valid") - } - - if !msg.Amount.IsValid() { - return errors.Wrap(sdkerrors.ErrInvalidCoins, msg.Amount.String()) - } - - return nil -} - -// GetSignBytes implements the sdk.Msg interface. It encodes the message for signing -func (msg *MsgWithdrawFeedRewardPool) GetSignBytes() []byte { - return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(msg)) -} - -// GetSigners implements the sdk.Msg interface. It defines whose signature is required -func (msg MsgWithdrawFeedRewardPool) GetSigners() []sdk.AccAddress { - sender, err := sdk.AccAddressFromBech32(msg.Sender) - if err != nil { - panic(err) - } - - return []sdk.AccAddress{sender} -} - -// Route implements the sdk.Msg interface. It should return the name of the module -func (msg MsgSetPayees) Route() string { return RouterKey } - -// Type implements the sdk.Msg interface. It should return the action. -func (msg MsgSetPayees) Type() string { return TypeMsgSetPayees } - -// ValidateBasic implements the sdk.Msg interface for MsgSetPayees. -func (msg MsgSetPayees) ValidateBasic() error { - if msg.Sender == "" { - return errors.Wrap(sdkerrors.ErrInvalidAddress, msg.Sender) - } - - if msg.FeedId == "" || len(msg.FeedId) > FeedIDMaxLength { - return errors.Wrap(sdkerrors.ErrInvalidRequest, "feedId not valid") - } - - if len(msg.Transmitters) != len(msg.Payees) || len(msg.Payees) == 0 { - return ErrInvalidPayees - } - - seenTransmitters := make(map[string]struct{}, len(msg.Transmitters)) - for _, transmitter := range msg.Transmitters { - addr, err := sdk.AccAddressFromBech32(transmitter) - if err != nil { - return err - } - - if _, ok := seenTransmitters[addr.String()]; ok { - return ErrRepeatedAddress - } else { - seenTransmitters[addr.String()] = struct{}{} - } - } - - seenPayees := make(map[string]struct{}, len(msg.Payees)) - for _, payee := range msg.Payees { - addr, err := sdk.AccAddressFromBech32(payee) - if err != nil { - return err - } - - if _, ok := seenPayees[addr.String()]; ok { - return ErrRepeatedAddress - } else { - seenPayees[addr.String()] = struct{}{} - } - } - - return nil -} - -// GetSignBytes implements the sdk.Msg interface. It encodes the message for signing -func (msg *MsgSetPayees) GetSignBytes() []byte { - return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(msg)) -} - -// GetSigners implements the sdk.Msg interface. It defines whose signature is required -func (msg MsgSetPayees) GetSigners() []sdk.AccAddress { - sender, err := sdk.AccAddressFromBech32(msg.Sender) - if err != nil { - panic(err) - } - - return []sdk.AccAddress{sender} -} - -// Route implements the sdk.Msg interface. It should return the name of the module -func (msg MsgTransferPayeeship) Route() string { return RouterKey } - -// Type implements the sdk.Msg interface. It should return the action. -func (msg MsgTransferPayeeship) Type() string { return TypeMsgTransferPayeeship } - -// ValidateBasic implements the sdk.Msg interface for MsgTransferPayeeship. -func (msg MsgTransferPayeeship) ValidateBasic() error { - if msg.Sender == "" { - return errors.Wrap(sdkerrors.ErrInvalidAddress, msg.Sender) - } - - if msg.FeedId == "" || len(msg.FeedId) > FeedIDMaxLength { - return errors.Wrap(sdkerrors.ErrInvalidRequest, "feedId not valid") - } - - if _, err := sdk.AccAddressFromBech32(msg.Transmitter); err != nil { - return errors.Wrap(sdkerrors.ErrInvalidAddress, msg.Transmitter) - } - - if _, err := sdk.AccAddressFromBech32(msg.Proposed); err != nil { - return errors.Wrap(sdkerrors.ErrInvalidAddress, msg.Proposed) - } - - if msg.Transmitter == msg.Proposed { - return errors.Wrap(sdkerrors.ErrInvalidAddress, "proposed cannot be the same as transmitter") - } - - return nil -} - -// GetSignBytes implements the sdk.Msg interface. It encodes the message for signing -func (msg *MsgTransferPayeeship) GetSignBytes() []byte { - return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(msg)) -} - -// GetSigners implements the sdk.Msg interface. It defines whose signature is required -func (msg MsgTransferPayeeship) GetSigners() []sdk.AccAddress { - sender, err := sdk.AccAddressFromBech32(msg.Sender) - if err != nil { - panic(err) - } - - return []sdk.AccAddress{sender} -} - -// Route implements the sdk.Msg interface. It should return the name of the module -func (msg MsgAcceptPayeeship) Route() string { return RouterKey } - -// Type implements the sdk.Msg interface. It should return the action. -func (msg MsgAcceptPayeeship) Type() string { return TypeMsgAcceptPayeeship } - -// ValidateBasic implements the sdk.Msg interface for MsgAcceptPayeeship. -func (msg MsgAcceptPayeeship) ValidateBasic() error { - if msg.Payee == "" { - return errors.Wrap(sdkerrors.ErrInvalidAddress, msg.Payee) - } - - if msg.FeedId == "" || len(msg.FeedId) > FeedIDMaxLength { - return errors.Wrap(sdkerrors.ErrInvalidRequest, "feedId not valid") - } - - if _, err := sdk.AccAddressFromBech32(msg.Transmitter); err != nil { - return errors.Wrap(sdkerrors.ErrInvalidAddress, msg.Transmitter) - } - - return nil -} - -// GetSignBytes implements the sdk.Msg interface. It encodes the message for signing -func (msg *MsgAcceptPayeeship) GetSignBytes() []byte { - return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(msg)) -} - -// GetSigners implements the sdk.Msg interface. It defines whose signature is required -func (msg MsgAcceptPayeeship) GetSigners() []sdk.AccAddress { - sender, err := sdk.AccAddressFromBech32(msg.Payee) - if err != nil { - panic(err) - } - - return []sdk.AccAddress{sender} -} diff --git a/chain/oracle/types/band_ibc.go b/chain/oracle/types/band_ibc.go deleted file mode 100644 index 820053db..00000000 --- a/chain/oracle/types/band_ibc.go +++ /dev/null @@ -1,129 +0,0 @@ -package types - -import ( - "fmt" - - bandobi "github.com/bandprotocol/bandchain-packet/obi" - bandPacket "github.com/bandprotocol/bandchain-packet/packet" - - bandprice "github.com/InjectiveLabs/sdk-go/chain/oracle/bandchain/hooks/price" -) - -func NewOracleRequestPacketData(clientID string, calldata []byte, r *BandOracleRequest) bandPacket.OracleRequestPacketData { - return bandPacket.OracleRequestPacketData{ - ClientID: clientID, - OracleScriptID: uint64(r.OracleScriptId), - Calldata: calldata, - AskCount: r.AskCount, - MinCount: r.MinCount, - FeeLimit: r.FeeLimit, - PrepareGas: r.PrepareGas, - ExecuteGas: r.ExecuteGas, - } -} - -// GetCalldata gets the Band IBC request call data based on the symbols and multiplier. -func (r *BandOracleRequest) GetCalldata(legacyScheme bool) []byte { - if legacyScheme { - return bandobi.MustEncode(bandprice.Input{ - Symbols: r.Symbols, - Multiplier: BandPriceMultiplier, - }) - } - - return bandobi.MustEncode(bandprice.SymbolInput{ - Symbols: r.Symbols, - MinimumSourceCount: uint8(r.MinSourceCount), - }) -} - -func DecodeOracleInput(data []byte) (OracleInput, error) { - var ( - legacyInput LegacyBandInput - newInput BandInput - err error - ) - - if err = bandobi.Decode(data, &legacyInput); err == nil { - return legacyInput, nil - } - - if err = bandobi.Decode(data, &newInput); err == nil { - return newInput, nil - } - - return nil, fmt.Errorf("failed to decode oracle input: %w", err) -} - -func DecodeOracleOutput(data []byte) (OracleOutput, error) { - var ( - legacyOutput LegacyBandOutput - newOutput BandOutput - err error - ) - - if err = bandobi.Decode(data, &legacyOutput); err == nil { - return legacyOutput, nil - } - - if err = bandobi.Decode(data, &newOutput); err == nil { - return newOutput, nil - } - - return nil, fmt.Errorf("failed to decode oracle output: %w", err) -} - -// it is assumed that the id of a symbol -// within OracleInput exists within OracleOutput - -type OracleInput interface { - PriceSymbols() []string - PriceMultiplier() uint64 -} - -type ( - LegacyBandInput bandprice.Input - BandInput bandprice.SymbolInput -) - -func (in LegacyBandInput) PriceSymbols() []string { - return in.Symbols -} - -func (in LegacyBandInput) PriceMultiplier() uint64 { - return in.Multiplier -} - -func (in BandInput) PriceSymbols() []string { - return in.Symbols -} - -func (in BandInput) PriceMultiplier() uint64 { - return BandPriceMultiplier -} - -type OracleOutput interface { - Rate(id int) uint64 - Valid(id int) bool -} - -type ( - LegacyBandOutput bandprice.Output - BandOutput bandprice.SymbolOutput -) - -func (out LegacyBandOutput) Rate(id int) uint64 { - return out.Pxs[id] -} - -func (out LegacyBandOutput) Valid(id int) bool { - return true -} - -func (out BandOutput) Rate(id int) uint64 { - return out.Responses[id].Rate -} - -func (out BandOutput) Valid(id int) bool { - return out.Responses[id].ResponseCode == 0 -} diff --git a/chain/oracle/types/coinbase_oracle.go b/chain/oracle/types/coinbase_oracle.go deleted file mode 100644 index ab02126b..00000000 --- a/chain/oracle/types/coinbase_oracle.go +++ /dev/null @@ -1,101 +0,0 @@ -package types - -import ( - "bytes" - "strings" - - "cosmossdk.io/errors" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/crypto" -) - -const ( - CoinbaseOraclePublicKey = "0xfCEAdAFab14d46e20144F48824d0C09B1a03F2BC" - preamblePrefix = "\x19Ethereum Signed Message:\n32" -) - -const CoinbaseABIJSON = `[{ - "name": "coinbase", - "stateMutability": "pure", - "type": "function", - "inputs": [ - { "internalType": "string", "name": "kind", "type": "string" }, - { "internalType": "uint64", "name": "timestamp", "type": "uint64" }, - { "internalType": "string", "name": "key", "type": "string" }, - { "internalType": "uint64", "name": "value", "type": "uint64" } - ], - "outputs": [] -}]` - -func ValidateCoinbaseSignature(message, signature []byte) error { - hash := crypto.Keccak256Hash(message) - return ValidateEthereumSignature(hash, signature, common.HexToAddress(CoinbaseOraclePublicKey)) -} - -func ParseCoinbaseMessage(message []byte) (*CoinbasePriceState, error) { - contractAbi, abiErr := abi.JSON(strings.NewReader(CoinbaseABIJSON)) - if abiErr != nil { - panic("Bad ABI constant!") - } - - // computed from web3.sha3('coinbase(string,uint64,string,uint64)').substr(0,10) - coinbaseMethod := common.FromHex("0x96f180bf") - method, err := contractAbi.MethodById(coinbaseMethod) - if err != nil { - return nil, err - } - - values, err := method.Inputs.Unpack(message) - if err != nil { - return nil, err - } - - var priceState CoinbasePriceState - if err := method.Inputs.Copy(&priceState, values); err != nil { - return nil, err - } - - if priceState.Kind != "prices" || priceState.Timestamp == 0 || priceState.Key == "" || priceState.Value == 0 { - return nil, ErrBadCoinbaseMessage - } - - return &priceState, nil -} - -// ValidateEthereumSignature takes a message, an associated signature and public key and -// returns an error if the signature isn't valid -// TODO: refactor to shared common dir, copy pasted below code from Peggy -func ValidateEthereumSignature(hash common.Hash, signature []byte, ethAddress common.Address) error { - - // convert malformed coinbase sig in oracle response to 65-byte signature - trimmedSig := signature[:65] - trimmedSig[64] = signature[95] - - if len(trimmedSig) < 65 { - return errors.Wrap(ErrInvalidEthereumSignature, "signature too short") - } - - // calculate recover id - if trimmedSig[64] == 27 || signature[64] == 28 { - trimmedSig[64] -= 27 - } - - // manually build the hash with ethereum prefix - preamblePrefix := []byte(preamblePrefix) - preambleMessage := append(preamblePrefix, hash.Bytes()...) // nolint:gocritic - preambleHash := crypto.Keccak256Hash(preambleMessage) - - // verify signature - pubkey, err := crypto.SigToPub(preambleHash.Bytes(), trimmedSig) - if err != nil { - return errors.Wrap(err, "signature to public key") - } - addr := crypto.PubkeyToAddress(*pubkey) - - if !bytes.Equal(addr.Bytes(), ethAddress.Bytes()) { - return errors.Wrapf(ErrInvalidEthereumSignature, "signature not matching, expected %s but got %s", ethAddress.Hex(), addr.Hex()) - } - - return nil -} diff --git a/chain/oracle/types/events.go b/chain/oracle/types/events.go deleted file mode 100644 index 2789dc3c..00000000 --- a/chain/oracle/types/events.go +++ /dev/null @@ -1,6 +0,0 @@ -package types - -// Auction module event types -const ( - EventTypeNewBid = "new_bid" -) diff --git a/chain/oracle/types/expected_keepers.go b/chain/oracle/types/expected_keepers.go deleted file mode 100644 index dd6e7ed2..00000000 --- a/chain/oracle/types/expected_keepers.go +++ /dev/null @@ -1,46 +0,0 @@ -package types - -import ( - "context" - - sdk "github.com/cosmos/cosmos-sdk/types" - capabilitytypes "github.com/cosmos/ibc-go/modules/capability/types" - clienttypes "github.com/cosmos/ibc-go/v8/modules/core/02-client/types" - channeltypes "github.com/cosmos/ibc-go/v8/modules/core/04-channel/types" - - ocrtypes "github.com/InjectiveLabs/sdk-go/chain/ocr/types" -) - -// BankKeeper defines the expected bank keeper methods -type BankKeeper interface { - GetAllBalances(ctx context.Context, addr sdk.AccAddress) sdk.Coins - SendCoinsFromModuleToModule(ctx context.Context, senderModule, recipientModule string, amt sdk.Coins) error - SendCoinsFromModuleToAccount(ctx context.Context, senderModule string, recipientAddr sdk.AccAddress, amt sdk.Coins) error - SendCoinsFromAccountToModule(ctx context.Context, senderAddr sdk.AccAddress, recipientModule string, amt sdk.Coins) error - BurnCoins(ctx context.Context, moduleName string, amt sdk.Coins) error -} - -// ChannelKeeper defines the expected IBC channel keeper -type ChannelKeeper interface { - GetChannel(ctx sdk.Context, srcPort, srcChan string) (channel channeltypes.Channel, found bool) - GetNextSequenceSend(ctx sdk.Context, portID, channelID string) (uint64, bool) - SendPacket( - ctx sdk.Context, - chanCap *capabilitytypes.Capability, - sourcePort string, - sourceChannel string, - timeoutHeight clienttypes.Height, - timeoutTimestamp uint64, - data []byte, - ) (sequence uint64, err error) - ChanCloseInit(ctx sdk.Context, portID, channelID string, chanCap *capabilitytypes.Capability) error -} - -// PortKeeper defines the expected IBC port keeper -type PortKeeper interface { - BindPort(ctx sdk.Context, portID string) *capabilitytypes.Capability -} - -type OcrKeeper interface { - GetTransmission(ctx sdk.Context, feedId string) *ocrtypes.Transmission -} diff --git a/chain/oracle/types/genesis.go b/chain/oracle/types/genesis.go deleted file mode 100644 index 561d04e5..00000000 --- a/chain/oracle/types/genesis.go +++ /dev/null @@ -1,23 +0,0 @@ -package types - -// DefaultIndex is the default capability global index -const DefaultIndex uint64 = 1 - -func NewGenesisState() GenesisState { - return GenesisState{} -} - -func (gs GenesisState) Validate() error { - // TODO: validate stuff in genesis - if err := gs.Params.Validate(); err != nil { - return err - } - return nil -} - -func DefaultGenesisState() *GenesisState { - return &GenesisState{ - Params: DefaultParams(), - BandIbcParams: DefaultBandIBCParams(), - } -} diff --git a/chain/oracle/types/paramset.go b/chain/oracle/types/paramset.go deleted file mode 100644 index 80d0852b..00000000 --- a/chain/oracle/types/paramset.go +++ /dev/null @@ -1,26 +0,0 @@ -package types - -type ( - ValueValidatorFn func(value interface{}) error - - // ParamSetPair is used for associating paramsubspace key and field of param - // structs. - ParamSetPair struct { - Key []byte - Value interface{} - ValidatorFn ValueValidatorFn - } -) - -// NewParamSetPair creates a new ParamSetPair instance. -func NewParamSetPair(key []byte, value interface{}, vfn ValueValidatorFn) ParamSetPair { - return ParamSetPair{key, value, vfn} -} - -// ParamSetPairs Slice of KeyFieldPair -type ParamSetPairs []ParamSetPair - -// ParamSet defines an interface for structs containing parameters for a module -type ParamSet interface { - ParamSetPairs() ParamSetPairs -} diff --git a/chain/oracle/types/pyth.go b/chain/oracle/types/pyth.go deleted file mode 100644 index 4b986b39..00000000 --- a/chain/oracle/types/pyth.go +++ /dev/null @@ -1,75 +0,0 @@ -package types - -import ( - "cosmossdk.io/math" - "github.com/ethereum/go-ethereum/common" -) - -func NewPythPriceState( - priceID common.Hash, - emaPrice, emaConf, conf math.LegacyDec, - publishTime int64, - price math.LegacyDec, - blockTime int64, -) *PythPriceState { - return &PythPriceState{ - PriceId: priceID.Hex(), - EmaPrice: emaPrice, - EmaConf: emaConf, - Conf: conf, - PublishTime: uint64(publishTime), - PriceState: *NewPriceState(price, blockTime), - } -} - -func (p *PythPriceState) Update( - emaPrice, emaConf, conf math.LegacyDec, - publishTime uint64, - price math.LegacyDec, - blockTime int64, -) { - p.EmaPrice = emaPrice - p.EmaConf = emaConf - p.Conf = conf - p.PublishTime = publishTime - p.PriceState.UpdatePrice(price, blockTime) -} - -func (p *PriceAttestation) GetPriceID() string { - return p.PriceId -} - -func (p *PriceAttestation) GetPriceIDHash() common.Hash { - return common.HexToHash(p.PriceId) -} - -func (p *PriceAttestation) Validate() error { - if len(p.GetPriceIDHash().Bytes()) != 32 { - return ErrInvalidPythPriceID - } - - if !(p.Price > 0) { - return ErrBadPrice - } - - if p.Expo > MaxPythExponent || p.Expo < MinPythExponent { - return ErrInvalidPythExponent - } - - if !(p.PublishTime > 0) { - return ErrInvalidPythPublishTime - } - - // validating EMA price/conf is omitted since it's not mission critical and we don't want to block normal price updates - return nil -} - -func GetExponentiatedDec(value, expo int64) math.LegacyDec { - // price * 10^-expo - if expo <= 0 { - return math.LegacyNewDecWithPrec(value, -expo) - } - - // price * 10^expo - return math.LegacyNewDec(value).Power(uint64(expo)) -} diff --git a/chain/oracle/types/stork.go b/chain/oracle/types/stork.go deleted file mode 100644 index 343eb8e8..00000000 --- a/chain/oracle/types/stork.go +++ /dev/null @@ -1,29 +0,0 @@ -package types - -import ( - "cosmossdk.io/math" -) - -func NewStorkPriceState( - price math.LegacyDec, - timestamp uint64, - symbol string, - blockTime int64, -) *StorkPriceState { - return &StorkPriceState{ - Timestamp: timestamp, - Symbol: symbol, - Value: price, - PriceState: *NewPriceState(price, blockTime), - } -} - -func (s *StorkPriceState) Update(price math.LegacyDec, timestamp uint64, blockTime int64) { - s.Value = price - s.Timestamp = timestamp - s.PriceState.UpdatePrice(price, blockTime) -} - -func ScaleStorkPrice(price math.LegacyDec) math.LegacyDec { - return price.QuoTruncate(EighteenDecimals) -} diff --git a/chain/peggy/types/batch.go b/chain/peggy/types/batch.go deleted file mode 100644 index dc1d77da..00000000 --- a/chain/peggy/types/batch.go +++ /dev/null @@ -1,67 +0,0 @@ -package types - -import ( - "fmt" - "math/big" - "strings" - - accountsabi "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/crypto" -) - -// GetCheckpoint gets the checkpoint signature from the given outgoing tx batch -func (b OutgoingTxBatch) GetCheckpoint(peggyIDstring string) common.Hash { - - abi, err := accountsabi.JSON(strings.NewReader(OutgoingBatchTxCheckpointABIJSON)) - if err != nil { - panic("Bad ABI constant!") - } - - // the contract argument is not a arbitrary length array but a fixed length 32 byte - // array, therefore we have to utf8 encode the string (the default in this case) and - // then copy the variable length encoded data into a fixed length array. This function - // will panic if peggyId is too long to fit in 32 bytes - peggyID, err := strToFixByteArray(peggyIDstring) - if err != nil { - panic(err) - } - - // Create the methodName argument which salts the signature - methodNameBytes := []uint8("transactionBatch") - var batchMethodName [32]uint8 - copy(batchMethodName[:], methodNameBytes) - - // Run through the elements of the batch and serialize them - txAmounts := make([]*big.Int, len(b.Transactions)) - txDestinations := make([]common.Address, len(b.Transactions)) - txFees := make([]*big.Int, len(b.Transactions)) - for i, tx := range b.Transactions { - txAmounts[i] = tx.Erc20Token.Amount.BigInt() - txDestinations[i] = common.HexToAddress(tx.DestAddress) - txFees[i] = tx.Erc20Fee.Amount.BigInt() - } - - // the methodName needs to be the same as the 'name' above in the checkpointAbiJson - // but other than that it's a constant that has no impact on the output. This is because - // it gets encoded as a function name which we must then discard. - abiEncodedBatch, err := abi.Pack("submitBatch", - peggyID, - batchMethodName, - txAmounts, - txDestinations, - txFees, - big.NewInt(int64(b.BatchNonce)), - common.HexToAddress(b.TokenContract), - big.NewInt(int64(b.BatchTimeout)), - ) - - // this should never happen outside of test since any case that could crash on encoding - // should be filtered above. - if err != nil { - panic(fmt.Sprintf("Error packing checkpoint! %s/n", err)) - } - - hash := crypto.Keccak256Hash(abiEncodedBatch[4:]) - return hash -} diff --git a/chain/peggy/types/events.go b/chain/peggy/types/events.go deleted file mode 100644 index 413735c0..00000000 --- a/chain/peggy/types/events.go +++ /dev/null @@ -1,28 +0,0 @@ -package types - -const ( - EventTypeObservation = "observation" - EventTypeOutgoingBatch = "outgoing_batch" - - EventTypeMultisigUpdateRequest = "multisig_update_request" - EventTypeOutgoingBatchCanceled = "outgoing_batch_canceled" - EventTypeBridgeWithdrawalReceived = "withdrawal_received" - EventTypeBridgeDepositReceived = "deposit_received" - EventTypeBridgeWithdrawCanceled = "withdraw_canceled" - - AttributeKeyAttestationID = "attestation_id" - AttributeKeyBatchConfirmKey = "batch_confirm_key" - AttributeKeyValsetConfirmKey = "valset_confirm_key" - AttributeKeyMultisigID = "multisig_id" - AttributeKeyOutgoingBatchID = "batch_id" - AttributeKeyOutgoingTXID = "outgoing_tx_id" - AttributeKeyAttestationType = "attestation_type" - AttributeKeyContract = "bridge_contract" - AttributeKeyNonce = "nonce" - AttributeKeyValsetNonce = "valset_nonce" - AttributeKeyBatchNonce = "batch_nonce" - AttributeKeyBridgeChainID = "bridge_chain_id" - AttributeKeySetOperatorAddr = "set_operator_address" - AttributeKeyBadEthSignature = "bad_eth_signature" - AttributeKeyBadEthSignatureSubject = "bad_eth_signature_subject" -) diff --git a/chain/peggy/types/expected_keepers.go b/chain/peggy/types/expected_keepers.go deleted file mode 100644 index a76278f5..00000000 --- a/chain/peggy/types/expected_keepers.go +++ /dev/null @@ -1,54 +0,0 @@ -package types - -import ( - "context" - "time" - - "cosmossdk.io/math" - storetypes "cosmossdk.io/store/types" - sdk "github.com/cosmos/cosmos-sdk/types" - bank "github.com/cosmos/cosmos-sdk/x/bank/types" - "github.com/cosmos/cosmos-sdk/x/distribution/types" - slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types" - stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" -) - -// StakingKeeper defines the expected staking keeper methods -type StakingKeeper interface { - GetBondedValidatorsByPower(ctx context.Context) ([]stakingtypes.Validator, error) - GetLastValidatorPower(ctx context.Context, operator sdk.ValAddress) (int64, error) - GetLastTotalPower(ctx context.Context) (power math.Int, err error) - IterateValidators(context.Context, func(index int64, validator stakingtypes.ValidatorI) (stop bool)) error - ValidatorQueueIterator(ctx context.Context, endTime time.Time, endHeight int64) (storetypes.Iterator, error) - GetParams(ctx context.Context) (stakingtypes.Params, error) - GetValidator(ctx context.Context, addr sdk.ValAddress) (validator stakingtypes.Validator, err error) - IterateBondedValidatorsByPower(context.Context, func(index int64, validator stakingtypes.ValidatorI) (stop bool)) error - IterateLastValidators(context.Context, func(index int64, validator stakingtypes.ValidatorI) (stop bool)) error - Validator(context.Context, sdk.ValAddress) (stakingtypes.ValidatorI, error) - ValidatorByConsAddr(context.Context, sdk.ConsAddress) (stakingtypes.ValidatorI, error) - Slash(context.Context, sdk.ConsAddress, int64, int64, math.LegacyDec) (math.Int, error) - Jail(context.Context, sdk.ConsAddress) error - PowerReduction(ctx context.Context) (res math.Int) -} - -// BankKeeper defines the expected bank keeper methods -type BankKeeper interface { - SendCoinsFromModuleToModule(ctx context.Context, senderModule, recipientModule string, amt sdk.Coins) error - SendCoinsFromModuleToAccount(ctx context.Context, senderModule string, recipientAddr sdk.AccAddress, amt sdk.Coins) error - SendCoinsFromAccountToModule(ctx context.Context, senderAddr sdk.AccAddress, recipientModule string, amt sdk.Coins) error - MintCoins(ctx context.Context, name string, amt sdk.Coins) error - BurnCoins(ctx context.Context, name string, amt sdk.Coins) error - GetAllBalances(ctx context.Context, addr sdk.AccAddress) sdk.Coins - GetDenomMetaData(ctx context.Context, denom string) (bank.Metadata, bool) - GetSupply(ctx context.Context, denom string) sdk.Coin -} - -type SlashingKeeper interface { - GetValidatorSigningInfo(ctx context.Context, address sdk.ConsAddress) (info slashingtypes.ValidatorSigningInfo, err error) -} - -type DistributionKeeper interface { - FundCommunityPool(ctx context.Context, amount sdk.Coins, sender sdk.AccAddress) error - GetFeePool(ctx context.Context) (feePool types.FeePool) - SetFeePool(ctx context.Context, feePool types.FeePool) -} diff --git a/chain/peggy/types/genesis.go b/chain/peggy/types/genesis.go deleted file mode 100644 index 46fd33ed..00000000 --- a/chain/peggy/types/genesis.go +++ /dev/null @@ -1,19 +0,0 @@ -package types - -import "cosmossdk.io/errors" - -// ValidateBasic validates genesis state by looping through the params and -// calling their validation functions -func (s GenesisState) ValidateBasic() error { - if err := s.Params.ValidateBasic(); err != nil { - return errors.Wrap(err, "params") - } - return nil -} - -// DefaultGenesisState returns empty genesis state -func DefaultGenesisState() *GenesisState { - return &GenesisState{ - Params: DefaultParams(), - } -} diff --git a/chain/peggy/types/params_legacy.go b/chain/peggy/types/params_legacy.go deleted file mode 100644 index f64a9856..00000000 --- a/chain/peggy/types/params_legacy.go +++ /dev/null @@ -1,108 +0,0 @@ -package types - -import paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" - -var ( - // ParamsStoreKeyPeggyID stores the peggy id - ParamsStoreKeyPeggyID = []byte("PeggyID") - - // ParamsStoreKeyContractHash stores the contract hash - ParamsStoreKeyContractHash = []byte("ContractHash") - - // ParamsStoreKeyBridgeContractAddress stores the contract address - ParamsStoreKeyBridgeContractAddress = []byte("BridgeContractAddress") - - // ParamsStoreKeyBridgeContractStartHeight stores the bridge contract deployed height - ParamsStoreKeyBridgeContractStartHeight = []byte("BridgeContractChainHeight") - - // ParamsStoreKeyBridgeContractChainID stores the bridge chain id - ParamsStoreKeyBridgeContractChainID = []byte("BridgeChainID") - - // ParamsStoreKeyCosmosCoinDenom stores native cosmos coin denom - ParamsStoreKeyCosmosCoinDenom = []byte("CosmosCoinDenom") - - // ParamsStoreKeyCosmosCoinErc20Contract store L1 erc20 contract address of cosmos native coin - ParamsStoreKeyCosmosCoinErc20Contract = []byte("CosmosCoinErc20Contract") - - // ParamsStoreKeySignedValsetsWindow stores the signed blocks window - ParamsStoreKeySignedValsetsWindow = []byte("SignedValsetsWindow") - - // ParamsStoreKeySignedBatchesWindow stores the signed blocks window - ParamsStoreKeySignedBatchesWindow = []byte("SignedBatchesWindow") - - // ParamsStoreKeySignedClaimsWindow stores the signed blocks window - ParamsStoreKeySignedClaimsWindow = []byte("SignedClaimsWindow") - - // ParamsStoreKeyTargetBatchTimeout stores - ParamsStoreKeyTargetBatchTimeout = []byte("TargetBatchTimeout") - - // ParamsStoreKeyAverageBlockTime stores the average block time of the Injective Chain in milliseconds - ParamsStoreKeyAverageBlockTime = []byte("AverageBlockTime") - - // ParamsStoreKeyAverageEthereumBlockTime stores the average block time of Ethereum in milliseconds - ParamsStoreKeyAverageEthereumBlockTime = []byte("AverageEthereumBlockTime") - - // ParamsStoreSlashFractionValset stores the slash fraction valset - ParamsStoreSlashFractionValset = []byte("SlashFractionValset") - - // ParamsStoreSlashFractionBatch stores the slash fraction Batch - ParamsStoreSlashFractionBatch = []byte("SlashFractionBatch") - - // ParamsStoreSlashFractionClaim stores the slash fraction Claim - ParamsStoreSlashFractionClaim = []byte("SlashFractionClaim") - - // ParamsStoreSlashFractionConflictingClaim stores the slash fraction ConflictingClaim - ParamsStoreSlashFractionConflictingClaim = []byte("SlashFractionConflictingClaim") - - // ParamStoreUnbondSlashingValsetsWindow stores unbond slashing valset window - ParamStoreUnbondSlashingValsetsWindow = []byte("UnbondSlashingValsetsWindow") - - // ParamStoreClaimSlashingEnabled stores ClaimSlashing is enabled or not - ParamStoreClaimSlashingEnabled = []byte("ClaimSlashingEnabled") - - // ParamStoreSlashFractionBadEthSignature stores the amount by which a validator making a fraudulent eth signature will be slashed - ParamStoreSlashFractionBadEthSignature = []byte("SlashFractionBadEthSignature") - - // ParamStoreValsetRewardAmount is the amount of the coin, both denom and amount to issue - // to a relayer when they relay a valset - ParamStoreValsetRewardAmount = []byte("ValsetReward") - - ParamStoreAdmins = []byte("Admins") - - // Ensure that params implements the proper interface - _ paramtypes.ParamSet = &Params{} -) - -// ParamKeyTable for auth module -func ParamKeyTable() paramtypes.KeyTable { - return paramtypes.NewKeyTable().RegisterParamSet(&Params{}) -} - -// ParamSetPairs implements the ParamSet interface and returns all the key/value pairs -// pairs of auth module's parameters. -func (p *Params) ParamSetPairs() paramtypes.ParamSetPairs { - return paramtypes.ParamSetPairs{ - paramtypes.NewParamSetPair(ParamsStoreKeyPeggyID, &p.PeggyId, validatePeggyID), - paramtypes.NewParamSetPair(ParamsStoreKeyContractHash, &p.ContractSourceHash, validateContractHash), - paramtypes.NewParamSetPair(ParamsStoreKeyBridgeContractAddress, &p.BridgeEthereumAddress, validateBridgeContractAddress), - paramtypes.NewParamSetPair(ParamsStoreKeyBridgeContractChainID, &p.BridgeChainId, validateBridgeChainID), - paramtypes.NewParamSetPair(ParamsStoreKeyCosmosCoinDenom, &p.CosmosCoinDenom, validateCosmosCoinDenom), - paramtypes.NewParamSetPair(ParamsStoreKeyCosmosCoinErc20Contract, &p.CosmosCoinErc20Contract, validateCosmosCoinErc20Contract), - paramtypes.NewParamSetPair(ParamsStoreKeySignedValsetsWindow, &p.SignedValsetsWindow, validateSignedValsetsWindow), - paramtypes.NewParamSetPair(ParamsStoreKeySignedBatchesWindow, &p.SignedBatchesWindow, validateSignedBatchesWindow), - paramtypes.NewParamSetPair(ParamsStoreKeySignedClaimsWindow, &p.SignedClaimsWindow, validateSignedClaimsWindow), - paramtypes.NewParamSetPair(ParamsStoreKeyAverageBlockTime, &p.AverageBlockTime, validateAverageBlockTime), - paramtypes.NewParamSetPair(ParamsStoreKeyTargetBatchTimeout, &p.TargetBatchTimeout, validateTargetBatchTimeout), - paramtypes.NewParamSetPair(ParamsStoreKeyAverageEthereumBlockTime, &p.AverageEthereumBlockTime, validateAverageEthereumBlockTime), - paramtypes.NewParamSetPair(ParamsStoreSlashFractionValset, &p.SlashFractionValset, validateSlashFractionValset), - paramtypes.NewParamSetPair(ParamsStoreSlashFractionBatch, &p.SlashFractionBatch, validateSlashFractionBatch), - paramtypes.NewParamSetPair(ParamsStoreSlashFractionClaim, &p.SlashFractionClaim, validateSlashFractionClaim), - paramtypes.NewParamSetPair(ParamsStoreSlashFractionConflictingClaim, &p.SlashFractionConflictingClaim, validateSlashFractionConflictingClaim), - paramtypes.NewParamSetPair(ParamStoreSlashFractionBadEthSignature, &p.SlashFractionBadEthSignature, validateSlashFractionBadEthSignature), - paramtypes.NewParamSetPair(ParamStoreUnbondSlashingValsetsWindow, &p.UnbondSlashingValsetsWindow, validateUnbondSlashingValsetsWindow), - paramtypes.NewParamSetPair(ParamStoreClaimSlashingEnabled, &p.ClaimSlashingEnabled, validateClaimSlashingEnabled), - paramtypes.NewParamSetPair(ParamsStoreKeyBridgeContractStartHeight, &p.BridgeContractStartHeight, validateBridgeContractStartHeight), - paramtypes.NewParamSetPair(ParamStoreValsetRewardAmount, &p.ValsetReward, validateValsetReward), - paramtypes.NewParamSetPair(ParamStoreAdmins, &p.Admins, validateAdmins), - } -} diff --git a/chain/peggy/types/proposal.go b/chain/peggy/types/proposal.go deleted file mode 100644 index 5d55dfbe..00000000 --- a/chain/peggy/types/proposal.go +++ /dev/null @@ -1,76 +0,0 @@ -package types - -import ( - govtypes "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" -) - -// constants -const ( - ProposalTypeBlacklistEthereumAddresses string = "ProposalTypeBlacklistEthereumAddresses" - ProposalTypeRevokeEthereumBlacklist string = "ProposalTypeRevokeEthereumBlacklist" -) - -func init() { - govtypes.RegisterProposalType(ProposalTypeBlacklistEthereumAddresses) - govtypes.RegisterProposalType(ProposalTypeRevokeEthereumBlacklist) -} - -// Implements Proposal Interface -var _ govtypes.Content = &BlacklistEthereumAddressesProposal{} -var _ govtypes.Content = &RevokeEthereumBlacklistProposal{} - -// GetTitle returns the title of this proposal. -func (p *BlacklistEthereumAddressesProposal) GetTitle() string { - return p.Title -} - -// GetDescription returns the description of this proposal. -func (p *BlacklistEthereumAddressesProposal) GetDescription() string { - return p.Description -} - -// ProposalRoute returns router key of this proposal. -func (p *BlacklistEthereumAddressesProposal) ProposalRoute() string { return RouterKey } - -// ProposalType returns proposal type of this proposal. -func (p *BlacklistEthereumAddressesProposal) ProposalType() string { - return ProposalTypeBlacklistEthereumAddresses -} - -// ValidateBasic returns ValidateBasic result of this proposal. -func (p *BlacklistEthereumAddressesProposal) ValidateBasic() error { - for _, blacklistAddress := range p.BlacklistAddresses { - if _, err := NewEthAddress(blacklistAddress); err != nil { - return err - } - } - return govtypes.ValidateAbstract(p) -} - -// GetTitle returns the title of this proposal. -func (p *RevokeEthereumBlacklistProposal) GetTitle() string { - return p.Title -} - -// GetDescription returns the description of this proposal. -func (p *RevokeEthereumBlacklistProposal) GetDescription() string { - return p.Description -} - -// ProposalRoute returns router key of this proposal. -func (p *RevokeEthereumBlacklistProposal) ProposalRoute() string { return RouterKey } - -// ProposalType returns proposal type of this proposal. -func (p *RevokeEthereumBlacklistProposal) ProposalType() string { - return ProposalTypeRevokeEthereumBlacklist -} - -// ValidateBasic returns ValidateBasic result of this proposal. -func (p *RevokeEthereumBlacklistProposal) ValidateBasic() error { - for _, blacklistAddress := range p.BlacklistAddresses { - if _, err := NewEthAddress(blacklistAddress); err != nil { - return err - } - } - return govtypes.ValidateAbstract(p) -} diff --git a/chain/peggy/types/proposal.pb.go b/chain/peggy/types/proposal.pb.go deleted file mode 100644 index dd9ece2a..00000000 --- a/chain/peggy/types/proposal.pb.go +++ /dev/null @@ -1,667 +0,0 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: injective/peggy/v1/proposal.proto - -package types - -import ( - fmt "fmt" - _ "github.com/cosmos/cosmos-proto" - _ "github.com/cosmos/gogoproto/gogoproto" - proto "github.com/cosmos/gogoproto/proto" - io "io" - math "math" - math_bits "math/bits" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package - -type BlacklistEthereumAddressesProposal struct { - Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"` - Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` - BlacklistAddresses []string `protobuf:"bytes,3,rep,name=blacklist_addresses,json=blacklistAddresses,proto3" json:"blacklist_addresses,omitempty"` -} - -func (m *BlacklistEthereumAddressesProposal) Reset() { *m = BlacklistEthereumAddressesProposal{} } -func (m *BlacklistEthereumAddressesProposal) String() string { return proto.CompactTextString(m) } -func (*BlacklistEthereumAddressesProposal) ProtoMessage() {} -func (*BlacklistEthereumAddressesProposal) Descriptor() ([]byte, []int) { - return fileDescriptor_e5b158ea063afb2f, []int{0} -} -func (m *BlacklistEthereumAddressesProposal) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *BlacklistEthereumAddressesProposal) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_BlacklistEthereumAddressesProposal.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *BlacklistEthereumAddressesProposal) XXX_Merge(src proto.Message) { - xxx_messageInfo_BlacklistEthereumAddressesProposal.Merge(m, src) -} -func (m *BlacklistEthereumAddressesProposal) XXX_Size() int { - return m.Size() -} -func (m *BlacklistEthereumAddressesProposal) XXX_DiscardUnknown() { - xxx_messageInfo_BlacklistEthereumAddressesProposal.DiscardUnknown(m) -} - -var xxx_messageInfo_BlacklistEthereumAddressesProposal proto.InternalMessageInfo - -type RevokeEthereumBlacklistProposal struct { - Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"` - Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` - BlacklistAddresses []string `protobuf:"bytes,3,rep,name=blacklist_addresses,json=blacklistAddresses,proto3" json:"blacklist_addresses,omitempty"` -} - -func (m *RevokeEthereumBlacklistProposal) Reset() { *m = RevokeEthereumBlacklistProposal{} } -func (m *RevokeEthereumBlacklistProposal) String() string { return proto.CompactTextString(m) } -func (*RevokeEthereumBlacklistProposal) ProtoMessage() {} -func (*RevokeEthereumBlacklistProposal) Descriptor() ([]byte, []int) { - return fileDescriptor_e5b158ea063afb2f, []int{1} -} -func (m *RevokeEthereumBlacklistProposal) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *RevokeEthereumBlacklistProposal) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_RevokeEthereumBlacklistProposal.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *RevokeEthereumBlacklistProposal) XXX_Merge(src proto.Message) { - xxx_messageInfo_RevokeEthereumBlacklistProposal.Merge(m, src) -} -func (m *RevokeEthereumBlacklistProposal) XXX_Size() int { - return m.Size() -} -func (m *RevokeEthereumBlacklistProposal) XXX_DiscardUnknown() { - xxx_messageInfo_RevokeEthereumBlacklistProposal.DiscardUnknown(m) -} - -var xxx_messageInfo_RevokeEthereumBlacklistProposal proto.InternalMessageInfo - -func init() { - proto.RegisterType((*BlacklistEthereumAddressesProposal)(nil), "injective.peggy.v1.BlacklistEthereumAddressesProposal") - proto.RegisterType((*RevokeEthereumBlacklistProposal)(nil), "injective.peggy.v1.RevokeEthereumBlacklistProposal") -} - -func init() { proto.RegisterFile("injective/peggy/v1/proposal.proto", fileDescriptor_e5b158ea063afb2f) } - -var fileDescriptor_e5b158ea063afb2f = []byte{ - // 323 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x52, 0x3b, 0x4e, 0xc3, 0x40, - 0x10, 0xf5, 0x12, 0x81, 0x14, 0xd3, 0x99, 0x14, 0x21, 0x85, 0x13, 0x52, 0xa0, 0x34, 0xf1, 0xca, - 0xa2, 0xa3, 0x23, 0x88, 0x02, 0x41, 0x81, 0x52, 0xd2, 0x44, 0xfe, 0x8c, 0x9c, 0x25, 0xb6, 0x67, - 0xb5, 0x3b, 0x59, 0x29, 0x37, 0xa0, 0xe4, 0x08, 0x39, 0x03, 0x82, 0x3b, 0x20, 0xaa, 0x94, 0x94, - 0x28, 0x69, 0x38, 0x06, 0xc2, 0x3f, 0xe5, 0x08, 0x74, 0xfb, 0xde, 0x3c, 0xcd, 0x7b, 0xab, 0x37, - 0xf6, 0x99, 0xc8, 0x9f, 0x20, 0x22, 0x61, 0x80, 0x4b, 0x48, 0x92, 0x15, 0x37, 0x3e, 0x97, 0x0a, - 0x25, 0xea, 0x20, 0xf5, 0xa4, 0x42, 0x42, 0xc7, 0x69, 0x24, 0x5e, 0x21, 0xf1, 0x8c, 0xdf, 0x3b, - 0x8d, 0x50, 0x67, 0xa8, 0x67, 0x85, 0x82, 0x97, 0xa0, 0x94, 0xf7, 0x3a, 0x09, 0x26, 0x58, 0xf2, - 0x7f, 0xaf, 0x92, 0x1d, 0xbe, 0x33, 0x7b, 0x38, 0x49, 0x83, 0x68, 0x91, 0x0a, 0x4d, 0x37, 0x34, - 0x07, 0x05, 0xcb, 0xec, 0x2a, 0x8e, 0x15, 0x68, 0x0d, 0xfa, 0xa1, 0x72, 0x74, 0x3a, 0xf6, 0x21, - 0x09, 0x4a, 0xa1, 0xcb, 0x06, 0x6c, 0xd4, 0x9e, 0x96, 0xc0, 0x19, 0xd8, 0xc7, 0x31, 0xe8, 0x48, - 0x09, 0x49, 0x02, 0xf3, 0xee, 0x41, 0x31, 0xdb, 0xa7, 0x1c, 0x6e, 0x9f, 0x84, 0xf5, 0xf6, 0x59, - 0x50, 0xaf, 0xed, 0xb6, 0x06, 0xad, 0x51, 0x7b, 0xea, 0x34, 0xa3, 0xc6, 0xf0, 0xf2, 0xfc, 0x79, - 0xdd, 0xb7, 0x7e, 0xd6, 0x7d, 0xeb, 0xf3, 0x6d, 0xdc, 0xab, 0xf2, 0x27, 0x68, 0x3c, 0xe3, 0x87, - 0x40, 0x81, 0xef, 0x5d, 0x63, 0x4e, 0x90, 0xd3, 0xf0, 0x95, 0xd9, 0xfd, 0x29, 0x18, 0x5c, 0x40, - 0x1d, 0xba, 0xf9, 0xc5, 0xbf, 0x0d, 0x3d, 0x81, 0x8f, 0xad, 0xcb, 0x36, 0x5b, 0x97, 0x7d, 0x6f, - 0x5d, 0xf6, 0xb2, 0x73, 0xad, 0xcd, 0xce, 0xb5, 0xbe, 0x76, 0xae, 0xf5, 0x78, 0x97, 0x08, 0x9a, - 0x2f, 0x43, 0x2f, 0xc2, 0x8c, 0xdf, 0xd6, 0xb5, 0xde, 0x07, 0xa1, 0xe6, 0x4d, 0xc9, 0xe3, 0x08, - 0x15, 0xec, 0xc3, 0x79, 0x20, 0x72, 0x9e, 0x61, 0xbc, 0x4c, 0x41, 0x57, 0x47, 0x42, 0x2b, 0x09, - 0x3a, 0x3c, 0x2a, 0xaa, 0xbd, 0xf8, 0x0d, 0x00, 0x00, 0xff, 0xff, 0xe1, 0x03, 0x58, 0x94, 0x44, - 0x02, 0x00, 0x00, -} - -func (m *BlacklistEthereumAddressesProposal) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *BlacklistEthereumAddressesProposal) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *BlacklistEthereumAddressesProposal) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.BlacklistAddresses) > 0 { - for iNdEx := len(m.BlacklistAddresses) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.BlacklistAddresses[iNdEx]) - copy(dAtA[i:], m.BlacklistAddresses[iNdEx]) - i = encodeVarintProposal(dAtA, i, uint64(len(m.BlacklistAddresses[iNdEx]))) - i-- - dAtA[i] = 0x1a - } - } - if len(m.Description) > 0 { - i -= len(m.Description) - copy(dAtA[i:], m.Description) - i = encodeVarintProposal(dAtA, i, uint64(len(m.Description))) - i-- - dAtA[i] = 0x12 - } - if len(m.Title) > 0 { - i -= len(m.Title) - copy(dAtA[i:], m.Title) - i = encodeVarintProposal(dAtA, i, uint64(len(m.Title))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *RevokeEthereumBlacklistProposal) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *RevokeEthereumBlacklistProposal) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *RevokeEthereumBlacklistProposal) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.BlacklistAddresses) > 0 { - for iNdEx := len(m.BlacklistAddresses) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.BlacklistAddresses[iNdEx]) - copy(dAtA[i:], m.BlacklistAddresses[iNdEx]) - i = encodeVarintProposal(dAtA, i, uint64(len(m.BlacklistAddresses[iNdEx]))) - i-- - dAtA[i] = 0x1a - } - } - if len(m.Description) > 0 { - i -= len(m.Description) - copy(dAtA[i:], m.Description) - i = encodeVarintProposal(dAtA, i, uint64(len(m.Description))) - i-- - dAtA[i] = 0x12 - } - if len(m.Title) > 0 { - i -= len(m.Title) - copy(dAtA[i:], m.Title) - i = encodeVarintProposal(dAtA, i, uint64(len(m.Title))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func encodeVarintProposal(dAtA []byte, offset int, v uint64) int { - offset -= sovProposal(v) - base := offset - for v >= 1<<7 { - dAtA[offset] = uint8(v&0x7f | 0x80) - v >>= 7 - offset++ - } - dAtA[offset] = uint8(v) - return base -} -func (m *BlacklistEthereumAddressesProposal) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Title) - if l > 0 { - n += 1 + l + sovProposal(uint64(l)) - } - l = len(m.Description) - if l > 0 { - n += 1 + l + sovProposal(uint64(l)) - } - if len(m.BlacklistAddresses) > 0 { - for _, s := range m.BlacklistAddresses { - l = len(s) - n += 1 + l + sovProposal(uint64(l)) - } - } - return n -} - -func (m *RevokeEthereumBlacklistProposal) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Title) - if l > 0 { - n += 1 + l + sovProposal(uint64(l)) - } - l = len(m.Description) - if l > 0 { - n += 1 + l + sovProposal(uint64(l)) - } - if len(m.BlacklistAddresses) > 0 { - for _, s := range m.BlacklistAddresses { - l = len(s) - n += 1 + l + sovProposal(uint64(l)) - } - } - return n -} - -func sovProposal(x uint64) (n int) { - return (math_bits.Len64(x|1) + 6) / 7 -} -func sozProposal(x uint64) (n int) { - return sovProposal(uint64((x << 1) ^ uint64((int64(x) >> 63)))) -} -func (m *BlacklistEthereumAddressesProposal) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowProposal - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: BlacklistEthereumAddressesProposal: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: BlacklistEthereumAddressesProposal: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Title", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowProposal - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthProposal - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthProposal - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Title = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Description", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowProposal - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthProposal - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthProposal - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Description = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field BlacklistAddresses", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowProposal - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthProposal - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthProposal - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.BlacklistAddresses = append(m.BlacklistAddresses, string(dAtA[iNdEx:postIndex])) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipProposal(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthProposal - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *RevokeEthereumBlacklistProposal) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowProposal - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: RevokeEthereumBlacklistProposal: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: RevokeEthereumBlacklistProposal: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Title", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowProposal - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthProposal - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthProposal - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Title = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Description", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowProposal - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthProposal - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthProposal - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Description = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field BlacklistAddresses", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowProposal - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthProposal - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthProposal - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.BlacklistAddresses = append(m.BlacklistAddresses, string(dAtA[iNdEx:postIndex])) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipProposal(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthProposal - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func skipProposal(dAtA []byte) (n int, err error) { - l := len(dAtA) - iNdEx := 0 - depth := 0 - for iNdEx < l { - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowProposal - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - wireType := int(wire & 0x7) - switch wireType { - case 0: - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowProposal - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - iNdEx++ - if dAtA[iNdEx-1] < 0x80 { - break - } - } - case 1: - iNdEx += 8 - case 2: - var length int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowProposal - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - length |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if length < 0 { - return 0, ErrInvalidLengthProposal - } - iNdEx += length - case 3: - depth++ - case 4: - if depth == 0 { - return 0, ErrUnexpectedEndOfGroupProposal - } - depth-- - case 5: - iNdEx += 4 - default: - return 0, fmt.Errorf("proto: illegal wireType %d", wireType) - } - if iNdEx < 0 { - return 0, ErrInvalidLengthProposal - } - if depth == 0 { - return iNdEx, nil - } - } - return 0, io.ErrUnexpectedEOF -} - -var ( - ErrInvalidLengthProposal = fmt.Errorf("proto: negative length found during unmarshaling") - ErrIntOverflowProposal = fmt.Errorf("proto: integer overflow") - ErrUnexpectedEndOfGroupProposal = fmt.Errorf("proto: unexpected end of group") -) diff --git a/chain/permissions/types/codec.go b/chain/permissions/types/codec.go index a5cc7fea..099707ec 100644 --- a/chain/permissions/types/codec.go +++ b/chain/permissions/types/codec.go @@ -14,10 +14,7 @@ const ModuleName = "permissions" func RegisterCodec(cdc *codec.LegacyAmino) { cdc.RegisterConcrete(&MsgUpdateParams{}, "permissions/MsgUpdateParams", nil) cdc.RegisterConcrete(&MsgCreateNamespace{}, "permissions/MsgCreateNamespace", nil) - cdc.RegisterConcrete(&MsgDeleteNamespace{}, "permissions/MsgDeleteNamespace", nil) cdc.RegisterConcrete(&MsgUpdateNamespace{}, "permissions/MsgUpdateNamespace", nil) - cdc.RegisterConcrete(&MsgUpdateNamespaceRoles{}, "permissions/MsgUpdateNamespaceRoles", nil) - cdc.RegisterConcrete(&MsgRevokeNamespaceRoles{}, "permissions/MsgRevokeNamespaceRoles", nil) cdc.RegisterConcrete(&MsgClaimVoucher{}, "permissions/MsgClaimVoucher", nil) } @@ -25,10 +22,7 @@ func RegisterInterfaces(registry cdctypes.InterfaceRegistry) { registry.RegisterImplementations((*sdk.Msg)(nil), &MsgUpdateParams{}, &MsgCreateNamespace{}, - &MsgDeleteNamespace{}, &MsgUpdateNamespace{}, - &MsgUpdateNamespaceRoles{}, - &MsgRevokeNamespaceRoles{}, &MsgClaimVoucher{}, ) diff --git a/chain/permissions/types/errors.go b/chain/permissions/types/errors.go deleted file mode 100644 index f104edaf..00000000 --- a/chain/permissions/types/errors.go +++ /dev/null @@ -1,24 +0,0 @@ -package types - -// DONTCOVER - -import ( - "cosmossdk.io/errors" -) - -// x/tokenfactory module sentinel errors -var ( - ErrDenomNamespaceExists = errors.Register(ModuleName, 2, "attempting to create a namespace for denom that already exists") - ErrUnauthorized = errors.Register(ModuleName, 3, "unauthorized account") - ErrInvalidGenesis = errors.Register(ModuleName, 4, "invalid genesis") - ErrInvalidNamespace = errors.Register(ModuleName, 5, "invalid namespace") - ErrInvalidPermission = errors.Register(ModuleName, 6, "invalid permissions") - ErrUnknownRole = errors.Register(ModuleName, 7, "unknown role") - ErrUnknownWasmHook = errors.Register(ModuleName, 8, "unknown contract address") - ErrRestrictedAction = errors.Register(ModuleName, 9, "restricted action") - ErrInvalidRole = errors.Register(ModuleName, 10, "invalid role") - ErrUnknownDenom = errors.Register(ModuleName, 11, "namespace for denom is not existing") - ErrWasmHookError = errors.Register(ModuleName, 12, "wasm hook query error") - ErrVoucherNotFound = errors.Register(ModuleName, 13, "voucher was not found") - ErrInvalidWasmHook = errors.Register(ModuleName, 14, "invalid wasm hook") -) diff --git a/chain/permissions/types/expected_keepers.go b/chain/permissions/types/expected_keepers.go deleted file mode 100644 index 3fdbb230..00000000 --- a/chain/permissions/types/expected_keepers.go +++ /dev/null @@ -1,26 +0,0 @@ -package types - -import ( - "context" - - sdk "github.com/cosmos/cosmos-sdk/types" - banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" - - tftypes "github.com/InjectiveLabs/sdk-go/chain/tokenfactory/types" -) - -type BankKeeper interface { - AppendSendRestriction(restriction banktypes.SendRestrictionFn) - PrependSendRestriction(restriction banktypes.SendRestrictionFn) - ClearSendRestriction() - SendCoinsFromModuleToAccount(ctx context.Context, senderModule string, recipientAddr sdk.AccAddress, amt sdk.Coins) error -} - -type TokenFactoryKeeper interface { - GetAuthorityMetadata(ctx sdk.Context, denom string) (tftypes.DenomAuthorityMetadata, error) -} - -type WasmKeeper interface { - HasContractInfo(ctx context.Context, contractAddress sdk.AccAddress) bool - QuerySmart(ctx context.Context, contractAddr sdk.AccAddress, req []byte) ([]byte, error) -} diff --git a/chain/permissions/types/genesis.go b/chain/permissions/types/genesis.go deleted file mode 100644 index 4eff5bb7..00000000 --- a/chain/permissions/types/genesis.go +++ /dev/null @@ -1,38 +0,0 @@ -package types - -import ( - "cosmossdk.io/errors" -) - -// this line is used by starport scaffolding # genesis/types/import - -// DefaultIndex is the default capability global index -const DefaultIndex uint64 = 1 - -// DefaultGenesis returns the default Capability genesis state -func DefaultGenesis() *GenesisState { - return &GenesisState{ - Params: DefaultParams(), - Namespaces: []Namespace{}, - } -} - -// Validate performs basic genesis state validation returning an error upon any -// failure. -func (gs GenesisState) Validate() error { - err := gs.Params.Validate() - if err != nil { - return err - } - - seenDenoms := map[string]struct{}{} - - for _, ns := range gs.GetNamespaces() { - if _, ok := seenDenoms[ns.GetDenom()]; ok { - return errors.Wrapf(ErrInvalidGenesis, "duplicate denom: %s", ns.GetDenom()) - } - seenDenoms[ns.GetDenom()] = struct{}{} - } - - return nil -} diff --git a/chain/permissions/types/genesis.pb.go b/chain/permissions/types/genesis.pb.go index f4b7b7d6..580fd4db 100644 --- a/chain/permissions/types/genesis.pb.go +++ b/chain/permissions/types/genesis.pb.go @@ -26,8 +26,9 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package // GenesisState defines the permissions module's genesis state. type GenesisState struct { // params defines the parameters of the module. - Params Params `protobuf:"bytes,1,opt,name=params,proto3" json:"params"` - Namespaces []Namespace `protobuf:"bytes,2,rep,name=namespaces,proto3" json:"namespaces"` + Params Params `protobuf:"bytes,1,opt,name=params,proto3" json:"params"` + Namespaces []Namespace `protobuf:"bytes,2,rep,name=namespaces,proto3" json:"namespaces"` + Vouchers []*AddressVoucher `protobuf:"bytes,3,rep,name=vouchers,proto3" json:"vouchers,omitempty"` } func (m *GenesisState) Reset() { *m = GenesisState{} } @@ -77,6 +78,13 @@ func (m *GenesisState) GetNamespaces() []Namespace { return nil } +func (m *GenesisState) GetVouchers() []*AddressVoucher { + if m != nil { + return m.Vouchers + } + return nil +} + func init() { proto.RegisterType((*GenesisState)(nil), "injective.permissions.v1beta1.GenesisState") } @@ -86,24 +94,26 @@ func init() { } var fileDescriptor_5ff1982ce1793022 = []byte{ - // 270 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xd2, 0xce, 0xcc, 0xcb, 0x4a, - 0x4d, 0x2e, 0xc9, 0x2c, 0x4b, 0xd5, 0x2f, 0x48, 0x2d, 0xca, 0xcd, 0x2c, 0x2e, 0xce, 0xcc, 0xcf, - 0x2b, 0xd6, 0x2f, 0x33, 0x4c, 0x4a, 0x2d, 0x49, 0x34, 0xd4, 0x4f, 0x4f, 0xcd, 0x4b, 0x2d, 0xce, - 0x2c, 0xd6, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x92, 0x85, 0x2b, 0xd6, 0x43, 0x52, 0xac, 0x07, - 0x55, 0x2c, 0x25, 0x92, 0x9e, 0x9f, 0x9e, 0x0f, 0x56, 0xa9, 0x0f, 0x62, 0x41, 0x34, 0x49, 0x69, - 0xe1, 0xb7, 0xa1, 0x20, 0xb1, 0x28, 0x31, 0x17, 0x6a, 0x81, 0x94, 0x3e, 0x01, 0xb5, 0x48, 0x96, - 0x82, 0x35, 0x28, 0x2d, 0x66, 0xe4, 0xe2, 0x71, 0x87, 0xb8, 0x31, 0xb8, 0x24, 0xb1, 0x24, 0x55, - 0xc8, 0x99, 0x8b, 0x0d, 0x62, 0xa2, 0x04, 0xa3, 0x02, 0xa3, 0x06, 0xb7, 0x91, 0xaa, 0x1e, 0x5e, - 0x37, 0xeb, 0x05, 0x80, 0x15, 0x3b, 0xb1, 0x9c, 0xb8, 0x27, 0xcf, 0x10, 0x04, 0xd5, 0x2a, 0xe4, - 0xc7, 0xc5, 0x95, 0x97, 0x98, 0x9b, 0x5a, 0x5c, 0x90, 0x98, 0x9c, 0x5a, 0x2c, 0xc1, 0xa4, 0xc0, - 0xac, 0xc1, 0x6d, 0xa4, 0x41, 0xc0, 0x20, 0x3f, 0x98, 0x06, 0xa8, 0x59, 0x48, 0x26, 0x38, 0x65, - 0x9f, 0x78, 0x24, 0xc7, 0x78, 0xe1, 0x91, 0x1c, 0xe3, 0x83, 0x47, 0x72, 0x8c, 0x13, 0x1e, 0xcb, - 0x31, 0x5c, 0x78, 0x2c, 0xc7, 0x70, 0xe3, 0xb1, 0x1c, 0x43, 0x54, 0x60, 0x7a, 0x66, 0x49, 0x46, - 0x69, 0x92, 0x5e, 0x72, 0x7e, 0xae, 0xbe, 0x27, 0xcc, 0x7c, 0x9f, 0xc4, 0xa4, 0x62, 0x44, 0x48, - 0xe8, 0x26, 0xe7, 0x17, 0xa5, 0x22, 0x73, 0x33, 0x12, 0x33, 0xf3, 0xf4, 0x73, 0xf3, 0x53, 0x4a, - 0x73, 0x52, 0x8b, 0x51, 0x82, 0xa9, 0xa4, 0xb2, 0x20, 0xb5, 0x38, 0x89, 0x0d, 0x1c, 0x32, 0xc6, - 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0xb9, 0x0c, 0xe9, 0xc0, 0xda, 0x01, 0x00, 0x00, + // 299 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x90, 0x41, 0x4b, 0xc3, 0x30, + 0x14, 0x80, 0x1b, 0x27, 0x43, 0x32, 0x4f, 0xc5, 0xc3, 0x18, 0x18, 0x87, 0x20, 0x0c, 0x65, 0x09, + 0x9b, 0xbf, 0xc0, 0x79, 0x90, 0x81, 0x0c, 0x9d, 0xe0, 0xc1, 0x5b, 0xda, 0x3d, 0xba, 0xa8, 0x6d, + 0x4a, 0x5e, 0x5a, 0xf0, 0x5f, 0xf8, 0xb3, 0x76, 0xdc, 0xd1, 0x93, 0x48, 0x7b, 0xf7, 0x37, 0x88, + 0x6d, 0x37, 0xeb, 0x65, 0xbd, 0x25, 0xf0, 0x7d, 0xdf, 0x7b, 0x3c, 0x7a, 0xa1, 0xa2, 0x67, 0xf0, + 0xad, 0x4a, 0x41, 0xc4, 0x60, 0x42, 0x85, 0xa8, 0x74, 0x84, 0x22, 0x1d, 0x79, 0x60, 0xe5, 0x48, + 0x04, 0x10, 0x01, 0x2a, 0xe4, 0xb1, 0xd1, 0x56, 0xbb, 0xc7, 0x5b, 0x98, 0xd7, 0x60, 0x5e, 0xc1, + 0xbd, 0xa3, 0x40, 0x07, 0xba, 0x20, 0xc5, 0xef, 0xab, 0x94, 0x7a, 0xe7, 0xbb, 0x27, 0xc4, 0xd2, + 0xc8, 0xb0, 0x1a, 0xd0, 0x13, 0x0d, 0x6c, 0x6d, 0x68, 0x21, 0x9c, 0x7e, 0x13, 0x7a, 0x78, 0x53, + 0xee, 0xf8, 0x60, 0xa5, 0x05, 0xf7, 0x9a, 0xb6, 0xcb, 0x62, 0x97, 0xf4, 0xc9, 0xa0, 0x33, 0x3e, + 0xe3, 0x3b, 0x77, 0xe6, 0x77, 0x05, 0x3c, 0xd9, 0x5f, 0x7d, 0x9e, 0x38, 0xf3, 0x4a, 0x75, 0x67, + 0x94, 0x46, 0x32, 0x04, 0x8c, 0xa5, 0x0f, 0xd8, 0xdd, 0xeb, 0xb7, 0x06, 0x9d, 0xf1, 0xa0, 0x21, + 0x34, 0xdb, 0x08, 0x55, 0xab, 0x56, 0x70, 0xa7, 0xf4, 0x20, 0xd5, 0x89, 0xbf, 0x04, 0x83, 0xdd, + 0x56, 0x51, 0x1b, 0x36, 0xd4, 0xae, 0x16, 0x0b, 0x03, 0x88, 0x8f, 0xa5, 0x35, 0xdf, 0xea, 0x93, + 0x97, 0x55, 0xc6, 0xc8, 0x3a, 0x63, 0xe4, 0x2b, 0x63, 0xe4, 0x3d, 0x67, 0xce, 0x3a, 0x67, 0xce, + 0x47, 0xce, 0x9c, 0xa7, 0xfb, 0x40, 0xd9, 0x65, 0xe2, 0x71, 0x5f, 0x87, 0x62, 0xba, 0x89, 0xdf, + 0x4a, 0x0f, 0xff, 0x8e, 0x3a, 0xf4, 0xb5, 0x81, 0xfa, 0x77, 0x29, 0x55, 0x24, 0x42, 0xbd, 0x48, + 0x5e, 0x01, 0xff, 0x5d, 0xdc, 0xbe, 0xc5, 0x80, 0x5e, 0xbb, 0x38, 0xf2, 0xe5, 0x4f, 0x00, 0x00, + 0x00, 0xff, 0xff, 0x83, 0x97, 0x25, 0xeb, 0x25, 0x02, 0x00, 0x00, } func (m *GenesisState) Marshal() (dAtA []byte, err error) { @@ -126,6 +136,20 @@ func (m *GenesisState) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if len(m.Vouchers) > 0 { + for iNdEx := len(m.Vouchers) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Vouchers[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + } if len(m.Namespaces) > 0 { for iNdEx := len(m.Namespaces) - 1; iNdEx >= 0; iNdEx-- { { @@ -178,6 +202,12 @@ func (m *GenesisState) Size() (n int) { n += 1 + l + sovGenesis(uint64(l)) } } + if len(m.Vouchers) > 0 { + for _, e := range m.Vouchers { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + } return n } @@ -283,6 +313,40 @@ func (m *GenesisState) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Vouchers", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Vouchers = append(m.Vouchers, &AddressVoucher{}) + if err := m.Vouchers[len(m.Vouchers)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenesis(dAtA[iNdEx:]) diff --git a/chain/permissions/types/msgs.go b/chain/permissions/types/msgs.go deleted file mode 100644 index e9b762b1..00000000 --- a/chain/permissions/types/msgs.go +++ /dev/null @@ -1,227 +0,0 @@ -package types - -import ( - "fmt" - - "cosmossdk.io/errors" - sdk "github.com/cosmos/cosmos-sdk/types" - - tftypes "github.com/InjectiveLabs/sdk-go/chain/tokenfactory/types" -) - -// constants -const ( - // RouterKey is the message route for slashing - routerKey = ModuleName - - TypeMsgUpdateParams = "update_params" - TypeMsgCreateNamespace = "create_namespace" - TypeMsgDeleteNamespace = "delete_namespace" - TypeUpdateNamespace = "update_namespace" - TypeMsgUpdateNamespaceRoles = "update_namespace_roles" - TypeMsgRevokeNamespaceRoles = "revoke_namespace_roles" - TypeMsgClaimVoucher = "claim_voucher" -) - -var ( - _ sdk.Msg = &MsgUpdateParams{} - _ sdk.Msg = &MsgCreateNamespace{} - _ sdk.Msg = &MsgDeleteNamespace{} - _ sdk.Msg = &MsgUpdateNamespace{} - _ sdk.Msg = &MsgUpdateNamespaceRoles{} - _ sdk.Msg = &MsgRevokeNamespaceRoles{} - _ sdk.Msg = &MsgClaimVoucher{} -) - -func (m MsgUpdateParams) Route() string { return routerKey } - -func (m MsgUpdateParams) Type() string { return TypeMsgUpdateParams } - -func (m MsgUpdateParams) ValidateBasic() error { - if _, err := sdk.AccAddressFromBech32(m.Authority); err != nil { - return err - } - - if err := m.Params.Validate(); err != nil { - return err - } - return nil -} - -func (m *MsgUpdateParams) GetSignBytes() []byte { - return sdk.MustSortJSON(ModuleCdc.MustMarshal(m)) -} - -func (m MsgUpdateParams) GetSigners() []sdk.AccAddress { - addr, _ := sdk.AccAddressFromBech32(m.Authority) - return []sdk.AccAddress{addr} -} - -func (m MsgCreateNamespace) Route() string { return routerKey } - -func (m MsgCreateNamespace) Type() string { return TypeMsgCreateNamespace } - -func (msg MsgCreateNamespace) ValidateBasic() error { - if _, err := sdk.AccAddressFromBech32(msg.Sender); err != nil { - return err - } - - if err := msg.Namespace.Validate(); err != nil { - return err - } - return nil -} - -func (m *MsgCreateNamespace) GetSignBytes() []byte { - return sdk.MustSortJSON(ModuleCdc.MustMarshal(m)) -} - -func (m MsgCreateNamespace) GetSigners() []sdk.AccAddress { - addr, _ := sdk.AccAddressFromBech32(m.Sender) - return []sdk.AccAddress{addr} -} - -func (m MsgDeleteNamespace) Route() string { return routerKey } - -func (m MsgDeleteNamespace) Type() string { return TypeMsgDeleteNamespace } - -func (m MsgDeleteNamespace) ValidateBasic() error { - if _, err := sdk.AccAddressFromBech32(m.Sender); err != nil { - return err - } - - if _, _, err := tftypes.DeconstructDenom(m.NamespaceDenom); err != nil { - return errors.Wrap(err, "permissions namespace can only be applied to tokenfactory denoms") - } - return nil -} - -func (m *MsgDeleteNamespace) GetSignBytes() []byte { - return sdk.MustSortJSON(ModuleCdc.MustMarshal(m)) -} - -func (m MsgDeleteNamespace) GetSigners() []sdk.AccAddress { - addr, _ := sdk.AccAddressFromBech32(m.Sender) - return []sdk.AccAddress{addr} -} - -func (m MsgUpdateNamespace) Route() string { return routerKey } - -func (m MsgUpdateNamespace) Type() string { return TypeUpdateNamespace } - -func (m MsgUpdateNamespace) ValidateBasic() error { - if _, err := sdk.AccAddressFromBech32(m.Sender); err != nil { - return err - } - - if m.WasmHook != nil { - if _, err := sdk.AccAddressFromBech32(m.WasmHook.NewValue); err != nil { - return ErrInvalidWasmHook - } - } - return nil -} - -func (m *MsgUpdateNamespace) GetSignBytes() []byte { - return sdk.MustSortJSON(ModuleCdc.MustMarshal(m)) -} - -func (m MsgUpdateNamespace) GetSigners() []sdk.AccAddress { - addr, _ := sdk.AccAddressFromBech32(m.Sender) - return []sdk.AccAddress{addr} -} - -func (m MsgUpdateNamespaceRoles) Route() string { return routerKey } - -func (m MsgUpdateNamespaceRoles) Type() string { return TypeMsgUpdateNamespaceRoles } - -func (msg MsgUpdateNamespaceRoles) ValidateBasic() error { - if _, err := sdk.AccAddressFromBech32(msg.Sender); err != nil { - return err - } - if _, _, err := tftypes.DeconstructDenom(msg.NamespaceDenom); err != nil { - return errors.Wrap(err, "permissions namespace can only be applied to tokenfactory denoms") - } - - for _, role := range msg.AddressRoles { - if _, err := sdk.AccAddressFromBech32(role.Address); err != nil { - return errors.Wrapf(err, "invalid address %s", role.Address) - } - } - - return nil -} - -func (m *MsgUpdateNamespaceRoles) GetSignBytes() []byte { - return sdk.MustSortJSON(ModuleCdc.MustMarshal(m)) -} - -func (m MsgUpdateNamespaceRoles) GetSigners() []sdk.AccAddress { - addr, _ := sdk.AccAddressFromBech32(m.Sender) - return []sdk.AccAddress{addr} -} - -func (m MsgRevokeNamespaceRoles) Route() string { return routerKey } - -func (m MsgRevokeNamespaceRoles) Type() string { return TypeMsgRevokeNamespaceRoles } - -func (msg MsgRevokeNamespaceRoles) ValidateBasic() error { - if _, err := sdk.AccAddressFromBech32(msg.Sender); err != nil { - return err - } - - if _, _, err := tftypes.DeconstructDenom(msg.NamespaceDenom); err != nil { - return errors.Wrap(err, "permissions namespace can only be applied to tokenfactory denoms") - } - - // address_roles - foundAddresses := make(map[string]struct{}, len(msg.AddressRolesToRevoke)) - for _, addrRoles := range msg.AddressRolesToRevoke { - if _, err := sdk.AccAddressFromBech32(addrRoles.Address); err != nil { - return errors.Wrapf(err, "invalid address %s", addrRoles.Address) - } - if _, ok := foundAddresses[addrRoles.Address]; ok { - return errors.Wrapf(ErrInvalidRole, "address %s - revoking roles multiple times?", addrRoles.Address) - } - for _, role := range addrRoles.Roles { - if role == EVERYONE { - return errors.Wrapf(ErrInvalidRole, "role %s can not be set / revoked", EVERYONE) - } - } - foundAddresses[addrRoles.Address] = struct{}{} - } - return nil -} - -func (m *MsgRevokeNamespaceRoles) GetSignBytes() []byte { - return sdk.MustSortJSON(ModuleCdc.MustMarshal(m)) -} - -func (m MsgRevokeNamespaceRoles) GetSigners() []sdk.AccAddress { - addr, _ := sdk.AccAddressFromBech32(m.Sender) - return []sdk.AccAddress{addr} -} - -func (m MsgClaimVoucher) Route() string { return routerKey } - -func (m MsgClaimVoucher) Type() string { return TypeMsgClaimVoucher } - -func (msg MsgClaimVoucher) ValidateBasic() error { - if _, err := sdk.AccAddressFromBech32(msg.Sender); err != nil { - return err - } - - if msg.Denom == "" { - return fmt.Errorf("invalid denom") - } - return nil -} - -func (m *MsgClaimVoucher) GetSignBytes() []byte { - return sdk.MustSortJSON(ModuleCdc.MustMarshal(m)) -} - -func (m MsgClaimVoucher) GetSigners() []sdk.AccAddress { - addr, _ := sdk.AccAddressFromBech32(m.Sender) - return []sdk.AccAddress{addr} -} diff --git a/chain/permissions/types/params.go b/chain/permissions/types/params.go deleted file mode 100644 index c8ff643e..00000000 --- a/chain/permissions/types/params.go +++ /dev/null @@ -1,33 +0,0 @@ -package types - -import ( - paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" -) - -// ParamTable -func ParamKeyTable() paramtypes.KeyTable { - return paramtypes.NewKeyTable().RegisterParamSet(&Params{}) -} - -func NewParams(wasmHookQueryMaxGas uint64) Params { - return Params{ - WasmHookQueryMaxGas: wasmHookQueryMaxGas, - } -} - -// default module parameters. -func DefaultParams() Params { - return Params{ - WasmHookQueryMaxGas: 200_000, - } -} - -// validate params. -func (p Params) Validate() error { - return nil -} - -// Implements params.ParamSet. -func (p *Params) ParamSetPairs() paramtypes.ParamSetPairs { - return paramtypes.ParamSetPairs{} -} diff --git a/chain/permissions/types/permissions.pb.go b/chain/permissions/types/permissions.pb.go index 8dac3cbb..c642dda9 100644 --- a/chain/permissions/types/permissions.pb.go +++ b/chain/permissions/types/permissions.pb.go @@ -29,24 +29,52 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package type Action int32 const ( + // 0 is reserved for ACTION_UNSPECIFIED Action_UNSPECIFIED Action = 0 - Action_MINT Action = 1 - Action_RECEIVE Action = 2 - Action_BURN Action = 4 + // 1 is reserved for MINT + Action_MINT Action = 1 + // 2 is reserved for RECEIVE + Action_RECEIVE Action = 2 + // 4 is reserved for BURN + Action_BURN Action = 4 + // 8 is reserved for SEND + Action_SEND Action = 8 + // 16 is reserved for SUPER_BURN + Action_SUPER_BURN Action = 16 + // 134217728 is reserved for MODIFY_POLICY_MANAGERS + Action_MODIFY_POLICY_MANAGERS Action = 134217728 + // 268435456 is reserved for MODIFY_CONTRACT_HOOK + Action_MODIFY_CONTRACT_HOOK Action = 268435456 + // 536870912 is reserved for MODIFY_ROLE_PERMISSIONS + Action_MODIFY_ROLE_PERMISSIONS Action = 536870912 + // 1073741824 is reserved for MODIFY_ROLE_MANAGERS + Action_MODIFY_ROLE_MANAGERS Action = 1073741824 ) var Action_name = map[int32]string{ - 0: "UNSPECIFIED", - 1: "MINT", - 2: "RECEIVE", - 4: "BURN", + 0: "UNSPECIFIED", + 1: "MINT", + 2: "RECEIVE", + 4: "BURN", + 8: "SEND", + 16: "SUPER_BURN", + 134217728: "MODIFY_POLICY_MANAGERS", + 268435456: "MODIFY_CONTRACT_HOOK", + 536870912: "MODIFY_ROLE_PERMISSIONS", + 1073741824: "MODIFY_ROLE_MANAGERS", } var Action_value = map[string]int32{ - "UNSPECIFIED": 0, - "MINT": 1, - "RECEIVE": 2, - "BURN": 4, + "UNSPECIFIED": 0, + "MINT": 1, + "RECEIVE": 2, + "BURN": 4, + "SEND": 8, + "SUPER_BURN": 16, + "MODIFY_POLICY_MANAGERS": 134217728, + "MODIFY_CONTRACT_HOOK": 268435456, + "MODIFY_ROLE_PERMISSIONS": 536870912, + "MODIFY_ROLE_MANAGERS": 1073741824, } func (x Action) String() string { @@ -59,13 +87,13 @@ func (Action) EnumDescriptor() ([]byte, []int) { // Namespace defines a permissions namespace type Namespace struct { - Denom string `protobuf:"bytes,1,opt,name=denom,proto3" json:"denom,omitempty"` - WasmHook string `protobuf:"bytes,2,opt,name=wasm_hook,json=wasmHook,proto3" json:"wasm_hook,omitempty"` - MintsPaused bool `protobuf:"varint,3,opt,name=mints_paused,json=mintsPaused,proto3" json:"mints_paused,omitempty"` - SendsPaused bool `protobuf:"varint,4,opt,name=sends_paused,json=sendsPaused,proto3" json:"sends_paused,omitempty"` - BurnsPaused bool `protobuf:"varint,5,opt,name=burns_paused,json=burnsPaused,proto3" json:"burns_paused,omitempty"` - RolePermissions []*Role `protobuf:"bytes,6,rep,name=role_permissions,json=rolePermissions,proto3" json:"role_permissions,omitempty"` - AddressRoles []*AddressRoles `protobuf:"bytes,7,rep,name=address_roles,json=addressRoles,proto3" json:"address_roles,omitempty"` + Denom string `protobuf:"bytes,1,opt,name=denom,proto3" json:"denom,omitempty"` + ContractHook string `protobuf:"bytes,2,opt,name=contract_hook,json=contractHook,proto3" json:"contract_hook,omitempty"` + RolePermissions []*Role `protobuf:"bytes,3,rep,name=role_permissions,json=rolePermissions,proto3" json:"role_permissions,omitempty"` + ActorRoles []*ActorRoles `protobuf:"bytes,4,rep,name=actor_roles,json=actorRoles,proto3" json:"actor_roles,omitempty"` + RoleManagers []*RoleManager `protobuf:"bytes,5,rep,name=role_managers,json=roleManagers,proto3" json:"role_managers,omitempty"` + PolicyStatuses []*PolicyStatus `protobuf:"bytes,6,rep,name=policy_statuses,json=policyStatuses,proto3" json:"policy_statuses,omitempty"` + PolicyManagerCapabilities []*PolicyManagerCapability `protobuf:"bytes,7,rep,name=policy_manager_capabilities,json=policyManagerCapabilities,proto3" json:"policy_manager_capabilities,omitempty"` } func (m *Namespace) Reset() { *m = Namespace{} } @@ -108,65 +136,66 @@ func (m *Namespace) GetDenom() string { return "" } -func (m *Namespace) GetWasmHook() string { +func (m *Namespace) GetContractHook() string { if m != nil { - return m.WasmHook + return m.ContractHook } return "" } -func (m *Namespace) GetMintsPaused() bool { +func (m *Namespace) GetRolePermissions() []*Role { if m != nil { - return m.MintsPaused + return m.RolePermissions } - return false + return nil } -func (m *Namespace) GetSendsPaused() bool { +func (m *Namespace) GetActorRoles() []*ActorRoles { if m != nil { - return m.SendsPaused + return m.ActorRoles } - return false + return nil } -func (m *Namespace) GetBurnsPaused() bool { +func (m *Namespace) GetRoleManagers() []*RoleManager { if m != nil { - return m.BurnsPaused + return m.RoleManagers } - return false + return nil } -func (m *Namespace) GetRolePermissions() []*Role { +func (m *Namespace) GetPolicyStatuses() []*PolicyStatus { if m != nil { - return m.RolePermissions + return m.PolicyStatuses } return nil } -func (m *Namespace) GetAddressRoles() []*AddressRoles { +func (m *Namespace) GetPolicyManagerCapabilities() []*PolicyManagerCapability { if m != nil { - return m.AddressRoles + return m.PolicyManagerCapabilities } return nil } -type AddressRoles struct { - Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` - Roles []string `protobuf:"bytes,2,rep,name=roles,proto3" json:"roles,omitempty"` +// AddressRoles defines roles for an actor +type ActorRoles struct { + Actor string `protobuf:"bytes,1,opt,name=actor,proto3" json:"actor,omitempty"` + Roles []string `protobuf:"bytes,2,rep,name=roles,proto3" json:"roles,omitempty"` } -func (m *AddressRoles) Reset() { *m = AddressRoles{} } -func (m *AddressRoles) String() string { return proto.CompactTextString(m) } -func (*AddressRoles) ProtoMessage() {} -func (*AddressRoles) Descriptor() ([]byte, []int) { +func (m *ActorRoles) Reset() { *m = ActorRoles{} } +func (m *ActorRoles) String() string { return proto.CompactTextString(m) } +func (*ActorRoles) ProtoMessage() {} +func (*ActorRoles) Descriptor() ([]byte, []int) { return fileDescriptor_6d25f3ecf3806c6c, []int{1} } -func (m *AddressRoles) XXX_Unmarshal(b []byte) error { +func (m *ActorRoles) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *AddressRoles) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *ActorRoles) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_AddressRoles.Marshal(b, m, deterministic) + return xxx_messageInfo_ActorRoles.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -176,43 +205,211 @@ func (m *AddressRoles) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) return b[:n], nil } } -func (m *AddressRoles) XXX_Merge(src proto.Message) { - xxx_messageInfo_AddressRoles.Merge(m, src) +func (m *ActorRoles) XXX_Merge(src proto.Message) { + xxx_messageInfo_ActorRoles.Merge(m, src) } -func (m *AddressRoles) XXX_Size() int { +func (m *ActorRoles) XXX_Size() int { return m.Size() } -func (m *AddressRoles) XXX_DiscardUnknown() { - xxx_messageInfo_AddressRoles.DiscardUnknown(m) +func (m *ActorRoles) XXX_DiscardUnknown() { + xxx_messageInfo_ActorRoles.DiscardUnknown(m) } -var xxx_messageInfo_AddressRoles proto.InternalMessageInfo +var xxx_messageInfo_ActorRoles proto.InternalMessageInfo -func (m *AddressRoles) GetAddress() string { +func (m *ActorRoles) GetActor() string { if m != nil { - return m.Address + return m.Actor + } + return "" +} + +func (m *ActorRoles) GetRoles() []string { + if m != nil { + return m.Roles + } + return nil +} + +// RoleActors defines actors for a role +type RoleActors struct { + Role string `protobuf:"bytes,1,opt,name=role,proto3" json:"role,omitempty"` + Actors []string `protobuf:"bytes,2,rep,name=actors,proto3" json:"actors,omitempty"` +} + +func (m *RoleActors) Reset() { *m = RoleActors{} } +func (m *RoleActors) String() string { return proto.CompactTextString(m) } +func (*RoleActors) ProtoMessage() {} +func (*RoleActors) Descriptor() ([]byte, []int) { + return fileDescriptor_6d25f3ecf3806c6c, []int{2} +} +func (m *RoleActors) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RoleActors) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RoleActors.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RoleActors) XXX_Merge(src proto.Message) { + xxx_messageInfo_RoleActors.Merge(m, src) +} +func (m *RoleActors) XXX_Size() int { + return m.Size() +} +func (m *RoleActors) XXX_DiscardUnknown() { + xxx_messageInfo_RoleActors.DiscardUnknown(m) +} + +var xxx_messageInfo_RoleActors proto.InternalMessageInfo + +func (m *RoleActors) GetRole() string { + if m != nil { + return m.Role + } + return "" +} + +func (m *RoleActors) GetActors() []string { + if m != nil { + return m.Actors + } + return nil +} + +// RoleManager defines roles for a manager address +type RoleManager struct { + Manager string `protobuf:"bytes,1,opt,name=manager,proto3" json:"manager,omitempty"` + Roles []string `protobuf:"bytes,2,rep,name=roles,proto3" json:"roles,omitempty"` +} + +func (m *RoleManager) Reset() { *m = RoleManager{} } +func (m *RoleManager) String() string { return proto.CompactTextString(m) } +func (*RoleManager) ProtoMessage() {} +func (*RoleManager) Descriptor() ([]byte, []int) { + return fileDescriptor_6d25f3ecf3806c6c, []int{3} +} +func (m *RoleManager) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RoleManager) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RoleManager.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RoleManager) XXX_Merge(src proto.Message) { + xxx_messageInfo_RoleManager.Merge(m, src) +} +func (m *RoleManager) XXX_Size() int { + return m.Size() +} +func (m *RoleManager) XXX_DiscardUnknown() { + xxx_messageInfo_RoleManager.DiscardUnknown(m) +} + +var xxx_messageInfo_RoleManager proto.InternalMessageInfo + +func (m *RoleManager) GetManager() string { + if m != nil { + return m.Manager } return "" } -func (m *AddressRoles) GetRoles() []string { +func (m *RoleManager) GetRoles() []string { if m != nil { return m.Roles } return nil } +// PolicyStatus defines the status of a policy +type PolicyStatus struct { + Action Action `protobuf:"varint,1,opt,name=action,proto3,enum=injective.permissions.v1beta1.Action" json:"action,omitempty"` + IsDisabled bool `protobuf:"varint,2,opt,name=is_disabled,json=isDisabled,proto3" json:"is_disabled,omitempty"` + IsSealed bool `protobuf:"varint,3,opt,name=is_sealed,json=isSealed,proto3" json:"is_sealed,omitempty"` +} + +func (m *PolicyStatus) Reset() { *m = PolicyStatus{} } +func (m *PolicyStatus) String() string { return proto.CompactTextString(m) } +func (*PolicyStatus) ProtoMessage() {} +func (*PolicyStatus) Descriptor() ([]byte, []int) { + return fileDescriptor_6d25f3ecf3806c6c, []int{4} +} +func (m *PolicyStatus) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *PolicyStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_PolicyStatus.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *PolicyStatus) XXX_Merge(src proto.Message) { + xxx_messageInfo_PolicyStatus.Merge(m, src) +} +func (m *PolicyStatus) XXX_Size() int { + return m.Size() +} +func (m *PolicyStatus) XXX_DiscardUnknown() { + xxx_messageInfo_PolicyStatus.DiscardUnknown(m) +} + +var xxx_messageInfo_PolicyStatus proto.InternalMessageInfo + +func (m *PolicyStatus) GetAction() Action { + if m != nil { + return m.Action + } + return Action_UNSPECIFIED +} + +func (m *PolicyStatus) GetIsDisabled() bool { + if m != nil { + return m.IsDisabled + } + return false +} + +func (m *PolicyStatus) GetIsSealed() bool { + if m != nil { + return m.IsSealed + } + return false +} + // Role is only used for storage type Role struct { - Role string `protobuf:"bytes,1,opt,name=role,proto3" json:"role,omitempty"` - Permissions uint32 `protobuf:"varint,2,opt,name=permissions,proto3" json:"permissions,omitempty"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + RoleId uint32 `protobuf:"varint,2,opt,name=role_id,json=roleId,proto3" json:"role_id,omitempty"` + Permissions uint32 `protobuf:"varint,3,opt,name=permissions,proto3" json:"permissions,omitempty"` } func (m *Role) Reset() { *m = Role{} } func (m *Role) String() string { return proto.CompactTextString(m) } func (*Role) ProtoMessage() {} func (*Role) Descriptor() ([]byte, []int) { - return fileDescriptor_6d25f3ecf3806c6c, []int{2} + return fileDescriptor_6d25f3ecf3806c6c, []int{5} } func (m *Role) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -241,13 +438,20 @@ func (m *Role) XXX_DiscardUnknown() { var xxx_messageInfo_Role proto.InternalMessageInfo -func (m *Role) GetRole() string { +func (m *Role) GetName() string { if m != nil { - return m.Role + return m.Name } return "" } +func (m *Role) GetRoleId() uint32 { + if m != nil { + return m.RoleId + } + return 0 +} + func (m *Role) GetPermissions() uint32 { if m != nil { return m.Permissions @@ -255,6 +459,75 @@ func (m *Role) GetPermissions() uint32 { return 0 } +// PolicyManagerCapability defines the capabilities of a manager for a policy +type PolicyManagerCapability struct { + Manager string `protobuf:"bytes,1,opt,name=manager,proto3" json:"manager,omitempty"` + Action Action `protobuf:"varint,2,opt,name=action,proto3,enum=injective.permissions.v1beta1.Action" json:"action,omitempty"` + CanDisable bool `protobuf:"varint,3,opt,name=can_disable,json=canDisable,proto3" json:"can_disable,omitempty"` + CanSeal bool `protobuf:"varint,4,opt,name=can_seal,json=canSeal,proto3" json:"can_seal,omitempty"` +} + +func (m *PolicyManagerCapability) Reset() { *m = PolicyManagerCapability{} } +func (m *PolicyManagerCapability) String() string { return proto.CompactTextString(m) } +func (*PolicyManagerCapability) ProtoMessage() {} +func (*PolicyManagerCapability) Descriptor() ([]byte, []int) { + return fileDescriptor_6d25f3ecf3806c6c, []int{6} +} +func (m *PolicyManagerCapability) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *PolicyManagerCapability) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_PolicyManagerCapability.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *PolicyManagerCapability) XXX_Merge(src proto.Message) { + xxx_messageInfo_PolicyManagerCapability.Merge(m, src) +} +func (m *PolicyManagerCapability) XXX_Size() int { + return m.Size() +} +func (m *PolicyManagerCapability) XXX_DiscardUnknown() { + xxx_messageInfo_PolicyManagerCapability.DiscardUnknown(m) +} + +var xxx_messageInfo_PolicyManagerCapability proto.InternalMessageInfo + +func (m *PolicyManagerCapability) GetManager() string { + if m != nil { + return m.Manager + } + return "" +} + +func (m *PolicyManagerCapability) GetAction() Action { + if m != nil { + return m.Action + } + return Action_UNSPECIFIED +} + +func (m *PolicyManagerCapability) GetCanDisable() bool { + if m != nil { + return m.CanDisable + } + return false +} + +func (m *PolicyManagerCapability) GetCanSeal() bool { + if m != nil { + return m.CanSeal + } + return false +} + // used in storage type RoleIDs struct { RoleIds []uint32 `protobuf:"varint,1,rep,packed,name=role_ids,json=roleIds,proto3" json:"role_ids,omitempty"` @@ -264,7 +537,7 @@ func (m *RoleIDs) Reset() { *m = RoleIDs{} } func (m *RoleIDs) String() string { return proto.CompactTextString(m) } func (*RoleIDs) ProtoMessage() {} func (*RoleIDs) Descriptor() ([]byte, []int) { - return fileDescriptor_6d25f3ecf3806c6c, []int{3} + return fileDescriptor_6d25f3ecf3806c6c, []int{7} } func (m *RoleIDs) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -300,6 +573,7 @@ func (m *RoleIDs) GetRoleIds() []uint32 { return nil } +// Voucher is used to represent a voucher type Voucher struct { Coins github_com_cosmos_cosmos_sdk_types.Coins `protobuf:"bytes,1,rep,name=coins,proto3,castrepeated=github.com/cosmos/cosmos-sdk/types.Coins" json:"coins"` } @@ -308,7 +582,7 @@ func (m *Voucher) Reset() { *m = Voucher{} } func (m *Voucher) String() string { return proto.CompactTextString(m) } func (*Voucher) ProtoMessage() {} func (*Voucher) Descriptor() ([]byte, []int) { - return fileDescriptor_6d25f3ecf3806c6c, []int{4} + return fileDescriptor_6d25f3ecf3806c6c, []int{8} } func (m *Voucher) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -344,16 +618,17 @@ func (m *Voucher) GetCoins() github_com_cosmos_cosmos_sdk_types.Coins { return nil } +// AddressVoucher is used to represent a voucher for a specific address type AddressVoucher struct { - Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` - Voucher *Voucher `protobuf:"bytes,2,opt,name=voucher,proto3" json:"voucher,omitempty"` + Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` + Voucher github_com_cosmos_cosmos_sdk_types.Coin `protobuf:"bytes,2,opt,name=voucher,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Coin" json:"voucher,omitempty"` } func (m *AddressVoucher) Reset() { *m = AddressVoucher{} } func (m *AddressVoucher) String() string { return proto.CompactTextString(m) } func (*AddressVoucher) ProtoMessage() {} func (*AddressVoucher) Descriptor() ([]byte, []int) { - return fileDescriptor_6d25f3ecf3806c6c, []int{5} + return fileDescriptor_6d25f3ecf3806c6c, []int{9} } func (m *AddressVoucher) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -389,18 +664,15 @@ func (m *AddressVoucher) GetAddress() string { return "" } -func (m *AddressVoucher) GetVoucher() *Voucher { - if m != nil { - return m.Voucher - } - return nil -} - func init() { proto.RegisterEnum("injective.permissions.v1beta1.Action", Action_name, Action_value) proto.RegisterType((*Namespace)(nil), "injective.permissions.v1beta1.Namespace") - proto.RegisterType((*AddressRoles)(nil), "injective.permissions.v1beta1.AddressRoles") + proto.RegisterType((*ActorRoles)(nil), "injective.permissions.v1beta1.ActorRoles") + proto.RegisterType((*RoleActors)(nil), "injective.permissions.v1beta1.RoleActors") + proto.RegisterType((*RoleManager)(nil), "injective.permissions.v1beta1.RoleManager") + proto.RegisterType((*PolicyStatus)(nil), "injective.permissions.v1beta1.PolicyStatus") proto.RegisterType((*Role)(nil), "injective.permissions.v1beta1.Role") + proto.RegisterType((*PolicyManagerCapability)(nil), "injective.permissions.v1beta1.PolicyManagerCapability") proto.RegisterType((*RoleIDs)(nil), "injective.permissions.v1beta1.RoleIDs") proto.RegisterType((*Voucher)(nil), "injective.permissions.v1beta1.Voucher") proto.RegisterType((*AddressVoucher)(nil), "injective.permissions.v1beta1.AddressVoucher") @@ -411,43 +683,64 @@ func init() { } var fileDescriptor_6d25f3ecf3806c6c = []byte{ - // 567 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x53, 0x4d, 0x8f, 0xd2, 0x4e, - 0x18, 0xa7, 0xbc, 0x15, 0xa6, 0xf0, 0x5f, 0x32, 0xd9, 0x43, 0x77, 0xff, 0xb1, 0x8b, 0xd5, 0x18, - 0xa2, 0xd9, 0xd6, 0xc5, 0x9b, 0x31, 0xc6, 0x85, 0xc5, 0xd8, 0x44, 0x09, 0x56, 0x77, 0x0f, 0x5e, - 0x48, 0x5f, 0x26, 0x30, 0x42, 0x3b, 0xa4, 0x4f, 0xc1, 0xf8, 0x2d, 0xfc, 0x1c, 0x7e, 0x92, 0xf5, - 0xb6, 0x47, 0x4f, 0x6a, 0xe0, 0x8b, 0x98, 0x99, 0x29, 0x50, 0x0f, 0xba, 0x27, 0xfa, 0xfc, 0x5e, - 0x9e, 0xe1, 0xf9, 0xcd, 0x33, 0xc8, 0xa6, 0xf1, 0x47, 0x12, 0xa4, 0x74, 0x45, 0xec, 0x05, 0x49, - 0x22, 0x0a, 0x40, 0x59, 0x0c, 0xf6, 0xea, 0xcc, 0x27, 0xa9, 0x77, 0x96, 0xc7, 0xac, 0x45, 0xc2, - 0x52, 0x86, 0xef, 0xec, 0x0c, 0x56, 0x9e, 0xcc, 0x0c, 0xc7, 0x87, 0x13, 0x36, 0x61, 0x42, 0x69, - 0xf3, 0x2f, 0x69, 0x3a, 0x36, 0x02, 0x06, 0x11, 0x03, 0xdb, 0xf7, 0x80, 0xec, 0x7a, 0x07, 0x8c, - 0xc6, 0x92, 0x37, 0xbf, 0x15, 0x51, 0x7d, 0xe8, 0x45, 0x04, 0x16, 0x5e, 0x40, 0xf0, 0x21, 0xaa, - 0x84, 0x24, 0x66, 0x91, 0xae, 0xb4, 0x95, 0x4e, 0xdd, 0x95, 0x05, 0xfe, 0x1f, 0xd5, 0x3f, 0x79, - 0x10, 0x8d, 0xa7, 0x8c, 0xcd, 0xf4, 0xa2, 0x60, 0x6a, 0x1c, 0x78, 0xc5, 0xd8, 0x0c, 0xdf, 0x45, - 0x8d, 0x88, 0xc6, 0x29, 0x8c, 0x17, 0xde, 0x12, 0x48, 0xa8, 0x97, 0xda, 0x4a, 0xa7, 0xe6, 0x6a, - 0x02, 0x1b, 0x09, 0x88, 0x4b, 0x80, 0xc4, 0xe1, 0x4e, 0x52, 0x96, 0x12, 0x81, 0xed, 0x25, 0xfe, - 0x32, 0x89, 0x77, 0x92, 0x8a, 0x94, 0x08, 0x2c, 0x93, 0x0c, 0x51, 0x2b, 0x61, 0x73, 0x32, 0xce, - 0xcd, 0xae, 0x57, 0xdb, 0xa5, 0x8e, 0xd6, 0xbd, 0x67, 0xfd, 0x33, 0x19, 0xcb, 0x65, 0x73, 0xe2, - 0x1e, 0x70, 0xf3, 0x68, 0xcf, 0xe2, 0x11, 0x6a, 0x7a, 0x61, 0x98, 0x10, 0x80, 0x31, 0xa7, 0x40, - 0x57, 0x45, 0xb3, 0x47, 0xb7, 0x34, 0x3b, 0x97, 0x1e, 0xde, 0x13, 0xdc, 0x86, 0x97, 0xab, 0xcc, - 0xe7, 0xa8, 0x91, 0x67, 0xb1, 0x8e, 0xd4, 0x8c, 0xcf, 0xf2, 0xdc, 0x96, 0x3c, 0x67, 0x79, 0x66, - 0xb1, 0x5d, 0xe2, 0x39, 0x8b, 0xc2, 0x7c, 0x86, 0xca, 0xdc, 0x88, 0x31, 0x2a, 0x73, 0x20, 0x33, - 0x89, 0x6f, 0xdc, 0x46, 0x5a, 0x7e, 0x70, 0x7e, 0x0b, 0x4d, 0x37, 0x0f, 0x99, 0xf7, 0x91, 0xca, - 0xdd, 0xce, 0x05, 0xe0, 0x23, 0x54, 0x13, 0x51, 0xd1, 0x90, 0x9f, 0x5c, 0xea, 0x34, 0x5d, 0x95, - 0xd7, 0x4e, 0x08, 0xe6, 0x1c, 0xa9, 0x57, 0x6c, 0x19, 0x4c, 0x49, 0x82, 0x3d, 0x54, 0xe1, 0x8b, - 0x20, 0x25, 0x5a, 0xf7, 0xc8, 0x92, 0xab, 0x62, 0xf1, 0x55, 0xd9, 0x8d, 0xdb, 0x67, 0x34, 0xee, - 0x3d, 0xbe, 0xfe, 0x71, 0x52, 0xf8, 0xfa, 0xf3, 0xa4, 0x33, 0xa1, 0xe9, 0x74, 0xe9, 0x5b, 0x01, - 0x8b, 0xec, 0x6c, 0xaf, 0xe4, 0xcf, 0x29, 0x84, 0x33, 0x3b, 0xfd, 0xbc, 0x20, 0x20, 0x0c, 0xe0, - 0xca, 0xce, 0xe6, 0x1c, 0xfd, 0x97, 0x25, 0xb2, 0x3d, 0xf4, 0xef, 0x99, 0xbc, 0x40, 0xea, 0x4a, - 0x8a, 0xc4, 0x74, 0x5a, 0xf7, 0xc1, 0x2d, 0x37, 0x91, 0xb5, 0x74, 0xb7, 0xb6, 0x87, 0x4f, 0x51, - 0xf5, 0x3c, 0x48, 0x29, 0x8b, 0xf1, 0x01, 0xd2, 0x2e, 0x87, 0xef, 0x46, 0x83, 0xbe, 0xf3, 0xd2, - 0x19, 0x5c, 0xb4, 0x0a, 0xb8, 0x86, 0xca, 0x6f, 0x9c, 0xe1, 0xfb, 0x96, 0x82, 0x35, 0xa4, 0xba, - 0x83, 0xfe, 0xc0, 0xb9, 0x1a, 0xb4, 0x8a, 0x1c, 0xee, 0x5d, 0xba, 0xc3, 0x56, 0xb9, 0x37, 0xbb, - 0x5e, 0x1b, 0xca, 0xcd, 0xda, 0x50, 0x7e, 0xad, 0x0d, 0xe5, 0xcb, 0xc6, 0x28, 0xdc, 0x6c, 0x8c, - 0xc2, 0xf7, 0x8d, 0x51, 0xf8, 0xf0, 0x36, 0x37, 0xb4, 0xb3, 0xfd, 0x43, 0xaf, 0x3d, 0x1f, 0xf6, - 0x0f, 0xf8, 0x34, 0x60, 0x09, 0xc9, 0x97, 0x53, 0x8f, 0xc6, 0x76, 0xc4, 0xc2, 0xe5, 0x9c, 0xc0, - 0x1f, 0xaf, 0x5b, 0x64, 0xe4, 0x57, 0xc5, 0xdb, 0x7b, 0xf2, 0x3b, 0x00, 0x00, 0xff, 0xff, 0xf3, - 0xf2, 0xce, 0xa8, 0x03, 0x04, 0x00, 0x00, + // 901 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x55, 0xcf, 0x6f, 0x1b, 0x45, + 0x14, 0xf6, 0xda, 0x8e, 0xd7, 0x79, 0xce, 0x0f, 0x33, 0x8a, 0x9a, 0x4d, 0x4b, 0x6d, 0xcb, 0x05, + 0x11, 0x0a, 0xb5, 0x69, 0x90, 0x10, 0x97, 0x4a, 0x38, 0xf6, 0x96, 0x2e, 0xc4, 0x3f, 0x18, 0x27, + 0x95, 0xca, 0x65, 0x35, 0x5e, 0x8f, 0x92, 0x21, 0xde, 0x1d, 0x6b, 0x67, 0x13, 0xc9, 0x37, 0x73, + 0xe6, 0xc2, 0x3f, 0xc1, 0x85, 0x03, 0x7f, 0x47, 0x8f, 0x39, 0x22, 0x0e, 0x01, 0x25, 0x37, 0xfe, + 0x0a, 0x34, 0xb3, 0xb3, 0xf6, 0x56, 0x22, 0x3f, 0xd4, 0x93, 0xe7, 0xbd, 0x6f, 0xbe, 0xef, 0xbd, + 0xf9, 0xf6, 0x79, 0x06, 0x9a, 0x2c, 0xf8, 0x89, 0x7a, 0x11, 0x3b, 0xa7, 0xcd, 0x29, 0x0d, 0x7d, + 0x26, 0x04, 0xe3, 0x81, 0x68, 0x9e, 0x3f, 0x1f, 0xd1, 0x88, 0x3c, 0x4f, 0xe7, 0x1a, 0xd3, 0x90, + 0x47, 0x1c, 0x3d, 0x5e, 0x10, 0x1a, 0x69, 0x50, 0x13, 0x1e, 0x56, 0x3c, 0x2e, 0x7c, 0x2e, 0x9a, + 0x23, 0x22, 0xe8, 0x42, 0xc5, 0xe3, 0x2c, 0x88, 0xe9, 0x0f, 0xb7, 0x8e, 0xf9, 0x31, 0x57, 0xcb, + 0xa6, 0x5c, 0xc5, 0xd9, 0xfa, 0xcf, 0x79, 0x58, 0xed, 0x11, 0x9f, 0x8a, 0x29, 0xf1, 0x28, 0xda, + 0x82, 0x95, 0x31, 0x0d, 0xb8, 0x6f, 0x19, 0x35, 0x63, 0x77, 0x15, 0xc7, 0x01, 0x7a, 0x02, 0xeb, + 0x1e, 0x0f, 0xa2, 0x90, 0x78, 0x91, 0x7b, 0xc2, 0xf9, 0xa9, 0x95, 0x55, 0xe8, 0x5a, 0x92, 0x7c, + 0xc5, 0xf9, 0x29, 0xea, 0x41, 0x39, 0xe4, 0x13, 0xea, 0xa6, 0x5a, 0xb3, 0x72, 0xb5, 0xdc, 0x6e, + 0x69, 0xef, 0x49, 0xe3, 0xd6, 0xc6, 0x1b, 0x98, 0x4f, 0x28, 0xde, 0x94, 0xe4, 0xc1, 0x12, 0x45, + 0xdf, 0x41, 0x89, 0x78, 0x11, 0x0f, 0x5d, 0x09, 0x08, 0x2b, 0xaf, 0xa4, 0x3e, 0xbd, 0x43, 0xaa, + 0x25, 0x19, 0x52, 0x4f, 0x60, 0x20, 0x8b, 0x35, 0xea, 0xc3, 0xba, 0xea, 0xcd, 0x27, 0x01, 0x39, + 0xa6, 0xa1, 0xb0, 0x56, 0x94, 0xda, 0xd3, 0x7b, 0x34, 0xd6, 0x8d, 0x29, 0x78, 0x2d, 0x5c, 0x06, + 0x02, 0x1d, 0xc2, 0xe6, 0x94, 0x4f, 0x98, 0x37, 0x73, 0x45, 0x44, 0xa2, 0x33, 0x41, 0x85, 0x55, + 0x50, 0x92, 0x9f, 0xdd, 0x21, 0x39, 0x50, 0xac, 0xa1, 0x22, 0xe1, 0x8d, 0x69, 0x2a, 0xa2, 0x02, + 0x9d, 0xc3, 0x23, 0xad, 0xaa, 0x1b, 0x75, 0x3d, 0x32, 0x25, 0x23, 0x36, 0x61, 0x11, 0xa3, 0xc2, + 0x32, 0x55, 0x85, 0xaf, 0xee, 0x55, 0x41, 0x77, 0xda, 0x4e, 0xf8, 0x33, 0xbc, 0x33, 0xfd, 0x5f, + 0x80, 0x51, 0x51, 0xff, 0x1a, 0x60, 0x69, 0x9c, 0x9c, 0x01, 0x65, 0x5d, 0x32, 0x03, 0x2a, 0x90, + 0xd9, 0xf8, 0x43, 0x64, 0x6b, 0x39, 0x99, 0x55, 0x81, 0x64, 0x4a, 0x92, 0x62, 0x0b, 0x84, 0x20, + 0x2f, 0xd3, 0x9a, 0xa8, 0xd6, 0xe8, 0x01, 0x14, 0x94, 0x40, 0x42, 0xd4, 0x51, 0xfd, 0x05, 0x94, + 0x52, 0xf6, 0x22, 0x0b, 0x4c, 0x7d, 0x66, 0xcd, 0x4e, 0xc2, 0x1b, 0x0a, 0xff, 0x62, 0xc0, 0x5a, + 0xda, 0x4b, 0xf4, 0x42, 0xd5, 0x61, 0x3c, 0x50, 0xfc, 0x8d, 0xbd, 0x8f, 0xef, 0x9e, 0x14, 0xc6, + 0x03, 0xac, 0x49, 0xa8, 0x0a, 0x25, 0x26, 0xdc, 0x31, 0x13, 0x64, 0x34, 0xa1, 0x63, 0x35, 0xe0, + 0x45, 0x0c, 0x4c, 0x74, 0x74, 0x06, 0x3d, 0x82, 0x55, 0x26, 0x5c, 0x41, 0x89, 0x84, 0x73, 0x0a, + 0x2e, 0x32, 0x31, 0x54, 0x71, 0xfd, 0x08, 0xf2, 0xf2, 0x30, 0xd2, 0x80, 0x80, 0xf8, 0x0b, 0x03, + 0xe4, 0x1a, 0x6d, 0x83, 0xa9, 0x66, 0x8f, 0xc5, 0xaa, 0xeb, 0xb8, 0x20, 0x43, 0x67, 0x8c, 0x6a, + 0x50, 0x7a, 0xf7, 0xbf, 0x22, 0xc1, 0x74, 0xaa, 0xfe, 0x87, 0x01, 0xdb, 0x37, 0x7c, 0xce, 0x5b, + 0x0c, 0x5b, 0x3a, 0x91, 0x7d, 0x4f, 0x27, 0x3c, 0x12, 0x24, 0x56, 0xe8, 0xa3, 0x82, 0x47, 0x02, + 0x6d, 0x05, 0xda, 0x81, 0xa2, 0xdc, 0x20, 0xad, 0xb0, 0xf2, 0x0a, 0x35, 0x3d, 0x12, 0x48, 0x27, + 0xea, 0x1f, 0x81, 0x29, 0x7d, 0x70, 0x3a, 0x42, 0xee, 0xd2, 0xc7, 0x16, 0x96, 0x51, 0xcb, 0xed, + 0xae, 0x63, 0x33, 0x3e, 0xb7, 0xa8, 0x4f, 0xc0, 0x7c, 0xcd, 0xcf, 0xbc, 0x13, 0x1a, 0x22, 0x02, + 0x2b, 0xf2, 0x86, 0x8a, 0xb7, 0x94, 0xf6, 0x76, 0x1a, 0xf1, 0x1d, 0xd6, 0x90, 0x77, 0xd8, 0xa2, + 0xc1, 0x36, 0x67, 0xc1, 0xfe, 0x17, 0x6f, 0x2f, 0xab, 0x99, 0xdf, 0xff, 0xae, 0xee, 0x1e, 0xb3, + 0xe8, 0xe4, 0x6c, 0xd4, 0xf0, 0xb8, 0xdf, 0xd4, 0x17, 0x5e, 0xfc, 0xf3, 0x4c, 0x8c, 0x4f, 0x9b, + 0xd1, 0x6c, 0x4a, 0x85, 0x22, 0x08, 0x1c, 0x2b, 0xd7, 0x7f, 0x33, 0x60, 0xa3, 0x35, 0x1e, 0x87, + 0x54, 0x88, 0xa4, 0xaa, 0x05, 0x26, 0x89, 0x33, 0x89, 0x77, 0x3a, 0x44, 0x33, 0x30, 0xcf, 0xe3, + 0x4d, 0xca, 0xbc, 0x5b, 0x3b, 0xea, 0xc8, 0x8e, 0xfe, 0xba, 0xac, 0x7e, 0x72, 0xcf, 0x8e, 0xfe, + 0xbd, 0xac, 0x7e, 0xa0, 0xc5, 0x3f, 0xe7, 0x3e, 0x8b, 0xa8, 0x3f, 0x8d, 0x66, 0x38, 0xa9, 0xf7, + 0xf4, 0xc2, 0x80, 0x42, 0xfc, 0x29, 0xd0, 0x26, 0x94, 0x8e, 0x7a, 0xc3, 0x81, 0xdd, 0x76, 0x5e, + 0x3a, 0x76, 0xa7, 0x9c, 0x41, 0x45, 0xc8, 0x77, 0x9d, 0xde, 0x61, 0xd9, 0x40, 0x25, 0x30, 0xb1, + 0xdd, 0xb6, 0x9d, 0xd7, 0x76, 0x39, 0x2b, 0xd3, 0xfb, 0x47, 0xb8, 0x57, 0xce, 0xcb, 0xd5, 0xd0, + 0xee, 0x75, 0xca, 0x45, 0xb4, 0x01, 0x30, 0x3c, 0x1a, 0xd8, 0xd8, 0x55, 0x48, 0x19, 0x3d, 0x86, + 0x07, 0xdd, 0x7e, 0xc7, 0x79, 0xf9, 0xc6, 0x1d, 0xf4, 0x0f, 0x9c, 0xf6, 0x1b, 0xb7, 0xdb, 0xea, + 0xb5, 0xbe, 0xb5, 0xf1, 0xb0, 0x3c, 0x9f, 0xcf, 0xbf, 0x41, 0x1f, 0xc2, 0x96, 0x86, 0xdb, 0xfd, + 0xde, 0x21, 0x6e, 0xb5, 0x0f, 0xdd, 0x57, 0xfd, 0xfe, 0xf7, 0x12, 0x9c, 0x1b, 0xa8, 0x0a, 0xdb, + 0x1a, 0xc5, 0xfd, 0x03, 0xdb, 0x1d, 0xd8, 0xb8, 0xeb, 0x0c, 0x87, 0x4e, 0xbf, 0xa7, 0xd8, 0xf3, + 0x6c, 0x8a, 0xae, 0x36, 0xa4, 0xb5, 0xe7, 0xf9, 0xfd, 0xd3, 0xb7, 0x57, 0x15, 0xe3, 0xe2, 0xaa, + 0x62, 0xfc, 0x73, 0x55, 0x31, 0x7e, 0xbd, 0xae, 0x64, 0x2e, 0xae, 0x2b, 0x99, 0x3f, 0xaf, 0x2b, + 0x99, 0x1f, 0x7f, 0x48, 0x79, 0xe6, 0x24, 0xd3, 0x79, 0x40, 0x46, 0x62, 0xf9, 0x28, 0x3e, 0xf3, + 0x78, 0x48, 0xd3, 0xe1, 0x09, 0x61, 0x41, 0xd3, 0xe7, 0xe3, 0xb3, 0x09, 0x15, 0xef, 0xbc, 0x98, + 0xca, 0xe2, 0x51, 0x41, 0xbd, 0x67, 0x5f, 0xfe, 0x17, 0x00, 0x00, 0xff, 0xff, 0x9b, 0xcd, 0x22, + 0x33, 0x57, 0x07, 0x00, 0x00, } func (m *Namespace) Marshal() (dAtA []byte, err error) { @@ -470,10 +763,10 @@ func (m *Namespace) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l - if len(m.AddressRoles) > 0 { - for iNdEx := len(m.AddressRoles) - 1; iNdEx >= 0; iNdEx-- { + if len(m.PolicyManagerCapabilities) > 0 { + for iNdEx := len(m.PolicyManagerCapabilities) - 1; iNdEx >= 0; iNdEx-- { { - size, err := m.AddressRoles[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + size, err := m.PolicyManagerCapabilities[iNdEx].MarshalToSizedBuffer(dAtA[:i]) if err != nil { return 0, err } @@ -484,10 +777,10 @@ func (m *Namespace) MarshalToSizedBuffer(dAtA []byte) (int, error) { dAtA[i] = 0x3a } } - if len(m.RolePermissions) > 0 { - for iNdEx := len(m.RolePermissions) - 1; iNdEx >= 0; iNdEx-- { + if len(m.PolicyStatuses) > 0 { + for iNdEx := len(m.PolicyStatuses) - 1; iNdEx >= 0; iNdEx-- { { - size, err := m.RolePermissions[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + size, err := m.PolicyStatuses[iNdEx].MarshalToSizedBuffer(dAtA[:i]) if err != nil { return 0, err } @@ -498,40 +791,52 @@ func (m *Namespace) MarshalToSizedBuffer(dAtA []byte) (int, error) { dAtA[i] = 0x32 } } - if m.BurnsPaused { - i-- - if m.BurnsPaused { - dAtA[i] = 1 - } else { - dAtA[i] = 0 + if len(m.RoleManagers) > 0 { + for iNdEx := len(m.RoleManagers) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.RoleManagers[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintPermissions(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2a } - i-- - dAtA[i] = 0x28 } - if m.SendsPaused { - i-- - if m.SendsPaused { - dAtA[i] = 1 - } else { - dAtA[i] = 0 + if len(m.ActorRoles) > 0 { + for iNdEx := len(m.ActorRoles) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.ActorRoles[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintPermissions(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 } - i-- - dAtA[i] = 0x20 } - if m.MintsPaused { - i-- - if m.MintsPaused { - dAtA[i] = 1 - } else { - dAtA[i] = 0 + if len(m.RolePermissions) > 0 { + for iNdEx := len(m.RolePermissions) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.RolePermissions[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintPermissions(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a } - i-- - dAtA[i] = 0x18 } - if len(m.WasmHook) > 0 { - i -= len(m.WasmHook) - copy(dAtA[i:], m.WasmHook) - i = encodeVarintPermissions(dAtA, i, uint64(len(m.WasmHook))) + if len(m.ContractHook) > 0 { + i -= len(m.ContractHook) + copy(dAtA[i:], m.ContractHook) + i = encodeVarintPermissions(dAtA, i, uint64(len(m.ContractHook))) i-- dAtA[i] = 0x12 } @@ -545,7 +850,7 @@ func (m *Namespace) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func (m *AddressRoles) Marshal() (dAtA []byte, err error) { +func (m *ActorRoles) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -555,12 +860,12 @@ func (m *AddressRoles) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *AddressRoles) MarshalTo(dAtA []byte) (int, error) { +func (m *ActorRoles) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *AddressRoles) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *ActorRoles) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -574,17 +879,17 @@ func (m *AddressRoles) MarshalToSizedBuffer(dAtA []byte) (int, error) { dAtA[i] = 0x12 } } - if len(m.Address) > 0 { - i -= len(m.Address) - copy(dAtA[i:], m.Address) - i = encodeVarintPermissions(dAtA, i, uint64(len(m.Address))) + if len(m.Actor) > 0 { + i -= len(m.Actor) + copy(dAtA[i:], m.Actor) + i = encodeVarintPermissions(dAtA, i, uint64(len(m.Actor))) i-- dAtA[i] = 0xa } return len(dAtA) - i, nil } -func (m *Role) Marshal() (dAtA []byte, err error) { +func (m *RoleActors) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -594,20 +899,24 @@ func (m *Role) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *Role) MarshalTo(dAtA []byte) (int, error) { +func (m *RoleActors) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *Role) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *RoleActors) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l - if m.Permissions != 0 { - i = encodeVarintPermissions(dAtA, i, uint64(m.Permissions)) - i-- - dAtA[i] = 0x10 + if len(m.Actors) > 0 { + for iNdEx := len(m.Actors) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.Actors[iNdEx]) + copy(dAtA[i:], m.Actors[iNdEx]) + i = encodeVarintPermissions(dAtA, i, uint64(len(m.Actors[iNdEx]))) + i-- + dAtA[i] = 0x12 + } } if len(m.Role) > 0 { i -= len(m.Role) @@ -619,7 +928,7 @@ func (m *Role) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func (m *RoleIDs) Marshal() (dAtA []byte, err error) { +func (m *RoleManager) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -629,31 +938,213 @@ func (m *RoleIDs) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *RoleIDs) MarshalTo(dAtA []byte) (int, error) { +func (m *RoleManager) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *RoleIDs) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *RoleManager) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l - if len(m.RoleIds) > 0 { - dAtA2 := make([]byte, len(m.RoleIds)*10) - var j1 int - for _, num := range m.RoleIds { - for num >= 1<<7 { - dAtA2[j1] = uint8(uint64(num)&0x7f | 0x80) - num >>= 7 - j1++ - } - dAtA2[j1] = uint8(num) - j1++ + if len(m.Roles) > 0 { + for iNdEx := len(m.Roles) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.Roles[iNdEx]) + copy(dAtA[i:], m.Roles[iNdEx]) + i = encodeVarintPermissions(dAtA, i, uint64(len(m.Roles[iNdEx]))) + i-- + dAtA[i] = 0x12 } - i -= j1 - copy(dAtA[i:], dAtA2[:j1]) - i = encodeVarintPermissions(dAtA, i, uint64(j1)) + } + if len(m.Manager) > 0 { + i -= len(m.Manager) + copy(dAtA[i:], m.Manager) + i = encodeVarintPermissions(dAtA, i, uint64(len(m.Manager))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *PolicyStatus) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PolicyStatus) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *PolicyStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.IsSealed { + i-- + if m.IsSealed { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x18 + } + if m.IsDisabled { + i-- + if m.IsDisabled { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x10 + } + if m.Action != 0 { + i = encodeVarintPermissions(dAtA, i, uint64(m.Action)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *Role) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Role) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *Role) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Permissions != 0 { + i = encodeVarintPermissions(dAtA, i, uint64(m.Permissions)) + i-- + dAtA[i] = 0x18 + } + if m.RoleId != 0 { + i = encodeVarintPermissions(dAtA, i, uint64(m.RoleId)) + i-- + dAtA[i] = 0x10 + } + if len(m.Name) > 0 { + i -= len(m.Name) + copy(dAtA[i:], m.Name) + i = encodeVarintPermissions(dAtA, i, uint64(len(m.Name))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *PolicyManagerCapability) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PolicyManagerCapability) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *PolicyManagerCapability) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.CanSeal { + i-- + if m.CanSeal { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x20 + } + if m.CanDisable { + i-- + if m.CanDisable { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x18 + } + if m.Action != 0 { + i = encodeVarintPermissions(dAtA, i, uint64(m.Action)) + i-- + dAtA[i] = 0x10 + } + if len(m.Manager) > 0 { + i -= len(m.Manager) + copy(dAtA[i:], m.Manager) + i = encodeVarintPermissions(dAtA, i, uint64(len(m.Manager))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *RoleIDs) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RoleIDs) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RoleIDs) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.RoleIds) > 0 { + dAtA2 := make([]byte, len(m.RoleIds)*10) + var j1 int + for _, num := range m.RoleIds { + for num >= 1<<7 { + dAtA2[j1] = uint8(uint64(num)&0x7f | 0x80) + num >>= 7 + j1++ + } + dAtA2[j1] = uint8(num) + j1++ + } + i -= j1 + copy(dAtA[i:], dAtA2[:j1]) + i = encodeVarintPermissions(dAtA, i, uint64(j1)) i-- dAtA[i] = 0xa } @@ -717,18 +1208,16 @@ func (m *AddressVoucher) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l - if m.Voucher != nil { - { - size, err := m.Voucher.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintPermissions(dAtA, i, uint64(size)) + { + size := m.Voucher.Size() + i -= size + if _, err := m.Voucher.MarshalTo(dAtA[i:]); err != nil { + return 0, err } - i-- - dAtA[i] = 0x12 + i = encodeVarintPermissions(dAtA, i, uint64(size)) } + i-- + dAtA[i] = 0x12 if len(m.Address) > 0 { i -= len(m.Address) copy(dAtA[i:], m.Address) @@ -760,27 +1249,36 @@ func (m *Namespace) Size() (n int) { if l > 0 { n += 1 + l + sovPermissions(uint64(l)) } - l = len(m.WasmHook) + l = len(m.ContractHook) if l > 0 { n += 1 + l + sovPermissions(uint64(l)) } - if m.MintsPaused { - n += 2 + if len(m.RolePermissions) > 0 { + for _, e := range m.RolePermissions { + l = e.Size() + n += 1 + l + sovPermissions(uint64(l)) + } } - if m.SendsPaused { - n += 2 + if len(m.ActorRoles) > 0 { + for _, e := range m.ActorRoles { + l = e.Size() + n += 1 + l + sovPermissions(uint64(l)) + } } - if m.BurnsPaused { - n += 2 + if len(m.RoleManagers) > 0 { + for _, e := range m.RoleManagers { + l = e.Size() + n += 1 + l + sovPermissions(uint64(l)) + } } - if len(m.RolePermissions) > 0 { - for _, e := range m.RolePermissions { + if len(m.PolicyStatuses) > 0 { + for _, e := range m.PolicyStatuses { l = e.Size() n += 1 + l + sovPermissions(uint64(l)) } } - if len(m.AddressRoles) > 0 { - for _, e := range m.AddressRoles { + if len(m.PolicyManagerCapabilities) > 0 { + for _, e := range m.PolicyManagerCapabilities { l = e.Size() n += 1 + l + sovPermissions(uint64(l)) } @@ -788,13 +1286,13 @@ func (m *Namespace) Size() (n int) { return n } -func (m *AddressRoles) Size() (n int) { +func (m *ActorRoles) Size() (n int) { if m == nil { return 0 } var l int _ = l - l = len(m.Address) + l = len(m.Actor) if l > 0 { n += 1 + l + sovPermissions(uint64(l)) } @@ -807,7 +1305,7 @@ func (m *AddressRoles) Size() (n int) { return n } -func (m *Role) Size() (n int) { +func (m *RoleActors) Size() (n int) { if m == nil { return 0 } @@ -817,12 +1315,93 @@ func (m *Role) Size() (n int) { if l > 0 { n += 1 + l + sovPermissions(uint64(l)) } + if len(m.Actors) > 0 { + for _, s := range m.Actors { + l = len(s) + n += 1 + l + sovPermissions(uint64(l)) + } + } + return n +} + +func (m *RoleManager) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Manager) + if l > 0 { + n += 1 + l + sovPermissions(uint64(l)) + } + if len(m.Roles) > 0 { + for _, s := range m.Roles { + l = len(s) + n += 1 + l + sovPermissions(uint64(l)) + } + } + return n +} + +func (m *PolicyStatus) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Action != 0 { + n += 1 + sovPermissions(uint64(m.Action)) + } + if m.IsDisabled { + n += 2 + } + if m.IsSealed { + n += 2 + } + return n +} + +func (m *Role) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Name) + if l > 0 { + n += 1 + l + sovPermissions(uint64(l)) + } + if m.RoleId != 0 { + n += 1 + sovPermissions(uint64(m.RoleId)) + } if m.Permissions != 0 { n += 1 + sovPermissions(uint64(m.Permissions)) } return n } +func (m *PolicyManagerCapability) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Manager) + if l > 0 { + n += 1 + l + sovPermissions(uint64(l)) + } + if m.Action != 0 { + n += 1 + sovPermissions(uint64(m.Action)) + } + if m.CanDisable { + n += 2 + } + if m.CanSeal { + n += 2 + } + return n +} + func (m *RoleIDs) Size() (n int) { if m == nil { return 0 @@ -851,33 +1430,543 @@ func (m *Voucher) Size() (n int) { n += 1 + l + sovPermissions(uint64(l)) } } - return n -} + return n +} + +func (m *AddressVoucher) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Address) + if l > 0 { + n += 1 + l + sovPermissions(uint64(l)) + } + l = m.Voucher.Size() + n += 1 + l + sovPermissions(uint64(l)) + return n +} + +func sovPermissions(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozPermissions(x uint64) (n int) { + return sovPermissions(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *Namespace) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Namespace: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Namespace: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Denom", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthPermissions + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthPermissions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Denom = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ContractHook", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthPermissions + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthPermissions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ContractHook = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RolePermissions", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthPermissions + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthPermissions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.RolePermissions = append(m.RolePermissions, &Role{}) + if err := m.RolePermissions[len(m.RolePermissions)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ActorRoles", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthPermissions + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthPermissions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ActorRoles = append(m.ActorRoles, &ActorRoles{}) + if err := m.ActorRoles[len(m.ActorRoles)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RoleManagers", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthPermissions + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthPermissions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.RoleManagers = append(m.RoleManagers, &RoleManager{}) + if err := m.RoleManagers[len(m.RoleManagers)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PolicyStatuses", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthPermissions + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthPermissions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.PolicyStatuses = append(m.PolicyStatuses, &PolicyStatus{}) + if err := m.PolicyStatuses[len(m.PolicyStatuses)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PolicyManagerCapabilities", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthPermissions + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthPermissions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.PolicyManagerCapabilities = append(m.PolicyManagerCapabilities, &PolicyManagerCapability{}) + if err := m.PolicyManagerCapabilities[len(m.PolicyManagerCapabilities)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipPermissions(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthPermissions + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ActorRoles) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ActorRoles: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ActorRoles: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Actor", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthPermissions + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthPermissions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Actor = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Roles", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthPermissions + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthPermissions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Roles = append(m.Roles, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipPermissions(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthPermissions + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RoleActors) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: RoleActors: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: RoleActors: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Role", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthPermissions + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthPermissions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Role = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Actors", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthPermissions + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthPermissions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Actors = append(m.Actors, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipPermissions(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthPermissions + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } -func (m *AddressVoucher) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Address) - if l > 0 { - n += 1 + l + sovPermissions(uint64(l)) - } - if m.Voucher != nil { - l = m.Voucher.Size() - n += 1 + l + sovPermissions(uint64(l)) + if iNdEx > l { + return io.ErrUnexpectedEOF } - return n -} - -func sovPermissions(x uint64) (n int) { - return (math_bits.Len64(x|1) + 6) / 7 -} -func sozPermissions(x uint64) (n int) { - return sovPermissions(uint64((x << 1) ^ uint64((int64(x) >> 63)))) + return nil } -func (m *Namespace) Unmarshal(dAtA []byte) error { +func (m *RoleManager) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -900,15 +1989,15 @@ func (m *Namespace) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: Namespace: wiretype end group for non-group") + return fmt.Errorf("proto: RoleManager: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: Namespace: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: RoleManager: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Denom", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Manager", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -936,11 +2025,11 @@ func (m *Namespace) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Denom = string(dAtA[iNdEx:postIndex]) + m.Manager = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field WasmHook", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Roles", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -968,13 +2057,63 @@ func (m *Namespace) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.WasmHook = string(dAtA[iNdEx:postIndex]) + m.Roles = append(m.Roles, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex - case 3: + default: + iNdEx = preIndex + skippy, err := skipPermissions(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthPermissions + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PolicyStatus) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PolicyStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PolicyStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field MintsPaused", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Action", wireType) } - var v int + m.Action = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowPermissions @@ -984,15 +2123,14 @@ func (m *Namespace) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - v |= int(b&0x7F) << shift + m.Action |= Action(b&0x7F) << shift if b < 0x80 { break } } - m.MintsPaused = bool(v != 0) - case 4: + case 2: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field SendsPaused", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field IsDisabled", wireType) } var v int for shift := uint(0); ; shift += 7 { @@ -1009,10 +2147,10 @@ func (m *Namespace) Unmarshal(dAtA []byte) error { break } } - m.SendsPaused = bool(v != 0) - case 5: + m.IsDisabled = bool(v != 0) + case 3: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field BurnsPaused", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field IsSealed", wireType) } var v int for shift := uint(0); ; shift += 7 { @@ -1029,75 +2167,7 @@ func (m *Namespace) Unmarshal(dAtA []byte) error { break } } - m.BurnsPaused = bool(v != 0) - case 6: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field RolePermissions", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowPermissions - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthPermissions - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthPermissions - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.RolePermissions = append(m.RolePermissions, &Role{}) - if err := m.RolePermissions[len(m.RolePermissions)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 7: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AddressRoles", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowPermissions - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthPermissions - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthPermissions - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.AddressRoles = append(m.AddressRoles, &AddressRoles{}) - if err := m.AddressRoles[len(m.AddressRoles)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex + m.IsSealed = bool(v != 0) default: iNdEx = preIndex skippy, err := skipPermissions(dAtA[iNdEx:]) @@ -1119,7 +2189,7 @@ func (m *Namespace) Unmarshal(dAtA []byte) error { } return nil } -func (m *AddressRoles) Unmarshal(dAtA []byte) error { +func (m *Role) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -1142,15 +2212,15 @@ func (m *AddressRoles) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: AddressRoles: wiretype end group for non-group") + return fmt.Errorf("proto: Role: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: AddressRoles: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: Role: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Address", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -1178,13 +2248,13 @@ func (m *AddressRoles) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Address = string(dAtA[iNdEx:postIndex]) + m.Name = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Roles", wireType) + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field RoleId", wireType) } - var stringLen uint64 + m.RoleId = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowPermissions @@ -1194,24 +2264,30 @@ func (m *AddressRoles) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + m.RoleId |= uint32(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthPermissions - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthPermissions + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Permissions", wireType) } - if postIndex > l { - return io.ErrUnexpectedEOF + m.Permissions = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Permissions |= uint32(b&0x7F) << shift + if b < 0x80 { + break + } } - m.Roles = append(m.Roles, string(dAtA[iNdEx:postIndex])) - iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipPermissions(dAtA[iNdEx:]) @@ -1233,7 +2309,7 @@ func (m *AddressRoles) Unmarshal(dAtA []byte) error { } return nil } -func (m *Role) Unmarshal(dAtA []byte) error { +func (m *PolicyManagerCapability) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -1256,15 +2332,15 @@ func (m *Role) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: Role: wiretype end group for non-group") + return fmt.Errorf("proto: PolicyManagerCapability: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: Role: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: PolicyManagerCapability: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Role", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Manager", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -1292,13 +2368,13 @@ func (m *Role) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Role = string(dAtA[iNdEx:postIndex]) + m.Manager = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Permissions", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Action", wireType) } - m.Permissions = 0 + m.Action = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowPermissions @@ -1308,11 +2384,51 @@ func (m *Role) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Permissions |= uint32(b&0x7F) << shift + m.Action |= Action(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field CanDisable", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.CanDisable = bool(v != 0) + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field CanSeal", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift if b < 0x80 { break } } + m.CanSeal = bool(v != 0) default: iNdEx = preIndex skippy, err := skipPermissions(dAtA[iNdEx:]) @@ -1634,9 +2750,6 @@ func (m *AddressVoucher) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Voucher == nil { - m.Voucher = &Voucher{} - } if err := m.Voucher.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } diff --git a/chain/permissions/types/query.pb.go b/chain/permissions/types/query.pb.go index 78206717..6fe5e1e4 100644 --- a/chain/permissions/types/query.pb.go +++ b/chain/permissions/types/query.pb.go @@ -6,8 +6,8 @@ package types import ( context "context" fmt "fmt" + _ "github.com/cosmos/cosmos-sdk/types" github_com_cosmos_cosmos_sdk_types "github.com/cosmos/cosmos-sdk/types" - types "github.com/cosmos/cosmos-sdk/types" _ "github.com/cosmos/cosmos-sdk/types/query" _ "github.com/cosmos/gogoproto/gogoproto" grpc1 "github.com/cosmos/gogoproto/grpc" @@ -115,23 +115,23 @@ func (m *QueryParamsResponse) GetParams() Params { return Params{} } -// QueryAllNamespacesRequest is the request type for the Query/AllNamespaces RPC +// QueryNamespaceDenomsRequest is the request type for the Query/NamespaceDenoms RPC // method. -type QueryAllNamespacesRequest struct { +type QueryNamespaceDenomsRequest struct { } -func (m *QueryAllNamespacesRequest) Reset() { *m = QueryAllNamespacesRequest{} } -func (m *QueryAllNamespacesRequest) String() string { return proto.CompactTextString(m) } -func (*QueryAllNamespacesRequest) ProtoMessage() {} -func (*QueryAllNamespacesRequest) Descriptor() ([]byte, []int) { +func (m *QueryNamespaceDenomsRequest) Reset() { *m = QueryNamespaceDenomsRequest{} } +func (m *QueryNamespaceDenomsRequest) String() string { return proto.CompactTextString(m) } +func (*QueryNamespaceDenomsRequest) ProtoMessage() {} +func (*QueryNamespaceDenomsRequest) Descriptor() ([]byte, []int) { return fileDescriptor_e0ae50f1018498b3, []int{2} } -func (m *QueryAllNamespacesRequest) XXX_Unmarshal(b []byte) error { +func (m *QueryNamespaceDenomsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *QueryAllNamespacesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *QueryNamespaceDenomsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_QueryAllNamespacesRequest.Marshal(b, m, deterministic) + return xxx_messageInfo_QueryNamespaceDenomsRequest.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -141,36 +141,36 @@ func (m *QueryAllNamespacesRequest) XXX_Marshal(b []byte, deterministic bool) ([ return b[:n], nil } } -func (m *QueryAllNamespacesRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryAllNamespacesRequest.Merge(m, src) +func (m *QueryNamespaceDenomsRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryNamespaceDenomsRequest.Merge(m, src) } -func (m *QueryAllNamespacesRequest) XXX_Size() int { +func (m *QueryNamespaceDenomsRequest) XXX_Size() int { return m.Size() } -func (m *QueryAllNamespacesRequest) XXX_DiscardUnknown() { - xxx_messageInfo_QueryAllNamespacesRequest.DiscardUnknown(m) +func (m *QueryNamespaceDenomsRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryNamespaceDenomsRequest.DiscardUnknown(m) } -var xxx_messageInfo_QueryAllNamespacesRequest proto.InternalMessageInfo +var xxx_messageInfo_QueryNamespaceDenomsRequest proto.InternalMessageInfo -// QueryAllNamespacesResponse is the response type for the Query/AllNamespaces +// QueryNamespaceDenomsResponse is the response type for the Query/NamespaceDenoms // RPC method. -type QueryAllNamespacesResponse struct { - Namespaces []*Namespace `protobuf:"bytes,1,rep,name=namespaces,proto3" json:"namespaces,omitempty"` +type QueryNamespaceDenomsResponse struct { + Denoms []string `protobuf:"bytes,1,rep,name=denoms,proto3" json:"denoms,omitempty"` } -func (m *QueryAllNamespacesResponse) Reset() { *m = QueryAllNamespacesResponse{} } -func (m *QueryAllNamespacesResponse) String() string { return proto.CompactTextString(m) } -func (*QueryAllNamespacesResponse) ProtoMessage() {} -func (*QueryAllNamespacesResponse) Descriptor() ([]byte, []int) { +func (m *QueryNamespaceDenomsResponse) Reset() { *m = QueryNamespaceDenomsResponse{} } +func (m *QueryNamespaceDenomsResponse) String() string { return proto.CompactTextString(m) } +func (*QueryNamespaceDenomsResponse) ProtoMessage() {} +func (*QueryNamespaceDenomsResponse) Descriptor() ([]byte, []int) { return fileDescriptor_e0ae50f1018498b3, []int{3} } -func (m *QueryAllNamespacesResponse) XXX_Unmarshal(b []byte) error { +func (m *QueryNamespaceDenomsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *QueryAllNamespacesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *QueryNamespaceDenomsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_QueryAllNamespacesResponse.Marshal(b, m, deterministic) + return xxx_messageInfo_QueryNamespaceDenomsResponse.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -180,44 +180,81 @@ func (m *QueryAllNamespacesResponse) XXX_Marshal(b []byte, deterministic bool) ( return b[:n], nil } } -func (m *QueryAllNamespacesResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryAllNamespacesResponse.Merge(m, src) +func (m *QueryNamespaceDenomsResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryNamespaceDenomsResponse.Merge(m, src) } -func (m *QueryAllNamespacesResponse) XXX_Size() int { +func (m *QueryNamespaceDenomsResponse) XXX_Size() int { return m.Size() } -func (m *QueryAllNamespacesResponse) XXX_DiscardUnknown() { - xxx_messageInfo_QueryAllNamespacesResponse.DiscardUnknown(m) +func (m *QueryNamespaceDenomsResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryNamespaceDenomsResponse.DiscardUnknown(m) } -var xxx_messageInfo_QueryAllNamespacesResponse proto.InternalMessageInfo +var xxx_messageInfo_QueryNamespaceDenomsResponse proto.InternalMessageInfo -func (m *QueryAllNamespacesResponse) GetNamespaces() []*Namespace { +func (m *QueryNamespaceDenomsResponse) GetDenoms() []string { if m != nil { - return m.Namespaces + return m.Denoms } return nil } -// QueryNamespaceByDenomRequest is the request type for the -// Query/NamespaceByDenom RPC method. -type QueryNamespaceByDenomRequest struct { - Denom string `protobuf:"bytes,1,opt,name=denom,proto3" json:"denom,omitempty"` - IncludeRoles bool `protobuf:"varint,2,opt,name=include_roles,json=includeRoles,proto3" json:"include_roles,omitempty"` +// QueryNamespacesRequest is the request type for the Query/Namespaces RPC +// method. +type QueryNamespacesRequest struct { } -func (m *QueryNamespaceByDenomRequest) Reset() { *m = QueryNamespaceByDenomRequest{} } -func (m *QueryNamespaceByDenomRequest) String() string { return proto.CompactTextString(m) } -func (*QueryNamespaceByDenomRequest) ProtoMessage() {} -func (*QueryNamespaceByDenomRequest) Descriptor() ([]byte, []int) { +func (m *QueryNamespacesRequest) Reset() { *m = QueryNamespacesRequest{} } +func (m *QueryNamespacesRequest) String() string { return proto.CompactTextString(m) } +func (*QueryNamespacesRequest) ProtoMessage() {} +func (*QueryNamespacesRequest) Descriptor() ([]byte, []int) { return fileDescriptor_e0ae50f1018498b3, []int{4} } -func (m *QueryNamespaceByDenomRequest) XXX_Unmarshal(b []byte) error { +func (m *QueryNamespacesRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryNamespacesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryNamespacesRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryNamespacesRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryNamespacesRequest.Merge(m, src) +} +func (m *QueryNamespacesRequest) XXX_Size() int { + return m.Size() +} +func (m *QueryNamespacesRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryNamespacesRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryNamespacesRequest proto.InternalMessageInfo + +// QueryNamespacesResponse is the response type for the Query/Namespaces +// RPC method. +type QueryNamespacesResponse struct { + Namespaces []*Namespace `protobuf:"bytes,1,rep,name=namespaces,proto3" json:"namespaces,omitempty"` +} + +func (m *QueryNamespacesResponse) Reset() { *m = QueryNamespacesResponse{} } +func (m *QueryNamespacesResponse) String() string { return proto.CompactTextString(m) } +func (*QueryNamespacesResponse) ProtoMessage() {} +func (*QueryNamespacesResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_e0ae50f1018498b3, []int{5} +} +func (m *QueryNamespacesResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *QueryNamespaceByDenomRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *QueryNamespacesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_QueryNamespaceByDenomRequest.Marshal(b, m, deterministic) + return xxx_messageInfo_QueryNamespacesResponse.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -227,50 +264,89 @@ func (m *QueryNamespaceByDenomRequest) XXX_Marshal(b []byte, deterministic bool) return b[:n], nil } } -func (m *QueryNamespaceByDenomRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryNamespaceByDenomRequest.Merge(m, src) +func (m *QueryNamespacesResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryNamespacesResponse.Merge(m, src) } -func (m *QueryNamespaceByDenomRequest) XXX_Size() int { +func (m *QueryNamespacesResponse) XXX_Size() int { return m.Size() } -func (m *QueryNamespaceByDenomRequest) XXX_DiscardUnknown() { - xxx_messageInfo_QueryNamespaceByDenomRequest.DiscardUnknown(m) +func (m *QueryNamespacesResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryNamespacesResponse.DiscardUnknown(m) } -var xxx_messageInfo_QueryNamespaceByDenomRequest proto.InternalMessageInfo +var xxx_messageInfo_QueryNamespacesResponse proto.InternalMessageInfo -func (m *QueryNamespaceByDenomRequest) GetDenom() string { +func (m *QueryNamespacesResponse) GetNamespaces() []*Namespace { if m != nil { - return m.Denom + return m.Namespaces } - return "" + return nil } -func (m *QueryNamespaceByDenomRequest) GetIncludeRoles() bool { +// QueryNamespaceRequest is the request type for the +// Query/Namespace RPC method. +type QueryNamespaceRequest struct { + Denom string `protobuf:"bytes,1,opt,name=denom,proto3" json:"denom,omitempty"` +} + +func (m *QueryNamespaceRequest) Reset() { *m = QueryNamespaceRequest{} } +func (m *QueryNamespaceRequest) String() string { return proto.CompactTextString(m) } +func (*QueryNamespaceRequest) ProtoMessage() {} +func (*QueryNamespaceRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_e0ae50f1018498b3, []int{6} +} +func (m *QueryNamespaceRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryNamespaceRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryNamespaceRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryNamespaceRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryNamespaceRequest.Merge(m, src) +} +func (m *QueryNamespaceRequest) XXX_Size() int { + return m.Size() +} +func (m *QueryNamespaceRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryNamespaceRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryNamespaceRequest proto.InternalMessageInfo + +func (m *QueryNamespaceRequest) GetDenom() string { if m != nil { - return m.IncludeRoles + return m.Denom } - return false + return "" } -// QueryNamespaceByDenomResponse is the response type for the +// QueryNamespaceResponse is the response type for the // Query/NamespaceByDenom RPC method. -type QueryNamespaceByDenomResponse struct { +type QueryNamespaceResponse struct { Namespace *Namespace `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"` } -func (m *QueryNamespaceByDenomResponse) Reset() { *m = QueryNamespaceByDenomResponse{} } -func (m *QueryNamespaceByDenomResponse) String() string { return proto.CompactTextString(m) } -func (*QueryNamespaceByDenomResponse) ProtoMessage() {} -func (*QueryNamespaceByDenomResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_e0ae50f1018498b3, []int{5} +func (m *QueryNamespaceResponse) Reset() { *m = QueryNamespaceResponse{} } +func (m *QueryNamespaceResponse) String() string { return proto.CompactTextString(m) } +func (*QueryNamespaceResponse) ProtoMessage() {} +func (*QueryNamespaceResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_e0ae50f1018498b3, []int{7} } -func (m *QueryNamespaceByDenomResponse) XXX_Unmarshal(b []byte) error { +func (m *QueryNamespaceResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *QueryNamespaceByDenomResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *QueryNamespaceResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_QueryNamespaceByDenomResponse.Marshal(b, m, deterministic) + return xxx_messageInfo_QueryNamespaceResponse.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -280,19 +356,19 @@ func (m *QueryNamespaceByDenomResponse) XXX_Marshal(b []byte, deterministic bool return b[:n], nil } } -func (m *QueryNamespaceByDenomResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryNamespaceByDenomResponse.Merge(m, src) +func (m *QueryNamespaceResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryNamespaceResponse.Merge(m, src) } -func (m *QueryNamespaceByDenomResponse) XXX_Size() int { +func (m *QueryNamespaceResponse) XXX_Size() int { return m.Size() } -func (m *QueryNamespaceByDenomResponse) XXX_DiscardUnknown() { - xxx_messageInfo_QueryNamespaceByDenomResponse.DiscardUnknown(m) +func (m *QueryNamespaceResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryNamespaceResponse.DiscardUnknown(m) } -var xxx_messageInfo_QueryNamespaceByDenomResponse proto.InternalMessageInfo +var xxx_messageInfo_QueryNamespaceResponse proto.InternalMessageInfo -func (m *QueryNamespaceByDenomResponse) GetNamespace() *Namespace { +func (m *QueryNamespaceResponse) GetNamespace() *Namespace { if m != nil { return m.Namespace } @@ -301,23 +377,23 @@ func (m *QueryNamespaceByDenomResponse) GetNamespace() *Namespace { // QueryAddressesByRoleRequest is the request type for the Query/AddressesByRole // RPC method. -type QueryAddressesByRoleRequest struct { +type QueryActorsByRoleRequest struct { Denom string `protobuf:"bytes,1,opt,name=denom,proto3" json:"denom,omitempty"` Role string `protobuf:"bytes,2,opt,name=role,proto3" json:"role,omitempty"` } -func (m *QueryAddressesByRoleRequest) Reset() { *m = QueryAddressesByRoleRequest{} } -func (m *QueryAddressesByRoleRequest) String() string { return proto.CompactTextString(m) } -func (*QueryAddressesByRoleRequest) ProtoMessage() {} -func (*QueryAddressesByRoleRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_e0ae50f1018498b3, []int{6} +func (m *QueryActorsByRoleRequest) Reset() { *m = QueryActorsByRoleRequest{} } +func (m *QueryActorsByRoleRequest) String() string { return proto.CompactTextString(m) } +func (*QueryActorsByRoleRequest) ProtoMessage() {} +func (*QueryActorsByRoleRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_e0ae50f1018498b3, []int{8} } -func (m *QueryAddressesByRoleRequest) XXX_Unmarshal(b []byte) error { +func (m *QueryActorsByRoleRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *QueryAddressesByRoleRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *QueryActorsByRoleRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_QueryAddressesByRoleRequest.Marshal(b, m, deterministic) + return xxx_messageInfo_QueryActorsByRoleRequest.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -327,26 +403,26 @@ func (m *QueryAddressesByRoleRequest) XXX_Marshal(b []byte, deterministic bool) return b[:n], nil } } -func (m *QueryAddressesByRoleRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryAddressesByRoleRequest.Merge(m, src) +func (m *QueryActorsByRoleRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryActorsByRoleRequest.Merge(m, src) } -func (m *QueryAddressesByRoleRequest) XXX_Size() int { +func (m *QueryActorsByRoleRequest) XXX_Size() int { return m.Size() } -func (m *QueryAddressesByRoleRequest) XXX_DiscardUnknown() { - xxx_messageInfo_QueryAddressesByRoleRequest.DiscardUnknown(m) +func (m *QueryActorsByRoleRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryActorsByRoleRequest.DiscardUnknown(m) } -var xxx_messageInfo_QueryAddressesByRoleRequest proto.InternalMessageInfo +var xxx_messageInfo_QueryActorsByRoleRequest proto.InternalMessageInfo -func (m *QueryAddressesByRoleRequest) GetDenom() string { +func (m *QueryActorsByRoleRequest) GetDenom() string { if m != nil { return m.Denom } return "" } -func (m *QueryAddressesByRoleRequest) GetRole() string { +func (m *QueryActorsByRoleRequest) GetRole() string { if m != nil { return m.Role } @@ -355,22 +431,22 @@ func (m *QueryAddressesByRoleRequest) GetRole() string { // QueryAddressesByRoleResponse is the response type for the // Query/AddressesByRole RPC method. -type QueryAddressesByRoleResponse struct { - Addresses []string `protobuf:"bytes,1,rep,name=addresses,proto3" json:"addresses,omitempty"` +type QueryActorsByRoleResponse struct { + Actors []string `protobuf:"bytes,1,rep,name=actors,proto3" json:"actors,omitempty"` } -func (m *QueryAddressesByRoleResponse) Reset() { *m = QueryAddressesByRoleResponse{} } -func (m *QueryAddressesByRoleResponse) String() string { return proto.CompactTextString(m) } -func (*QueryAddressesByRoleResponse) ProtoMessage() {} -func (*QueryAddressesByRoleResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_e0ae50f1018498b3, []int{7} +func (m *QueryActorsByRoleResponse) Reset() { *m = QueryActorsByRoleResponse{} } +func (m *QueryActorsByRoleResponse) String() string { return proto.CompactTextString(m) } +func (*QueryActorsByRoleResponse) ProtoMessage() {} +func (*QueryActorsByRoleResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_e0ae50f1018498b3, []int{9} } -func (m *QueryAddressesByRoleResponse) XXX_Unmarshal(b []byte) error { +func (m *QueryActorsByRoleResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *QueryAddressesByRoleResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *QueryActorsByRoleResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_QueryAddressesByRoleResponse.Marshal(b, m, deterministic) + return xxx_messageInfo_QueryActorsByRoleResponse.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -380,42 +456,44 @@ func (m *QueryAddressesByRoleResponse) XXX_Marshal(b []byte, deterministic bool) return b[:n], nil } } -func (m *QueryAddressesByRoleResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryAddressesByRoleResponse.Merge(m, src) +func (m *QueryActorsByRoleResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryActorsByRoleResponse.Merge(m, src) } -func (m *QueryAddressesByRoleResponse) XXX_Size() int { +func (m *QueryActorsByRoleResponse) XXX_Size() int { return m.Size() } -func (m *QueryAddressesByRoleResponse) XXX_DiscardUnknown() { - xxx_messageInfo_QueryAddressesByRoleResponse.DiscardUnknown(m) +func (m *QueryActorsByRoleResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryActorsByRoleResponse.DiscardUnknown(m) } -var xxx_messageInfo_QueryAddressesByRoleResponse proto.InternalMessageInfo +var xxx_messageInfo_QueryActorsByRoleResponse proto.InternalMessageInfo -func (m *QueryAddressesByRoleResponse) GetAddresses() []string { +func (m *QueryActorsByRoleResponse) GetActors() []string { if m != nil { - return m.Addresses + return m.Actors } return nil } -type QueryAddressRolesRequest struct { - Denom string `protobuf:"bytes,1,opt,name=denom,proto3" json:"denom,omitempty"` - Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"` +// QueryRolesByActorRequest is the request type for the +// Query/RolesByActor RPC method. +type QueryRolesByActorRequest struct { + Denom string `protobuf:"bytes,1,opt,name=denom,proto3" json:"denom,omitempty"` + Actor string `protobuf:"bytes,2,opt,name=actor,proto3" json:"actor,omitempty"` } -func (m *QueryAddressRolesRequest) Reset() { *m = QueryAddressRolesRequest{} } -func (m *QueryAddressRolesRequest) String() string { return proto.CompactTextString(m) } -func (*QueryAddressRolesRequest) ProtoMessage() {} -func (*QueryAddressRolesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_e0ae50f1018498b3, []int{8} +func (m *QueryRolesByActorRequest) Reset() { *m = QueryRolesByActorRequest{} } +func (m *QueryRolesByActorRequest) String() string { return proto.CompactTextString(m) } +func (*QueryRolesByActorRequest) ProtoMessage() {} +func (*QueryRolesByActorRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_e0ae50f1018498b3, []int{10} } -func (m *QueryAddressRolesRequest) XXX_Unmarshal(b []byte) error { +func (m *QueryRolesByActorRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *QueryAddressRolesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *QueryRolesByActorRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_QueryAddressRolesRequest.Marshal(b, m, deterministic) + return xxx_messageInfo_QueryRolesByActorRequest.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -425,48 +503,50 @@ func (m *QueryAddressRolesRequest) XXX_Marshal(b []byte, deterministic bool) ([] return b[:n], nil } } -func (m *QueryAddressRolesRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryAddressRolesRequest.Merge(m, src) +func (m *QueryRolesByActorRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryRolesByActorRequest.Merge(m, src) } -func (m *QueryAddressRolesRequest) XXX_Size() int { +func (m *QueryRolesByActorRequest) XXX_Size() int { return m.Size() } -func (m *QueryAddressRolesRequest) XXX_DiscardUnknown() { - xxx_messageInfo_QueryAddressRolesRequest.DiscardUnknown(m) +func (m *QueryRolesByActorRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryRolesByActorRequest.DiscardUnknown(m) } -var xxx_messageInfo_QueryAddressRolesRequest proto.InternalMessageInfo +var xxx_messageInfo_QueryRolesByActorRequest proto.InternalMessageInfo -func (m *QueryAddressRolesRequest) GetDenom() string { +func (m *QueryRolesByActorRequest) GetDenom() string { if m != nil { return m.Denom } return "" } -func (m *QueryAddressRolesRequest) GetAddress() string { +func (m *QueryRolesByActorRequest) GetActor() string { if m != nil { - return m.Address + return m.Actor } return "" } -type QueryAddressRolesResponse struct { +// QueryRolesByActorResponse is the response type for the +// Query/RolesByActor RPC method. +type QueryRolesByActorResponse struct { Roles []string `protobuf:"bytes,1,rep,name=roles,proto3" json:"roles,omitempty"` } -func (m *QueryAddressRolesResponse) Reset() { *m = QueryAddressRolesResponse{} } -func (m *QueryAddressRolesResponse) String() string { return proto.CompactTextString(m) } -func (*QueryAddressRolesResponse) ProtoMessage() {} -func (*QueryAddressRolesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_e0ae50f1018498b3, []int{9} +func (m *QueryRolesByActorResponse) Reset() { *m = QueryRolesByActorResponse{} } +func (m *QueryRolesByActorResponse) String() string { return proto.CompactTextString(m) } +func (*QueryRolesByActorResponse) ProtoMessage() {} +func (*QueryRolesByActorResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_e0ae50f1018498b3, []int{11} } -func (m *QueryAddressRolesResponse) XXX_Unmarshal(b []byte) error { +func (m *QueryRolesByActorResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *QueryAddressRolesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *QueryRolesByActorResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_QueryAddressRolesResponse.Marshal(b, m, deterministic) + return xxx_messageInfo_QueryRolesByActorResponse.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -476,41 +556,43 @@ func (m *QueryAddressRolesResponse) XXX_Marshal(b []byte, deterministic bool) ([ return b[:n], nil } } -func (m *QueryAddressRolesResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryAddressRolesResponse.Merge(m, src) +func (m *QueryRolesByActorResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryRolesByActorResponse.Merge(m, src) } -func (m *QueryAddressRolesResponse) XXX_Size() int { +func (m *QueryRolesByActorResponse) XXX_Size() int { return m.Size() } -func (m *QueryAddressRolesResponse) XXX_DiscardUnknown() { - xxx_messageInfo_QueryAddressRolesResponse.DiscardUnknown(m) +func (m *QueryRolesByActorResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryRolesByActorResponse.DiscardUnknown(m) } -var xxx_messageInfo_QueryAddressRolesResponse proto.InternalMessageInfo +var xxx_messageInfo_QueryRolesByActorResponse proto.InternalMessageInfo -func (m *QueryAddressRolesResponse) GetRoles() []string { +func (m *QueryRolesByActorResponse) GetRoles() []string { if m != nil { return m.Roles } return nil } -type QueryVouchersForAddressRequest struct { - Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` +// QueryRoleManagersRequest is the request type for the Query/RoleManagers +// RPC method. +type QueryRoleManagersRequest struct { + Denom string `protobuf:"bytes,1,opt,name=denom,proto3" json:"denom,omitempty"` } -func (m *QueryVouchersForAddressRequest) Reset() { *m = QueryVouchersForAddressRequest{} } -func (m *QueryVouchersForAddressRequest) String() string { return proto.CompactTextString(m) } -func (*QueryVouchersForAddressRequest) ProtoMessage() {} -func (*QueryVouchersForAddressRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_e0ae50f1018498b3, []int{10} +func (m *QueryRoleManagersRequest) Reset() { *m = QueryRoleManagersRequest{} } +func (m *QueryRoleManagersRequest) String() string { return proto.CompactTextString(m) } +func (*QueryRoleManagersRequest) ProtoMessage() {} +func (*QueryRoleManagersRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_e0ae50f1018498b3, []int{12} } -func (m *QueryVouchersForAddressRequest) XXX_Unmarshal(b []byte) error { +func (m *QueryRoleManagersRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *QueryVouchersForAddressRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *QueryRoleManagersRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_QueryVouchersForAddressRequest.Marshal(b, m, deterministic) + return xxx_messageInfo_QueryRoleManagersRequest.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -520,41 +602,43 @@ func (m *QueryVouchersForAddressRequest) XXX_Marshal(b []byte, deterministic boo return b[:n], nil } } -func (m *QueryVouchersForAddressRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryVouchersForAddressRequest.Merge(m, src) +func (m *QueryRoleManagersRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryRoleManagersRequest.Merge(m, src) } -func (m *QueryVouchersForAddressRequest) XXX_Size() int { +func (m *QueryRoleManagersRequest) XXX_Size() int { return m.Size() } -func (m *QueryVouchersForAddressRequest) XXX_DiscardUnknown() { - xxx_messageInfo_QueryVouchersForAddressRequest.DiscardUnknown(m) +func (m *QueryRoleManagersRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryRoleManagersRequest.DiscardUnknown(m) } -var xxx_messageInfo_QueryVouchersForAddressRequest proto.InternalMessageInfo +var xxx_messageInfo_QueryRoleManagersRequest proto.InternalMessageInfo -func (m *QueryVouchersForAddressRequest) GetAddress() string { +func (m *QueryRoleManagersRequest) GetDenom() string { if m != nil { - return m.Address + return m.Denom } return "" } -type QueryVouchersForAddressResponse struct { - Vouchers github_com_cosmos_cosmos_sdk_types.Coins `protobuf:"bytes,1,rep,name=vouchers,proto3,castrepeated=github.com/cosmos/cosmos-sdk/types.Coins" json:"vouchers,omitempty"` +// QueryRoleManagersResponse is the response type for the +// Query/RoleManagers RPC method. +type QueryRoleManagersResponse struct { + RoleManagers []*RoleManager `protobuf:"bytes,1,rep,name=role_managers,json=roleManagers,proto3" json:"role_managers,omitempty"` } -func (m *QueryVouchersForAddressResponse) Reset() { *m = QueryVouchersForAddressResponse{} } -func (m *QueryVouchersForAddressResponse) String() string { return proto.CompactTextString(m) } -func (*QueryVouchersForAddressResponse) ProtoMessage() {} -func (*QueryVouchersForAddressResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_e0ae50f1018498b3, []int{11} +func (m *QueryRoleManagersResponse) Reset() { *m = QueryRoleManagersResponse{} } +func (m *QueryRoleManagersResponse) String() string { return proto.CompactTextString(m) } +func (*QueryRoleManagersResponse) ProtoMessage() {} +func (*QueryRoleManagersResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_e0ae50f1018498b3, []int{13} } -func (m *QueryVouchersForAddressResponse) XXX_Unmarshal(b []byte) error { +func (m *QueryRoleManagersResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *QueryVouchersForAddressResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *QueryRoleManagersResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_QueryVouchersForAddressResponse.Marshal(b, m, deterministic) + return xxx_messageInfo_QueryRoleManagersResponse.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -564,964 +648,3567 @@ func (m *QueryVouchersForAddressResponse) XXX_Marshal(b []byte, deterministic bo return b[:n], nil } } -func (m *QueryVouchersForAddressResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryVouchersForAddressResponse.Merge(m, src) +func (m *QueryRoleManagersResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryRoleManagersResponse.Merge(m, src) } -func (m *QueryVouchersForAddressResponse) XXX_Size() int { +func (m *QueryRoleManagersResponse) XXX_Size() int { return m.Size() } -func (m *QueryVouchersForAddressResponse) XXX_DiscardUnknown() { - xxx_messageInfo_QueryVouchersForAddressResponse.DiscardUnknown(m) +func (m *QueryRoleManagersResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryRoleManagersResponse.DiscardUnknown(m) } -var xxx_messageInfo_QueryVouchersForAddressResponse proto.InternalMessageInfo +var xxx_messageInfo_QueryRoleManagersResponse proto.InternalMessageInfo -func (m *QueryVouchersForAddressResponse) GetVouchers() github_com_cosmos_cosmos_sdk_types.Coins { +func (m *QueryRoleManagersResponse) GetRoleManagers() []*RoleManager { if m != nil { - return m.Vouchers + return m.RoleManagers } return nil } -func init() { - proto.RegisterType((*QueryParamsRequest)(nil), "injective.permissions.v1beta1.QueryParamsRequest") - proto.RegisterType((*QueryParamsResponse)(nil), "injective.permissions.v1beta1.QueryParamsResponse") - proto.RegisterType((*QueryAllNamespacesRequest)(nil), "injective.permissions.v1beta1.QueryAllNamespacesRequest") - proto.RegisterType((*QueryAllNamespacesResponse)(nil), "injective.permissions.v1beta1.QueryAllNamespacesResponse") - proto.RegisterType((*QueryNamespaceByDenomRequest)(nil), "injective.permissions.v1beta1.QueryNamespaceByDenomRequest") - proto.RegisterType((*QueryNamespaceByDenomResponse)(nil), "injective.permissions.v1beta1.QueryNamespaceByDenomResponse") - proto.RegisterType((*QueryAddressesByRoleRequest)(nil), "injective.permissions.v1beta1.QueryAddressesByRoleRequest") - proto.RegisterType((*QueryAddressesByRoleResponse)(nil), "injective.permissions.v1beta1.QueryAddressesByRoleResponse") - proto.RegisterType((*QueryAddressRolesRequest)(nil), "injective.permissions.v1beta1.QueryAddressRolesRequest") - proto.RegisterType((*QueryAddressRolesResponse)(nil), "injective.permissions.v1beta1.QueryAddressRolesResponse") - proto.RegisterType((*QueryVouchersForAddressRequest)(nil), "injective.permissions.v1beta1.QueryVouchersForAddressRequest") - proto.RegisterType((*QueryVouchersForAddressResponse)(nil), "injective.permissions.v1beta1.QueryVouchersForAddressResponse") +// QueryRoleManagerRequest is the request type for the Query/RoleManager +// RPC method. +type QueryRoleManagerRequest struct { + Denom string `protobuf:"bytes,1,opt,name=denom,proto3" json:"denom,omitempty"` + Manager string `protobuf:"bytes,2,opt,name=manager,proto3" json:"manager,omitempty"` } -func init() { - proto.RegisterFile("injective/permissions/v1beta1/query.proto", fileDescriptor_e0ae50f1018498b3) +func (m *QueryRoleManagerRequest) Reset() { *m = QueryRoleManagerRequest{} } +func (m *QueryRoleManagerRequest) String() string { return proto.CompactTextString(m) } +func (*QueryRoleManagerRequest) ProtoMessage() {} +func (*QueryRoleManagerRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_e0ae50f1018498b3, []int{14} } - -var fileDescriptor_e0ae50f1018498b3 = []byte{ - // 816 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x56, 0x4d, 0x4f, 0xdb, 0x4a, - 0x14, 0xcd, 0xf0, 0x80, 0x47, 0x06, 0xd0, 0x7b, 0x9a, 0x66, 0x11, 0x0c, 0x38, 0xc8, 0x15, 0x6a, - 0xfa, 0x11, 0xbb, 0x09, 0x42, 0xe5, 0xab, 0x95, 0x1a, 0x2a, 0xfa, 0xa1, 0xaa, 0x2a, 0x5e, 0x54, - 0x2a, 0x9b, 0xc8, 0x71, 0x06, 0xe3, 0x62, 0x7b, 0x8c, 0xc7, 0x41, 0xca, 0xa2, 0x9b, 0xee, 0xba, - 0xab, 0xd4, 0x7d, 0xd5, 0x75, 0xff, 0x02, 0xdb, 0x2e, 0x58, 0x22, 0x75, 0xd3, 0x15, 0xad, 0xa0, - 0xab, 0xfe, 0x8a, 0xca, 0xe3, 0xb1, 0xe3, 0x10, 0x12, 0x87, 0x74, 0x45, 0x66, 0xee, 0x3d, 0xf7, - 0x9e, 0x73, 0x3d, 0xf7, 0x08, 0x78, 0xd3, 0x74, 0xde, 0x60, 0xdd, 0x37, 0x0f, 0xb1, 0xe2, 0x62, - 0xcf, 0x36, 0x29, 0x35, 0x89, 0x43, 0x95, 0xc3, 0x72, 0x1d, 0xfb, 0x5a, 0x59, 0x39, 0x68, 0x62, - 0xaf, 0x25, 0xbb, 0x1e, 0xf1, 0x09, 0x9a, 0x8f, 0x53, 0xe5, 0x44, 0xaa, 0xcc, 0x53, 0x85, 0x9c, - 0x41, 0x0c, 0xc2, 0x32, 0x95, 0xe0, 0x57, 0x08, 0x12, 0xe6, 0x0c, 0x42, 0x0c, 0x0b, 0x2b, 0x9a, - 0x6b, 0x2a, 0x9a, 0xe3, 0x10, 0x5f, 0xf3, 0x19, 0x2a, 0x8c, 0x8a, 0x3a, 0xa1, 0x36, 0xa1, 0x4a, - 0x5d, 0xa3, 0x38, 0xee, 0xa9, 0x13, 0xd3, 0xe1, 0xf1, 0x5b, 0xc9, 0x38, 0xe3, 0x12, 0x67, 0xb9, - 0x9a, 0x61, 0x3a, 0xac, 0x58, 0x94, 0xdb, 0x5f, 0x89, 0xab, 0x79, 0x9a, 0x1d, 0xf5, 0xbd, 0xdd, - 0x3f, 0xd7, 0xc0, 0x0e, 0xa6, 0x66, 0x94, 0xac, 0xa4, 0x14, 0x4e, 0xcc, 0x82, 0x01, 0xa4, 0x1c, - 0x44, 0xdb, 0x01, 0xd7, 0x97, 0xac, 0xa5, 0x8a, 0x0f, 0x9a, 0x98, 0xfa, 0xd2, 0x0e, 0xbc, 0xd6, - 0x71, 0x4b, 0x5d, 0xe2, 0x50, 0x8c, 0x36, 0xe1, 0x78, 0x48, 0x2d, 0x0f, 0x16, 0x40, 0x71, 0xb2, - 0xb2, 0x28, 0xf7, 0x1d, 0xb3, 0x1c, 0xc2, 0xab, 0xa3, 0xc7, 0xa7, 0x85, 0x8c, 0xca, 0xa1, 0xd2, - 0x2c, 0x9c, 0x61, 0xb5, 0x1f, 0x5a, 0xd6, 0x0b, 0xcd, 0xc6, 0xd4, 0xd5, 0x74, 0x1c, 0x37, 0xde, - 0x85, 0xc2, 0x65, 0x41, 0xde, 0xff, 0x09, 0x84, 0x4e, 0x7c, 0x9b, 0x07, 0x0b, 0xff, 0x14, 0x27, - 0x2b, 0xc5, 0x14, 0x0e, 0x71, 0x19, 0x35, 0x81, 0x95, 0x5e, 0xc3, 0x39, 0xd6, 0x27, 0x8e, 0x56, - 0x5b, 0x8f, 0xb0, 0x43, 0x6c, 0xce, 0x03, 0xe5, 0xe0, 0x58, 0x23, 0x38, 0x33, 0xa1, 0x59, 0x35, - 0x3c, 0xa0, 0xeb, 0x70, 0xda, 0x74, 0x74, 0xab, 0xd9, 0xc0, 0x35, 0x8f, 0x58, 0x98, 0xe6, 0x47, - 0x16, 0x40, 0x71, 0x42, 0x9d, 0xe2, 0x97, 0x6a, 0x70, 0x27, 0x19, 0x70, 0xbe, 0x47, 0x69, 0xae, - 0x62, 0x0b, 0x66, 0x63, 0x26, 0x7c, 0x90, 0x83, 0x8b, 0x68, 0x43, 0xa5, 0xc7, 0x70, 0x36, 0x9c, - 0x55, 0xa3, 0xe1, 0x61, 0x4a, 0x31, 0xad, 0xb6, 0x02, 0x06, 0xfd, 0x25, 0x20, 0x38, 0x1a, 0x50, - 0x67, 0xcc, 0xb3, 0x2a, 0xfb, 0x2d, 0x6d, 0xf0, 0x61, 0x74, 0x15, 0xe2, 0x84, 0xe7, 0x60, 0x56, - 0x8b, 0x42, 0x6c, 0xea, 0x59, 0xb5, 0x7d, 0x21, 0x3d, 0x83, 0xf9, 0x24, 0x9a, 0x0d, 0xa1, 0x3f, - 0x87, 0x3c, 0xfc, 0x97, 0xc3, 0x39, 0x8d, 0xe8, 0x28, 0x95, 0xa3, 0xb7, 0xd1, 0x51, 0x8b, 0xd3, - 0xc8, 0xc1, 0xb1, 0x70, 0xea, 0x21, 0x85, 0xf0, 0x20, 0xad, 0x41, 0x91, 0x41, 0x5e, 0x91, 0xa6, - 0xbe, 0x87, 0x3d, 0xba, 0x45, 0xbc, 0x08, 0xcd, 0x49, 0x24, 0xda, 0x81, 0xce, 0x76, 0x9f, 0x01, - 0x2c, 0xf4, 0x04, 0xf3, 0xae, 0x6f, 0xe1, 0xc4, 0x21, 0x8f, 0xf2, 0x17, 0x37, 0x23, 0x87, 0x9b, - 0x2e, 0x07, 0x9b, 0x1e, 0x7f, 0xa2, 0x4d, 0x62, 0x3a, 0xd5, 0xad, 0xe0, 0xa5, 0xff, 0x3e, 0x2d, - 0xa0, 0x08, 0x72, 0x87, 0xd8, 0xa6, 0x8f, 0x6d, 0xd7, 0x6f, 0x7d, 0xf9, 0x51, 0x28, 0x1a, 0xa6, - 0xbf, 0xd7, 0xac, 0xcb, 0x3a, 0xb1, 0x15, 0x6e, 0x16, 0xe1, 0x9f, 0x12, 0x6d, 0xec, 0x2b, 0x7e, - 0xcb, 0xc5, 0x94, 0x95, 0xa1, 0x6a, 0xdc, 0xb2, 0xf2, 0x3e, 0x0b, 0xc7, 0x18, 0x45, 0xf4, 0x09, - 0xc0, 0xf1, 0x70, 0xa1, 0x50, 0x39, 0xe5, 0xb9, 0x74, 0x6f, 0xb4, 0x50, 0xb9, 0x0a, 0x24, 0x94, - 0x2e, 0x95, 0xde, 0x7d, 0xfb, 0xf5, 0x71, 0xe4, 0x06, 0x5a, 0x54, 0x06, 0xb1, 0x2b, 0x74, 0x04, - 0xe0, 0x74, 0xc7, 0xde, 0xa2, 0x95, 0x41, 0x9a, 0x5e, 0xe6, 0x03, 0xc2, 0xea, 0x10, 0x48, 0xce, - 0x7a, 0x99, 0xb1, 0x56, 0x50, 0x29, 0x85, 0xb5, 0x66, 0x59, 0xb5, 0xb6, 0x23, 0xa0, 0x63, 0x00, - 0xff, 0xbf, 0xb8, 0xb2, 0x68, 0x7d, 0x10, 0x1a, 0x3d, 0x3c, 0x44, 0xd8, 0x18, 0x0e, 0xcc, 0x65, - 0xac, 0x32, 0x19, 0x4b, 0xa8, 0x9c, 0x22, 0x23, 0x96, 0x50, 0xab, 0xb7, 0x6a, 0xe1, 0x7e, 0x1d, - 0x01, 0x38, 0x95, 0xdc, 0x20, 0x74, 0x6f, 0xa0, 0x69, 0x76, 0xef, 0xaf, 0xb0, 0x72, 0x75, 0x20, - 0xa7, 0xbf, 0xc2, 0xe8, 0x57, 0xd0, 0xdd, 0xb4, 0xaf, 0x10, 0xf9, 0x48, 0x40, 0x3f, 0xd8, 0x68, - 0xf4, 0x15, 0xc0, 0xff, 0x2e, 0x38, 0x11, 0x5a, 0xbb, 0x02, 0x8f, 0x0b, 0x3e, 0x28, 0xac, 0x0f, - 0x85, 0xfd, 0x6b, 0x19, 0x27, 0x00, 0xa2, 0x6e, 0x5b, 0x41, 0xf7, 0x07, 0x61, 0xd3, 0xd3, 0xcb, - 0x84, 0x07, 0xc3, 0xc2, 0xb9, 0x9e, 0x75, 0xa6, 0x67, 0x19, 0x2d, 0xa5, 0xe8, 0x89, 0xfc, 0xa7, - 0xb6, 0x4b, 0xbc, 0x1a, 0x17, 0x57, 0xdd, 0x3f, 0x3e, 0x13, 0xc1, 0xc9, 0x99, 0x08, 0x7e, 0x9e, - 0x89, 0xe0, 0xc3, 0xb9, 0x98, 0x39, 0x39, 0x17, 0x33, 0xdf, 0xcf, 0xc5, 0xcc, 0xce, 0x76, 0xc2, - 0xd9, 0x9e, 0x46, 0x85, 0x9f, 0x6b, 0x75, 0xda, 0x6e, 0x53, 0xd2, 0x89, 0x87, 0x93, 0xc7, 0x3d, - 0xcd, 0x74, 0x14, 0x9b, 0x34, 0x9a, 0x16, 0xa6, 0x1d, 0x1c, 0x98, 0x11, 0xd6, 0xc7, 0xd9, 0xff, - 0x27, 0x4b, 0x7f, 0x02, 0x00, 0x00, 0xff, 0xff, 0x50, 0xbf, 0x64, 0x1e, 0xf5, 0x09, 0x00, 0x00, +func (m *QueryRoleManagerRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryRoleManagerRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryRoleManagerRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryRoleManagerRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryRoleManagerRequest.Merge(m, src) +} +func (m *QueryRoleManagerRequest) XXX_Size() int { + return m.Size() +} +func (m *QueryRoleManagerRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryRoleManagerRequest.DiscardUnknown(m) } -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 +var xxx_messageInfo_QueryRoleManagerRequest proto.InternalMessageInfo -// QueryClient is the client API for Query service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type QueryClient interface { - // Params defines a gRPC query method that returns the permissions module's - // parameters. - Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) - // AllNamespaces defines a gRPC query method that returns the permissions - // module's created namespaces. - AllNamespaces(ctx context.Context, in *QueryAllNamespacesRequest, opts ...grpc.CallOption) (*QueryAllNamespacesResponse, error) - // NamespaceByDenom defines a gRPC query method that returns the permissions - // module's namespace associated with the provided denom. - NamespaceByDenom(ctx context.Context, in *QueryNamespaceByDenomRequest, opts ...grpc.CallOption) (*QueryNamespaceByDenomResponse, error) - // AddressRoles defines a gRPC query method that returns address roles in the - // namespace - AddressRoles(ctx context.Context, in *QueryAddressRolesRequest, opts ...grpc.CallOption) (*QueryAddressRolesResponse, error) - // AddressesByRole defines a gRPC query method that returns a namespace's - // roles associated with the provided address. - AddressesByRole(ctx context.Context, in *QueryAddressesByRoleRequest, opts ...grpc.CallOption) (*QueryAddressesByRoleResponse, error) - // VouchersForAddress defines a gRPC query method that returns a map of - // vouchers that are held by permissions module for this address, keyed by the - // originator address - VouchersForAddress(ctx context.Context, in *QueryVouchersForAddressRequest, opts ...grpc.CallOption) (*QueryVouchersForAddressResponse, error) +func (m *QueryRoleManagerRequest) GetDenom() string { + if m != nil { + return m.Denom + } + return "" } -type queryClient struct { - cc grpc1.ClientConn +func (m *QueryRoleManagerRequest) GetManager() string { + if m != nil { + return m.Manager + } + return "" } -func NewQueryClient(cc grpc1.ClientConn) QueryClient { - return &queryClient{cc} +// QueryRoleManagerResponse is the response type for the +// Query/RoleManager RPC method. +type QueryRoleManagerResponse struct { + RoleManager *RoleManager `protobuf:"bytes,1,opt,name=role_manager,json=roleManager,proto3" json:"role_manager,omitempty"` } -func (c *queryClient) Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) { - out := new(QueryParamsResponse) - err := c.cc.Invoke(ctx, "/injective.permissions.v1beta1.Query/Params", in, out, opts...) - if err != nil { - return nil, err +func (m *QueryRoleManagerResponse) Reset() { *m = QueryRoleManagerResponse{} } +func (m *QueryRoleManagerResponse) String() string { return proto.CompactTextString(m) } +func (*QueryRoleManagerResponse) ProtoMessage() {} +func (*QueryRoleManagerResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_e0ae50f1018498b3, []int{15} +} +func (m *QueryRoleManagerResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryRoleManagerResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryRoleManagerResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil } - return out, nil +} +func (m *QueryRoleManagerResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryRoleManagerResponse.Merge(m, src) +} +func (m *QueryRoleManagerResponse) XXX_Size() int { + return m.Size() +} +func (m *QueryRoleManagerResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryRoleManagerResponse.DiscardUnknown(m) } -func (c *queryClient) AllNamespaces(ctx context.Context, in *QueryAllNamespacesRequest, opts ...grpc.CallOption) (*QueryAllNamespacesResponse, error) { - out := new(QueryAllNamespacesResponse) - err := c.cc.Invoke(ctx, "/injective.permissions.v1beta1.Query/AllNamespaces", in, out, opts...) - if err != nil { - return nil, err +var xxx_messageInfo_QueryRoleManagerResponse proto.InternalMessageInfo + +func (m *QueryRoleManagerResponse) GetRoleManager() *RoleManager { + if m != nil { + return m.RoleManager } - return out, nil + return nil } -func (c *queryClient) NamespaceByDenom(ctx context.Context, in *QueryNamespaceByDenomRequest, opts ...grpc.CallOption) (*QueryNamespaceByDenomResponse, error) { - out := new(QueryNamespaceByDenomResponse) - err := c.cc.Invoke(ctx, "/injective.permissions.v1beta1.Query/NamespaceByDenom", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil +// QueryPolicyStatusesRequest is the request type for the Query/PolicyStatuses +// RPC method. +type QueryPolicyStatusesRequest struct { + Denom string `protobuf:"bytes,1,opt,name=denom,proto3" json:"denom,omitempty"` } -func (c *queryClient) AddressRoles(ctx context.Context, in *QueryAddressRolesRequest, opts ...grpc.CallOption) (*QueryAddressRolesResponse, error) { - out := new(QueryAddressRolesResponse) - err := c.cc.Invoke(ctx, "/injective.permissions.v1beta1.Query/AddressRoles", in, out, opts...) - if err != nil { - return nil, err +func (m *QueryPolicyStatusesRequest) Reset() { *m = QueryPolicyStatusesRequest{} } +func (m *QueryPolicyStatusesRequest) String() string { return proto.CompactTextString(m) } +func (*QueryPolicyStatusesRequest) ProtoMessage() {} +func (*QueryPolicyStatusesRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_e0ae50f1018498b3, []int{16} +} +func (m *QueryPolicyStatusesRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryPolicyStatusesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryPolicyStatusesRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil } - return out, nil +} +func (m *QueryPolicyStatusesRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryPolicyStatusesRequest.Merge(m, src) +} +func (m *QueryPolicyStatusesRequest) XXX_Size() int { + return m.Size() +} +func (m *QueryPolicyStatusesRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryPolicyStatusesRequest.DiscardUnknown(m) } -func (c *queryClient) AddressesByRole(ctx context.Context, in *QueryAddressesByRoleRequest, opts ...grpc.CallOption) (*QueryAddressesByRoleResponse, error) { - out := new(QueryAddressesByRoleResponse) - err := c.cc.Invoke(ctx, "/injective.permissions.v1beta1.Query/AddressesByRole", in, out, opts...) - if err != nil { - return nil, err +var xxx_messageInfo_QueryPolicyStatusesRequest proto.InternalMessageInfo + +func (m *QueryPolicyStatusesRequest) GetDenom() string { + if m != nil { + return m.Denom } - return out, nil + return "" } -func (c *queryClient) VouchersForAddress(ctx context.Context, in *QueryVouchersForAddressRequest, opts ...grpc.CallOption) (*QueryVouchersForAddressResponse, error) { - out := new(QueryVouchersForAddressResponse) - err := c.cc.Invoke(ctx, "/injective.permissions.v1beta1.Query/VouchersForAddress", in, out, opts...) - if err != nil { - return nil, err +// QueryRoleManagerResponse is the response type for the +// Query/RoleManager RPC method. +type QueryPolicyStatusesResponse struct { + PolicyStatuses []*PolicyStatus `protobuf:"bytes,1,rep,name=policy_statuses,json=policyStatuses,proto3" json:"policy_statuses,omitempty"` +} + +func (m *QueryPolicyStatusesResponse) Reset() { *m = QueryPolicyStatusesResponse{} } +func (m *QueryPolicyStatusesResponse) String() string { return proto.CompactTextString(m) } +func (*QueryPolicyStatusesResponse) ProtoMessage() {} +func (*QueryPolicyStatusesResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_e0ae50f1018498b3, []int{17} +} +func (m *QueryPolicyStatusesResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryPolicyStatusesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryPolicyStatusesResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil } - return out, nil +} +func (m *QueryPolicyStatusesResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryPolicyStatusesResponse.Merge(m, src) +} +func (m *QueryPolicyStatusesResponse) XXX_Size() int { + return m.Size() +} +func (m *QueryPolicyStatusesResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryPolicyStatusesResponse.DiscardUnknown(m) } -// QueryServer is the server API for Query service. -type QueryServer interface { - // Params defines a gRPC query method that returns the permissions module's - // parameters. - Params(context.Context, *QueryParamsRequest) (*QueryParamsResponse, error) - // AllNamespaces defines a gRPC query method that returns the permissions - // module's created namespaces. - AllNamespaces(context.Context, *QueryAllNamespacesRequest) (*QueryAllNamespacesResponse, error) - // NamespaceByDenom defines a gRPC query method that returns the permissions - // module's namespace associated with the provided denom. - NamespaceByDenom(context.Context, *QueryNamespaceByDenomRequest) (*QueryNamespaceByDenomResponse, error) - // AddressRoles defines a gRPC query method that returns address roles in the - // namespace - AddressRoles(context.Context, *QueryAddressRolesRequest) (*QueryAddressRolesResponse, error) - // AddressesByRole defines a gRPC query method that returns a namespace's - // roles associated with the provided address. - AddressesByRole(context.Context, *QueryAddressesByRoleRequest) (*QueryAddressesByRoleResponse, error) - // VouchersForAddress defines a gRPC query method that returns a map of - // vouchers that are held by permissions module for this address, keyed by the - // originator address - VouchersForAddress(context.Context, *QueryVouchersForAddressRequest) (*QueryVouchersForAddressResponse, error) +var xxx_messageInfo_QueryPolicyStatusesResponse proto.InternalMessageInfo + +func (m *QueryPolicyStatusesResponse) GetPolicyStatuses() []*PolicyStatus { + if m != nil { + return m.PolicyStatuses + } + return nil } -// UnimplementedQueryServer can be embedded to have forward compatible implementations. -type UnimplementedQueryServer struct { +// QueryPolicyManagerCapabilitiesRequest is the request type for the Query/PolicyManagerCapabilities +// RPC method. +type QueryPolicyManagerCapabilitiesRequest struct { + Denom string `protobuf:"bytes,1,opt,name=denom,proto3" json:"denom,omitempty"` } -func (*UnimplementedQueryServer) Params(ctx context.Context, req *QueryParamsRequest) (*QueryParamsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Params not implemented") +func (m *QueryPolicyManagerCapabilitiesRequest) Reset() { *m = QueryPolicyManagerCapabilitiesRequest{} } +func (m *QueryPolicyManagerCapabilitiesRequest) String() string { return proto.CompactTextString(m) } +func (*QueryPolicyManagerCapabilitiesRequest) ProtoMessage() {} +func (*QueryPolicyManagerCapabilitiesRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_e0ae50f1018498b3, []int{18} } -func (*UnimplementedQueryServer) AllNamespaces(ctx context.Context, req *QueryAllNamespacesRequest) (*QueryAllNamespacesResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method AllNamespaces not implemented") +func (m *QueryPolicyManagerCapabilitiesRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) } -func (*UnimplementedQueryServer) NamespaceByDenom(ctx context.Context, req *QueryNamespaceByDenomRequest) (*QueryNamespaceByDenomResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method NamespaceByDenom not implemented") +func (m *QueryPolicyManagerCapabilitiesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryPolicyManagerCapabilitiesRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } } -func (*UnimplementedQueryServer) AddressRoles(ctx context.Context, req *QueryAddressRolesRequest) (*QueryAddressRolesResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method AddressRoles not implemented") +func (m *QueryPolicyManagerCapabilitiesRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryPolicyManagerCapabilitiesRequest.Merge(m, src) } -func (*UnimplementedQueryServer) AddressesByRole(ctx context.Context, req *QueryAddressesByRoleRequest) (*QueryAddressesByRoleResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method AddressesByRole not implemented") +func (m *QueryPolicyManagerCapabilitiesRequest) XXX_Size() int { + return m.Size() } -func (*UnimplementedQueryServer) VouchersForAddress(ctx context.Context, req *QueryVouchersForAddressRequest) (*QueryVouchersForAddressResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method VouchersForAddress not implemented") +func (m *QueryPolicyManagerCapabilitiesRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryPolicyManagerCapabilitiesRequest.DiscardUnknown(m) } -func RegisterQueryServer(s grpc1.Server, srv QueryServer) { - s.RegisterService(&_Query_serviceDesc, srv) -} +var xxx_messageInfo_QueryPolicyManagerCapabilitiesRequest proto.InternalMessageInfo -func _Query_Params_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(QueryParamsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(QueryServer).Params(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/injective.permissions.v1beta1.Query/Params", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(QueryServer).Params(ctx, req.(*QueryParamsRequest)) +func (m *QueryPolicyManagerCapabilitiesRequest) GetDenom() string { + if m != nil { + return m.Denom } - return interceptor(ctx, in, info, handler) + return "" } -func _Query_AllNamespaces_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(QueryAllNamespacesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(QueryServer).AllNamespaces(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/injective.permissions.v1beta1.Query/AllNamespaces", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(QueryServer).AllNamespaces(ctx, req.(*QueryAllNamespacesRequest)) - } - return interceptor(ctx, in, info, handler) +// QueryPolicyManagerCapabilitiesResponse is the response type for the +// Query/PolicyManagerCapabilities RPC method. +type QueryPolicyManagerCapabilitiesResponse struct { + PolicyManagerCapabilities []*PolicyManagerCapability `protobuf:"bytes,1,rep,name=policy_manager_capabilities,json=policyManagerCapabilities,proto3" json:"policy_manager_capabilities,omitempty"` } -func _Query_NamespaceByDenom_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(QueryNamespaceByDenomRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(QueryServer).NamespaceByDenom(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/injective.permissions.v1beta1.Query/NamespaceByDenom", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(QueryServer).NamespaceByDenom(ctx, req.(*QueryNamespaceByDenomRequest)) - } - return interceptor(ctx, in, info, handler) +func (m *QueryPolicyManagerCapabilitiesResponse) Reset() { + *m = QueryPolicyManagerCapabilitiesResponse{} } - -func _Query_AddressRoles_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(QueryAddressRolesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(QueryServer).AddressRoles(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/injective.permissions.v1beta1.Query/AddressRoles", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(QueryServer).AddressRoles(ctx, req.(*QueryAddressRolesRequest)) - } - return interceptor(ctx, in, info, handler) +func (m *QueryPolicyManagerCapabilitiesResponse) String() string { return proto.CompactTextString(m) } +func (*QueryPolicyManagerCapabilitiesResponse) ProtoMessage() {} +func (*QueryPolicyManagerCapabilitiesResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_e0ae50f1018498b3, []int{19} } - -func _Query_AddressesByRole_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(QueryAddressesByRoleRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(QueryServer).AddressesByRole(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/injective.permissions.v1beta1.Query/AddressesByRole", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(QueryServer).AddressesByRole(ctx, req.(*QueryAddressesByRoleRequest)) +func (m *QueryPolicyManagerCapabilitiesResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryPolicyManagerCapabilitiesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryPolicyManagerCapabilitiesResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil } - return interceptor(ctx, in, info, handler) +} +func (m *QueryPolicyManagerCapabilitiesResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryPolicyManagerCapabilitiesResponse.Merge(m, src) +} +func (m *QueryPolicyManagerCapabilitiesResponse) XXX_Size() int { + return m.Size() +} +func (m *QueryPolicyManagerCapabilitiesResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryPolicyManagerCapabilitiesResponse.DiscardUnknown(m) } -func _Query_VouchersForAddress_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(QueryVouchersForAddressRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(QueryServer).VouchersForAddress(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/injective.permissions.v1beta1.Query/VouchersForAddress", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(QueryServer).VouchersForAddress(ctx, req.(*QueryVouchersForAddressRequest)) +var xxx_messageInfo_QueryPolicyManagerCapabilitiesResponse proto.InternalMessageInfo + +func (m *QueryPolicyManagerCapabilitiesResponse) GetPolicyManagerCapabilities() []*PolicyManagerCapability { + if m != nil { + return m.PolicyManagerCapabilities } - return interceptor(ctx, in, info, handler) + return nil } -var _Query_serviceDesc = grpc.ServiceDesc{ - ServiceName: "injective.permissions.v1beta1.Query", - HandlerType: (*QueryServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "Params", - Handler: _Query_Params_Handler, - }, - { - MethodName: "AllNamespaces", - Handler: _Query_AllNamespaces_Handler, - }, - { - MethodName: "NamespaceByDenom", - Handler: _Query_NamespaceByDenom_Handler, - }, - { - MethodName: "AddressRoles", - Handler: _Query_AddressRoles_Handler, - }, - { - MethodName: "AddressesByRole", - Handler: _Query_AddressesByRole_Handler, - }, - { - MethodName: "VouchersForAddress", - Handler: _Query_VouchersForAddress_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "injective/permissions/v1beta1/query.proto", +type QueryVouchersRequest struct { + Denom string `protobuf:"bytes,1,opt,name=denom,proto3" json:"denom,omitempty"` } -func (m *QueryParamsRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err +func (m *QueryVouchersRequest) Reset() { *m = QueryVouchersRequest{} } +func (m *QueryVouchersRequest) String() string { return proto.CompactTextString(m) } +func (*QueryVouchersRequest) ProtoMessage() {} +func (*QueryVouchersRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_e0ae50f1018498b3, []int{20} +} +func (m *QueryVouchersRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryVouchersRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryVouchersRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil } - return dAtA[:n], nil } - -func (m *QueryParamsRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) +func (m *QueryVouchersRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryVouchersRequest.Merge(m, src) } - -func (m *QueryParamsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - return len(dAtA) - i, nil +func (m *QueryVouchersRequest) XXX_Size() int { + return m.Size() +} +func (m *QueryVouchersRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryVouchersRequest.DiscardUnknown(m) } -func (m *QueryParamsResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err +var xxx_messageInfo_QueryVouchersRequest proto.InternalMessageInfo + +func (m *QueryVouchersRequest) GetDenom() string { + if m != nil { + return m.Denom } - return dAtA[:n], nil + return "" } -func (m *QueryParamsResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) +type QueryVouchersResponse struct { + Vouchers []*AddressVoucher `protobuf:"bytes,1,rep,name=vouchers,proto3" json:"vouchers,omitempty"` } -func (m *QueryParamsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - { - size, err := m.Params.MarshalToSizedBuffer(dAtA[:i]) +func (m *QueryVouchersResponse) Reset() { *m = QueryVouchersResponse{} } +func (m *QueryVouchersResponse) String() string { return proto.CompactTextString(m) } +func (*QueryVouchersResponse) ProtoMessage() {} +func (*QueryVouchersResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_e0ae50f1018498b3, []int{21} +} +func (m *QueryVouchersResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryVouchersResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryVouchersResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) if err != nil { - return 0, err + return nil, err } - i -= size - i = encodeVarintQuery(dAtA, i, uint64(size)) + return b[:n], nil } - i-- - dAtA[i] = 0xa - return len(dAtA) - i, nil +} +func (m *QueryVouchersResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryVouchersResponse.Merge(m, src) +} +func (m *QueryVouchersResponse) XXX_Size() int { + return m.Size() +} +func (m *QueryVouchersResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryVouchersResponse.DiscardUnknown(m) } -func (m *QueryAllNamespacesRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err +var xxx_messageInfo_QueryVouchersResponse proto.InternalMessageInfo + +func (m *QueryVouchersResponse) GetVouchers() []*AddressVoucher { + if m != nil { + return m.Vouchers } - return dAtA[:n], nil + return nil } -func (m *QueryAllNamespacesRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) +type QueryVoucherRequest struct { + Denom string `protobuf:"bytes,1,opt,name=denom,proto3" json:"denom,omitempty"` + Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"` } -func (m *QueryAllNamespacesRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - return len(dAtA) - i, nil +func (m *QueryVoucherRequest) Reset() { *m = QueryVoucherRequest{} } +func (m *QueryVoucherRequest) String() string { return proto.CompactTextString(m) } +func (*QueryVoucherRequest) ProtoMessage() {} +func (*QueryVoucherRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_e0ae50f1018498b3, []int{22} } - -func (m *QueryAllNamespacesResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err +func (m *QueryVoucherRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryVoucherRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryVoucherRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil } - return dAtA[:n], nil } - -func (m *QueryAllNamespacesResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) +func (m *QueryVoucherRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryVoucherRequest.Merge(m, src) +} +func (m *QueryVoucherRequest) XXX_Size() int { + return m.Size() +} +func (m *QueryVoucherRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryVoucherRequest.DiscardUnknown(m) } -func (m *QueryAllNamespacesResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Namespaces) > 0 { - for iNdEx := len(m.Namespaces) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.Namespaces[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintQuery(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } +var xxx_messageInfo_QueryVoucherRequest proto.InternalMessageInfo + +func (m *QueryVoucherRequest) GetDenom() string { + if m != nil { + return m.Denom } - return len(dAtA) - i, nil + return "" } -func (m *QueryNamespaceByDenomRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err +func (m *QueryVoucherRequest) GetAddress() string { + if m != nil { + return m.Address } - return dAtA[:n], nil + return "" } -func (m *QueryNamespaceByDenomRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) +type QueryVoucherResponse struct { + Voucher github_com_cosmos_cosmos_sdk_types.Coin `protobuf:"bytes,1,opt,name=voucher,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Coin" json:"voucher,omitempty"` } -func (m *QueryNamespaceByDenomRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.IncludeRoles { - i-- - if m.IncludeRoles { - dAtA[i] = 1 - } else { - dAtA[i] = 0 +func (m *QueryVoucherResponse) Reset() { *m = QueryVoucherResponse{} } +func (m *QueryVoucherResponse) String() string { return proto.CompactTextString(m) } +func (*QueryVoucherResponse) ProtoMessage() {} +func (*QueryVoucherResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_e0ae50f1018498b3, []int{23} +} +func (m *QueryVoucherResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryVoucherResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryVoucherResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err } - i-- - dAtA[i] = 0x10 + return b[:n], nil } - if len(m.Denom) > 0 { - i -= len(m.Denom) - copy(dAtA[i:], m.Denom) - i = encodeVarintQuery(dAtA, i, uint64(len(m.Denom))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil +} +func (m *QueryVoucherResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryVoucherResponse.Merge(m, src) +} +func (m *QueryVoucherResponse) XXX_Size() int { + return m.Size() +} +func (m *QueryVoucherResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryVoucherResponse.DiscardUnknown(m) } -func (m *QueryNamespaceByDenomResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err +var xxx_messageInfo_QueryVoucherResponse proto.InternalMessageInfo + +// QueryModuleStateRequest is the request type for the Query/PermissionsModuleState +// RPC method. +type QueryModuleStateRequest struct { +} + +func (m *QueryModuleStateRequest) Reset() { *m = QueryModuleStateRequest{} } +func (m *QueryModuleStateRequest) String() string { return proto.CompactTextString(m) } +func (*QueryModuleStateRequest) ProtoMessage() {} +func (*QueryModuleStateRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_e0ae50f1018498b3, []int{24} +} +func (m *QueryModuleStateRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryModuleStateRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryModuleStateRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil } - return dAtA[:n], nil +} +func (m *QueryModuleStateRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryModuleStateRequest.Merge(m, src) +} +func (m *QueryModuleStateRequest) XXX_Size() int { + return m.Size() +} +func (m *QueryModuleStateRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryModuleStateRequest.DiscardUnknown(m) } -func (m *QueryNamespaceByDenomResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) +var xxx_messageInfo_QueryModuleStateRequest proto.InternalMessageInfo + +// QueryModuleStateResponse is the response type for the Query/PermissionsModuleState +// RPC method. +type QueryModuleStateResponse struct { + State *GenesisState `protobuf:"bytes,1,opt,name=state,proto3" json:"state,omitempty"` } -func (m *QueryNamespaceByDenomResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.Namespace != nil { - { - size, err := m.Namespace.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintQuery(dAtA, i, uint64(size)) +func (m *QueryModuleStateResponse) Reset() { *m = QueryModuleStateResponse{} } +func (m *QueryModuleStateResponse) String() string { return proto.CompactTextString(m) } +func (*QueryModuleStateResponse) ProtoMessage() {} +func (*QueryModuleStateResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_e0ae50f1018498b3, []int{25} +} +func (m *QueryModuleStateResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryModuleStateResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryModuleStateResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err } - i-- - dAtA[i] = 0xa + return b[:n], nil } - return len(dAtA) - i, nil +} +func (m *QueryModuleStateResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryModuleStateResponse.Merge(m, src) +} +func (m *QueryModuleStateResponse) XXX_Size() int { + return m.Size() +} +func (m *QueryModuleStateResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryModuleStateResponse.DiscardUnknown(m) } -func (m *QueryAddressesByRoleRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err +var xxx_messageInfo_QueryModuleStateResponse proto.InternalMessageInfo + +func (m *QueryModuleStateResponse) GetState() *GenesisState { + if m != nil { + return m.State } - return dAtA[:n], nil + return nil } -func (m *QueryAddressesByRoleRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) +func init() { + proto.RegisterType((*QueryParamsRequest)(nil), "injective.permissions.v1beta1.QueryParamsRequest") + proto.RegisterType((*QueryParamsResponse)(nil), "injective.permissions.v1beta1.QueryParamsResponse") + proto.RegisterType((*QueryNamespaceDenomsRequest)(nil), "injective.permissions.v1beta1.QueryNamespaceDenomsRequest") + proto.RegisterType((*QueryNamespaceDenomsResponse)(nil), "injective.permissions.v1beta1.QueryNamespaceDenomsResponse") + proto.RegisterType((*QueryNamespacesRequest)(nil), "injective.permissions.v1beta1.QueryNamespacesRequest") + proto.RegisterType((*QueryNamespacesResponse)(nil), "injective.permissions.v1beta1.QueryNamespacesResponse") + proto.RegisterType((*QueryNamespaceRequest)(nil), "injective.permissions.v1beta1.QueryNamespaceRequest") + proto.RegisterType((*QueryNamespaceResponse)(nil), "injective.permissions.v1beta1.QueryNamespaceResponse") + proto.RegisterType((*QueryActorsByRoleRequest)(nil), "injective.permissions.v1beta1.QueryActorsByRoleRequest") + proto.RegisterType((*QueryActorsByRoleResponse)(nil), "injective.permissions.v1beta1.QueryActorsByRoleResponse") + proto.RegisterType((*QueryRolesByActorRequest)(nil), "injective.permissions.v1beta1.QueryRolesByActorRequest") + proto.RegisterType((*QueryRolesByActorResponse)(nil), "injective.permissions.v1beta1.QueryRolesByActorResponse") + proto.RegisterType((*QueryRoleManagersRequest)(nil), "injective.permissions.v1beta1.QueryRoleManagersRequest") + proto.RegisterType((*QueryRoleManagersResponse)(nil), "injective.permissions.v1beta1.QueryRoleManagersResponse") + proto.RegisterType((*QueryRoleManagerRequest)(nil), "injective.permissions.v1beta1.QueryRoleManagerRequest") + proto.RegisterType((*QueryRoleManagerResponse)(nil), "injective.permissions.v1beta1.QueryRoleManagerResponse") + proto.RegisterType((*QueryPolicyStatusesRequest)(nil), "injective.permissions.v1beta1.QueryPolicyStatusesRequest") + proto.RegisterType((*QueryPolicyStatusesResponse)(nil), "injective.permissions.v1beta1.QueryPolicyStatusesResponse") + proto.RegisterType((*QueryPolicyManagerCapabilitiesRequest)(nil), "injective.permissions.v1beta1.QueryPolicyManagerCapabilitiesRequest") + proto.RegisterType((*QueryPolicyManagerCapabilitiesResponse)(nil), "injective.permissions.v1beta1.QueryPolicyManagerCapabilitiesResponse") + proto.RegisterType((*QueryVouchersRequest)(nil), "injective.permissions.v1beta1.QueryVouchersRequest") + proto.RegisterType((*QueryVouchersResponse)(nil), "injective.permissions.v1beta1.QueryVouchersResponse") + proto.RegisterType((*QueryVoucherRequest)(nil), "injective.permissions.v1beta1.QueryVoucherRequest") + proto.RegisterType((*QueryVoucherResponse)(nil), "injective.permissions.v1beta1.QueryVoucherResponse") + proto.RegisterType((*QueryModuleStateRequest)(nil), "injective.permissions.v1beta1.QueryModuleStateRequest") + proto.RegisterType((*QueryModuleStateResponse)(nil), "injective.permissions.v1beta1.QueryModuleStateResponse") } -func (m *QueryAddressesByRoleRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Role) > 0 { - i -= len(m.Role) - copy(dAtA[i:], m.Role) - i = encodeVarintQuery(dAtA, i, uint64(len(m.Role))) - i-- - dAtA[i] = 0x12 - } - if len(m.Denom) > 0 { - i -= len(m.Denom) - copy(dAtA[i:], m.Denom) - i = encodeVarintQuery(dAtA, i, uint64(len(m.Denom))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil +func init() { + proto.RegisterFile("injective/permissions/v1beta1/query.proto", fileDescriptor_e0ae50f1018498b3) } -func (m *QueryAddressesByRoleResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil +var fileDescriptor_e0ae50f1018498b3 = []byte{ + // 1263 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x98, 0x4f, 0x6f, 0x1b, 0xc5, + 0x1b, 0xc7, 0xb3, 0xfd, 0x35, 0x49, 0xf3, 0x24, 0xbf, 0x56, 0x4c, 0x4d, 0x70, 0xdc, 0xd6, 0xa9, + 0x46, 0x0a, 0x4d, 0x9b, 0xda, 0x5b, 0x3b, 0xa9, 0x13, 0x42, 0x5b, 0x88, 0xe3, 0x14, 0x82, 0x08, + 0xb4, 0x0b, 0xe2, 0x50, 0x09, 0x99, 0xf5, 0x7a, 0xe4, 0x2c, 0xb5, 0x77, 0xb6, 0x9e, 0x75, 0x24, + 0xab, 0xca, 0x85, 0x57, 0x00, 0xe2, 0x8e, 0x78, 0x05, 0x3d, 0x20, 0xce, 0x70, 0x40, 0x88, 0x1c, + 0x2b, 0x71, 0x41, 0x48, 0x44, 0x28, 0xe1, 0xc4, 0x99, 0x17, 0x80, 0x76, 0xf6, 0xd9, 0xf5, 0xda, + 0x71, 0xbc, 0xbb, 0xe1, 0x14, 0xcf, 0x9f, 0xe7, 0xfb, 0x7c, 0x9e, 0x99, 0xd9, 0x99, 0xaf, 0x02, + 0x37, 0x4d, 0xeb, 0x73, 0x66, 0x38, 0xe6, 0x1e, 0x53, 0x6d, 0xd6, 0x6e, 0x99, 0x42, 0x98, 0xdc, + 0x12, 0xea, 0x5e, 0xa1, 0xc6, 0x1c, 0xbd, 0xa0, 0x3e, 0xeb, 0xb0, 0x76, 0x37, 0x6f, 0xb7, 0xb9, + 0xc3, 0xc9, 0xb5, 0x60, 0x6a, 0x3e, 0x34, 0x35, 0x8f, 0x53, 0x33, 0xa9, 0x06, 0x6f, 0x70, 0x39, + 0x53, 0x75, 0x7f, 0x79, 0x41, 0x99, 0xab, 0x0d, 0xce, 0x1b, 0x4d, 0xa6, 0xea, 0xb6, 0xa9, 0xea, + 0x96, 0xc5, 0x1d, 0xdd, 0x91, 0x51, 0xde, 0x68, 0xd6, 0xe0, 0xa2, 0xc5, 0x85, 0x5a, 0xd3, 0x05, + 0x0b, 0x72, 0x1a, 0xdc, 0xb4, 0x70, 0xfc, 0x56, 0x78, 0x5c, 0xb2, 0x04, 0xb3, 0x6c, 0xbd, 0x61, + 0x5a, 0x52, 0xcc, 0x9f, 0x3b, 0xba, 0x12, 0x5b, 0x6f, 0xeb, 0x2d, 0x3f, 0xef, 0xd2, 0xe8, 0xb9, + 0x0d, 0x66, 0x31, 0x61, 0xfa, 0x93, 0xd5, 0x08, 0xe1, 0xd0, 0x5a, 0xc8, 0x00, 0x9a, 0x02, 0xf2, + 0xd8, 0x65, 0x7d, 0x24, 0x53, 0x6a, 0xec, 0x59, 0x87, 0x09, 0x87, 0x3e, 0x81, 0xcb, 0x7d, 0xbd, + 0xc2, 0xe6, 0x96, 0x60, 0x64, 0x13, 0x26, 0x3c, 0xb4, 0xb4, 0x72, 0x5d, 0x59, 0x9c, 0x2e, 0x2e, + 0xe4, 0x47, 0x2e, 0x73, 0xde, 0x0b, 0x2f, 0x9f, 0x3f, 0x38, 0x9c, 0x1f, 0xd3, 0x30, 0x94, 0x5e, + 0x83, 0x2b, 0x52, 0xfb, 0x03, 0xbd, 0xc5, 0x84, 0xad, 0x1b, 0xac, 0xc2, 0x2c, 0xde, 0x4b, 0x5d, + 0x82, 0xab, 0xc3, 0x87, 0x91, 0x61, 0x16, 0x26, 0xea, 0xb2, 0x27, 0xad, 0x5c, 0xff, 0xdf, 0xe2, + 0x94, 0x86, 0x2d, 0x9a, 0x86, 0xd9, 0xfe, 0xb8, 0x40, 0xd1, 0x80, 0xd7, 0x4e, 0x8c, 0xa0, 0xd8, + 0xbb, 0x00, 0x56, 0xd0, 0x2b, 0x05, 0xa7, 0x8b, 0x8b, 0x11, 0x45, 0x05, 0x32, 0x5a, 0x28, 0x96, + 0xe6, 0xe0, 0xd5, 0xfe, 0x24, 0x98, 0x9d, 0xa4, 0x60, 0x5c, 0x12, 0xca, 0x25, 0x9b, 0xd2, 0xbc, + 0x06, 0xfd, 0x6c, 0x90, 0x36, 0x40, 0x7a, 0x08, 0x53, 0x81, 0x2c, 0x2e, 0x73, 0x7c, 0xa2, 0x5e, + 0x28, 0xad, 0x40, 0x5a, 0x66, 0xd8, 0x30, 0x1c, 0xde, 0x16, 0xe5, 0xae, 0xc6, 0x9b, 0xa3, 0x99, + 0x08, 0x81, 0xf3, 0x6d, 0xde, 0x64, 0xe9, 0x73, 0xb2, 0x53, 0xfe, 0xa6, 0xcb, 0x30, 0x37, 0x44, + 0xa5, 0xb7, 0x15, 0xba, 0xec, 0xf7, 0xb7, 0xc2, 0x6b, 0xd1, 0x87, 0x98, 0xda, 0x9d, 0x2c, 0xca, + 0x5e, 0xec, 0xe8, 0xd4, 0x29, 0x18, 0x97, 0xb1, 0x98, 0xdb, 0x6b, 0xd0, 0x02, 0x26, 0xef, 0xd7, + 0xc1, 0xe4, 0x29, 0x18, 0x77, 0x09, 0xfd, 0xdc, 0x5e, 0x83, 0xde, 0x09, 0xa5, 0xde, 0xd1, 0x2d, + 0xbd, 0xc1, 0xda, 0x62, 0xf4, 0x4e, 0x34, 0x43, 0x49, 0x7a, 0x11, 0x98, 0xe4, 0x43, 0xf8, 0xbf, + 0xab, 0x5b, 0x6d, 0xe1, 0x00, 0x1e, 0x91, 0x5b, 0x11, 0x1b, 0x12, 0xd2, 0xd2, 0x66, 0xda, 0x21, + 0x61, 0xba, 0x8d, 0x67, 0x31, 0x3c, 0x63, 0xe4, 0xca, 0xa4, 0x61, 0x12, 0x93, 0xe3, 0xda, 0xf8, + 0x4d, 0x6a, 0x9e, 0x2c, 0x35, 0xe0, 0xde, 0x81, 0x99, 0x30, 0x37, 0x9e, 0xa3, 0x24, 0xd8, 0xd3, + 0x21, 0x6c, 0x5a, 0x84, 0x8c, 0x77, 0x1d, 0xf0, 0xa6, 0x69, 0x74, 0x3f, 0x72, 0x74, 0xa7, 0x23, + 0x58, 0xc4, 0xba, 0x0a, 0xfc, 0xcc, 0x07, 0x63, 0x90, 0xf0, 0x63, 0xb8, 0x64, 0xcb, 0x91, 0xaa, + 0xc0, 0x21, 0x5c, 0xdb, 0xa5, 0xa8, 0x3b, 0x25, 0xa4, 0xa7, 0x5d, 0xb4, 0xfb, 0xd4, 0xe9, 0x7d, + 0x58, 0x08, 0x25, 0x45, 0xfc, 0x4d, 0xdd, 0xd6, 0x6b, 0x66, 0xd3, 0x74, 0xcc, 0x28, 0xe6, 0x6f, + 0x15, 0x78, 0x3d, 0x2a, 0x1e, 0xf9, 0xf7, 0xe0, 0x0a, 0xf2, 0xe3, 0x1a, 0x57, 0x8d, 0xd0, 0x34, + 0xac, 0xa5, 0x14, 0xab, 0x96, 0xc1, 0x34, 0x5d, 0x6d, 0xce, 0x3e, 0x2d, 0x3f, 0xbd, 0x0d, 0x29, + 0x49, 0xf8, 0x09, 0xef, 0x18, 0xbb, 0x91, 0x87, 0xbb, 0x86, 0xb7, 0x52, 0x6f, 0x36, 0xe2, 0x6f, + 0xc3, 0x85, 0x3d, 0xec, 0x43, 0xd6, 0x5c, 0x04, 0xeb, 0x46, 0xbd, 0xde, 0x66, 0x42, 0xa0, 0x92, + 0x16, 0x84, 0xd3, 0x2d, 0x7c, 0x2b, 0xfc, 0x91, 0xa8, 0xe3, 0xac, 0x7b, 0x42, 0xfe, 0x71, 0xc6, + 0x26, 0xfd, 0x4a, 0xe9, 0xaf, 0x2c, 0x40, 0xed, 0xc2, 0x24, 0xe6, 0xc2, 0x63, 0x3c, 0x97, 0xf7, + 0x5e, 0xda, 0xbc, 0xfb, 0xd2, 0x06, 0x7c, 0x9b, 0xdc, 0xb4, 0xca, 0x15, 0xf7, 0xa5, 0xf9, 0xfd, + 0x70, 0xfe, 0x46, 0xc3, 0x74, 0x76, 0x3b, 0xb5, 0xbc, 0xc1, 0x5b, 0x2a, 0x3e, 0xcb, 0xde, 0x9f, + 0x9c, 0xa8, 0x3f, 0x55, 0x9d, 0xae, 0xcd, 0x84, 0x0c, 0xf8, 0xfb, 0x70, 0xfe, 0x15, 0x14, 0xbf, + 0xcd, 0x5b, 0xa6, 0xc3, 0x5a, 0xb6, 0xd3, 0xd5, 0xfc, 0x7c, 0x74, 0x0e, 0xbf, 0xd6, 0x1d, 0x5e, + 0xef, 0x34, 0x99, 0x7b, 0xca, 0xfc, 0x2b, 0x94, 0x7e, 0x8a, 0x5f, 0x5f, 0xdf, 0x10, 0x12, 0x6f, + 0xc0, 0xb8, 0x7b, 0xa8, 0xfd, 0xeb, 0x3b, 0xea, 0x44, 0xbf, 0xe3, 0xbd, 0xe0, 0x9e, 0x86, 0x17, + 0x59, 0xfc, 0xe3, 0x32, 0x8c, 0x4b, 0x7d, 0xf2, 0x8d, 0x02, 0x13, 0xde, 0x3b, 0x4a, 0x0a, 0x11, + 0x42, 0x27, 0x1f, 0xf2, 0x4c, 0x31, 0x49, 0x88, 0x87, 0x4f, 0x73, 0x5f, 0xfc, 0xfa, 0xd7, 0xd7, + 0xe7, 0x6e, 0x90, 0x05, 0x35, 0x8e, 0x4b, 0x21, 0x3f, 0x29, 0x70, 0x69, 0xe0, 0xb1, 0x26, 0xeb, + 0x71, 0xd2, 0x0e, 0x37, 0x00, 0x99, 0x37, 0xcf, 0x14, 0x8b, 0xec, 0xab, 0x92, 0xbd, 0x40, 0xd4, + 0x08, 0xf6, 0xe0, 0x9d, 0xac, 0x7a, 0xf6, 0x81, 0xbc, 0x50, 0x00, 0x7a, 0x06, 0x81, 0xdc, 0x4d, + 0x04, 0x11, 0xb0, 0x97, 0x92, 0x86, 0x21, 0x76, 0x41, 0x62, 0x2f, 0x91, 0x9b, 0x71, 0xb1, 0x05, + 0xf9, 0x4e, 0x81, 0xa9, 0x40, 0x89, 0xac, 0x24, 0x4a, 0xec, 0xe3, 0xde, 0x4d, 0x18, 0x85, 0xb4, + 0x6b, 0x92, 0xb6, 0x48, 0xee, 0xc4, 0xa5, 0x55, 0x9f, 0xcb, 0x55, 0xde, 0x27, 0x07, 0x0a, 0xcc, + 0x84, 0x5f, 0x73, 0xb2, 0x1a, 0x87, 0x60, 0x88, 0x8f, 0xc8, 0xac, 0x25, 0x0f, 0x44, 0xfa, 0x2d, + 0x49, 0xff, 0x16, 0xb9, 0x1f, 0x41, 0x2f, 0x0d, 0x45, 0xb5, 0xd6, 0xad, 0x4a, 0x33, 0xe2, 0x97, + 0xa0, 0x3e, 0x97, 0xcd, 0x7d, 0xf2, 0x8b, 0x02, 0x33, 0x61, 0x57, 0x14, 0xaf, 0x94, 0x21, 0x6e, + 0x2c, 0x5e, 0x29, 0xc3, 0x0c, 0x18, 0xad, 0xc8, 0x52, 0x1e, 0x90, 0x7b, 0x11, 0xa5, 0x78, 0xbe, + 0xcc, 0xad, 0xc5, 0x2d, 0xaa, 0x57, 0x8a, 0xdb, 0xda, 0x27, 0x3f, 0xe2, 0xa6, 0xf8, 0x26, 0x25, + 0xfe, 0xa6, 0x0c, 0x38, 0xac, 0xf8, 0x9b, 0x32, 0x68, 0xb4, 0xe8, 0x3d, 0x59, 0x49, 0x89, 0xac, + 0xc4, 0xd8, 0x94, 0xc0, 0x8d, 0x05, 0xc7, 0xea, 0x67, 0x05, 0xa6, 0x43, 0xb2, 0xa4, 0x94, 0x90, + 0xc3, 0xe7, 0x5f, 0x4d, 0x1c, 0x77, 0x86, 0x33, 0xe5, 0xe3, 0xf7, 0xb6, 0x01, 0x3b, 0xe4, 0x99, + 0xba, 0xd8, 0xef, 0x97, 0xc8, 0x1b, 0xb1, 0x2e, 0xf0, 0x61, 0xbe, 0x2c, 0xb3, 0x7e, 0x96, 0x50, + 0x2c, 0xe8, 0x81, 0x2c, 0x68, 0x8d, 0x94, 0xa2, 0xde, 0x80, 0x7e, 0x0f, 0x17, 0xec, 0xc8, 0x3f, + 0x0a, 0xcc, 0x9d, 0x6a, 0xa2, 0x48, 0x25, 0x3e, 0xd9, 0xe9, 0x1e, 0x2e, 0xb3, 0xf5, 0x1f, 0x55, + 0xb0, 0xd4, 0xf7, 0x64, 0xa9, 0x15, 0x52, 0x8e, 0x57, 0xea, 0x30, 0xbb, 0x17, 0x94, 0xfd, 0x42, + 0x81, 0x0b, 0xbe, 0xd7, 0x22, 0xcb, 0x71, 0xf8, 0x06, 0x7c, 0x5c, 0x66, 0x25, 0x59, 0x50, 0xc2, + 0x67, 0xcf, 0x37, 0x6d, 0x01, 0xf0, 0xf7, 0x0a, 0x4c, 0xa2, 0x1a, 0x29, 0x26, 0x48, 0xed, 0xe3, + 0x2e, 0x27, 0x8a, 0x41, 0xda, 0xb7, 0x25, 0xed, 0x3a, 0x59, 0x8b, 0x47, 0x1b, 0xba, 0x7a, 0x3d, + 0xaf, 0xb8, 0x4f, 0x7e, 0x50, 0x60, 0xf6, 0x51, 0x2f, 0x22, 0x64, 0xc2, 0xe2, 0x7d, 0xfb, 0x27, + 0x0d, 0x5d, 0xbc, 0x6f, 0x7f, 0x88, 0xdb, 0xa3, 0xcb, 0xb2, 0x9a, 0x1c, 0x59, 0x8a, 0xa8, 0xa6, + 0x25, 0x63, 0xe5, 0xa7, 0xc2, 0xca, 0x4f, 0x0f, 0x8e, 0xb2, 0xca, 0xcb, 0xa3, 0xac, 0xf2, 0xe7, + 0x51, 0x56, 0xf9, 0xf2, 0x38, 0x3b, 0xf6, 0xf2, 0x38, 0x3b, 0xf6, 0xdb, 0x71, 0x76, 0xec, 0xc9, + 0xe3, 0x90, 0x75, 0xdd, 0xf6, 0x05, 0xdf, 0xd7, 0x6b, 0xa2, 0x27, 0x9f, 0x33, 0x78, 0x9b, 0x85, + 0x9b, 0xbb, 0xba, 0x69, 0xa1, 0xbe, 0xe8, 0xcb, 0x2d, 0x9d, 0x6e, 0x6d, 0x42, 0xfe, 0xab, 0x67, + 0xf9, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x36, 0x6c, 0x4e, 0x0d, 0x40, 0x13, 0x00, 0x00, } -func (m *QueryAddressesByRoleResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) +// Reference imports to suppress errors if they are not otherwise used. +var _ context.Context +var _ grpc.ClientConn + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +const _ = grpc.SupportPackageIsVersion4 + +// QueryClient is the client API for Query service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +type QueryClient interface { + // Params defines a gRPC query method that returns the permissions module's + // parameters. + Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) + // NamespaceDenoms defines a gRPC query method that returns the denoms for which a namespace exists + NamespaceDenoms(ctx context.Context, in *QueryNamespaceDenomsRequest, opts ...grpc.CallOption) (*QueryNamespaceDenomsResponse, error) + // Namespaces defines a gRPC query method that returns the permissions + // module's created namespaces. + Namespaces(ctx context.Context, in *QueryNamespacesRequest, opts ...grpc.CallOption) (*QueryNamespacesResponse, error) + // Namespace defines a gRPC query method that returns the permissions + // module's namespace associated with the provided denom. + Namespace(ctx context.Context, in *QueryNamespaceRequest, opts ...grpc.CallOption) (*QueryNamespaceResponse, error) + // RolesByActor defines a gRPC query method that returns roles for the actor in the namespace + RolesByActor(ctx context.Context, in *QueryRolesByActorRequest, opts ...grpc.CallOption) (*QueryRolesByActorResponse, error) + // ActorsByRole defines a gRPC query method that returns a namespace's roles associated with the provided actor. + ActorsByRole(ctx context.Context, in *QueryActorsByRoleRequest, opts ...grpc.CallOption) (*QueryActorsByRoleResponse, error) + // RoleManagers defines a gRPC query method that returns a namespace's role managers + RoleManagers(ctx context.Context, in *QueryRoleManagersRequest, opts ...grpc.CallOption) (*QueryRoleManagersResponse, error) + // RoleManager defines a gRPC query method that returns the roles a given role manager manages for a given namespace + RoleManager(ctx context.Context, in *QueryRoleManagerRequest, opts ...grpc.CallOption) (*QueryRoleManagerResponse, error) + // PolicyStatuses defines a gRPC query method that returns a namespace's policy statuses + PolicyStatuses(ctx context.Context, in *QueryPolicyStatusesRequest, opts ...grpc.CallOption) (*QueryPolicyStatusesResponse, error) + // PolicyManagerCapabilities defines a gRPC query method that returns a namespace's policy manager capabilities + PolicyManagerCapabilities(ctx context.Context, in *QueryPolicyManagerCapabilitiesRequest, opts ...grpc.CallOption) (*QueryPolicyManagerCapabilitiesResponse, error) + // Vouchers defines a gRPC query method for the vouchers for a given denom + Vouchers(ctx context.Context, in *QueryVouchersRequest, opts ...grpc.CallOption) (*QueryVouchersResponse, error) + // Voucher defines a gRPC query method for the vouchers for a given denom and address + Voucher(ctx context.Context, in *QueryVoucherRequest, opts ...grpc.CallOption) (*QueryVoucherResponse, error) + // Retrieves the entire permissions module's state + PermissionsModuleState(ctx context.Context, in *QueryModuleStateRequest, opts ...grpc.CallOption) (*QueryModuleStateResponse, error) } -func (m *QueryAddressesByRoleResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Addresses) > 0 { - for iNdEx := len(m.Addresses) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.Addresses[iNdEx]) - copy(dAtA[i:], m.Addresses[iNdEx]) - i = encodeVarintQuery(dAtA, i, uint64(len(m.Addresses[iNdEx]))) - i-- - dAtA[i] = 0xa - } +type queryClient struct { + cc grpc1.ClientConn +} + +func NewQueryClient(cc grpc1.ClientConn) QueryClient { + return &queryClient{cc} +} + +func (c *queryClient) Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) { + out := new(QueryParamsResponse) + err := c.cc.Invoke(ctx, "/injective.permissions.v1beta1.Query/Params", in, out, opts...) + if err != nil { + return nil, err } - return len(dAtA) - i, nil + return out, nil } -func (m *QueryAddressRolesRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) +func (c *queryClient) NamespaceDenoms(ctx context.Context, in *QueryNamespaceDenomsRequest, opts ...grpc.CallOption) (*QueryNamespaceDenomsResponse, error) { + out := new(QueryNamespaceDenomsResponse) + err := c.cc.Invoke(ctx, "/injective.permissions.v1beta1.Query/NamespaceDenoms", in, out, opts...) if err != nil { return nil, err } - return dAtA[:n], nil + return out, nil } -func (m *QueryAddressRolesRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) +func (c *queryClient) Namespaces(ctx context.Context, in *QueryNamespacesRequest, opts ...grpc.CallOption) (*QueryNamespacesResponse, error) { + out := new(QueryNamespacesResponse) + err := c.cc.Invoke(ctx, "/injective.permissions.v1beta1.Query/Namespaces", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil } -func (m *QueryAddressRolesRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Address) > 0 { - i -= len(m.Address) - copy(dAtA[i:], m.Address) - i = encodeVarintQuery(dAtA, i, uint64(len(m.Address))) - i-- - dAtA[i] = 0x12 +func (c *queryClient) Namespace(ctx context.Context, in *QueryNamespaceRequest, opts ...grpc.CallOption) (*QueryNamespaceResponse, error) { + out := new(QueryNamespaceResponse) + err := c.cc.Invoke(ctx, "/injective.permissions.v1beta1.Query/Namespace", in, out, opts...) + if err != nil { + return nil, err } - if len(m.Denom) > 0 { - i -= len(m.Denom) - copy(dAtA[i:], m.Denom) - i = encodeVarintQuery(dAtA, i, uint64(len(m.Denom))) - i-- - dAtA[i] = 0xa + return out, nil +} + +func (c *queryClient) RolesByActor(ctx context.Context, in *QueryRolesByActorRequest, opts ...grpc.CallOption) (*QueryRolesByActorResponse, error) { + out := new(QueryRolesByActorResponse) + err := c.cc.Invoke(ctx, "/injective.permissions.v1beta1.Query/RolesByActor", in, out, opts...) + if err != nil { + return nil, err } - return len(dAtA) - i, nil + return out, nil } -func (m *QueryAddressRolesResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) +func (c *queryClient) ActorsByRole(ctx context.Context, in *QueryActorsByRoleRequest, opts ...grpc.CallOption) (*QueryActorsByRoleResponse, error) { + out := new(QueryActorsByRoleResponse) + err := c.cc.Invoke(ctx, "/injective.permissions.v1beta1.Query/ActorsByRole", in, out, opts...) if err != nil { return nil, err } - return dAtA[:n], nil + return out, nil } -func (m *QueryAddressRolesResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) +func (c *queryClient) RoleManagers(ctx context.Context, in *QueryRoleManagersRequest, opts ...grpc.CallOption) (*QueryRoleManagersResponse, error) { + out := new(QueryRoleManagersResponse) + err := c.cc.Invoke(ctx, "/injective.permissions.v1beta1.Query/RoleManagers", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil } -func (m *QueryAddressRolesResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Roles) > 0 { - for iNdEx := len(m.Roles) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.Roles[iNdEx]) - copy(dAtA[i:], m.Roles[iNdEx]) - i = encodeVarintQuery(dAtA, i, uint64(len(m.Roles[iNdEx]))) - i-- - dAtA[i] = 0xa - } +func (c *queryClient) RoleManager(ctx context.Context, in *QueryRoleManagerRequest, opts ...grpc.CallOption) (*QueryRoleManagerResponse, error) { + out := new(QueryRoleManagerResponse) + err := c.cc.Invoke(ctx, "/injective.permissions.v1beta1.Query/RoleManager", in, out, opts...) + if err != nil { + return nil, err } - return len(dAtA) - i, nil + return out, nil } -func (m *QueryVouchersForAddressRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) +func (c *queryClient) PolicyStatuses(ctx context.Context, in *QueryPolicyStatusesRequest, opts ...grpc.CallOption) (*QueryPolicyStatusesResponse, error) { + out := new(QueryPolicyStatusesResponse) + err := c.cc.Invoke(ctx, "/injective.permissions.v1beta1.Query/PolicyStatuses", in, out, opts...) if err != nil { return nil, err } - return dAtA[:n], nil + return out, nil } -func (m *QueryVouchersForAddressRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) +func (c *queryClient) PolicyManagerCapabilities(ctx context.Context, in *QueryPolicyManagerCapabilitiesRequest, opts ...grpc.CallOption) (*QueryPolicyManagerCapabilitiesResponse, error) { + out := new(QueryPolicyManagerCapabilitiesResponse) + err := c.cc.Invoke(ctx, "/injective.permissions.v1beta1.Query/PolicyManagerCapabilities", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil } -func (m *QueryVouchersForAddressRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Address) > 0 { - i -= len(m.Address) - copy(dAtA[i:], m.Address) - i = encodeVarintQuery(dAtA, i, uint64(len(m.Address))) - i-- - dAtA[i] = 0xa +func (c *queryClient) Vouchers(ctx context.Context, in *QueryVouchersRequest, opts ...grpc.CallOption) (*QueryVouchersResponse, error) { + out := new(QueryVouchersResponse) + err := c.cc.Invoke(ctx, "/injective.permissions.v1beta1.Query/Vouchers", in, out, opts...) + if err != nil { + return nil, err } - return len(dAtA) - i, nil + return out, nil } -func (m *QueryVouchersForAddressResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) +func (c *queryClient) Voucher(ctx context.Context, in *QueryVoucherRequest, opts ...grpc.CallOption) (*QueryVoucherResponse, error) { + out := new(QueryVoucherResponse) + err := c.cc.Invoke(ctx, "/injective.permissions.v1beta1.Query/Voucher", in, out, opts...) if err != nil { return nil, err } - return dAtA[:n], nil + return out, nil } -func (m *QueryVouchersForAddressResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) +func (c *queryClient) PermissionsModuleState(ctx context.Context, in *QueryModuleStateRequest, opts ...grpc.CallOption) (*QueryModuleStateResponse, error) { + out := new(QueryModuleStateResponse) + err := c.cc.Invoke(ctx, "/injective.permissions.v1beta1.Query/PermissionsModuleState", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil } -func (m *QueryVouchersForAddressResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Vouchers) > 0 { - for iNdEx := len(m.Vouchers) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.Vouchers[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintQuery(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } +// QueryServer is the server API for Query service. +type QueryServer interface { + // Params defines a gRPC query method that returns the permissions module's + // parameters. + Params(context.Context, *QueryParamsRequest) (*QueryParamsResponse, error) + // NamespaceDenoms defines a gRPC query method that returns the denoms for which a namespace exists + NamespaceDenoms(context.Context, *QueryNamespaceDenomsRequest) (*QueryNamespaceDenomsResponse, error) + // Namespaces defines a gRPC query method that returns the permissions + // module's created namespaces. + Namespaces(context.Context, *QueryNamespacesRequest) (*QueryNamespacesResponse, error) + // Namespace defines a gRPC query method that returns the permissions + // module's namespace associated with the provided denom. + Namespace(context.Context, *QueryNamespaceRequest) (*QueryNamespaceResponse, error) + // RolesByActor defines a gRPC query method that returns roles for the actor in the namespace + RolesByActor(context.Context, *QueryRolesByActorRequest) (*QueryRolesByActorResponse, error) + // ActorsByRole defines a gRPC query method that returns a namespace's roles associated with the provided actor. + ActorsByRole(context.Context, *QueryActorsByRoleRequest) (*QueryActorsByRoleResponse, error) + // RoleManagers defines a gRPC query method that returns a namespace's role managers + RoleManagers(context.Context, *QueryRoleManagersRequest) (*QueryRoleManagersResponse, error) + // RoleManager defines a gRPC query method that returns the roles a given role manager manages for a given namespace + RoleManager(context.Context, *QueryRoleManagerRequest) (*QueryRoleManagerResponse, error) + // PolicyStatuses defines a gRPC query method that returns a namespace's policy statuses + PolicyStatuses(context.Context, *QueryPolicyStatusesRequest) (*QueryPolicyStatusesResponse, error) + // PolicyManagerCapabilities defines a gRPC query method that returns a namespace's policy manager capabilities + PolicyManagerCapabilities(context.Context, *QueryPolicyManagerCapabilitiesRequest) (*QueryPolicyManagerCapabilitiesResponse, error) + // Vouchers defines a gRPC query method for the vouchers for a given denom + Vouchers(context.Context, *QueryVouchersRequest) (*QueryVouchersResponse, error) + // Voucher defines a gRPC query method for the vouchers for a given denom and address + Voucher(context.Context, *QueryVoucherRequest) (*QueryVoucherResponse, error) + // Retrieves the entire permissions module's state + PermissionsModuleState(context.Context, *QueryModuleStateRequest) (*QueryModuleStateResponse, error) +} + +// UnimplementedQueryServer can be embedded to have forward compatible implementations. +type UnimplementedQueryServer struct { +} + +func (*UnimplementedQueryServer) Params(ctx context.Context, req *QueryParamsRequest) (*QueryParamsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Params not implemented") +} +func (*UnimplementedQueryServer) NamespaceDenoms(ctx context.Context, req *QueryNamespaceDenomsRequest) (*QueryNamespaceDenomsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method NamespaceDenoms not implemented") +} +func (*UnimplementedQueryServer) Namespaces(ctx context.Context, req *QueryNamespacesRequest) (*QueryNamespacesResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Namespaces not implemented") +} +func (*UnimplementedQueryServer) Namespace(ctx context.Context, req *QueryNamespaceRequest) (*QueryNamespaceResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Namespace not implemented") +} +func (*UnimplementedQueryServer) RolesByActor(ctx context.Context, req *QueryRolesByActorRequest) (*QueryRolesByActorResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method RolesByActor not implemented") +} +func (*UnimplementedQueryServer) ActorsByRole(ctx context.Context, req *QueryActorsByRoleRequest) (*QueryActorsByRoleResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ActorsByRole not implemented") +} +func (*UnimplementedQueryServer) RoleManagers(ctx context.Context, req *QueryRoleManagersRequest) (*QueryRoleManagersResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method RoleManagers not implemented") +} +func (*UnimplementedQueryServer) RoleManager(ctx context.Context, req *QueryRoleManagerRequest) (*QueryRoleManagerResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method RoleManager not implemented") +} +func (*UnimplementedQueryServer) PolicyStatuses(ctx context.Context, req *QueryPolicyStatusesRequest) (*QueryPolicyStatusesResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method PolicyStatuses not implemented") +} +func (*UnimplementedQueryServer) PolicyManagerCapabilities(ctx context.Context, req *QueryPolicyManagerCapabilitiesRequest) (*QueryPolicyManagerCapabilitiesResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method PolicyManagerCapabilities not implemented") +} +func (*UnimplementedQueryServer) Vouchers(ctx context.Context, req *QueryVouchersRequest) (*QueryVouchersResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Vouchers not implemented") +} +func (*UnimplementedQueryServer) Voucher(ctx context.Context, req *QueryVoucherRequest) (*QueryVoucherResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Voucher not implemented") +} +func (*UnimplementedQueryServer) PermissionsModuleState(ctx context.Context, req *QueryModuleStateRequest) (*QueryModuleStateResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method PermissionsModuleState not implemented") +} + +func RegisterQueryServer(s grpc1.Server, srv QueryServer) { + s.RegisterService(&_Query_serviceDesc, srv) +} + +func _Query_Params_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryParamsRequest) + if err := dec(in); err != nil { + return nil, err } - return len(dAtA) - i, nil + if interceptor == nil { + return srv.(QueryServer).Params(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/injective.permissions.v1beta1.Query/Params", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).Params(ctx, req.(*QueryParamsRequest)) + } + return interceptor(ctx, in, info, handler) } -func encodeVarintQuery(dAtA []byte, offset int, v uint64) int { - offset -= sovQuery(v) - base := offset - for v >= 1<<7 { - dAtA[offset] = uint8(v&0x7f | 0x80) - v >>= 7 - offset++ +func _Query_NamespaceDenoms_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryNamespaceDenomsRequest) + if err := dec(in); err != nil { + return nil, err } - dAtA[offset] = uint8(v) - return base + if interceptor == nil { + return srv.(QueryServer).NamespaceDenoms(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/injective.permissions.v1beta1.Query/NamespaceDenoms", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).NamespaceDenoms(ctx, req.(*QueryNamespaceDenomsRequest)) + } + return interceptor(ctx, in, info, handler) } -func (m *QueryParamsRequest) Size() (n int) { - if m == nil { - return 0 + +func _Query_Namespaces_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryNamespacesRequest) + if err := dec(in); err != nil { + return nil, err } - var l int - _ = l - return n + if interceptor == nil { + return srv.(QueryServer).Namespaces(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/injective.permissions.v1beta1.Query/Namespaces", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).Namespaces(ctx, req.(*QueryNamespacesRequest)) + } + return interceptor(ctx, in, info, handler) } -func (m *QueryParamsResponse) Size() (n int) { - if m == nil { - return 0 +func _Query_Namespace_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryNamespaceRequest) + if err := dec(in); err != nil { + return nil, err } - var l int - _ = l - l = m.Params.Size() - n += 1 + l + sovQuery(uint64(l)) - return n + if interceptor == nil { + return srv.(QueryServer).Namespace(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/injective.permissions.v1beta1.Query/Namespace", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).Namespace(ctx, req.(*QueryNamespaceRequest)) + } + return interceptor(ctx, in, info, handler) } -func (m *QueryAllNamespacesRequest) Size() (n int) { - if m == nil { - return 0 +func _Query_RolesByActor_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryRolesByActorRequest) + if err := dec(in); err != nil { + return nil, err } - var l int - _ = l - return n + if interceptor == nil { + return srv.(QueryServer).RolesByActor(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/injective.permissions.v1beta1.Query/RolesByActor", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).RolesByActor(ctx, req.(*QueryRolesByActorRequest)) + } + return interceptor(ctx, in, info, handler) } -func (m *QueryAllNamespacesResponse) Size() (n int) { - if m == nil { - return 0 +func _Query_ActorsByRole_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryActorsByRoleRequest) + if err := dec(in); err != nil { + return nil, err } - var l int - _ = l - if len(m.Namespaces) > 0 { - for _, e := range m.Namespaces { - l = e.Size() - n += 1 + l + sovQuery(uint64(l)) - } + if interceptor == nil { + return srv.(QueryServer).ActorsByRole(ctx, in) } - return n + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/injective.permissions.v1beta1.Query/ActorsByRole", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).ActorsByRole(ctx, req.(*QueryActorsByRoleRequest)) + } + return interceptor(ctx, in, info, handler) } -func (m *QueryNamespaceByDenomRequest) Size() (n int) { - if m == nil { - return 0 +func _Query_RoleManagers_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryRoleManagersRequest) + if err := dec(in); err != nil { + return nil, err } - var l int - _ = l - l = len(m.Denom) - if l > 0 { - n += 1 + l + sovQuery(uint64(l)) + if interceptor == nil { + return srv.(QueryServer).RoleManagers(ctx, in) } - if m.IncludeRoles { - n += 2 + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/injective.permissions.v1beta1.Query/RoleManagers", } - return n + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).RoleManagers(ctx, req.(*QueryRoleManagersRequest)) + } + return interceptor(ctx, in, info, handler) } -func (m *QueryNamespaceByDenomResponse) Size() (n int) { - if m == nil { - return 0 +func _Query_RoleManager_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryRoleManagerRequest) + if err := dec(in); err != nil { + return nil, err } - var l int - _ = l - if m.Namespace != nil { - l = m.Namespace.Size() - n += 1 + l + sovQuery(uint64(l)) + if interceptor == nil { + return srv.(QueryServer).RoleManager(ctx, in) } - return n + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/injective.permissions.v1beta1.Query/RoleManager", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).RoleManager(ctx, req.(*QueryRoleManagerRequest)) + } + return interceptor(ctx, in, info, handler) } -func (m *QueryAddressesByRoleRequest) Size() (n int) { - if m == nil { - return 0 +func _Query_PolicyStatuses_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryPolicyStatusesRequest) + if err := dec(in); err != nil { + return nil, err } - var l int - _ = l - l = len(m.Denom) - if l > 0 { - n += 1 + l + sovQuery(uint64(l)) + if interceptor == nil { + return srv.(QueryServer).PolicyStatuses(ctx, in) } - l = len(m.Role) - if l > 0 { - n += 1 + l + sovQuery(uint64(l)) + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/injective.permissions.v1beta1.Query/PolicyStatuses", } - return n + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).PolicyStatuses(ctx, req.(*QueryPolicyStatusesRequest)) + } + return interceptor(ctx, in, info, handler) } -func (m *QueryAddressesByRoleResponse) Size() (n int) { - if m == nil { - return 0 +func _Query_PolicyManagerCapabilities_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryPolicyManagerCapabilitiesRequest) + if err := dec(in); err != nil { + return nil, err } - var l int - _ = l - if len(m.Addresses) > 0 { - for _, s := range m.Addresses { - l = len(s) - n += 1 + l + sovQuery(uint64(l)) - } + if interceptor == nil { + return srv.(QueryServer).PolicyManagerCapabilities(ctx, in) } - return n + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/injective.permissions.v1beta1.Query/PolicyManagerCapabilities", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).PolicyManagerCapabilities(ctx, req.(*QueryPolicyManagerCapabilitiesRequest)) + } + return interceptor(ctx, in, info, handler) } -func (m *QueryAddressRolesRequest) Size() (n int) { - if m == nil { - return 0 +func _Query_Vouchers_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryVouchersRequest) + if err := dec(in); err != nil { + return nil, err } - var l int - _ = l - l = len(m.Denom) - if l > 0 { - n += 1 + l + sovQuery(uint64(l)) + if interceptor == nil { + return srv.(QueryServer).Vouchers(ctx, in) } - l = len(m.Address) - if l > 0 { - n += 1 + l + sovQuery(uint64(l)) + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/injective.permissions.v1beta1.Query/Vouchers", } - return n + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).Vouchers(ctx, req.(*QueryVouchersRequest)) + } + return interceptor(ctx, in, info, handler) } -func (m *QueryAddressRolesResponse) Size() (n int) { - if m == nil { - return 0 +func _Query_Voucher_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryVoucherRequest) + if err := dec(in); err != nil { + return nil, err } - var l int - _ = l - if len(m.Roles) > 0 { - for _, s := range m.Roles { - l = len(s) - n += 1 + l + sovQuery(uint64(l)) + if interceptor == nil { + return srv.(QueryServer).Voucher(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/injective.permissions.v1beta1.Query/Voucher", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).Voucher(ctx, req.(*QueryVoucherRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Query_PermissionsModuleState_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryModuleStateRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).PermissionsModuleState(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/injective.permissions.v1beta1.Query/PermissionsModuleState", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).PermissionsModuleState(ctx, req.(*QueryModuleStateRequest)) + } + return interceptor(ctx, in, info, handler) +} + +var _Query_serviceDesc = grpc.ServiceDesc{ + ServiceName: "injective.permissions.v1beta1.Query", + HandlerType: (*QueryServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "Params", + Handler: _Query_Params_Handler, + }, + { + MethodName: "NamespaceDenoms", + Handler: _Query_NamespaceDenoms_Handler, + }, + { + MethodName: "Namespaces", + Handler: _Query_Namespaces_Handler, + }, + { + MethodName: "Namespace", + Handler: _Query_Namespace_Handler, + }, + { + MethodName: "RolesByActor", + Handler: _Query_RolesByActor_Handler, + }, + { + MethodName: "ActorsByRole", + Handler: _Query_ActorsByRole_Handler, + }, + { + MethodName: "RoleManagers", + Handler: _Query_RoleManagers_Handler, + }, + { + MethodName: "RoleManager", + Handler: _Query_RoleManager_Handler, + }, + { + MethodName: "PolicyStatuses", + Handler: _Query_PolicyStatuses_Handler, + }, + { + MethodName: "PolicyManagerCapabilities", + Handler: _Query_PolicyManagerCapabilities_Handler, + }, + { + MethodName: "Vouchers", + Handler: _Query_Vouchers_Handler, + }, + { + MethodName: "Voucher", + Handler: _Query_Voucher_Handler, + }, + { + MethodName: "PermissionsModuleState", + Handler: _Query_PermissionsModuleState_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "injective/permissions/v1beta1/query.proto", +} + +func (m *QueryParamsRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryParamsRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryParamsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *QueryParamsResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryParamsResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryParamsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size, err := m.Params.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func (m *QueryNamespaceDenomsRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryNamespaceDenomsRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryNamespaceDenomsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *QueryNamespaceDenomsResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryNamespaceDenomsResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryNamespaceDenomsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Denoms) > 0 { + for iNdEx := len(m.Denoms) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.Denoms[iNdEx]) + copy(dAtA[i:], m.Denoms[iNdEx]) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Denoms[iNdEx]))) + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func (m *QueryNamespacesRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryNamespacesRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryNamespacesRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *QueryNamespacesResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryNamespacesResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryNamespacesResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Namespaces) > 0 { + for iNdEx := len(m.Namespaces) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Namespaces[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func (m *QueryNamespaceRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryNamespaceRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryNamespaceRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Denom) > 0 { + i -= len(m.Denom) + copy(dAtA[i:], m.Denom) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Denom))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *QueryNamespaceResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryNamespaceResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryNamespaceResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Namespace != nil { + { + size, err := m.Namespace.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *QueryActorsByRoleRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryActorsByRoleRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryActorsByRoleRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Role) > 0 { + i -= len(m.Role) + copy(dAtA[i:], m.Role) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Role))) + i-- + dAtA[i] = 0x12 + } + if len(m.Denom) > 0 { + i -= len(m.Denom) + copy(dAtA[i:], m.Denom) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Denom))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *QueryActorsByRoleResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryActorsByRoleResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryActorsByRoleResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Actors) > 0 { + for iNdEx := len(m.Actors) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.Actors[iNdEx]) + copy(dAtA[i:], m.Actors[iNdEx]) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Actors[iNdEx]))) + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func (m *QueryRolesByActorRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryRolesByActorRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryRolesByActorRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Actor) > 0 { + i -= len(m.Actor) + copy(dAtA[i:], m.Actor) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Actor))) + i-- + dAtA[i] = 0x12 + } + if len(m.Denom) > 0 { + i -= len(m.Denom) + copy(dAtA[i:], m.Denom) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Denom))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *QueryRolesByActorResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryRolesByActorResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryRolesByActorResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Roles) > 0 { + for iNdEx := len(m.Roles) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.Roles[iNdEx]) + copy(dAtA[i:], m.Roles[iNdEx]) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Roles[iNdEx]))) + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func (m *QueryRoleManagersRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryRoleManagersRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryRoleManagersRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Denom) > 0 { + i -= len(m.Denom) + copy(dAtA[i:], m.Denom) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Denom))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *QueryRoleManagersResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryRoleManagersResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryRoleManagersResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.RoleManagers) > 0 { + for iNdEx := len(m.RoleManagers) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.RoleManagers[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func (m *QueryRoleManagerRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryRoleManagerRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryRoleManagerRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Manager) > 0 { + i -= len(m.Manager) + copy(dAtA[i:], m.Manager) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Manager))) + i-- + dAtA[i] = 0x12 + } + if len(m.Denom) > 0 { + i -= len(m.Denom) + copy(dAtA[i:], m.Denom) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Denom))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *QueryRoleManagerResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryRoleManagerResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryRoleManagerResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.RoleManager != nil { + { + size, err := m.RoleManager.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *QueryPolicyStatusesRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryPolicyStatusesRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryPolicyStatusesRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Denom) > 0 { + i -= len(m.Denom) + copy(dAtA[i:], m.Denom) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Denom))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *QueryPolicyStatusesResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryPolicyStatusesResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryPolicyStatusesResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.PolicyStatuses) > 0 { + for iNdEx := len(m.PolicyStatuses) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.PolicyStatuses[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func (m *QueryPolicyManagerCapabilitiesRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryPolicyManagerCapabilitiesRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryPolicyManagerCapabilitiesRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Denom) > 0 { + i -= len(m.Denom) + copy(dAtA[i:], m.Denom) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Denom))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *QueryPolicyManagerCapabilitiesResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryPolicyManagerCapabilitiesResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryPolicyManagerCapabilitiesResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.PolicyManagerCapabilities) > 0 { + for iNdEx := len(m.PolicyManagerCapabilities) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.PolicyManagerCapabilities[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func (m *QueryVouchersRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryVouchersRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryVouchersRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Denom) > 0 { + i -= len(m.Denom) + copy(dAtA[i:], m.Denom) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Denom))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *QueryVouchersResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryVouchersResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryVouchersResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Vouchers) > 0 { + for iNdEx := len(m.Vouchers) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Vouchers[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func (m *QueryVoucherRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryVoucherRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryVoucherRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Address) > 0 { + i -= len(m.Address) + copy(dAtA[i:], m.Address) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Address))) + i-- + dAtA[i] = 0x12 + } + if len(m.Denom) > 0 { + i -= len(m.Denom) + copy(dAtA[i:], m.Denom) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Denom))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *QueryVoucherResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryVoucherResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryVoucherResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size := m.Voucher.Size() + i -= size + if _, err := m.Voucher.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func (m *QueryModuleStateRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryModuleStateRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryModuleStateRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *QueryModuleStateResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryModuleStateResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryModuleStateResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.State != nil { + { + size, err := m.State.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func encodeVarintQuery(dAtA []byte, offset int, v uint64) int { + offset -= sovQuery(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *QueryParamsRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *QueryParamsResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.Params.Size() + n += 1 + l + sovQuery(uint64(l)) + return n +} + +func (m *QueryNamespaceDenomsRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *QueryNamespaceDenomsResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.Denoms) > 0 { + for _, s := range m.Denoms { + l = len(s) + n += 1 + l + sovQuery(uint64(l)) + } + } + return n +} + +func (m *QueryNamespacesRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *QueryNamespacesResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.Namespaces) > 0 { + for _, e := range m.Namespaces { + l = e.Size() + n += 1 + l + sovQuery(uint64(l)) + } + } + return n +} + +func (m *QueryNamespaceRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Denom) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryNamespaceResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Namespace != nil { + l = m.Namespace.Size() + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryActorsByRoleRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Denom) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + l = len(m.Role) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryActorsByRoleResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.Actors) > 0 { + for _, s := range m.Actors { + l = len(s) + n += 1 + l + sovQuery(uint64(l)) + } + } + return n +} + +func (m *QueryRolesByActorRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Denom) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + l = len(m.Actor) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryRolesByActorResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.Roles) > 0 { + for _, s := range m.Roles { + l = len(s) + n += 1 + l + sovQuery(uint64(l)) + } + } + return n +} + +func (m *QueryRoleManagersRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Denom) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryRoleManagersResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.RoleManagers) > 0 { + for _, e := range m.RoleManagers { + l = e.Size() + n += 1 + l + sovQuery(uint64(l)) + } + } + return n +} + +func (m *QueryRoleManagerRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Denom) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + l = len(m.Manager) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryRoleManagerResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.RoleManager != nil { + l = m.RoleManager.Size() + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryPolicyStatusesRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Denom) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryPolicyStatusesResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.PolicyStatuses) > 0 { + for _, e := range m.PolicyStatuses { + l = e.Size() + n += 1 + l + sovQuery(uint64(l)) + } + } + return n +} + +func (m *QueryPolicyManagerCapabilitiesRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Denom) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryPolicyManagerCapabilitiesResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.PolicyManagerCapabilities) > 0 { + for _, e := range m.PolicyManagerCapabilities { + l = e.Size() + n += 1 + l + sovQuery(uint64(l)) + } + } + return n +} + +func (m *QueryVouchersRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Denom) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryVouchersResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.Vouchers) > 0 { + for _, e := range m.Vouchers { + l = e.Size() + n += 1 + l + sovQuery(uint64(l)) + } + } + return n +} + +func (m *QueryVoucherRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Denom) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + l = len(m.Address) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryVoucherResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.Voucher.Size() + n += 1 + l + sovQuery(uint64(l)) + return n +} + +func (m *QueryModuleStateRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *QueryModuleStateResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.State != nil { + l = m.State.Size() + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func sovQuery(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozQuery(x uint64) (n int) { + return sovQuery(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *QueryParamsRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryParamsRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryParamsRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryParamsResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryParamsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryParamsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Params.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryNamespaceDenomsRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryNamespaceDenomsRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryNamespaceDenomsRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryNamespaceDenomsResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryNamespaceDenomsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryNamespaceDenomsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Denoms", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Denoms = append(m.Denoms, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryNamespacesRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryNamespacesRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryNamespacesRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryNamespacesResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryNamespacesResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryNamespacesResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Namespaces", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Namespaces = append(m.Namespaces, &Namespace{}) + if err := m.Namespaces[len(m.Namespaces)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryNamespaceRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryNamespaceRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryNamespaceRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Denom", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Denom = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryNamespaceResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryNamespaceResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryNamespaceResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Namespace", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Namespace == nil { + m.Namespace = &Namespace{} + } + if err := m.Namespace.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryActorsByRoleRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryActorsByRoleRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryActorsByRoleRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Denom", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Denom = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Role", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Role = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryActorsByRoleResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryActorsByRoleResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryActorsByRoleResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Actors", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Actors = append(m.Actors, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryRolesByActorRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryRolesByActorRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryRolesByActorRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Denom", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Denom = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Actor", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Actor = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryRolesByActorResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryRolesByActorResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryRolesByActorResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Roles", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Roles = append(m.Roles, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryRoleManagersRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryRoleManagersRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryRoleManagersRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Denom", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Denom = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryRoleManagersResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryRoleManagersResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryRoleManagersResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RoleManagers", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.RoleManagers = append(m.RoleManagers, &RoleManager{}) + if err := m.RoleManagers[len(m.RoleManagers)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy } } - return n -} - -func (m *QueryVouchersForAddressRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Address) - if l > 0 { - n += 1 + l + sovQuery(uint64(l)) - } - return n -} -func (m *QueryVouchersForAddressResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if len(m.Vouchers) > 0 { - for _, e := range m.Vouchers { - l = e.Size() - n += 1 + l + sovQuery(uint64(l)) - } + if iNdEx > l { + return io.ErrUnexpectedEOF } - return n -} - -func sovQuery(x uint64) (n int) { - return (math_bits.Len64(x|1) + 6) / 7 -} -func sozQuery(x uint64) (n int) { - return sovQuery(uint64((x << 1) ^ uint64((int64(x) >> 63)))) + return nil } -func (m *QueryParamsRequest) Unmarshal(dAtA []byte) error { +func (m *QueryRoleManagerRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -1544,12 +4231,76 @@ func (m *QueryParamsRequest) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryParamsRequest: wiretype end group for non-group") + return fmt.Errorf("proto: QueryRoleManagerRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryParamsRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryRoleManagerRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Denom", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Denom = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Manager", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Manager = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipQuery(dAtA[iNdEx:]) @@ -1571,7 +4322,7 @@ func (m *QueryParamsRequest) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryParamsResponse) Unmarshal(dAtA []byte) error { +func (m *QueryRoleManagerResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -1594,15 +4345,15 @@ func (m *QueryParamsResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryParamsResponse: wiretype end group for non-group") + return fmt.Errorf("proto: QueryRoleManagerResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryParamsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryRoleManagerResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field RoleManager", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -1629,7 +4380,10 @@ func (m *QueryParamsResponse) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.Params.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if m.RoleManager == nil { + m.RoleManager = &RoleManager{} + } + if err := m.RoleManager.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -1654,7 +4408,7 @@ func (m *QueryParamsResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryAllNamespacesRequest) Unmarshal(dAtA []byte) error { +func (m *QueryPolicyStatusesRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -1677,12 +4431,44 @@ func (m *QueryAllNamespacesRequest) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryAllNamespacesRequest: wiretype end group for non-group") + return fmt.Errorf("proto: QueryPolicyStatusesRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryAllNamespacesRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryPolicyStatusesRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Denom", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Denom = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipQuery(dAtA[iNdEx:]) @@ -1704,7 +4490,7 @@ func (m *QueryAllNamespacesRequest) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryAllNamespacesResponse) Unmarshal(dAtA []byte) error { +func (m *QueryPolicyStatusesResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -1727,15 +4513,15 @@ func (m *QueryAllNamespacesResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryAllNamespacesResponse: wiretype end group for non-group") + return fmt.Errorf("proto: QueryPolicyStatusesResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryAllNamespacesResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryPolicyStatusesResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Namespaces", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field PolicyStatuses", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -1762,8 +4548,8 @@ func (m *QueryAllNamespacesResponse) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Namespaces = append(m.Namespaces, &Namespace{}) - if err := m.Namespaces[len(m.Namespaces)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + m.PolicyStatuses = append(m.PolicyStatuses, &PolicyStatus{}) + if err := m.PolicyStatuses[len(m.PolicyStatuses)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -1788,7 +4574,7 @@ func (m *QueryAllNamespacesResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryNamespaceByDenomRequest) Unmarshal(dAtA []byte) error { +func (m *QueryPolicyManagerCapabilitiesRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -1811,10 +4597,10 @@ func (m *QueryNamespaceByDenomRequest) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryNamespaceByDenomRequest: wiretype end group for non-group") + return fmt.Errorf("proto: QueryPolicyManagerCapabilitiesRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryNamespaceByDenomRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryPolicyManagerCapabilitiesRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -1849,26 +4635,6 @@ func (m *QueryNamespaceByDenomRequest) Unmarshal(dAtA []byte) error { } m.Denom = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field IncludeRoles", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.IncludeRoles = bool(v != 0) default: iNdEx = preIndex skippy, err := skipQuery(dAtA[iNdEx:]) @@ -1890,7 +4656,7 @@ func (m *QueryNamespaceByDenomRequest) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryNamespaceByDenomResponse) Unmarshal(dAtA []byte) error { +func (m *QueryPolicyManagerCapabilitiesResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -1913,15 +4679,15 @@ func (m *QueryNamespaceByDenomResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryNamespaceByDenomResponse: wiretype end group for non-group") + return fmt.Errorf("proto: QueryPolicyManagerCapabilitiesResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryNamespaceByDenomResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryPolicyManagerCapabilitiesResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Namespace", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field PolicyManagerCapabilities", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -1948,10 +4714,8 @@ func (m *QueryNamespaceByDenomResponse) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Namespace == nil { - m.Namespace = &Namespace{} - } - if err := m.Namespace.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + m.PolicyManagerCapabilities = append(m.PolicyManagerCapabilities, &PolicyManagerCapability{}) + if err := m.PolicyManagerCapabilities[len(m.PolicyManagerCapabilities)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -1976,7 +4740,7 @@ func (m *QueryNamespaceByDenomResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryAddressesByRoleRequest) Unmarshal(dAtA []byte) error { +func (m *QueryVouchersRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -1999,10 +4763,10 @@ func (m *QueryAddressesByRoleRequest) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryAddressesByRoleRequest: wiretype end group for non-group") + return fmt.Errorf("proto: QueryVouchersRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryAddressesByRoleRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryVouchersRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -2037,38 +4801,6 @@ func (m *QueryAddressesByRoleRequest) Unmarshal(dAtA []byte) error { } m.Denom = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Role", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthQuery - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthQuery - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Role = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipQuery(dAtA[iNdEx:]) @@ -2090,7 +4822,7 @@ func (m *QueryAddressesByRoleRequest) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryAddressesByRoleResponse) Unmarshal(dAtA []byte) error { +func (m *QueryVouchersResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -2113,17 +4845,17 @@ func (m *QueryAddressesByRoleResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryAddressesByRoleResponse: wiretype end group for non-group") + return fmt.Errorf("proto: QueryVouchersResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryAddressesByRoleResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryVouchersResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Addresses", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Vouchers", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowQuery @@ -2133,23 +4865,25 @@ func (m *QueryAddressesByRoleResponse) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthQuery } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthQuery } if postIndex > l { return io.ErrUnexpectedEOF } - m.Addresses = append(m.Addresses, string(dAtA[iNdEx:postIndex])) + m.Vouchers = append(m.Vouchers, &AddressVoucher{}) + if err := m.Vouchers[len(m.Vouchers)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex default: iNdEx = preIndex @@ -2172,7 +4906,7 @@ func (m *QueryAddressesByRoleResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryAddressRolesRequest) Unmarshal(dAtA []byte) error { +func (m *QueryVoucherRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -2195,10 +4929,10 @@ func (m *QueryAddressRolesRequest) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryAddressRolesRequest: wiretype end group for non-group") + return fmt.Errorf("proto: QueryVoucherRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryAddressRolesRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryVoucherRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -2286,7 +5020,7 @@ func (m *QueryAddressRolesRequest) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryAddressRolesResponse) Unmarshal(dAtA []byte) error { +func (m *QueryVoucherResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -2309,17 +5043,17 @@ func (m *QueryAddressRolesResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryAddressRolesResponse: wiretype end group for non-group") + return fmt.Errorf("proto: QueryVoucherResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryAddressRolesResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryVoucherResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Roles", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Voucher", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowQuery @@ -2329,23 +5063,24 @@ func (m *QueryAddressRolesResponse) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthQuery } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthQuery } if postIndex > l { return io.ErrUnexpectedEOF } - m.Roles = append(m.Roles, string(dAtA[iNdEx:postIndex])) + if err := m.Voucher.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex default: iNdEx = preIndex @@ -2368,7 +5103,7 @@ func (m *QueryAddressRolesResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryVouchersForAddressRequest) Unmarshal(dAtA []byte) error { +func (m *QueryModuleStateRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -2391,44 +5126,12 @@ func (m *QueryVouchersForAddressRequest) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryVouchersForAddressRequest: wiretype end group for non-group") + return fmt.Errorf("proto: QueryModuleStateRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryVouchersForAddressRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryModuleStateRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Address", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthQuery - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthQuery - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Address = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipQuery(dAtA[iNdEx:]) @@ -2450,7 +5153,7 @@ func (m *QueryVouchersForAddressRequest) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryVouchersForAddressResponse) Unmarshal(dAtA []byte) error { +func (m *QueryModuleStateResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -2473,15 +5176,15 @@ func (m *QueryVouchersForAddressResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryVouchersForAddressResponse: wiretype end group for non-group") + return fmt.Errorf("proto: QueryModuleStateResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryVouchersForAddressResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryModuleStateResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Vouchers", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field State", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -2508,8 +5211,10 @@ func (m *QueryVouchersForAddressResponse) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Vouchers = append(m.Vouchers, types.Coin{}) - if err := m.Vouchers[len(m.Vouchers)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if m.State == nil { + m.State = &GenesisState{} + } + if err := m.State.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex diff --git a/chain/permissions/types/tx.pb.go b/chain/permissions/types/tx.pb.go index 7516812d..cdeff028 100644 --- a/chain/permissions/types/tx.pb.go +++ b/chain/permissions/types/tx.pb.go @@ -213,108 +213,21 @@ func (m *MsgCreateNamespaceResponse) XXX_DiscardUnknown() { var xxx_messageInfo_MsgCreateNamespaceResponse proto.InternalMessageInfo -type MsgDeleteNamespace struct { - Sender string `protobuf:"bytes,1,opt,name=sender,proto3" json:"sender,omitempty" yaml:"sender"` - NamespaceDenom string `protobuf:"bytes,2,opt,name=namespace_denom,json=namespaceDenom,proto3" json:"namespace_denom,omitempty"` -} - -func (m *MsgDeleteNamespace) Reset() { *m = MsgDeleteNamespace{} } -func (m *MsgDeleteNamespace) String() string { return proto.CompactTextString(m) } -func (*MsgDeleteNamespace) ProtoMessage() {} -func (*MsgDeleteNamespace) Descriptor() ([]byte, []int) { - return fileDescriptor_ab9bfdcab1d9b6fa, []int{4} -} -func (m *MsgDeleteNamespace) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MsgDeleteNamespace) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MsgDeleteNamespace.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MsgDeleteNamespace) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgDeleteNamespace.Merge(m, src) -} -func (m *MsgDeleteNamespace) XXX_Size() int { - return m.Size() -} -func (m *MsgDeleteNamespace) XXX_DiscardUnknown() { - xxx_messageInfo_MsgDeleteNamespace.DiscardUnknown(m) -} - -var xxx_messageInfo_MsgDeleteNamespace proto.InternalMessageInfo - -func (m *MsgDeleteNamespace) GetSender() string { - if m != nil { - return m.Sender - } - return "" -} - -func (m *MsgDeleteNamespace) GetNamespaceDenom() string { - if m != nil { - return m.NamespaceDenom - } - return "" -} - -type MsgDeleteNamespaceResponse struct { -} - -func (m *MsgDeleteNamespaceResponse) Reset() { *m = MsgDeleteNamespaceResponse{} } -func (m *MsgDeleteNamespaceResponse) String() string { return proto.CompactTextString(m) } -func (*MsgDeleteNamespaceResponse) ProtoMessage() {} -func (*MsgDeleteNamespaceResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_ab9bfdcab1d9b6fa, []int{5} -} -func (m *MsgDeleteNamespaceResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MsgDeleteNamespaceResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MsgDeleteNamespaceResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MsgDeleteNamespaceResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgDeleteNamespaceResponse.Merge(m, src) -} -func (m *MsgDeleteNamespaceResponse) XXX_Size() int { - return m.Size() -} -func (m *MsgDeleteNamespaceResponse) XXX_DiscardUnknown() { - xxx_messageInfo_MsgDeleteNamespaceResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_MsgDeleteNamespaceResponse proto.InternalMessageInfo - type MsgUpdateNamespace struct { - Sender string `protobuf:"bytes,1,opt,name=sender,proto3" json:"sender,omitempty" yaml:"sender"` - NamespaceDenom string `protobuf:"bytes,2,opt,name=namespace_denom,json=namespaceDenom,proto3" json:"namespace_denom,omitempty"` - WasmHook *MsgUpdateNamespace_MsgSetWasmHook `protobuf:"bytes,3,opt,name=wasm_hook,json=wasmHook,proto3" json:"wasm_hook,omitempty"` - MintsPaused *MsgUpdateNamespace_MsgSetMintsPaused `protobuf:"bytes,4,opt,name=mints_paused,json=mintsPaused,proto3" json:"mints_paused,omitempty"` - SendsPaused *MsgUpdateNamespace_MsgSetSendsPaused `protobuf:"bytes,5,opt,name=sends_paused,json=sendsPaused,proto3" json:"sends_paused,omitempty"` - BurnsPaused *MsgUpdateNamespace_MsgSetBurnsPaused `protobuf:"bytes,6,opt,name=burns_paused,json=burnsPaused,proto3" json:"burns_paused,omitempty"` + Sender string `protobuf:"bytes,1,opt,name=sender,proto3" json:"sender,omitempty" yaml:"sender"` + Denom string `protobuf:"bytes,2,opt,name=denom,proto3" json:"denom,omitempty"` + ContractHook *MsgUpdateNamespace_SetContractHook `protobuf:"bytes,3,opt,name=contract_hook,json=contractHook,proto3" json:"contract_hook,omitempty"` + RolePermissions []*Role `protobuf:"bytes,4,rep,name=role_permissions,json=rolePermissions,proto3" json:"role_permissions,omitempty"` + RoleManagers []*RoleManager `protobuf:"bytes,5,rep,name=role_managers,json=roleManagers,proto3" json:"role_managers,omitempty"` + PolicyStatuses []*PolicyStatus `protobuf:"bytes,6,rep,name=policy_statuses,json=policyStatuses,proto3" json:"policy_statuses,omitempty"` + PolicyManagerCapabilities []*PolicyManagerCapability `protobuf:"bytes,7,rep,name=policy_manager_capabilities,json=policyManagerCapabilities,proto3" json:"policy_manager_capabilities,omitempty"` } func (m *MsgUpdateNamespace) Reset() { *m = MsgUpdateNamespace{} } func (m *MsgUpdateNamespace) String() string { return proto.CompactTextString(m) } func (*MsgUpdateNamespace) ProtoMessage() {} func (*MsgUpdateNamespace) Descriptor() ([]byte, []int) { - return fileDescriptor_ab9bfdcab1d9b6fa, []int{6} + return fileDescriptor_ab9bfdcab1d9b6fa, []int{4} } func (m *MsgUpdateNamespace) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -350,189 +263,64 @@ func (m *MsgUpdateNamespace) GetSender() string { return "" } -func (m *MsgUpdateNamespace) GetNamespaceDenom() string { +func (m *MsgUpdateNamespace) GetDenom() string { if m != nil { - return m.NamespaceDenom + return m.Denom } return "" } -func (m *MsgUpdateNamespace) GetWasmHook() *MsgUpdateNamespace_MsgSetWasmHook { +func (m *MsgUpdateNamespace) GetContractHook() *MsgUpdateNamespace_SetContractHook { if m != nil { - return m.WasmHook + return m.ContractHook } return nil } -func (m *MsgUpdateNamespace) GetMintsPaused() *MsgUpdateNamespace_MsgSetMintsPaused { +func (m *MsgUpdateNamespace) GetRolePermissions() []*Role { if m != nil { - return m.MintsPaused + return m.RolePermissions } return nil } -func (m *MsgUpdateNamespace) GetSendsPaused() *MsgUpdateNamespace_MsgSetSendsPaused { +func (m *MsgUpdateNamespace) GetRoleManagers() []*RoleManager { if m != nil { - return m.SendsPaused + return m.RoleManagers } return nil } -func (m *MsgUpdateNamespace) GetBurnsPaused() *MsgUpdateNamespace_MsgSetBurnsPaused { +func (m *MsgUpdateNamespace) GetPolicyStatuses() []*PolicyStatus { if m != nil { - return m.BurnsPaused + return m.PolicyStatuses } return nil } -type MsgUpdateNamespace_MsgSetWasmHook struct { - NewValue string `protobuf:"bytes,1,opt,name=new_value,json=newValue,proto3" json:"new_value,omitempty"` -} - -func (m *MsgUpdateNamespace_MsgSetWasmHook) Reset() { *m = MsgUpdateNamespace_MsgSetWasmHook{} } -func (m *MsgUpdateNamespace_MsgSetWasmHook) String() string { return proto.CompactTextString(m) } -func (*MsgUpdateNamespace_MsgSetWasmHook) ProtoMessage() {} -func (*MsgUpdateNamespace_MsgSetWasmHook) Descriptor() ([]byte, []int) { - return fileDescriptor_ab9bfdcab1d9b6fa, []int{6, 0} -} -func (m *MsgUpdateNamespace_MsgSetWasmHook) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MsgUpdateNamespace_MsgSetWasmHook) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MsgUpdateNamespace_MsgSetWasmHook.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MsgUpdateNamespace_MsgSetWasmHook) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgUpdateNamespace_MsgSetWasmHook.Merge(m, src) -} -func (m *MsgUpdateNamespace_MsgSetWasmHook) XXX_Size() int { - return m.Size() -} -func (m *MsgUpdateNamespace_MsgSetWasmHook) XXX_DiscardUnknown() { - xxx_messageInfo_MsgUpdateNamespace_MsgSetWasmHook.DiscardUnknown(m) -} - -var xxx_messageInfo_MsgUpdateNamespace_MsgSetWasmHook proto.InternalMessageInfo - -func (m *MsgUpdateNamespace_MsgSetWasmHook) GetNewValue() string { - if m != nil { - return m.NewValue - } - return "" -} - -type MsgUpdateNamespace_MsgSetMintsPaused struct { - NewValue bool `protobuf:"varint,1,opt,name=new_value,json=newValue,proto3" json:"new_value,omitempty"` -} - -func (m *MsgUpdateNamespace_MsgSetMintsPaused) Reset() { *m = MsgUpdateNamespace_MsgSetMintsPaused{} } -func (m *MsgUpdateNamespace_MsgSetMintsPaused) String() string { return proto.CompactTextString(m) } -func (*MsgUpdateNamespace_MsgSetMintsPaused) ProtoMessage() {} -func (*MsgUpdateNamespace_MsgSetMintsPaused) Descriptor() ([]byte, []int) { - return fileDescriptor_ab9bfdcab1d9b6fa, []int{6, 1} -} -func (m *MsgUpdateNamespace_MsgSetMintsPaused) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MsgUpdateNamespace_MsgSetMintsPaused) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MsgUpdateNamespace_MsgSetMintsPaused.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MsgUpdateNamespace_MsgSetMintsPaused) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgUpdateNamespace_MsgSetMintsPaused.Merge(m, src) -} -func (m *MsgUpdateNamespace_MsgSetMintsPaused) XXX_Size() int { - return m.Size() -} -func (m *MsgUpdateNamespace_MsgSetMintsPaused) XXX_DiscardUnknown() { - xxx_messageInfo_MsgUpdateNamespace_MsgSetMintsPaused.DiscardUnknown(m) -} - -var xxx_messageInfo_MsgUpdateNamespace_MsgSetMintsPaused proto.InternalMessageInfo - -func (m *MsgUpdateNamespace_MsgSetMintsPaused) GetNewValue() bool { - if m != nil { - return m.NewValue - } - return false -} - -type MsgUpdateNamespace_MsgSetSendsPaused struct { - NewValue bool `protobuf:"varint,1,opt,name=new_value,json=newValue,proto3" json:"new_value,omitempty"` -} - -func (m *MsgUpdateNamespace_MsgSetSendsPaused) Reset() { *m = MsgUpdateNamespace_MsgSetSendsPaused{} } -func (m *MsgUpdateNamespace_MsgSetSendsPaused) String() string { return proto.CompactTextString(m) } -func (*MsgUpdateNamespace_MsgSetSendsPaused) ProtoMessage() {} -func (*MsgUpdateNamespace_MsgSetSendsPaused) Descriptor() ([]byte, []int) { - return fileDescriptor_ab9bfdcab1d9b6fa, []int{6, 2} -} -func (m *MsgUpdateNamespace_MsgSetSendsPaused) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MsgUpdateNamespace_MsgSetSendsPaused) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MsgUpdateNamespace_MsgSetSendsPaused.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MsgUpdateNamespace_MsgSetSendsPaused) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgUpdateNamespace_MsgSetSendsPaused.Merge(m, src) -} -func (m *MsgUpdateNamespace_MsgSetSendsPaused) XXX_Size() int { - return m.Size() -} -func (m *MsgUpdateNamespace_MsgSetSendsPaused) XXX_DiscardUnknown() { - xxx_messageInfo_MsgUpdateNamespace_MsgSetSendsPaused.DiscardUnknown(m) -} - -var xxx_messageInfo_MsgUpdateNamespace_MsgSetSendsPaused proto.InternalMessageInfo - -func (m *MsgUpdateNamespace_MsgSetSendsPaused) GetNewValue() bool { +func (m *MsgUpdateNamespace) GetPolicyManagerCapabilities() []*PolicyManagerCapability { if m != nil { - return m.NewValue + return m.PolicyManagerCapabilities } - return false + return nil } -type MsgUpdateNamespace_MsgSetBurnsPaused struct { - NewValue bool `protobuf:"varint,1,opt,name=new_value,json=newValue,proto3" json:"new_value,omitempty"` +type MsgUpdateNamespace_SetContractHook struct { + NewValue string `protobuf:"bytes,1,opt,name=new_value,json=newValue,proto3" json:"new_value,omitempty"` } -func (m *MsgUpdateNamespace_MsgSetBurnsPaused) Reset() { *m = MsgUpdateNamespace_MsgSetBurnsPaused{} } -func (m *MsgUpdateNamespace_MsgSetBurnsPaused) String() string { return proto.CompactTextString(m) } -func (*MsgUpdateNamespace_MsgSetBurnsPaused) ProtoMessage() {} -func (*MsgUpdateNamespace_MsgSetBurnsPaused) Descriptor() ([]byte, []int) { - return fileDescriptor_ab9bfdcab1d9b6fa, []int{6, 3} +func (m *MsgUpdateNamespace_SetContractHook) Reset() { *m = MsgUpdateNamespace_SetContractHook{} } +func (m *MsgUpdateNamespace_SetContractHook) String() string { return proto.CompactTextString(m) } +func (*MsgUpdateNamespace_SetContractHook) ProtoMessage() {} +func (*MsgUpdateNamespace_SetContractHook) Descriptor() ([]byte, []int) { + return fileDescriptor_ab9bfdcab1d9b6fa, []int{4, 0} } -func (m *MsgUpdateNamespace_MsgSetBurnsPaused) XXX_Unmarshal(b []byte) error { +func (m *MsgUpdateNamespace_SetContractHook) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *MsgUpdateNamespace_MsgSetBurnsPaused) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *MsgUpdateNamespace_SetContractHook) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_MsgUpdateNamespace_MsgSetBurnsPaused.Marshal(b, m, deterministic) + return xxx_messageInfo_MsgUpdateNamespace_SetContractHook.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -542,23 +330,23 @@ func (m *MsgUpdateNamespace_MsgSetBurnsPaused) XXX_Marshal(b []byte, determinist return b[:n], nil } } -func (m *MsgUpdateNamespace_MsgSetBurnsPaused) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgUpdateNamespace_MsgSetBurnsPaused.Merge(m, src) +func (m *MsgUpdateNamespace_SetContractHook) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgUpdateNamespace_SetContractHook.Merge(m, src) } -func (m *MsgUpdateNamespace_MsgSetBurnsPaused) XXX_Size() int { +func (m *MsgUpdateNamespace_SetContractHook) XXX_Size() int { return m.Size() } -func (m *MsgUpdateNamespace_MsgSetBurnsPaused) XXX_DiscardUnknown() { - xxx_messageInfo_MsgUpdateNamespace_MsgSetBurnsPaused.DiscardUnknown(m) +func (m *MsgUpdateNamespace_SetContractHook) XXX_DiscardUnknown() { + xxx_messageInfo_MsgUpdateNamespace_SetContractHook.DiscardUnknown(m) } -var xxx_messageInfo_MsgUpdateNamespace_MsgSetBurnsPaused proto.InternalMessageInfo +var xxx_messageInfo_MsgUpdateNamespace_SetContractHook proto.InternalMessageInfo -func (m *MsgUpdateNamespace_MsgSetBurnsPaused) GetNewValue() bool { +func (m *MsgUpdateNamespace_SetContractHook) GetNewValue() string { if m != nil { return m.NewValue } - return false + return "" } type MsgUpdateNamespaceResponse struct { @@ -568,7 +356,7 @@ func (m *MsgUpdateNamespaceResponse) Reset() { *m = MsgUpdateNamespaceRe func (m *MsgUpdateNamespaceResponse) String() string { return proto.CompactTextString(m) } func (*MsgUpdateNamespaceResponse) ProtoMessage() {} func (*MsgUpdateNamespaceResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_ab9bfdcab1d9b6fa, []int{7} + return fileDescriptor_ab9bfdcab1d9b6fa, []int{5} } func (m *MsgUpdateNamespaceResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -597,25 +385,25 @@ func (m *MsgUpdateNamespaceResponse) XXX_DiscardUnknown() { var xxx_messageInfo_MsgUpdateNamespaceResponse proto.InternalMessageInfo -type MsgUpdateNamespaceRoles struct { - Sender string `protobuf:"bytes,1,opt,name=sender,proto3" json:"sender,omitempty" yaml:"sender"` - NamespaceDenom string `protobuf:"bytes,2,opt,name=namespace_denom,json=namespaceDenom,proto3" json:"namespace_denom,omitempty"` - RolePermissions []*Role `protobuf:"bytes,3,rep,name=role_permissions,json=rolePermissions,proto3" json:"role_permissions,omitempty"` - AddressRoles []*AddressRoles `protobuf:"bytes,4,rep,name=address_roles,json=addressRoles,proto3" json:"address_roles,omitempty"` +type MsgUpdateActorRoles struct { + Sender string `protobuf:"bytes,1,opt,name=sender,proto3" json:"sender,omitempty" yaml:"sender"` + Denom string `protobuf:"bytes,2,opt,name=denom,proto3" json:"denom,omitempty"` + RoleActorsToAdd []*RoleActors `protobuf:"bytes,3,rep,name=role_actors_to_add,json=roleActorsToAdd,proto3" json:"role_actors_to_add,omitempty"` + RoleActorsToRevoke []*RoleActors `protobuf:"bytes,5,rep,name=role_actors_to_revoke,json=roleActorsToRevoke,proto3" json:"role_actors_to_revoke,omitempty"` } -func (m *MsgUpdateNamespaceRoles) Reset() { *m = MsgUpdateNamespaceRoles{} } -func (m *MsgUpdateNamespaceRoles) String() string { return proto.CompactTextString(m) } -func (*MsgUpdateNamespaceRoles) ProtoMessage() {} -func (*MsgUpdateNamespaceRoles) Descriptor() ([]byte, []int) { - return fileDescriptor_ab9bfdcab1d9b6fa, []int{8} +func (m *MsgUpdateActorRoles) Reset() { *m = MsgUpdateActorRoles{} } +func (m *MsgUpdateActorRoles) String() string { return proto.CompactTextString(m) } +func (*MsgUpdateActorRoles) ProtoMessage() {} +func (*MsgUpdateActorRoles) Descriptor() ([]byte, []int) { + return fileDescriptor_ab9bfdcab1d9b6fa, []int{6} } -func (m *MsgUpdateNamespaceRoles) XXX_Unmarshal(b []byte) error { +func (m *MsgUpdateActorRoles) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *MsgUpdateNamespaceRoles) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *MsgUpdateActorRoles) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_MsgUpdateNamespaceRoles.Marshal(b, m, deterministic) + return xxx_messageInfo_MsgUpdateActorRoles.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -625,157 +413,61 @@ func (m *MsgUpdateNamespaceRoles) XXX_Marshal(b []byte, deterministic bool) ([]b return b[:n], nil } } -func (m *MsgUpdateNamespaceRoles) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgUpdateNamespaceRoles.Merge(m, src) +func (m *MsgUpdateActorRoles) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgUpdateActorRoles.Merge(m, src) } -func (m *MsgUpdateNamespaceRoles) XXX_Size() int { +func (m *MsgUpdateActorRoles) XXX_Size() int { return m.Size() } -func (m *MsgUpdateNamespaceRoles) XXX_DiscardUnknown() { - xxx_messageInfo_MsgUpdateNamespaceRoles.DiscardUnknown(m) +func (m *MsgUpdateActorRoles) XXX_DiscardUnknown() { + xxx_messageInfo_MsgUpdateActorRoles.DiscardUnknown(m) } -var xxx_messageInfo_MsgUpdateNamespaceRoles proto.InternalMessageInfo +var xxx_messageInfo_MsgUpdateActorRoles proto.InternalMessageInfo -func (m *MsgUpdateNamespaceRoles) GetSender() string { +func (m *MsgUpdateActorRoles) GetSender() string { if m != nil { return m.Sender } return "" } -func (m *MsgUpdateNamespaceRoles) GetNamespaceDenom() string { +func (m *MsgUpdateActorRoles) GetDenom() string { if m != nil { - return m.NamespaceDenom + return m.Denom } return "" } -func (m *MsgUpdateNamespaceRoles) GetRolePermissions() []*Role { - if m != nil { - return m.RolePermissions - } - return nil -} - -func (m *MsgUpdateNamespaceRoles) GetAddressRoles() []*AddressRoles { +func (m *MsgUpdateActorRoles) GetRoleActorsToAdd() []*RoleActors { if m != nil { - return m.AddressRoles + return m.RoleActorsToAdd } return nil } -type MsgUpdateNamespaceRolesResponse struct { -} - -func (m *MsgUpdateNamespaceRolesResponse) Reset() { *m = MsgUpdateNamespaceRolesResponse{} } -func (m *MsgUpdateNamespaceRolesResponse) String() string { return proto.CompactTextString(m) } -func (*MsgUpdateNamespaceRolesResponse) ProtoMessage() {} -func (*MsgUpdateNamespaceRolesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_ab9bfdcab1d9b6fa, []int{9} -} -func (m *MsgUpdateNamespaceRolesResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MsgUpdateNamespaceRolesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MsgUpdateNamespaceRolesResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MsgUpdateNamespaceRolesResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgUpdateNamespaceRolesResponse.Merge(m, src) -} -func (m *MsgUpdateNamespaceRolesResponse) XXX_Size() int { - return m.Size() -} -func (m *MsgUpdateNamespaceRolesResponse) XXX_DiscardUnknown() { - xxx_messageInfo_MsgUpdateNamespaceRolesResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_MsgUpdateNamespaceRolesResponse proto.InternalMessageInfo - -type MsgRevokeNamespaceRoles struct { - Sender string `protobuf:"bytes,1,opt,name=sender,proto3" json:"sender,omitempty" yaml:"sender"` - NamespaceDenom string `protobuf:"bytes,2,opt,name=namespace_denom,json=namespaceDenom,proto3" json:"namespace_denom,omitempty"` - AddressRolesToRevoke []*AddressRoles `protobuf:"bytes,3,rep,name=address_roles_to_revoke,json=addressRolesToRevoke,proto3" json:"address_roles_to_revoke,omitempty"` -} - -func (m *MsgRevokeNamespaceRoles) Reset() { *m = MsgRevokeNamespaceRoles{} } -func (m *MsgRevokeNamespaceRoles) String() string { return proto.CompactTextString(m) } -func (*MsgRevokeNamespaceRoles) ProtoMessage() {} -func (*MsgRevokeNamespaceRoles) Descriptor() ([]byte, []int) { - return fileDescriptor_ab9bfdcab1d9b6fa, []int{10} -} -func (m *MsgRevokeNamespaceRoles) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MsgRevokeNamespaceRoles) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MsgRevokeNamespaceRoles.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MsgRevokeNamespaceRoles) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgRevokeNamespaceRoles.Merge(m, src) -} -func (m *MsgRevokeNamespaceRoles) XXX_Size() int { - return m.Size() -} -func (m *MsgRevokeNamespaceRoles) XXX_DiscardUnknown() { - xxx_messageInfo_MsgRevokeNamespaceRoles.DiscardUnknown(m) -} - -var xxx_messageInfo_MsgRevokeNamespaceRoles proto.InternalMessageInfo - -func (m *MsgRevokeNamespaceRoles) GetSender() string { - if m != nil { - return m.Sender - } - return "" -} - -func (m *MsgRevokeNamespaceRoles) GetNamespaceDenom() string { - if m != nil { - return m.NamespaceDenom - } - return "" -} - -func (m *MsgRevokeNamespaceRoles) GetAddressRolesToRevoke() []*AddressRoles { +func (m *MsgUpdateActorRoles) GetRoleActorsToRevoke() []*RoleActors { if m != nil { - return m.AddressRolesToRevoke + return m.RoleActorsToRevoke } return nil } -type MsgRevokeNamespaceRolesResponse struct { +type MsgUpdateActorRolesResponse struct { } -func (m *MsgRevokeNamespaceRolesResponse) Reset() { *m = MsgRevokeNamespaceRolesResponse{} } -func (m *MsgRevokeNamespaceRolesResponse) String() string { return proto.CompactTextString(m) } -func (*MsgRevokeNamespaceRolesResponse) ProtoMessage() {} -func (*MsgRevokeNamespaceRolesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_ab9bfdcab1d9b6fa, []int{11} +func (m *MsgUpdateActorRolesResponse) Reset() { *m = MsgUpdateActorRolesResponse{} } +func (m *MsgUpdateActorRolesResponse) String() string { return proto.CompactTextString(m) } +func (*MsgUpdateActorRolesResponse) ProtoMessage() {} +func (*MsgUpdateActorRolesResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_ab9bfdcab1d9b6fa, []int{7} } -func (m *MsgRevokeNamespaceRolesResponse) XXX_Unmarshal(b []byte) error { +func (m *MsgUpdateActorRolesResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *MsgRevokeNamespaceRolesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *MsgUpdateActorRolesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_MsgRevokeNamespaceRolesResponse.Marshal(b, m, deterministic) + return xxx_messageInfo_MsgUpdateActorRolesResponse.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -785,17 +477,17 @@ func (m *MsgRevokeNamespaceRolesResponse) XXX_Marshal(b []byte, deterministic bo return b[:n], nil } } -func (m *MsgRevokeNamespaceRolesResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgRevokeNamespaceRolesResponse.Merge(m, src) +func (m *MsgUpdateActorRolesResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgUpdateActorRolesResponse.Merge(m, src) } -func (m *MsgRevokeNamespaceRolesResponse) XXX_Size() int { +func (m *MsgUpdateActorRolesResponse) XXX_Size() int { return m.Size() } -func (m *MsgRevokeNamespaceRolesResponse) XXX_DiscardUnknown() { - xxx_messageInfo_MsgRevokeNamespaceRolesResponse.DiscardUnknown(m) +func (m *MsgUpdateActorRolesResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgUpdateActorRolesResponse.DiscardUnknown(m) } -var xxx_messageInfo_MsgRevokeNamespaceRolesResponse proto.InternalMessageInfo +var xxx_messageInfo_MsgUpdateActorRolesResponse proto.InternalMessageInfo type MsgClaimVoucher struct { Sender string `protobuf:"bytes,1,opt,name=sender,proto3" json:"sender,omitempty" yaml:"sender"` @@ -806,7 +498,7 @@ func (m *MsgClaimVoucher) Reset() { *m = MsgClaimVoucher{} } func (m *MsgClaimVoucher) String() string { return proto.CompactTextString(m) } func (*MsgClaimVoucher) ProtoMessage() {} func (*MsgClaimVoucher) Descriptor() ([]byte, []int) { - return fileDescriptor_ab9bfdcab1d9b6fa, []int{12} + return fileDescriptor_ab9bfdcab1d9b6fa, []int{8} } func (m *MsgClaimVoucher) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -856,7 +548,7 @@ func (m *MsgClaimVoucherResponse) Reset() { *m = MsgClaimVoucherResponse func (m *MsgClaimVoucherResponse) String() string { return proto.CompactTextString(m) } func (*MsgClaimVoucherResponse) ProtoMessage() {} func (*MsgClaimVoucherResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_ab9bfdcab1d9b6fa, []int{13} + return fileDescriptor_ab9bfdcab1d9b6fa, []int{9} } func (m *MsgClaimVoucherResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -890,18 +582,11 @@ func init() { proto.RegisterType((*MsgUpdateParamsResponse)(nil), "injective.permissions.v1beta1.MsgUpdateParamsResponse") proto.RegisterType((*MsgCreateNamespace)(nil), "injective.permissions.v1beta1.MsgCreateNamespace") proto.RegisterType((*MsgCreateNamespaceResponse)(nil), "injective.permissions.v1beta1.MsgCreateNamespaceResponse") - proto.RegisterType((*MsgDeleteNamespace)(nil), "injective.permissions.v1beta1.MsgDeleteNamespace") - proto.RegisterType((*MsgDeleteNamespaceResponse)(nil), "injective.permissions.v1beta1.MsgDeleteNamespaceResponse") proto.RegisterType((*MsgUpdateNamespace)(nil), "injective.permissions.v1beta1.MsgUpdateNamespace") - proto.RegisterType((*MsgUpdateNamespace_MsgSetWasmHook)(nil), "injective.permissions.v1beta1.MsgUpdateNamespace.MsgSetWasmHook") - proto.RegisterType((*MsgUpdateNamespace_MsgSetMintsPaused)(nil), "injective.permissions.v1beta1.MsgUpdateNamespace.MsgSetMintsPaused") - proto.RegisterType((*MsgUpdateNamespace_MsgSetSendsPaused)(nil), "injective.permissions.v1beta1.MsgUpdateNamespace.MsgSetSendsPaused") - proto.RegisterType((*MsgUpdateNamespace_MsgSetBurnsPaused)(nil), "injective.permissions.v1beta1.MsgUpdateNamespace.MsgSetBurnsPaused") + proto.RegisterType((*MsgUpdateNamespace_SetContractHook)(nil), "injective.permissions.v1beta1.MsgUpdateNamespace.SetContractHook") proto.RegisterType((*MsgUpdateNamespaceResponse)(nil), "injective.permissions.v1beta1.MsgUpdateNamespaceResponse") - proto.RegisterType((*MsgUpdateNamespaceRoles)(nil), "injective.permissions.v1beta1.MsgUpdateNamespaceRoles") - proto.RegisterType((*MsgUpdateNamespaceRolesResponse)(nil), "injective.permissions.v1beta1.MsgUpdateNamespaceRolesResponse") - proto.RegisterType((*MsgRevokeNamespaceRoles)(nil), "injective.permissions.v1beta1.MsgRevokeNamespaceRoles") - proto.RegisterType((*MsgRevokeNamespaceRolesResponse)(nil), "injective.permissions.v1beta1.MsgRevokeNamespaceRolesResponse") + proto.RegisterType((*MsgUpdateActorRoles)(nil), "injective.permissions.v1beta1.MsgUpdateActorRoles") + proto.RegisterType((*MsgUpdateActorRolesResponse)(nil), "injective.permissions.v1beta1.MsgUpdateActorRolesResponse") proto.RegisterType((*MsgClaimVoucher)(nil), "injective.permissions.v1beta1.MsgClaimVoucher") proto.RegisterType((*MsgClaimVoucherResponse)(nil), "injective.permissions.v1beta1.MsgClaimVoucherResponse") } @@ -911,68 +596,63 @@ func init() { } var fileDescriptor_ab9bfdcab1d9b6fa = []byte{ - // 961 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x57, 0x4d, 0x6f, 0xe3, 0x44, - 0x18, 0xae, 0xb7, 0x1f, 0x34, 0xd3, 0xee, 0x96, 0x5a, 0x91, 0x9a, 0xf5, 0x82, 0x5b, 0xb2, 0x02, - 0x42, 0x56, 0xb5, 0x49, 0x57, 0xaa, 0x44, 0x0e, 0x08, 0x92, 0x3d, 0x80, 0xb4, 0x59, 0x05, 0x17, - 0x16, 0x09, 0x09, 0x59, 0xe3, 0x64, 0x70, 0x4c, 0x62, 0x8f, 0xe5, 0x71, 0x12, 0x7a, 0x5a, 0xc4, - 0x81, 0x03, 0x07, 0xc4, 0x91, 0x2b, 0xff, 0xa0, 0x07, 0xae, 0x70, 0xe2, 0xb0, 0xc7, 0x15, 0x27, - 0x4e, 0x2b, 0xd4, 0x1e, 0x7a, 0x47, 0xfc, 0x00, 0x34, 0x9e, 0x89, 0xed, 0x4c, 0xd2, 0xd8, 0xe9, - 0x6a, 0xb9, 0xb4, 0x79, 0xbf, 0x9f, 0xe7, 0xb1, 0xde, 0x19, 0x1b, 0xbc, 0xe5, 0x78, 0x5f, 0xa3, - 0x4e, 0xe8, 0x8c, 0x90, 0xee, 0xa3, 0xc0, 0x75, 0x08, 0x71, 0xb0, 0x47, 0xf4, 0x51, 0xcd, 0x42, - 0x21, 0xac, 0xe9, 0xe1, 0x37, 0x9a, 0x1f, 0xe0, 0x10, 0xcb, 0xaf, 0xc7, 0x79, 0x5a, 0x2a, 0x4f, - 0xe3, 0x79, 0x4a, 0xd1, 0xc6, 0x36, 0x8e, 0x32, 0x75, 0xfa, 0x8b, 0x15, 0x29, 0x6a, 0x07, 0x13, - 0x17, 0x13, 0xdd, 0x82, 0x04, 0xc5, 0x2d, 0x3b, 0xd8, 0xf1, 0x66, 0xe2, 0x5e, 0x3f, 0x8e, 0x53, - 0x83, 0xc7, 0xf7, 0x78, 0xdc, 0x25, 0xb6, 0x3e, 0xaa, 0xd1, 0x7f, 0x3c, 0x70, 0x9b, 0x05, 0x4c, - 0x36, 0x91, 0x19, 0x3c, 0x54, 0x5d, 0x4c, 0xc8, 0x87, 0x01, 0x74, 0x27, 0xb9, 0x7a, 0x46, 0x6e, - 0x8a, 0x28, 0x2b, 0xd8, 0x85, 0xae, 0xe3, 0x61, 0x3d, 0xfa, 0xcb, 0x5c, 0xe5, 0xdf, 0x25, 0xb0, - 0xd3, 0x22, 0xf6, 0x67, 0x7e, 0x17, 0x86, 0xa8, 0x1d, 0x75, 0x97, 0x8f, 0x41, 0x01, 0x0e, 0xc3, - 0x1e, 0x0e, 0x9c, 0xf0, 0xb4, 0x24, 0x1d, 0x48, 0x95, 0x42, 0xa3, 0xf4, 0xe7, 0xaf, 0x87, 0x45, - 0x0e, 0xf4, 0xc3, 0x6e, 0x37, 0x40, 0x84, 0x9c, 0x84, 0x81, 0xe3, 0xd9, 0x46, 0x92, 0x2a, 0x37, - 0xc1, 0x06, 0xc3, 0x57, 0xba, 0x71, 0x20, 0x55, 0xb6, 0x8e, 0xde, 0xd4, 0x16, 0xaa, 0xae, 0xb1, - 0x71, 0x8d, 0xb5, 0xa7, 0xcf, 0xf7, 0x57, 0x0c, 0x5e, 0x5a, 0xd7, 0xbe, 0xbb, 0x3c, 0xab, 0x26, - 0x4d, 0x7f, 0xb8, 0x3c, 0xab, 0xde, 0x49, 0xb3, 0x13, 0xc0, 0x96, 0x6f, 0x83, 0x3d, 0xc1, 0x65, - 0x20, 0xe2, 0x63, 0x8f, 0xa0, 0xf2, 0x6f, 0x12, 0x90, 0x5b, 0xc4, 0x6e, 0x06, 0x08, 0x86, 0xe8, - 0x11, 0x74, 0x11, 0xf1, 0x61, 0x07, 0xc9, 0xef, 0x80, 0x0d, 0x82, 0xbc, 0x2e, 0x0a, 0x38, 0xb7, - 0xdd, 0x7f, 0x9e, 0xef, 0xdf, 0x3c, 0x85, 0xee, 0xa0, 0x5e, 0x66, 0xfe, 0xb2, 0xc1, 0x13, 0xe4, - 0x87, 0xa0, 0xe0, 0x4d, 0xea, 0x38, 0xa9, 0x4a, 0x06, 0xa9, 0x78, 0x0e, 0xe7, 0x95, 0x34, 0x60, - 0xd4, 0x78, 0x6b, 0xca, 0x4b, 0x15, 0x78, 0x09, 0x40, 0xcb, 0xaf, 0x01, 0x65, 0xd6, 0x1b, 0xb3, - 0xfb, 0x99, 0xb1, 0x7b, 0x80, 0x06, 0xe8, 0x9a, 0xec, 0xde, 0x06, 0x3b, 0x31, 0x38, 0xb3, 0x8b, - 0x3c, 0xec, 0x46, 0x1c, 0x0b, 0xc6, 0xad, 0xd8, 0xfd, 0x80, 0x7a, 0x33, 0x81, 0x0b, 0x18, 0x38, - 0x70, 0xc1, 0x1b, 0x03, 0xff, 0x77, 0x3d, 0x02, 0xce, 0x1e, 0xd9, 0x4b, 0x05, 0x2e, 0x7f, 0x09, - 0x0a, 0x63, 0x48, 0x5c, 0xb3, 0x87, 0x71, 0xbf, 0xb4, 0x1a, 0x3d, 0xbf, 0x0f, 0x32, 0x9e, 0xdf, - 0x2c, 0x32, 0xea, 0x3a, 0x41, 0xe1, 0xe7, 0x90, 0xb8, 0x1f, 0x61, 0xdc, 0x37, 0x36, 0xc7, 0xfc, - 0x97, 0xfc, 0x15, 0xd8, 0x76, 0x1d, 0x2f, 0x24, 0xa6, 0x0f, 0x87, 0x04, 0x75, 0x4b, 0x6b, 0xd1, - 0x84, 0xe6, 0x75, 0x27, 0xb4, 0x68, 0xaf, 0x76, 0xd4, 0xca, 0xd8, 0x72, 0x13, 0x83, 0xce, 0xa1, - 0xcc, 0xe3, 0x39, 0xeb, 0x2f, 0x36, 0xe7, 0x84, 0xf6, 0x9a, 0xcc, 0x21, 0x89, 0x41, 0xe7, 0x58, - 0xc3, 0xc0, 0x8b, 0xe7, 0x6c, 0xbc, 0xd8, 0x9c, 0x06, 0xed, 0x35, 0x99, 0x63, 0x25, 0x86, 0x72, - 0x08, 0x6e, 0x4d, 0x6b, 0x2a, 0xdf, 0x01, 0x05, 0x0f, 0x8d, 0xcd, 0x11, 0x1c, 0x0c, 0x11, 0x7b, - 0xfe, 0xc6, 0xa6, 0x87, 0xc6, 0x8f, 0xa9, 0xad, 0xbc, 0x0b, 0x76, 0x67, 0x04, 0x9a, 0xad, 0xd8, - 0x9c, 0x57, 0x91, 0xa2, 0x9a, 0xb3, 0x22, 0x05, 0x7a, 0x61, 0x45, 0xe6, 0x52, 0x08, 0x9a, 0xf0, - 0xa5, 0x10, 0xbc, 0xf1, 0x52, 0xfc, 0x71, 0x23, 0x75, 0x8e, 0x25, 0x61, 0x3c, 0x40, 0xe4, 0xa5, - 0x6c, 0xc6, 0x23, 0xf0, 0x6a, 0x80, 0x07, 0xc8, 0x4c, 0x81, 0x2e, 0xad, 0x1e, 0xac, 0x56, 0xb6, - 0x8e, 0xee, 0x66, 0x3c, 0x6e, 0x8a, 0xc9, 0xd8, 0xa1, 0xc5, 0xed, 0x24, 0x2a, 0xb7, 0xc1, 0x4d, - 0xc8, 0xee, 0x05, 0x93, 0x86, 0x48, 0x69, 0x2d, 0x6a, 0x76, 0x2f, 0xa3, 0x19, 0xbf, 0x4b, 0x22, - 0x9e, 0xc6, 0x36, 0x4c, 0x59, 0xf5, 0xfb, 0x82, 0xbe, 0x77, 0x17, 0xeb, 0x1b, 0x15, 0x95, 0xdf, - 0x00, 0xfb, 0x57, 0x84, 0x62, 0xa5, 0xbf, 0x67, 0x4a, 0x1b, 0x68, 0x84, 0xfb, 0xff, 0x87, 0xd2, - 0x16, 0xd8, 0x9b, 0x52, 0xc6, 0x0c, 0xb1, 0x19, 0x44, 0xc3, 0xb9, 0xe0, 0x4b, 0x69, 0x54, 0x4c, - 0x6b, 0xf4, 0x29, 0x66, 0x2c, 0x32, 0xb5, 0x9a, 0x47, 0x96, 0x6b, 0x35, 0x2f, 0x14, 0x6b, 0xf5, - 0x24, 0x7a, 0x39, 0x68, 0x0e, 0xa0, 0xe3, 0x3e, 0xc6, 0xc3, 0x4e, 0x0f, 0x05, 0xcb, 0x48, 0x54, - 0x04, 0xeb, 0x69, 0x61, 0x98, 0x51, 0xbf, 0x27, 0x60, 0x15, 0x6f, 0xf7, 0xf4, 0x34, 0x7e, 0xbb, - 0xa7, 0x5d, 0x13, 0x6c, 0x47, 0xbf, 0xbc, 0x02, 0x56, 0x5b, 0xc4, 0x96, 0x47, 0x60, 0x7b, 0xea, - 0xed, 0x45, 0xcb, 0x7b, 0x5c, 0xb1, 0x7c, 0xe5, 0x78, 0xb9, 0xfc, 0xc9, 0x7c, 0xf9, 0x09, 0xd8, - 0x11, 0xdf, 0x2c, 0x6a, 0xd9, 0xad, 0x84, 0x12, 0xe5, 0xbd, 0xa5, 0x4b, 0xd2, 0x00, 0xc4, 0xcb, - 0x3f, 0x07, 0x00, 0xa1, 0x24, 0x0f, 0x80, 0x2b, 0x2e, 0x72, 0x0a, 0x40, 0xbc, 0xc4, 0x6b, 0x4b, - 0xdf, 0x15, 0x79, 0x00, 0x5c, 0x71, 0x68, 0xca, 0x3f, 0x4a, 0xa0, 0x38, 0xf7, 0xc4, 0x3c, 0x5e, - 0xbe, 0x27, 0xad, 0x53, 0xde, 0xbf, 0x5e, 0xdd, 0x14, 0xa0, 0xb9, 0x07, 0x4b, 0x0e, 0x40, 0xf3, - 0xea, 0xf2, 0x00, 0x5a, 0xb4, 0xc0, 0x74, 0x39, 0xa6, 0xb6, 0x37, 0xc7, 0x72, 0xa4, 0xf3, 0xf3, - 0x2c, 0xc7, 0xbc, 0xe5, 0x54, 0xd6, 0xbf, 0xbd, 0x3c, 0xab, 0x4a, 0x8d, 0xfe, 0xd3, 0x73, 0x55, - 0x7a, 0x76, 0xae, 0x4a, 0x7f, 0x9f, 0xab, 0xd2, 0x4f, 0x17, 0xea, 0xca, 0xb3, 0x0b, 0x75, 0xe5, - 0xaf, 0x0b, 0x75, 0xe5, 0x8b, 0x4f, 0x6c, 0x27, 0xec, 0x0d, 0x2d, 0xad, 0x83, 0x5d, 0xfd, 0xe3, - 0xc9, 0x88, 0x87, 0xd0, 0x22, 0xc9, 0x47, 0xcd, 0x61, 0x07, 0x07, 0x28, 0x6d, 0xf6, 0xa0, 0xe3, - 0xe9, 0x2e, 0xee, 0x0e, 0x07, 0x88, 0x4c, 0x7d, 0xf1, 0x84, 0xa7, 0x3e, 0x22, 0xd6, 0x46, 0xf4, - 0x45, 0x73, 0xff, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x72, 0x97, 0x38, 0xd1, 0x14, 0x0e, 0x00, - 0x00, + // 889 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x56, 0xcf, 0x6f, 0x1b, 0x45, + 0x14, 0xce, 0x36, 0x75, 0xc0, 0xd3, 0x04, 0xb7, 0x43, 0x50, 0x37, 0x0e, 0x75, 0x22, 0x23, 0x50, + 0xea, 0xaa, 0xbb, 0x72, 0x90, 0x22, 0xe1, 0x5b, 0xe2, 0x0b, 0x48, 0x4d, 0x29, 0x9b, 0x92, 0x03, + 0x42, 0xb2, 0xc6, 0xbb, 0x8f, 0xf5, 0x60, 0xef, 0xce, 0x6a, 0x66, 0xec, 0xe2, 0x53, 0x51, 0xb9, + 0x21, 0x0e, 0xfc, 0x29, 0x39, 0x70, 0x85, 0x73, 0x8f, 0x15, 0x27, 0x4e, 0x15, 0x4a, 0x0e, 0xb9, + 0xf3, 0x17, 0x20, 0xcf, 0x8c, 0xbd, 0x9b, 0x8d, 0xa9, 0xd7, 0xf4, 0x92, 0xf8, 0xfd, 0xfa, 0xde, + 0xf7, 0xbd, 0x79, 0x3b, 0xbb, 0xe8, 0x13, 0x1a, 0x7f, 0x0f, 0xbe, 0xa4, 0x23, 0x70, 0x13, 0xe0, + 0x11, 0x15, 0x82, 0xb2, 0x58, 0xb8, 0xa3, 0x66, 0x17, 0x24, 0x69, 0xba, 0xf2, 0x07, 0x27, 0xe1, + 0x4c, 0x32, 0x7c, 0x6f, 0x96, 0xe7, 0x64, 0xf2, 0x1c, 0x93, 0x57, 0xdd, 0x0c, 0x59, 0xc8, 0x54, + 0xa6, 0x3b, 0xf9, 0xa5, 0x8b, 0xaa, 0x35, 0x9f, 0x89, 0x88, 0x09, 0xb7, 0x4b, 0x04, 0xcc, 0x20, + 0x7d, 0x46, 0xe3, 0x6b, 0xf1, 0xb8, 0x3f, 0x8b, 0x4f, 0x0c, 0x13, 0xbf, 0x6b, 0xe2, 0x91, 0x08, + 0xdd, 0x51, 0x73, 0xf2, 0xcf, 0x04, 0xb6, 0x74, 0xa0, 0xa3, 0x3b, 0x6a, 0xc3, 0x84, 0x1a, 0x6f, + 0x16, 0x94, 0x10, 0x4e, 0xa2, 0x69, 0xae, 0xbb, 0x20, 0x37, 0x23, 0x54, 0x17, 0xdc, 0x21, 0x11, + 0x8d, 0x99, 0xab, 0xfe, 0x6a, 0x57, 0xfd, 0x0f, 0x0b, 0x55, 0x8e, 0x45, 0xf8, 0x75, 0x12, 0x10, + 0x09, 0x4f, 0x14, 0x3a, 0x3e, 0x40, 0x65, 0x32, 0x94, 0x3d, 0xc6, 0xa9, 0x1c, 0xdb, 0xd6, 0xae, + 0xb5, 0x57, 0x3e, 0xb2, 0xff, 0xfc, 0xed, 0xe1, 0xa6, 0x21, 0x7a, 0x18, 0x04, 0x1c, 0x84, 0x38, + 0x91, 0x9c, 0xc6, 0xa1, 0x97, 0xa6, 0xe2, 0x36, 0x5a, 0xd3, 0xfc, 0xec, 0x1b, 0xbb, 0xd6, 0xde, + 0xad, 0xfd, 0x8f, 0x9d, 0x37, 0x4e, 0xdd, 0xd1, 0xed, 0x8e, 0x6e, 0xbe, 0x7c, 0xbd, 0xb3, 0xe2, + 0x99, 0xd2, 0x96, 0xf3, 0xe2, 0xf2, 0xac, 0x91, 0x82, 0xfe, 0x7c, 0x79, 0xd6, 0xd8, 0xce, 0xaa, + 0xcb, 0x91, 0xad, 0x6f, 0xa1, 0xbb, 0x39, 0x97, 0x07, 0x22, 0x61, 0xb1, 0x80, 0xfa, 0xef, 0x16, + 0xc2, 0xc7, 0x22, 0x6c, 0x73, 0x20, 0x12, 0x1e, 0x93, 0x08, 0x44, 0x42, 0x7c, 0xc0, 0xf7, 0xd1, + 0x9a, 0x80, 0x38, 0x00, 0x6e, 0xb4, 0xdd, 0xf9, 0xe7, 0xf5, 0xce, 0xc6, 0x98, 0x44, 0x83, 0x56, + 0x5d, 0xfb, 0xeb, 0x9e, 0x49, 0xc0, 0x8f, 0x50, 0x39, 0x9e, 0xd6, 0x19, 0x51, 0x7b, 0x0b, 0x44, + 0xcd, 0xfa, 0x18, 0x5d, 0x29, 0x80, 0x96, 0x66, 0xa0, 0x27, 0xba, 0x6a, 0x39, 0x5d, 0x39, 0xa2, + 0xf5, 0x0f, 0x51, 0xf5, 0xba, 0x77, 0xa6, 0xee, 0x97, 0x92, 0x52, 0xa7, 0x95, 0xff, 0x2f, 0x75, + 0x9b, 0xa8, 0x14, 0x40, 0xcc, 0x22, 0xa5, 0xac, 0xec, 0x69, 0x03, 0x7f, 0x87, 0x36, 0x7c, 0x16, + 0x4b, 0x4e, 0x7c, 0xd9, 0xe9, 0x31, 0xd6, 0xb7, 0x57, 0x95, 0xee, 0xc3, 0x05, 0xba, 0xaf, 0x53, + 0x71, 0x4e, 0x40, 0xb6, 0x0d, 0xd2, 0xe7, 0x8c, 0xf5, 0xbd, 0x75, 0x3f, 0x63, 0xe1, 0xc7, 0xe8, + 0x36, 0x67, 0x03, 0xe8, 0x64, 0xc0, 0xec, 0x9b, 0xbb, 0xab, 0x7b, 0xb7, 0xf6, 0x3f, 0x5a, 0xd0, + 0xca, 0x63, 0x03, 0xf0, 0x2a, 0x93, 0xe2, 0x27, 0x69, 0x14, 0x7f, 0x89, 0x36, 0x14, 0x5e, 0x44, + 0x62, 0x12, 0x02, 0x17, 0x76, 0x49, 0x81, 0x35, 0x0a, 0x80, 0x1d, 0xeb, 0x12, 0x6f, 0x9d, 0xa7, + 0x86, 0xc0, 0x4f, 0x51, 0x25, 0x61, 0x03, 0xea, 0x8f, 0x3b, 0x42, 0x12, 0x39, 0x14, 0x20, 0xec, + 0x35, 0x05, 0xf9, 0x60, 0xd1, 0x5e, 0xab, 0xaa, 0x13, 0x55, 0xe4, 0xbd, 0x97, 0x64, 0x2c, 0x10, + 0x78, 0x84, 0xb6, 0x0d, 0xaa, 0x21, 0xda, 0xf1, 0x49, 0x42, 0xba, 0x74, 0x40, 0x25, 0x05, 0x61, + 0xbf, 0xa3, 0x3a, 0x1c, 0x14, 0xea, 0x60, 0x98, 0xb6, 0xa7, 0xf5, 0x63, 0x6f, 0x2b, 0x99, 0x1b, + 0xa0, 0x20, 0xaa, 0x0e, 0xaa, 0xe4, 0xce, 0x03, 0x6f, 0xa3, 0x72, 0x0c, 0xcf, 0x3a, 0x23, 0x32, + 0x18, 0x82, 0xde, 0x16, 0xef, 0xdd, 0x18, 0x9e, 0x9d, 0x4e, 0xec, 0x85, 0xcb, 0x9a, 0x3b, 0x6c, + 0xb3, 0xac, 0x39, 0x6f, 0xfa, 0x28, 0xde, 0x40, 0xef, 0xcf, 0xc2, 0x87, 0xbe, 0x64, 0x7c, 0x32, + 0x77, 0xf1, 0xf6, 0xdb, 0x7a, 0x8a, 0xb0, 0x3a, 0x75, 0x32, 0xc1, 0x14, 0x1d, 0xc9, 0x3a, 0x24, + 0x08, 0xec, 0x55, 0x35, 0xc5, 0xfb, 0x05, 0x8e, 0x5e, 0x71, 0x11, 0x7a, 0x9b, 0xf4, 0xef, 0xa7, + 0xec, 0x30, 0x08, 0xf0, 0xb7, 0xe8, 0x83, 0x1c, 0x2e, 0x87, 0x11, 0xeb, 0x83, 0xd9, 0xaa, 0x25, + 0xa0, 0x71, 0x16, 0xda, 0x53, 0x20, 0x2d, 0x37, 0x37, 0xdc, 0x9d, 0xb9, 0xc3, 0x4d, 0xe7, 0x54, + 0xbf, 0x87, 0xb6, 0xe7, 0xb8, 0x67, 0xe3, 0x7d, 0xae, 0x2e, 0xf1, 0xf6, 0x80, 0xd0, 0xe8, 0x94, + 0x0d, 0xfd, 0x1e, 0xf0, 0xb7, 0x9e, 0x6c, 0xeb, 0x41, 0x8e, 0x63, 0xfe, 0x16, 0xce, 0x76, 0x33, + 0xb7, 0x70, 0xd6, 0x35, 0xe5, 0xb6, 0xff, 0x53, 0x09, 0xad, 0x1e, 0x8b, 0x10, 0x8f, 0xd0, 0xfa, + 0x95, 0xb7, 0x8c, 0x53, 0xf4, 0x42, 0xd1, 0xf9, 0xd5, 0x83, 0xe5, 0xf2, 0xa7, 0xfd, 0xf1, 0x73, + 0x54, 0xc9, 0xbf, 0x01, 0x9a, 0x8b, 0xa1, 0x72, 0x25, 0xd5, 0xcf, 0x96, 0x2e, 0xc9, 0x12, 0xc8, + 0x5f, 0xd2, 0xcd, 0xa5, 0x2f, 0xd3, 0x22, 0x04, 0xfe, 0xe3, 0xe1, 0xc3, 0x2f, 0x2c, 0x74, 0xfb, + 0xda, 0x93, 0xb7, 0x5f, 0x14, 0x2f, 0xad, 0xa9, 0xb6, 0x96, 0xaf, 0x99, 0x91, 0x18, 0xa1, 0xf5, + 0x2b, 0xfb, 0x59, 0xe0, 0xf8, 0xb3, 0xf9, 0x45, 0x8e, 0x7f, 0xde, 0xfa, 0x55, 0x4b, 0x3f, 0x5e, + 0x9e, 0x35, 0xac, 0xa3, 0xfe, 0xcb, 0xf3, 0x9a, 0xf5, 0xea, 0xbc, 0x66, 0xfd, 0x7d, 0x5e, 0xb3, + 0x7e, 0xbd, 0xa8, 0xad, 0xbc, 0xba, 0xa8, 0xad, 0xfc, 0x75, 0x51, 0x5b, 0xf9, 0xe6, 0xab, 0x90, + 0xca, 0xde, 0xb0, 0xeb, 0xf8, 0x2c, 0x72, 0xbf, 0x98, 0xb6, 0x78, 0x44, 0xba, 0x22, 0xfd, 0xbc, + 0x7a, 0xe8, 0x33, 0x0e, 0x59, 0xb3, 0x47, 0x68, 0xec, 0x46, 0x2c, 0x18, 0x0e, 0x40, 0x5c, 0xf9, + 0xf6, 0x92, 0xe3, 0x04, 0x44, 0x77, 0x4d, 0x7d, 0x5b, 0x7d, 0xfa, 0x6f, 0x00, 0x00, 0x00, 0xff, + 0xff, 0x89, 0x70, 0x57, 0xeb, 0x9e, 0x0a, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -989,10 +669,8 @@ const _ = grpc.SupportPackageIsVersion4 type MsgClient interface { UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error) CreateNamespace(ctx context.Context, in *MsgCreateNamespace, opts ...grpc.CallOption) (*MsgCreateNamespaceResponse, error) - DeleteNamespace(ctx context.Context, in *MsgDeleteNamespace, opts ...grpc.CallOption) (*MsgDeleteNamespaceResponse, error) UpdateNamespace(ctx context.Context, in *MsgUpdateNamespace, opts ...grpc.CallOption) (*MsgUpdateNamespaceResponse, error) - UpdateNamespaceRoles(ctx context.Context, in *MsgUpdateNamespaceRoles, opts ...grpc.CallOption) (*MsgUpdateNamespaceRolesResponse, error) - RevokeNamespaceRoles(ctx context.Context, in *MsgRevokeNamespaceRoles, opts ...grpc.CallOption) (*MsgRevokeNamespaceRolesResponse, error) + UpdateActorRoles(ctx context.Context, in *MsgUpdateActorRoles, opts ...grpc.CallOption) (*MsgUpdateActorRolesResponse, error) ClaimVoucher(ctx context.Context, in *MsgClaimVoucher, opts ...grpc.CallOption) (*MsgClaimVoucherResponse, error) } @@ -1022,15 +700,6 @@ func (c *msgClient) CreateNamespace(ctx context.Context, in *MsgCreateNamespace, return out, nil } -func (c *msgClient) DeleteNamespace(ctx context.Context, in *MsgDeleteNamespace, opts ...grpc.CallOption) (*MsgDeleteNamespaceResponse, error) { - out := new(MsgDeleteNamespaceResponse) - err := c.cc.Invoke(ctx, "/injective.permissions.v1beta1.Msg/DeleteNamespace", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - func (c *msgClient) UpdateNamespace(ctx context.Context, in *MsgUpdateNamespace, opts ...grpc.CallOption) (*MsgUpdateNamespaceResponse, error) { out := new(MsgUpdateNamespaceResponse) err := c.cc.Invoke(ctx, "/injective.permissions.v1beta1.Msg/UpdateNamespace", in, out, opts...) @@ -1040,18 +709,9 @@ func (c *msgClient) UpdateNamespace(ctx context.Context, in *MsgUpdateNamespace, return out, nil } -func (c *msgClient) UpdateNamespaceRoles(ctx context.Context, in *MsgUpdateNamespaceRoles, opts ...grpc.CallOption) (*MsgUpdateNamespaceRolesResponse, error) { - out := new(MsgUpdateNamespaceRolesResponse) - err := c.cc.Invoke(ctx, "/injective.permissions.v1beta1.Msg/UpdateNamespaceRoles", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *msgClient) RevokeNamespaceRoles(ctx context.Context, in *MsgRevokeNamespaceRoles, opts ...grpc.CallOption) (*MsgRevokeNamespaceRolesResponse, error) { - out := new(MsgRevokeNamespaceRolesResponse) - err := c.cc.Invoke(ctx, "/injective.permissions.v1beta1.Msg/RevokeNamespaceRoles", in, out, opts...) +func (c *msgClient) UpdateActorRoles(ctx context.Context, in *MsgUpdateActorRoles, opts ...grpc.CallOption) (*MsgUpdateActorRolesResponse, error) { + out := new(MsgUpdateActorRolesResponse) + err := c.cc.Invoke(ctx, "/injective.permissions.v1beta1.Msg/UpdateActorRoles", in, out, opts...) if err != nil { return nil, err } @@ -1071,10 +731,8 @@ func (c *msgClient) ClaimVoucher(ctx context.Context, in *MsgClaimVoucher, opts type MsgServer interface { UpdateParams(context.Context, *MsgUpdateParams) (*MsgUpdateParamsResponse, error) CreateNamespace(context.Context, *MsgCreateNamespace) (*MsgCreateNamespaceResponse, error) - DeleteNamespace(context.Context, *MsgDeleteNamespace) (*MsgDeleteNamespaceResponse, error) UpdateNamespace(context.Context, *MsgUpdateNamespace) (*MsgUpdateNamespaceResponse, error) - UpdateNamespaceRoles(context.Context, *MsgUpdateNamespaceRoles) (*MsgUpdateNamespaceRolesResponse, error) - RevokeNamespaceRoles(context.Context, *MsgRevokeNamespaceRoles) (*MsgRevokeNamespaceRolesResponse, error) + UpdateActorRoles(context.Context, *MsgUpdateActorRoles) (*MsgUpdateActorRolesResponse, error) ClaimVoucher(context.Context, *MsgClaimVoucher) (*MsgClaimVoucherResponse, error) } @@ -1088,17 +746,11 @@ func (*UnimplementedMsgServer) UpdateParams(ctx context.Context, req *MsgUpdateP func (*UnimplementedMsgServer) CreateNamespace(ctx context.Context, req *MsgCreateNamespace) (*MsgCreateNamespaceResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method CreateNamespace not implemented") } -func (*UnimplementedMsgServer) DeleteNamespace(ctx context.Context, req *MsgDeleteNamespace) (*MsgDeleteNamespaceResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method DeleteNamespace not implemented") -} func (*UnimplementedMsgServer) UpdateNamespace(ctx context.Context, req *MsgUpdateNamespace) (*MsgUpdateNamespaceResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method UpdateNamespace not implemented") } -func (*UnimplementedMsgServer) UpdateNamespaceRoles(ctx context.Context, req *MsgUpdateNamespaceRoles) (*MsgUpdateNamespaceRolesResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method UpdateNamespaceRoles not implemented") -} -func (*UnimplementedMsgServer) RevokeNamespaceRoles(ctx context.Context, req *MsgRevokeNamespaceRoles) (*MsgRevokeNamespaceRolesResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method RevokeNamespaceRoles not implemented") +func (*UnimplementedMsgServer) UpdateActorRoles(ctx context.Context, req *MsgUpdateActorRoles) (*MsgUpdateActorRolesResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateActorRoles not implemented") } func (*UnimplementedMsgServer) ClaimVoucher(ctx context.Context, req *MsgClaimVoucher) (*MsgClaimVoucherResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ClaimVoucher not implemented") @@ -1144,24 +796,6 @@ func _Msg_CreateNamespace_Handler(srv interface{}, ctx context.Context, dec func return interceptor(ctx, in, info, handler) } -func _Msg_DeleteNamespace_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MsgDeleteNamespace) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(MsgServer).DeleteNamespace(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/injective.permissions.v1beta1.Msg/DeleteNamespace", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).DeleteNamespace(ctx, req.(*MsgDeleteNamespace)) - } - return interceptor(ctx, in, info, handler) -} - func _Msg_UpdateNamespace_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(MsgUpdateNamespace) if err := dec(in); err != nil { @@ -1180,38 +814,20 @@ func _Msg_UpdateNamespace_Handler(srv interface{}, ctx context.Context, dec func return interceptor(ctx, in, info, handler) } -func _Msg_UpdateNamespaceRoles_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MsgUpdateNamespaceRoles) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(MsgServer).UpdateNamespaceRoles(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/injective.permissions.v1beta1.Msg/UpdateNamespaceRoles", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).UpdateNamespaceRoles(ctx, req.(*MsgUpdateNamespaceRoles)) - } - return interceptor(ctx, in, info, handler) -} - -func _Msg_RevokeNamespaceRoles_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MsgRevokeNamespaceRoles) +func _Msg_UpdateActorRoles_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgUpdateActorRoles) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(MsgServer).RevokeNamespaceRoles(ctx, in) + return srv.(MsgServer).UpdateActorRoles(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/injective.permissions.v1beta1.Msg/RevokeNamespaceRoles", + FullMethod: "/injective.permissions.v1beta1.Msg/UpdateActorRoles", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).RevokeNamespaceRoles(ctx, req.(*MsgRevokeNamespaceRoles)) + return srv.(MsgServer).UpdateActorRoles(ctx, req.(*MsgUpdateActorRoles)) } return interceptor(ctx, in, info, handler) } @@ -1246,21 +862,13 @@ var _Msg_serviceDesc = grpc.ServiceDesc{ MethodName: "CreateNamespace", Handler: _Msg_CreateNamespace_Handler, }, - { - MethodName: "DeleteNamespace", - Handler: _Msg_DeleteNamespace_Handler, - }, { MethodName: "UpdateNamespace", Handler: _Msg_UpdateNamespace_Handler, }, { - MethodName: "UpdateNamespaceRoles", - Handler: _Msg_UpdateNamespaceRoles_Handler, - }, - { - MethodName: "RevokeNamespaceRoles", - Handler: _Msg_RevokeNamespaceRoles_Handler, + MethodName: "UpdateActorRoles", + Handler: _Msg_UpdateActorRoles_Handler, }, { MethodName: "ClaimVoucher", @@ -1397,7 +1005,7 @@ func (m *MsgCreateNamespaceResponse) MarshalToSizedBuffer(dAtA []byte) (int, err return len(dAtA) - i, nil } -func (m *MsgDeleteNamespace) Marshal() (dAtA []byte, err error) { +func (m *MsgUpdateNamespace) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -1407,115 +1015,75 @@ func (m *MsgDeleteNamespace) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *MsgDeleteNamespace) MarshalTo(dAtA []byte) (int, error) { +func (m *MsgUpdateNamespace) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *MsgDeleteNamespace) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *MsgUpdateNamespace) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l - if len(m.NamespaceDenom) > 0 { - i -= len(m.NamespaceDenom) - copy(dAtA[i:], m.NamespaceDenom) - i = encodeVarintTx(dAtA, i, uint64(len(m.NamespaceDenom))) - i-- - dAtA[i] = 0x12 - } - if len(m.Sender) > 0 { - i -= len(m.Sender) - copy(dAtA[i:], m.Sender) - i = encodeVarintTx(dAtA, i, uint64(len(m.Sender))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *MsgDeleteNamespaceResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MsgDeleteNamespaceResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgDeleteNamespaceResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - return len(dAtA) - i, nil -} - -func (m *MsgUpdateNamespace) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err + if len(m.PolicyManagerCapabilities) > 0 { + for iNdEx := len(m.PolicyManagerCapabilities) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.PolicyManagerCapabilities[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x3a + } } - return dAtA[:n], nil -} - -func (m *MsgUpdateNamespace) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgUpdateNamespace) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.BurnsPaused != nil { - { - size, err := m.BurnsPaused.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err + if len(m.PolicyStatuses) > 0 { + for iNdEx := len(m.PolicyStatuses) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.PolicyStatuses[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) } - i -= size - i = encodeVarintTx(dAtA, i, uint64(size)) + i-- + dAtA[i] = 0x32 } - i-- - dAtA[i] = 0x32 } - if m.SendsPaused != nil { - { - size, err := m.SendsPaused.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err + if len(m.RoleManagers) > 0 { + for iNdEx := len(m.RoleManagers) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.RoleManagers[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) } - i -= size - i = encodeVarintTx(dAtA, i, uint64(size)) + i-- + dAtA[i] = 0x2a } - i-- - dAtA[i] = 0x2a } - if m.MintsPaused != nil { - { - size, err := m.MintsPaused.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err + if len(m.RolePermissions) > 0 { + for iNdEx := len(m.RolePermissions) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.RolePermissions[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) } - i -= size - i = encodeVarintTx(dAtA, i, uint64(size)) + i-- + dAtA[i] = 0x22 } - i-- - dAtA[i] = 0x22 } - if m.WasmHook != nil { + if m.ContractHook != nil { { - size, err := m.WasmHook.MarshalToSizedBuffer(dAtA[:i]) + size, err := m.ContractHook.MarshalToSizedBuffer(dAtA[:i]) if err != nil { return 0, err } @@ -1525,10 +1093,10 @@ func (m *MsgUpdateNamespace) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x1a } - if len(m.NamespaceDenom) > 0 { - i -= len(m.NamespaceDenom) - copy(dAtA[i:], m.NamespaceDenom) - i = encodeVarintTx(dAtA, i, uint64(len(m.NamespaceDenom))) + if len(m.Denom) > 0 { + i -= len(m.Denom) + copy(dAtA[i:], m.Denom) + i = encodeVarintTx(dAtA, i, uint64(len(m.Denom))) i-- dAtA[i] = 0x12 } @@ -1542,7 +1110,7 @@ func (m *MsgUpdateNamespace) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func (m *MsgUpdateNamespace_MsgSetWasmHook) Marshal() (dAtA []byte, err error) { +func (m *MsgUpdateNamespace_SetContractHook) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -1552,12 +1120,12 @@ func (m *MsgUpdateNamespace_MsgSetWasmHook) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *MsgUpdateNamespace_MsgSetWasmHook) MarshalTo(dAtA []byte) (int, error) { +func (m *MsgUpdateNamespace_SetContractHook) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *MsgUpdateNamespace_MsgSetWasmHook) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *MsgUpdateNamespace_SetContractHook) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -1572,105 +1140,6 @@ func (m *MsgUpdateNamespace_MsgSetWasmHook) MarshalToSizedBuffer(dAtA []byte) (i return len(dAtA) - i, nil } -func (m *MsgUpdateNamespace_MsgSetMintsPaused) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MsgUpdateNamespace_MsgSetMintsPaused) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgUpdateNamespace_MsgSetMintsPaused) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.NewValue { - i-- - if m.NewValue { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } - i-- - dAtA[i] = 0x8 - } - return len(dAtA) - i, nil -} - -func (m *MsgUpdateNamespace_MsgSetSendsPaused) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MsgUpdateNamespace_MsgSetSendsPaused) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgUpdateNamespace_MsgSetSendsPaused) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.NewValue { - i-- - if m.NewValue { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } - i-- - dAtA[i] = 0x8 - } - return len(dAtA) - i, nil -} - -func (m *MsgUpdateNamespace_MsgSetBurnsPaused) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MsgUpdateNamespace_MsgSetBurnsPaused) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgUpdateNamespace_MsgSetBurnsPaused) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.NewValue { - i-- - if m.NewValue { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } - i-- - dAtA[i] = 0x8 - } - return len(dAtA) - i, nil -} - func (m *MsgUpdateNamespaceResponse) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -1694,7 +1163,7 @@ func (m *MsgUpdateNamespaceResponse) MarshalToSizedBuffer(dAtA []byte) (int, err return len(dAtA) - i, nil } -func (m *MsgUpdateNamespaceRoles) Marshal() (dAtA []byte, err error) { +func (m *MsgUpdateActorRoles) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -1704,34 +1173,20 @@ func (m *MsgUpdateNamespaceRoles) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *MsgUpdateNamespaceRoles) MarshalTo(dAtA []byte) (int, error) { +func (m *MsgUpdateActorRoles) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *MsgUpdateNamespaceRoles) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *MsgUpdateActorRoles) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l - if len(m.AddressRoles) > 0 { - for iNdEx := len(m.AddressRoles) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.AddressRoles[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintTx(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x22 - } - } - if len(m.RolePermissions) > 0 { - for iNdEx := len(m.RolePermissions) - 1; iNdEx >= 0; iNdEx-- { + if len(m.RoleActorsToRevoke) > 0 { + for iNdEx := len(m.RoleActorsToRevoke) - 1; iNdEx >= 0; iNdEx-- { { - size, err := m.RolePermissions[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + size, err := m.RoleActorsToRevoke[iNdEx].MarshalToSizedBuffer(dAtA[:i]) if err != nil { return 0, err } @@ -1739,73 +1194,13 @@ func (m *MsgUpdateNamespaceRoles) MarshalToSizedBuffer(dAtA []byte) (int, error) i = encodeVarintTx(dAtA, i, uint64(size)) } i-- - dAtA[i] = 0x1a + dAtA[i] = 0x2a } } - if len(m.NamespaceDenom) > 0 { - i -= len(m.NamespaceDenom) - copy(dAtA[i:], m.NamespaceDenom) - i = encodeVarintTx(dAtA, i, uint64(len(m.NamespaceDenom))) - i-- - dAtA[i] = 0x12 - } - if len(m.Sender) > 0 { - i -= len(m.Sender) - copy(dAtA[i:], m.Sender) - i = encodeVarintTx(dAtA, i, uint64(len(m.Sender))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *MsgUpdateNamespaceRolesResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MsgUpdateNamespaceRolesResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgUpdateNamespaceRolesResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - return len(dAtA) - i, nil -} - -func (m *MsgRevokeNamespaceRoles) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MsgRevokeNamespaceRoles) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgRevokeNamespaceRoles) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.AddressRolesToRevoke) > 0 { - for iNdEx := len(m.AddressRolesToRevoke) - 1; iNdEx >= 0; iNdEx-- { + if len(m.RoleActorsToAdd) > 0 { + for iNdEx := len(m.RoleActorsToAdd) - 1; iNdEx >= 0; iNdEx-- { { - size, err := m.AddressRolesToRevoke[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + size, err := m.RoleActorsToAdd[iNdEx].MarshalToSizedBuffer(dAtA[:i]) if err != nil { return 0, err } @@ -1816,10 +1211,10 @@ func (m *MsgRevokeNamespaceRoles) MarshalToSizedBuffer(dAtA []byte) (int, error) dAtA[i] = 0x1a } } - if len(m.NamespaceDenom) > 0 { - i -= len(m.NamespaceDenom) - copy(dAtA[i:], m.NamespaceDenom) - i = encodeVarintTx(dAtA, i, uint64(len(m.NamespaceDenom))) + if len(m.Denom) > 0 { + i -= len(m.Denom) + copy(dAtA[i:], m.Denom) + i = encodeVarintTx(dAtA, i, uint64(len(m.Denom))) i-- dAtA[i] = 0x12 } @@ -1833,7 +1228,7 @@ func (m *MsgRevokeNamespaceRoles) MarshalToSizedBuffer(dAtA []byte) (int, error) return len(dAtA) - i, nil } -func (m *MsgRevokeNamespaceRolesResponse) Marshal() (dAtA []byte, err error) { +func (m *MsgUpdateActorRolesResponse) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -1843,12 +1238,12 @@ func (m *MsgRevokeNamespaceRolesResponse) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *MsgRevokeNamespaceRolesResponse) MarshalTo(dAtA []byte) (int, error) { +func (m *MsgUpdateActorRolesResponse) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *MsgRevokeNamespaceRolesResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *MsgUpdateActorRolesResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -1975,7 +1370,7 @@ func (m *MsgCreateNamespaceResponse) Size() (n int) { return n } -func (m *MsgDeleteNamespace) Size() (n int) { +func (m *MsgUpdateNamespace) Size() (n int) { if m == nil { return 0 } @@ -1985,56 +1380,42 @@ func (m *MsgDeleteNamespace) Size() (n int) { if l > 0 { n += 1 + l + sovTx(uint64(l)) } - l = len(m.NamespaceDenom) + l = len(m.Denom) if l > 0 { n += 1 + l + sovTx(uint64(l)) } - return n -} - -func (m *MsgDeleteNamespaceResponse) Size() (n int) { - if m == nil { - return 0 + if m.ContractHook != nil { + l = m.ContractHook.Size() + n += 1 + l + sovTx(uint64(l)) } - var l int - _ = l - return n -} - -func (m *MsgUpdateNamespace) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Sender) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - l = len(m.NamespaceDenom) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - if m.WasmHook != nil { - l = m.WasmHook.Size() - n += 1 + l + sovTx(uint64(l)) + if len(m.RolePermissions) > 0 { + for _, e := range m.RolePermissions { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) + } } - if m.MintsPaused != nil { - l = m.MintsPaused.Size() - n += 1 + l + sovTx(uint64(l)) + if len(m.RoleManagers) > 0 { + for _, e := range m.RoleManagers { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) + } } - if m.SendsPaused != nil { - l = m.SendsPaused.Size() - n += 1 + l + sovTx(uint64(l)) + if len(m.PolicyStatuses) > 0 { + for _, e := range m.PolicyStatuses { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) + } } - if m.BurnsPaused != nil { - l = m.BurnsPaused.Size() - n += 1 + l + sovTx(uint64(l)) + if len(m.PolicyManagerCapabilities) > 0 { + for _, e := range m.PolicyManagerCapabilities { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) + } } return n } -func (m *MsgUpdateNamespace_MsgSetWasmHook) Size() (n int) { +func (m *MsgUpdateNamespace_SetContractHook) Size() (n int) { if m == nil { return 0 } @@ -2047,42 +1428,6 @@ func (m *MsgUpdateNamespace_MsgSetWasmHook) Size() (n int) { return n } -func (m *MsgUpdateNamespace_MsgSetMintsPaused) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.NewValue { - n += 2 - } - return n -} - -func (m *MsgUpdateNamespace_MsgSetSendsPaused) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.NewValue { - n += 2 - } - return n -} - -func (m *MsgUpdateNamespace_MsgSetBurnsPaused) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.NewValue { - n += 2 - } - return n -} - func (m *MsgUpdateNamespaceResponse) Size() (n int) { if m == nil { return 0 @@ -2092,7 +1437,7 @@ func (m *MsgUpdateNamespaceResponse) Size() (n int) { return n } -func (m *MsgUpdateNamespaceRoles) Size() (n int) { +func (m *MsgUpdateActorRoles) Size() (n int) { if m == nil { return 0 } @@ -2102,50 +1447,18 @@ func (m *MsgUpdateNamespaceRoles) Size() (n int) { if l > 0 { n += 1 + l + sovTx(uint64(l)) } - l = len(m.NamespaceDenom) + l = len(m.Denom) if l > 0 { n += 1 + l + sovTx(uint64(l)) } - if len(m.RolePermissions) > 0 { - for _, e := range m.RolePermissions { - l = e.Size() - n += 1 + l + sovTx(uint64(l)) - } - } - if len(m.AddressRoles) > 0 { - for _, e := range m.AddressRoles { + if len(m.RoleActorsToAdd) > 0 { + for _, e := range m.RoleActorsToAdd { l = e.Size() n += 1 + l + sovTx(uint64(l)) } } - return n -} - -func (m *MsgUpdateNamespaceRolesResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - return n -} - -func (m *MsgRevokeNamespaceRoles) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Sender) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - l = len(m.NamespaceDenom) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - if len(m.AddressRolesToRevoke) > 0 { - for _, e := range m.AddressRolesToRevoke { + if len(m.RoleActorsToRevoke) > 0 { + for _, e := range m.RoleActorsToRevoke { l = e.Size() n += 1 + l + sovTx(uint64(l)) } @@ -2153,7 +1466,7 @@ func (m *MsgRevokeNamespaceRoles) Size() (n int) { return n } -func (m *MsgRevokeNamespaceRolesResponse) Size() (n int) { +func (m *MsgUpdateActorRolesResponse) Size() (n int) { if m == nil { return 0 } @@ -2413,795 +1726,18 @@ func (m *MsgCreateNamespace) Unmarshal(dAtA []byte) error { } postIndex := iNdEx + intStringLen if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Sender = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Namespace", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.Namespace.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MsgCreateNamespaceResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MsgCreateNamespaceResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgCreateNamespaceResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - default: - iNdEx = preIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MsgDeleteNamespace) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MsgDeleteNamespace: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgDeleteNamespace: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Sender", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Sender = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field NamespaceDenom", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.NamespaceDenom = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MsgDeleteNamespaceResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MsgDeleteNamespaceResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgDeleteNamespaceResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - default: - iNdEx = preIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MsgUpdateNamespace) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MsgUpdateNamespace: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgUpdateNamespace: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Sender", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Sender = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field NamespaceDenom", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.NamespaceDenom = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field WasmHook", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.WasmHook == nil { - m.WasmHook = &MsgUpdateNamespace_MsgSetWasmHook{} - } - if err := m.WasmHook.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field MintsPaused", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.MintsPaused == nil { - m.MintsPaused = &MsgUpdateNamespace_MsgSetMintsPaused{} - } - if err := m.MintsPaused.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 5: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SendsPaused", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.SendsPaused == nil { - m.SendsPaused = &MsgUpdateNamespace_MsgSetSendsPaused{} - } - if err := m.SendsPaused.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 6: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field BurnsPaused", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.BurnsPaused == nil { - m.BurnsPaused = &MsgUpdateNamespace_MsgSetBurnsPaused{} - } - if err := m.BurnsPaused.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MsgUpdateNamespace_MsgSetWasmHook) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MsgSetWasmHook: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgSetWasmHook: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field NewValue", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.NewValue = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MsgUpdateNamespace_MsgSetMintsPaused) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MsgSetMintsPaused: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgSetMintsPaused: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field NewValue", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.NewValue = bool(v != 0) - default: - iNdEx = preIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MsgUpdateNamespace_MsgSetSendsPaused) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MsgSetSendsPaused: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgSetSendsPaused: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field NewValue", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.NewValue = bool(v != 0) - default: - iNdEx = preIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MsgUpdateNamespace_MsgSetBurnsPaused) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break + return ErrInvalidLengthTx } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MsgSetBurnsPaused: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgSetBurnsPaused: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field NewValue", wireType) + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Sender = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Namespace", wireType) } - var v int + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTx @@ -3211,12 +1747,25 @@ func (m *MsgUpdateNamespace_MsgSetBurnsPaused) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - v |= int(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - m.NewValue = bool(v != 0) + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Namespace.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipTx(dAtA[iNdEx:]) @@ -3238,7 +1787,7 @@ func (m *MsgUpdateNamespace_MsgSetBurnsPaused) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgUpdateNamespaceResponse) Unmarshal(dAtA []byte) error { +func (m *MsgCreateNamespaceResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -3261,10 +1810,10 @@ func (m *MsgUpdateNamespaceResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgUpdateNamespaceResponse: wiretype end group for non-group") + return fmt.Errorf("proto: MsgCreateNamespaceResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgUpdateNamespaceResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgCreateNamespaceResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { default: @@ -3288,7 +1837,7 @@ func (m *MsgUpdateNamespaceResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgUpdateNamespaceRoles) Unmarshal(dAtA []byte) error { +func (m *MsgUpdateNamespace) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -3311,10 +1860,10 @@ func (m *MsgUpdateNamespaceRoles) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgUpdateNamespaceRoles: wiretype end group for non-group") + return fmt.Errorf("proto: MsgUpdateNamespace: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgUpdateNamespaceRoles: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgUpdateNamespace: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -3351,7 +1900,7 @@ func (m *MsgUpdateNamespaceRoles) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field NamespaceDenom", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Denom", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -3379,9 +1928,45 @@ func (m *MsgUpdateNamespaceRoles) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.NamespaceDenom = string(dAtA[iNdEx:postIndex]) + m.Denom = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ContractHook", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.ContractHook == nil { + m.ContractHook = &MsgUpdateNamespace_SetContractHook{} + } + if err := m.ContractHook.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field RolePermissions", wireType) } @@ -3415,9 +2000,77 @@ func (m *MsgUpdateNamespaceRoles) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex - case 4: + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RoleManagers", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.RoleManagers = append(m.RoleManagers, &RoleManager{}) + if err := m.RoleManagers[len(m.RoleManagers)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PolicyStatuses", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.PolicyStatuses = append(m.PolicyStatuses, &PolicyStatus{}) + if err := m.PolicyStatuses[len(m.PolicyStatuses)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 7: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AddressRoles", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field PolicyManagerCapabilities", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -3444,10 +2097,92 @@ func (m *MsgUpdateNamespaceRoles) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.AddressRoles = append(m.AddressRoles, &AddressRoles{}) - if err := m.AddressRoles[len(m.AddressRoles)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + m.PolicyManagerCapabilities = append(m.PolicyManagerCapabilities, &PolicyManagerCapability{}) + if err := m.PolicyManagerCapabilities[len(m.PolicyManagerCapabilities)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { return err } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgUpdateNamespace_SetContractHook) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: SetContractHook: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SetContractHook: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field NewValue", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.NewValue = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex @@ -3470,7 +2205,7 @@ func (m *MsgUpdateNamespaceRoles) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgUpdateNamespaceRolesResponse) Unmarshal(dAtA []byte) error { +func (m *MsgUpdateNamespaceResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -3493,10 +2228,10 @@ func (m *MsgUpdateNamespaceRolesResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgUpdateNamespaceRolesResponse: wiretype end group for non-group") + return fmt.Errorf("proto: MsgUpdateNamespaceResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgUpdateNamespaceRolesResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgUpdateNamespaceResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { default: @@ -3520,7 +2255,7 @@ func (m *MsgUpdateNamespaceRolesResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgRevokeNamespaceRoles) Unmarshal(dAtA []byte) error { +func (m *MsgUpdateActorRoles) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -3543,10 +2278,10 @@ func (m *MsgRevokeNamespaceRoles) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgRevokeNamespaceRoles: wiretype end group for non-group") + return fmt.Errorf("proto: MsgUpdateActorRoles: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgRevokeNamespaceRoles: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgUpdateActorRoles: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -3583,7 +2318,7 @@ func (m *MsgRevokeNamespaceRoles) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field NamespaceDenom", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Denom", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -3611,11 +2346,45 @@ func (m *MsgRevokeNamespaceRoles) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.NamespaceDenom = string(dAtA[iNdEx:postIndex]) + m.Denom = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AddressRolesToRevoke", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field RoleActorsToAdd", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.RoleActorsToAdd = append(m.RoleActorsToAdd, &RoleActors{}) + if err := m.RoleActorsToAdd[len(m.RoleActorsToAdd)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RoleActorsToRevoke", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -3642,8 +2411,8 @@ func (m *MsgRevokeNamespaceRoles) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.AddressRolesToRevoke = append(m.AddressRolesToRevoke, &AddressRoles{}) - if err := m.AddressRolesToRevoke[len(m.AddressRolesToRevoke)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + m.RoleActorsToRevoke = append(m.RoleActorsToRevoke, &RoleActors{}) + if err := m.RoleActorsToRevoke[len(m.RoleActorsToRevoke)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -3668,7 +2437,7 @@ func (m *MsgRevokeNamespaceRoles) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgRevokeNamespaceRolesResponse) Unmarshal(dAtA []byte) error { +func (m *MsgUpdateActorRolesResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -3691,10 +2460,10 @@ func (m *MsgRevokeNamespaceRolesResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgRevokeNamespaceRolesResponse: wiretype end group for non-group") + return fmt.Errorf("proto: MsgUpdateActorRolesResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgRevokeNamespaceRolesResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgUpdateActorRolesResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { default: diff --git a/chain/permissions/types/types.go b/chain/permissions/types/types.go deleted file mode 100644 index 12a6b08f..00000000 --- a/chain/permissions/types/types.go +++ /dev/null @@ -1,156 +0,0 @@ -package types - -import ( - "encoding/json" - - "cosmossdk.io/errors" - sdk "github.com/cosmos/cosmos-sdk/types" - - tftypes "github.com/InjectiveLabs/sdk-go/chain/tokenfactory/types" -) - -const ( - EVERYONE = "EVERYONE" - MaxPerm = uint32(Action_MINT) | uint32(Action_RECEIVE) | uint32(Action_BURN) -) - -type WasmHookMsg struct { - From sdk.AccAddress `json:"from_address"` - To sdk.AccAddress `json:"to_address"` - Action string `json:"action"` - Amounts sdk.Coins `json:"amounts"` -} - -func NewWasmHookMsg(fromAddr, toAddr sdk.AccAddress, action Action, amount sdk.Coin) WasmHookMsg { - return WasmHookMsg{ - From: fromAddr, - To: toAddr, - Action: action.String(), - Amounts: sdk.NewCoins(amount), - } -} - -func GetWasmHookMsgBytes(fromAddr, toAddr sdk.AccAddress, action Action, amount sdk.Coin) ([]byte, error) { - wasmHookMsg := struct { - SendRestriction WasmHookMsg `json:"send_restriction"` - }{NewWasmHookMsg(fromAddr, toAddr, action, amount)} - - bz, err := json.Marshal(wasmHookMsg) - if err != nil { - return nil, err - } - - return bz, nil -} - -func (n *Namespace) Validate() error { - if err := n.ValidateBasicParams(); err != nil { - return err - } - - if err := n.ValidateEveryoneRole(); err != nil { - return err - } - - if err := n.ValidateRoles(false); err != nil { - return err - } - - return nil -} - -func (n *Namespace) ValidateBasicParams() error { - if _, _, err := tftypes.DeconstructDenom(n.Denom); err != nil { - return errors.Wrap(err, "permissions namespace can only be applied to tokenfactory denoms") - } - - // existing wasm hook contract - if n.WasmHook != "" { - if _, err := sdk.AccAddressFromBech32(n.WasmHook); err != nil { - return ErrInvalidWasmHook - } - } - - return nil -} - -func (n *Namespace) ValidateRoles(isForUpdate bool) error { - // role_permissions - foundRoles := make(map[string]struct{}, len(n.RolePermissions)) - for _, rolePerm := range n.RolePermissions { - if _, ok := foundRoles[rolePerm.Role]; ok { - return errors.Wrapf(ErrInvalidPermission, "permissions for the role %s set multiple times?", rolePerm.Role) - } - if rolePerm.Permissions > MaxPerm { - return errors.Wrapf(ErrInvalidPermission, "permissions %d for the role %s is bigger than maximum expected %d", rolePerm.Permissions, rolePerm.Role, MaxPerm) - } - foundRoles[rolePerm.Role] = struct{}{} - } - - // address_roles - foundAddresses := make(map[string]struct{}, len(n.AddressRoles)) - for _, addrRoles := range n.AddressRoles { - if _, err := sdk.AccAddressFromBech32(addrRoles.Address); err != nil { - return errors.Wrapf(err, "invalid address %s", addrRoles.Address) - } - if _, ok := foundAddresses[addrRoles.Address]; ok { - return errors.Wrapf(ErrInvalidRole, "address %s is assigned new roles multiple times?", addrRoles.Address) - } - for _, role := range addrRoles.Roles { - _, found := foundRoles[role] - if !isForUpdate && !found { - return errors.Wrapf(ErrUnknownRole, "role %s has no defined permissions", role) - } - if role == EVERYONE { - return errors.Wrapf(ErrInvalidRole, "role %s should not be explicitly attached to address, you need to remove address from the list completely instead", EVERYONE) - } - } - foundAddresses[addrRoles.Address] = struct{}{} - } - - return nil -} - -func (n *Namespace) ValidateEveryoneRole() error { - // role_permissions - for _, rolePerm := range n.RolePermissions { - if rolePerm.Role == EVERYONE { - return nil - } - } - - return errors.Wrapf(ErrInvalidPermission, "permissions for role %s should be explicitly set", EVERYONE) -} - -func (n *Namespace) CheckActionValidity(action Action) error { - // check that action is not paused - switch action { - case Action_MINT: - if n.MintsPaused { - return errors.Wrap(ErrRestrictedAction, "mints paused") - } - case Action_RECEIVE: - if n.SendsPaused { - return errors.Wrap(ErrRestrictedAction, "sends paused") - } - case Action_BURN: - if n.BurnsPaused { - return errors.Wrap(ErrRestrictedAction, "burns paused") - } - } - return nil -} - -func (a Action) DeriveActor(fromAddr, toAddr sdk.AccAddress) sdk.AccAddress { - switch a { - case Action_MINT, Action_RECEIVE: - return toAddr - case Action_BURN: - return fromAddr - } - return fromAddr -} - -func NewEmptyVoucher(denom string) sdk.Coin { - return sdk.NewInt64Coin(denom, 0) -} diff --git a/chain/stream/types/query.pb.go b/chain/stream/types/query.pb.go index be31fd77..73d96e9e 100644 --- a/chain/stream/types/query.pb.go +++ b/chain/stream/types/query.pb.go @@ -581,7 +581,7 @@ func (m *SubaccountDeposit) GetDeposit() types.Deposit { type SpotOrderUpdate struct { Status OrderUpdateStatus `protobuf:"varint,1,opt,name=status,proto3,enum=injective.stream.v1beta1.OrderUpdateStatus" json:"status,omitempty"` - OrderHash []byte `protobuf:"bytes,2,opt,name=order_hash,json=orderHash,proto3" json:"order_hash,omitempty"` + OrderHash string `protobuf:"bytes,2,opt,name=order_hash,json=orderHash,proto3" json:"order_hash,omitempty"` Cid string `protobuf:"bytes,3,opt,name=cid,proto3" json:"cid,omitempty"` Order *SpotOrder `protobuf:"bytes,4,opt,name=order,proto3" json:"order,omitempty"` } @@ -626,11 +626,11 @@ func (m *SpotOrderUpdate) GetStatus() OrderUpdateStatus { return OrderUpdateStatus_Unspecified } -func (m *SpotOrderUpdate) GetOrderHash() []byte { +func (m *SpotOrderUpdate) GetOrderHash() string { if m != nil { return m.OrderHash } - return nil + return "" } func (m *SpotOrderUpdate) GetCid() string { @@ -701,7 +701,7 @@ func (m *SpotOrder) GetOrder() types.SpotLimitOrder { type DerivativeOrderUpdate struct { Status OrderUpdateStatus `protobuf:"varint,1,opt,name=status,proto3,enum=injective.stream.v1beta1.OrderUpdateStatus" json:"status,omitempty"` - OrderHash []byte `protobuf:"bytes,2,opt,name=order_hash,json=orderHash,proto3" json:"order_hash,omitempty"` + OrderHash string `protobuf:"bytes,2,opt,name=order_hash,json=orderHash,proto3" json:"order_hash,omitempty"` Cid string `protobuf:"bytes,3,opt,name=cid,proto3" json:"cid,omitempty"` Order *DerivativeOrder `protobuf:"bytes,4,opt,name=order,proto3" json:"order,omitempty"` } @@ -746,11 +746,11 @@ func (m *DerivativeOrderUpdate) GetStatus() OrderUpdateStatus { return OrderUpdateStatus_Unspecified } -func (m *DerivativeOrderUpdate) GetOrderHash() []byte { +func (m *DerivativeOrderUpdate) GetOrderHash() string { if m != nil { return m.OrderHash } - return nil + return "" } func (m *DerivativeOrderUpdate) GetCid() string { @@ -953,7 +953,7 @@ type SpotTrade struct { // bytes32 subaccount ID that executed the trade SubaccountId string `protobuf:"bytes,6,opt,name=subaccount_id,json=subaccountId,proto3" json:"subaccount_id,omitempty"` Fee cosmossdk_io_math.LegacyDec `protobuf:"bytes,7,opt,name=fee,proto3,customtype=cosmossdk.io/math.LegacyDec" json:"fee"` - OrderHash []byte `protobuf:"bytes,8,opt,name=order_hash,json=orderHash,proto3" json:"order_hash,omitempty"` + OrderHash string `protobuf:"bytes,8,opt,name=order_hash,json=orderHash,proto3" json:"order_hash,omitempty"` FeeRecipientAddress string `protobuf:"bytes,9,opt,name=fee_recipient_address,json=feeRecipientAddress,proto3" json:"fee_recipient_address,omitempty"` Cid string `protobuf:"bytes,10,opt,name=cid,proto3" json:"cid,omitempty"` TradeId string `protobuf:"bytes,11,opt,name=trade_id,json=tradeId,proto3" json:"trade_id,omitempty"` @@ -1020,11 +1020,11 @@ func (m *SpotTrade) GetSubaccountId() string { return "" } -func (m *SpotTrade) GetOrderHash() []byte { +func (m *SpotTrade) GetOrderHash() string { if m != nil { return m.OrderHash } - return nil + return "" } func (m *SpotTrade) GetFeeRecipientAddress() string { @@ -1521,110 +1521,110 @@ func init() { } var fileDescriptor_e23b7dcfb2fbc9c7 = []byte{ - // 1640 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x58, 0xcd, 0x6e, 0xdb, 0xc6, - 0x16, 0xb6, 0x2c, 0x5b, 0x16, 0x8f, 0x64, 0x5b, 0x9e, 0x38, 0x06, 0xe3, 0xdc, 0x6b, 0x27, 0x74, - 0x72, 0x63, 0xe7, 0x47, 0x72, 0x7c, 0x71, 0x81, 0x5b, 0x74, 0x91, 0x44, 0x76, 0x83, 0x38, 0x70, - 0xd0, 0x80, 0x76, 0x5a, 0x20, 0x68, 0x4a, 0x50, 0xe4, 0x48, 0x9a, 0x4a, 0x22, 0x65, 0x0e, 0x69, - 0x44, 0x4f, 0xd0, 0xae, 0x8a, 0x6c, 0xbb, 0xec, 0xb6, 0x8b, 0x3e, 0x44, 0xbb, 0xc9, 0xaa, 0xc8, - 0xb2, 0x28, 0x8a, 0xb4, 0x48, 0x5e, 0xa4, 0x98, 0x1f, 0x52, 0x24, 0x25, 0x4b, 0x72, 0x9a, 0x22, - 0x2b, 0x91, 0xa3, 0x73, 0xbe, 0x6f, 0xce, 0x99, 0x39, 0xdf, 0x1c, 0x0e, 0x5c, 0x21, 0xce, 0x57, - 0xd8, 0xf2, 0xc9, 0x09, 0xae, 0x50, 0xdf, 0xc3, 0x66, 0xa7, 0x72, 0x72, 0xbb, 0x86, 0x7d, 0xf3, - 0x76, 0xe5, 0x38, 0xc0, 0x5e, 0xaf, 0xdc, 0xf5, 0x5c, 0xdf, 0x45, 0x6a, 0x64, 0x55, 0x16, 0x56, - 0x65, 0x69, 0xb5, 0xba, 0x66, 0xb9, 0xb4, 0xe3, 0xd2, 0x4a, 0xcd, 0xa4, 0x38, 0x72, 0xb5, 0x5c, - 0xe2, 0x08, 0xcf, 0xd5, 0xe5, 0x86, 0xdb, 0x70, 0xf9, 0x63, 0x85, 0x3d, 0xc9, 0xd1, 0x6b, 0x7d, - 0x56, 0xfc, 0xdc, 0x6a, 0x9a, 0x4e, 0xa3, 0xef, 0x8c, 0x4f, 0xb0, 0xe3, 0x53, 0x69, 0xb8, 0x35, - 0xca, 0x50, 0x0e, 0x08, 0x53, 0xed, 0xdb, 0x3c, 0xcc, 0x1f, 0xf2, 0xc9, 0xe9, 0xf8, 0x38, 0xc0, - 0xd4, 0x47, 0x36, 0x2c, 0xd7, 0x4c, 0xa7, 0x65, 0xd4, 0xcc, 0xb6, 0xe9, 0x58, 0x98, 0x1a, 0x75, - 0xd2, 0xf6, 0xb1, 0xa7, 0x66, 0x2e, 0x65, 0x36, 0x0b, 0x3b, 0x37, 0xcb, 0xa7, 0x05, 0x55, 0xae, - 0x9a, 0x4e, 0xab, 0x2a, 0x9d, 0xee, 0x73, 0x9f, 0xea, 0xcc, 0xcb, 0xd7, 0xeb, 0x19, 0x1d, 0xd5, - 0x06, 0xfe, 0x41, 0x27, 0xb0, 0x4a, 0x83, 0x9a, 0x69, 0x59, 0x6e, 0xe0, 0xf8, 0x86, 0x8d, 0xbb, - 0x2e, 0x25, 0x7e, 0xc4, 0x35, 0xcd, 0xb9, 0x76, 0x4e, 0xe7, 0x3a, 0x8c, 0x7c, 0xf7, 0xa4, 0x6b, - 0x82, 0x51, 0xa5, 0xa7, 0xfc, 0x8f, 0x9e, 0x02, 0xa2, 0x5d, 0xd7, 0x37, 0x7c, 0xcf, 0xb4, 0xfb, - 0xb1, 0x65, 0x39, 0xdf, 0x7f, 0x4e, 0xe7, 0x3b, 0xe2, 0xe6, 0x09, 0x8e, 0x12, 0xc3, 0x89, 0x8f, - 0xa3, 0x3a, 0xa8, 0x36, 0xf6, 0xc8, 0x89, 0xc9, 0x10, 0x52, 0x0c, 0x33, 0xef, 0xc0, 0xb0, 0xd2, - 0x47, 0x4b, 0xf0, 0x84, 0x31, 0xb8, 0x9e, 0x8d, 0xbd, 0x88, 0x61, 0x76, 0x1c, 0xc3, 0xa7, 0xdc, - 0x7c, 0x30, 0x86, 0xf8, 0x78, 0x2a, 0x86, 0x24, 0x43, 0xee, 0x1d, 0x18, 0x62, 0x31, 0x24, 0x78, - 0x30, 0xac, 0xf4, 0x63, 0xa8, 0xb9, 0x6e, 0x2b, 0x62, 0x99, 0xe3, 0x2c, 0x5b, 0x63, 0x58, 0x98, - 0x4b, 0x82, 0x68, 0x39, 0x0a, 0x85, 0xa3, 0x49, 0x9a, 0x63, 0xf8, 0x57, 0x3a, 0x9c, 0x04, 0x59, - 0xfe, 0xdd, 0xc8, 0x56, 0x53, 0x51, 0xc5, 0x29, 0x9f, 0x42, 0x89, 0xef, 0x38, 0xe2, 0x3a, 0x11, - 0x8d, 0x32, 0x8e, 0xe6, 0x71, 0xe8, 0x91, 0xa0, 0x59, 0xec, 0x26, 0x87, 0x91, 0x09, 0xe7, 0x5c, - 0xcf, 0xb4, 0xda, 0xd8, 0xe8, 0x7a, 0xc4, 0xc2, 0x21, 0x3c, 0x70, 0xf8, 0x1b, 0xa3, 0xa2, 0x60, - 0x4e, 0x8f, 0x99, 0x4f, 0x82, 0x60, 0xc9, 0x4d, 0xff, 0xa1, 0x7d, 0x3f, 0x07, 0x0b, 0xa1, 0x20, - 0xd0, 0xae, 0xeb, 0x50, 0x8c, 0x2e, 0x43, 0xb1, 0xd6, 0x76, 0xad, 0x96, 0xd1, 0xc4, 0xa4, 0xd1, - 0xf4, 0xb9, 0x12, 0xcc, 0xe8, 0x05, 0x3e, 0xf6, 0x80, 0x0f, 0xa1, 0x7f, 0x03, 0x08, 0x13, 0x9f, - 0x74, 0x30, 0x2f, 0xdf, 0xac, 0xae, 0xf0, 0x91, 0x23, 0xd2, 0xc1, 0xe8, 0x21, 0xcc, 0x27, 0x34, - 0x45, 0xcd, 0x5e, 0xca, 0x6e, 0x16, 0x76, 0xae, 0x4e, 0x24, 0x26, 0x7a, 0x31, 0xae, 0x1f, 0xe8, - 0x19, 0x9c, 0x1b, 0xa2, 0x1c, 0xea, 0x0c, 0x47, 0xbc, 0x79, 0x16, 0xc9, 0xd0, 0xd1, 0xa0, 0x4c, - 0xa0, 0x3d, 0x28, 0xc4, 0x04, 0x42, 0x9d, 0xe5, 0xb0, 0x1b, 0x23, 0x60, 0x43, 0x15, 0xd0, 0xa1, - 0x2f, 0x08, 0xe8, 0x33, 0x58, 0x1a, 0x90, 0x02, 0x35, 0xc7, 0xb1, 0x46, 0xec, 0x82, 0xbd, 0x64, - 0xbd, 0xeb, 0xa5, 0xb4, 0x00, 0xa0, 0x87, 0x72, 0x76, 0xa2, 0x30, 0xd5, 0xb9, 0x71, 0x88, 0x87, - 0x61, 0x51, 0x3c, 0xe9, 0xda, 0xa6, 0x2f, 0xe7, 0x28, 0x0a, 0x11, 0x7d, 0x91, 0x98, 0xa3, 0x44, - 0xcc, 0x73, 0xc4, 0xca, 0x24, 0x73, 0x8c, 0xe3, 0x96, 0xd2, 0x65, 0x8e, 0x8c, 0x74, 0x81, 0x1b, - 0x01, 0x37, 0xa5, 0xaa, 0x32, 0x6e, 0xd2, 0x51, 0x49, 0x49, 0xf0, 0x64, 0x69, 0x8b, 0x41, 0x8a, - 0x5a, 0xc3, 0x4b, 0x3b, 0xa2, 0x81, 0xb3, 0xd2, 0x0c, 0x2b, 0xea, 0x90, 0xec, 0x2e, 0x28, 0x51, - 0x2d, 0xaa, 0x05, 0x8e, 0xac, 0x8d, 0xaf, 0x66, 0xbd, 0xef, 0xc4, 0x4a, 0x20, 0x5e, 0xba, 0x54, - 0x2d, 0x8e, 0x2b, 0x81, 0x58, 0xd1, 0xea, 0xc5, 0x58, 0xa1, 0x52, 0xad, 0x0e, 0x8b, 0xa9, 0x19, - 0xa2, 0x12, 0x64, 0x29, 0x3e, 0x96, 0xa5, 0xc9, 0x1e, 0xd1, 0x3d, 0x50, 0xa2, 0xa4, 0xc8, 0x03, - 0x75, 0x63, 0x82, 0x64, 0xe8, 0x7d, 0x2f, 0xed, 0xc7, 0x0c, 0x28, 0xd1, 0x1f, 0xe8, 0x22, 0x28, - 0x1d, 0xd3, 0x6b, 0x61, 0xdf, 0x20, 0x36, 0x27, 0x52, 0xf4, 0xbc, 0x18, 0xd8, 0xb7, 0xd1, 0x5d, - 0x80, 0x5a, 0xd0, 0x33, 0xda, 0xf8, 0x04, 0xb7, 0xa9, 0x3a, 0xcd, 0x63, 0xbb, 0x1c, 0xa3, 0x8b, - 0xda, 0x8e, 0x90, 0xf0, 0x80, 0x59, 0xea, 0x4a, 0x2d, 0xe8, 0xf1, 0x27, 0x8a, 0xaa, 0x50, 0xa0, - 0xb8, 0xdd, 0x0e, 0x21, 0xb2, 0x93, 0x42, 0x00, 0xf3, 0x12, 0x18, 0xda, 0x8b, 0x0c, 0x14, 0x62, - 0xca, 0x81, 0x54, 0x98, 0x93, 0xf5, 0x2d, 0x27, 0x1c, 0xbe, 0xa2, 0x06, 0xe4, 0x23, 0x31, 0x12, - 0xb3, 0xbd, 0x50, 0x16, 0x4d, 0x59, 0x99, 0x35, 0x65, 0x11, 0xc7, 0xae, 0x4b, 0x9c, 0xea, 0xf6, - 0xcb, 0xd7, 0xeb, 0x53, 0x3f, 0xfc, 0xb1, 0xbe, 0xd9, 0x20, 0x7e, 0x33, 0xa8, 0x95, 0x2d, 0xb7, - 0x53, 0x91, 0x1d, 0x9c, 0xf8, 0xb9, 0x45, 0xed, 0x56, 0xc5, 0xef, 0x75, 0x31, 0xe5, 0x0e, 0x54, - 0x8f, 0xc0, 0xb5, 0x6f, 0x32, 0x80, 0x06, 0xa5, 0x07, 0x6d, 0xc0, 0x7c, 0x4c, 0xc5, 0xa2, 0x84, - 0x16, 0xfb, 0x83, 0xfb, 0x36, 0x7a, 0x04, 0xf9, 0x48, 0xdf, 0xc4, 0x24, 0x6f, 0x9c, 0x41, 0xdf, - 0xb8, 0xc6, 0x4f, 0xe9, 0x11, 0x84, 0xe6, 0xc0, 0xd2, 0x80, 0x11, 0x5a, 0x86, 0x59, 0x1b, 0x3b, - 0x6e, 0x47, 0x4e, 0x40, 0xbc, 0xa0, 0x5d, 0x98, 0x93, 0x6e, 0x43, 0xb6, 0xce, 0xc0, 0x42, 0x24, - 0x09, 0x43, 0x4f, 0xed, 0xa7, 0x0c, 0x2c, 0xa6, 0x04, 0x08, 0xed, 0x42, 0x8e, 0xfa, 0xa6, 0x1f, - 0x50, 0xce, 0xb7, 0x30, 0xfa, 0xd0, 0x8a, 0xdc, 0x0e, 0xb9, 0x8b, 0x2e, 0x5d, 0xd9, 0x69, 0xc3, - 0x37, 0xa9, 0xd1, 0x34, 0x69, 0x93, 0x4f, 0xb0, 0x28, 0xb7, 0xed, 0x03, 0x93, 0x36, 0x59, 0x2d, - 0x58, 0xc4, 0xe6, 0x4d, 0x9d, 0xa2, 0xb3, 0x47, 0xf4, 0x11, 0xcc, 0xf2, 0xbf, 0x65, 0x1b, 0xb6, - 0x31, 0x81, 0x60, 0xea, 0xc2, 0x43, 0xeb, 0x82, 0x12, 0x8d, 0x8d, 0x2e, 0x81, 0xfb, 0x21, 0x89, - 0xc8, 0xd8, 0xf5, 0x51, 0x19, 0x63, 0x90, 0x07, 0xa4, 0x43, 0x04, 0xae, 0x4c, 0x9c, 0x64, 0xfc, - 0x25, 0x03, 0xe7, 0x87, 0xaa, 0xec, 0x07, 0x4a, 0xde, 0x9d, 0x64, 0xf2, 0xb6, 0x26, 0x3e, 0x1b, - 0xc2, 0x80, 0xbe, 0xcb, 0xc0, 0x62, 0xea, 0xaf, 0xd1, 0x99, 0x3c, 0x48, 0x66, 0x72, 0x7b, 0xf4, - 0xde, 0x0b, 0x81, 0x4f, 0xc9, 0x27, 0xa3, 0x22, 0xd4, 0x10, 0xe0, 0x3c, 0xae, 0xbc, 0x9e, 0x27, - 0xf4, 0x11, 0x7f, 0xd7, 0xbe, 0xce, 0x42, 0x3e, 0x94, 0xeb, 0xd1, 0x93, 0x1a, 0xa8, 0xd8, 0xe9, - 0x21, 0x15, 0xbb, 0x02, 0x39, 0x42, 0x0f, 0x5c, 0xa7, 0x21, 0x89, 0xe4, 0x1b, 0xba, 0x03, 0xf9, - 0xe3, 0xc0, 0x74, 0x7c, 0xe2, 0xf7, 0x78, 0x1a, 0x95, 0xea, 0x06, 0x9b, 0xe2, 0x6f, 0xaf, 0xd7, - 0x2f, 0x0a, 0x05, 0xa1, 0x76, 0xab, 0x4c, 0xdc, 0x4a, 0xc7, 0xf4, 0x9b, 0xe5, 0x03, 0xdc, 0x30, - 0xad, 0xde, 0x1e, 0xb6, 0xf4, 0xc8, 0x89, 0xb5, 0x25, 0xd8, 0xf1, 0xbd, 0x9e, 0x38, 0x3d, 0x78, - 0xb3, 0x3f, 0x21, 0x06, 0x70, 0x3f, 0x7e, 0x72, 0xa0, 0x8f, 0x21, 0xd7, 0x31, 0xbd, 0x06, 0x71, - 0x78, 0x2f, 0x3f, 0x21, 0x80, 0x74, 0x41, 0xcf, 0x40, 0xb5, 0x82, 0x4e, 0xd0, 0x16, 0x07, 0x6e, - 0x3d, 0x70, 0x6c, 0xe2, 0x34, 0x0c, 0x8e, 0xce, 0x9b, 0xf6, 0x09, 0xe1, 0x56, 0xfa, 0x20, 0xf7, - 0x05, 0xc6, 0x27, 0x0c, 0x42, 0xf3, 0xa1, 0x10, 0x3b, 0xf1, 0x58, 0x26, 0x69, 0xaf, 0x53, 0x73, - 0xdb, 0x72, 0x21, 0xe4, 0x1b, 0x2b, 0x65, 0x91, 0x82, 0xe9, 0xc9, 0x29, 0x85, 0x07, 0x42, 0x30, - 0xc3, 0x34, 0x5a, 0xee, 0x6d, 0xfe, 0xac, 0xfd, 0x9c, 0x15, 0xf5, 0xcd, 0xfb, 0xab, 0xd1, 0x1b, - 0xe0, 0x3c, 0x5b, 0x5b, 0xa3, 0x16, 0xf4, 0x38, 0x75, 0x5e, 0x9f, 0x25, 0xb4, 0x1a, 0xf4, 0xd0, - 0x15, 0x98, 0xc7, 0xcf, 0xb1, 0x15, 0xb0, 0x1d, 0x74, 0xd4, 0x87, 0x4f, 0x0e, 0xfe, 0xfd, 0x0d, - 0x10, 0xc5, 0x3d, 0x7b, 0xe6, 0xb8, 0x07, 0x76, 0x6e, 0x6e, 0xc8, 0xce, 0xfd, 0x1f, 0x64, 0xeb, - 0x18, 0x9f, 0x65, 0x21, 0x99, 0x7d, 0x4a, 0x4d, 0xf2, 0x69, 0x35, 0xf9, 0x3f, 0x9c, 0xaf, 0x63, - 0x6c, 0x78, 0xd8, 0x22, 0x5d, 0x82, 0x1d, 0xdf, 0x30, 0x6d, 0xdb, 0xc3, 0x94, 0xf2, 0x2f, 0x22, - 0x45, 0x7e, 0x85, 0x9c, 0xab, 0x63, 0xac, 0x87, 0x16, 0xf7, 0x84, 0x41, 0xa8, 0x43, 0xd0, 0xd7, - 0xa1, 0x0b, 0x90, 0xe7, 0x8d, 0x34, 0x8b, 0xa0, 0x20, 0x4e, 0x73, 0xfe, 0xbe, 0x6f, 0x6b, 0xbf, - 0x67, 0xe3, 0x0a, 0xf3, 0x4f, 0xaf, 0xe5, 0x40, 0x3e, 0x67, 0x86, 0xe4, 0xf3, 0x31, 0x2c, 0x84, - 0xcd, 0x9f, 0x61, 0xe3, 0xb6, 0x6f, 0xca, 0x0f, 0xf4, 0xad, 0x51, 0x62, 0x16, 0x2a, 0xd1, 0x1e, - 0x73, 0xd0, 0xe7, 0xbb, 0xf1, 0x57, 0x56, 0xbc, 0x5d, 0xb3, 0xe7, 0x06, 0xfe, 0x99, 0x8a, 0x57, - 0xb8, 0xbc, 0xbf, 0xe5, 0x55, 0x3e, 0xc0, 0xf2, 0x1e, 0x41, 0x31, 0x71, 0x01, 0x72, 0x15, 0x16, - 0x12, 0x0b, 0xc0, 0xce, 0xc3, 0x2c, 0x5b, 0xa7, 0xf8, 0x0a, 0xf0, 0x93, 0x2e, 0xda, 0x01, 0xa2, - 0x81, 0x52, 0x74, 0x25, 0xdc, 0x02, 0x54, 0xfb, 0x1c, 0x16, 0x53, 0x9f, 0xdd, 0xef, 0x09, 0xf8, - 0x08, 0x8a, 0x89, 0xbb, 0x8e, 0xf7, 0x83, 0xba, 0x1d, 0x6b, 0xfa, 0x25, 0x70, 0xd2, 0x23, 0x33, - 0xe8, 0x81, 0x06, 0xef, 0xe4, 0xd0, 0x2a, 0xe4, 0x25, 0x69, 0xe8, 0x12, 0xbd, 0x6b, 0xf7, 0x40, - 0x3d, 0xed, 0x66, 0x6d, 0xc2, 0x28, 0xb4, 0x1b, 0xb0, 0x34, 0x70, 0xdb, 0x90, 0x10, 0xf3, 0x6c, - 0x5f, 0xcc, 0xaf, 0x1f, 0x30, 0xe3, 0x54, 0xa3, 0x82, 0x16, 0xa1, 0xf0, 0xc4, 0xa1, 0x5d, 0x6c, - 0x91, 0x3a, 0xc1, 0x76, 0x69, 0x0a, 0x01, 0xe4, 0xaa, 0xae, 0xdb, 0xc2, 0x76, 0x29, 0x83, 0x0a, - 0x30, 0xf7, 0xc8, 0xf4, 0xad, 0x26, 0xb6, 0x4b, 0xd3, 0x68, 0x1e, 0x94, 0x5d, 0x16, 0x5a, 0xbb, - 0x8d, 0xed, 0x52, 0x76, 0xa7, 0x01, 0x39, 0x71, 0x73, 0x81, 0x9e, 0x45, 0x4f, 0xd7, 0x46, 0xb4, - 0x7a, 0xf1, 0x6b, 0xcf, 0xd5, 0xcd, 0xf1, 0x86, 0xe2, 0x3a, 0x64, 0x3b, 0x53, 0xfd, 0xf2, 0xe5, - 0x9b, 0xb5, 0xcc, 0xab, 0x37, 0x6b, 0x99, 0x3f, 0xdf, 0xac, 0x65, 0x5e, 0xbc, 0x5d, 0x9b, 0x7a, - 0xf5, 0x76, 0x6d, 0xea, 0xd7, 0xb7, 0x6b, 0x53, 0x4f, 0xf7, 0x62, 0x5f, 0x08, 0xfb, 0x21, 0xde, - 0x81, 0x59, 0xa3, 0x95, 0x08, 0xfd, 0x96, 0xe5, 0x7a, 0x38, 0xfe, 0xda, 0x34, 0x89, 0x13, 0x5e, - 0x23, 0xf3, 0x6f, 0x88, 0x5a, 0x8e, 0xdf, 0xcd, 0xfe, 0xf7, 0xaf, 0x00, 0x00, 0x00, 0xff, 0xff, - 0x78, 0x25, 0xda, 0xad, 0x67, 0x16, 0x00, 0x00, + // 1638 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x58, 0xcd, 0x6f, 0xdb, 0x46, + 0x16, 0xb7, 0x2c, 0x5b, 0x16, 0x9f, 0xfc, 0x21, 0x4f, 0x1c, 0x83, 0x71, 0x76, 0xed, 0x84, 0x4e, + 0x36, 0x76, 0x3e, 0x24, 0xc7, 0x8b, 0x05, 0x76, 0xb1, 0x87, 0x24, 0xb2, 0x37, 0x88, 0x03, 0x07, + 0x1b, 0xd0, 0xce, 0x2e, 0x10, 0x6c, 0x96, 0xe0, 0xc7, 0x48, 0x9a, 0x4a, 0x22, 0x65, 0x0e, 0x69, + 0x44, 0x7f, 0x41, 0x7b, 0x2a, 0x72, 0xed, 0xb1, 0xd7, 0x1e, 0xfa, 0x47, 0xb4, 0x97, 0x9c, 0x8a, + 0x1c, 0x8b, 0xa2, 0x48, 0x8b, 0xe4, 0x1f, 0x29, 0xe6, 0x83, 0x14, 0x49, 0xc9, 0x92, 0x9c, 0xa6, + 0x28, 0x7a, 0x12, 0x39, 0x7a, 0xef, 0xf7, 0x9b, 0xf7, 0x66, 0xde, 0x6f, 0x1e, 0x07, 0xae, 0x11, + 0xf7, 0x13, 0x6c, 0x07, 0xe4, 0x14, 0x57, 0x69, 0xe0, 0x63, 0xb3, 0x53, 0x3d, 0xbd, 0x6b, 0xe1, + 0xc0, 0xbc, 0x5b, 0x3d, 0x09, 0xb1, 0xdf, 0xab, 0x74, 0x7d, 0x2f, 0xf0, 0x90, 0x1a, 0x5b, 0x55, + 0x84, 0x55, 0x45, 0x5a, 0xad, 0xad, 0xdb, 0x1e, 0xed, 0x78, 0xb4, 0x6a, 0x99, 0x14, 0xc7, 0xae, + 0xb6, 0x47, 0x5c, 0xe1, 0xb9, 0xb6, 0xd2, 0xf0, 0x1a, 0x1e, 0x7f, 0xac, 0xb2, 0x27, 0x39, 0x7a, + 0xa3, 0xcf, 0x8a, 0x5f, 0xda, 0x4d, 0xd3, 0x6d, 0xf4, 0x9d, 0xf1, 0x29, 0x76, 0x03, 0x2a, 0x0d, + 0xb7, 0x47, 0x19, 0xca, 0x01, 0x61, 0xaa, 0x7d, 0x5e, 0x84, 0x85, 0x23, 0x3e, 0x39, 0x1d, 0x9f, + 0x84, 0x98, 0x06, 0xc8, 0x81, 0x15, 0xcb, 0x74, 0x5b, 0x86, 0x65, 0xb6, 0x4d, 0xd7, 0xc6, 0xd4, + 0xa8, 0x93, 0x76, 0x80, 0x7d, 0x35, 0x77, 0x25, 0xb7, 0x55, 0xda, 0xbd, 0x5d, 0x39, 0x2b, 0xa8, + 0x4a, 0xcd, 0x74, 0x5b, 0x35, 0xe9, 0xf4, 0x90, 0xfb, 0xd4, 0x66, 0x5e, 0xbf, 0xdd, 0xc8, 0xe9, + 0xc8, 0x1a, 0xf8, 0x07, 0x9d, 0xc2, 0x1a, 0x0d, 0x2d, 0xd3, 0xb6, 0xbd, 0xd0, 0x0d, 0x0c, 0x07, + 0x77, 0x3d, 0x4a, 0x82, 0x98, 0x6b, 0x9a, 0x73, 0xed, 0x9e, 0xcd, 0x75, 0x14, 0xfb, 0xee, 0x4b, + 0xd7, 0x14, 0xa3, 0x4a, 0xcf, 0xf8, 0x1f, 0x3d, 0x07, 0x44, 0xbb, 0x5e, 0x60, 0x04, 0xbe, 0xe9, + 0xf4, 0x63, 0xcb, 0x73, 0xbe, 0xbf, 0x9c, 0xcd, 0x77, 0xcc, 0xcd, 0x53, 0x1c, 0x65, 0x86, 0x93, + 0x1c, 0x47, 0x75, 0x50, 0x1d, 0xec, 0x93, 0x53, 0x93, 0x21, 0x64, 0x18, 0x66, 0x3e, 0x80, 0x61, + 0xb5, 0x8f, 0x96, 0xe2, 0x89, 0x62, 0xf0, 0x7c, 0x07, 0xfb, 0x31, 0xc3, 0xec, 0x38, 0x86, 0x7f, + 0x73, 0xf3, 0xc1, 0x18, 0x92, 0xe3, 0x99, 0x18, 0xd2, 0x0c, 0x85, 0x0f, 0x60, 0x48, 0xc4, 0x90, + 0xe2, 0xc1, 0xb0, 0xda, 0x8f, 0xc1, 0xf2, 0xbc, 0x56, 0xcc, 0x32, 0xc7, 0x59, 0xb6, 0xc7, 0xb0, + 0x30, 0x97, 0x14, 0xd1, 0x4a, 0x1c, 0x0a, 0x47, 0x93, 0x34, 0x27, 0xf0, 0xa7, 0x6c, 0x38, 0x29, + 0xb2, 0xe2, 0x87, 0x91, 0xad, 0x65, 0xa2, 0x4a, 0x52, 0x3e, 0x87, 0x32, 0xdf, 0x71, 0xc4, 0x73, + 0x63, 0x1a, 0x65, 0x1c, 0xcd, 0xd3, 0xc8, 0x23, 0x45, 0xb3, 0xd4, 0x4d, 0x0f, 0x23, 0x13, 0x2e, + 0x78, 0xbe, 0x69, 0xb7, 0xb1, 0xd1, 0xf5, 0x89, 0x8d, 0x23, 0x78, 0xe0, 0xf0, 0xb7, 0x46, 0x45, + 0xc1, 0x9c, 0x9e, 0x32, 0x9f, 0x14, 0xc1, 0xb2, 0x97, 0xfd, 0x43, 0xfb, 0x72, 0x0e, 0x16, 0x23, + 0x41, 0xa0, 0x5d, 0xcf, 0xa5, 0x18, 0x5d, 0x85, 0x79, 0xab, 0xed, 0xd9, 0x2d, 0xa3, 0x89, 0x49, + 0xa3, 0x19, 0x70, 0x25, 0x98, 0xd1, 0x4b, 0x7c, 0xec, 0x11, 0x1f, 0x42, 0x7f, 0x06, 0x10, 0x26, + 0x01, 0xe9, 0x60, 0x5e, 0xbe, 0x79, 0x5d, 0xe1, 0x23, 0xc7, 0xa4, 0x83, 0xd1, 0x63, 0x58, 0x48, + 0x69, 0x8a, 0x9a, 0xbf, 0x92, 0xdf, 0x2a, 0xed, 0x5e, 0x9f, 0x48, 0x4c, 0xf4, 0xf9, 0xa4, 0x7e, + 0xa0, 0x17, 0x70, 0x61, 0x88, 0x72, 0xa8, 0x33, 0x1c, 0xf1, 0xf6, 0x79, 0x24, 0x43, 0x47, 0x83, + 0x32, 0x81, 0xf6, 0xa1, 0x94, 0x10, 0x08, 0x75, 0x96, 0xc3, 0x6e, 0x8e, 0x80, 0x8d, 0x54, 0x40, + 0x87, 0xbe, 0x20, 0xa0, 0xff, 0xc0, 0xf2, 0x80, 0x14, 0xa8, 0x05, 0x8e, 0x35, 0x62, 0x17, 0xec, + 0xa7, 0xeb, 0x5d, 0x2f, 0x67, 0x05, 0x00, 0x3d, 0x96, 0xb3, 0x13, 0x85, 0xa9, 0xce, 0x8d, 0x43, + 0x3c, 0x8a, 0x8a, 0xe2, 0x59, 0xd7, 0x31, 0x03, 0x39, 0x47, 0x51, 0x88, 0xe8, 0x7f, 0xa9, 0x39, + 0x4a, 0xc4, 0x22, 0x47, 0xac, 0x4e, 0x32, 0xc7, 0x24, 0x6e, 0x39, 0x5b, 0xe6, 0xc8, 0xc8, 0x16, + 0xb8, 0x11, 0x72, 0x53, 0xaa, 0x2a, 0xe3, 0x26, 0x1d, 0x97, 0x94, 0x04, 0x4f, 0x97, 0xb6, 0x18, + 0xa4, 0xa8, 0x35, 0xbc, 0xb4, 0x63, 0x1a, 0x38, 0x2f, 0xcd, 0xb0, 0xa2, 0x8e, 0xc8, 0xee, 0x83, + 0x12, 0xd7, 0xa2, 0x5a, 0xe2, 0xc8, 0xda, 0xf8, 0x6a, 0xd6, 0xfb, 0x4e, 0xac, 0x04, 0x92, 0xa5, + 0x4b, 0xd5, 0xf9, 0x71, 0x25, 0x90, 0x28, 0x5a, 0x7d, 0x3e, 0x51, 0xa8, 0x54, 0xab, 0xc3, 0x52, + 0x66, 0x86, 0xa8, 0x0c, 0x79, 0x8a, 0x4f, 0x64, 0x69, 0xb2, 0x47, 0xf4, 0x00, 0x94, 0x38, 0x29, + 0xf2, 0x40, 0xdd, 0x9c, 0x20, 0x19, 0x7a, 0xdf, 0x4b, 0xfb, 0x3a, 0x07, 0x4a, 0xfc, 0x07, 0xba, + 0x0c, 0x4a, 0xc7, 0xf4, 0x5b, 0x38, 0x30, 0x88, 0xc3, 0x89, 0x14, 0xbd, 0x28, 0x06, 0x0e, 0x1c, + 0x74, 0x1f, 0xc0, 0x0a, 0x7b, 0x46, 0x1b, 0x9f, 0xe2, 0x36, 0x55, 0xa7, 0x79, 0x6c, 0x57, 0x13, + 0x74, 0x71, 0xdb, 0x11, 0x11, 0x1e, 0x32, 0x4b, 0x5d, 0xb1, 0xc2, 0x1e, 0x7f, 0xa2, 0xa8, 0x06, + 0x25, 0x8a, 0xdb, 0xed, 0x08, 0x22, 0x3f, 0x29, 0x04, 0x30, 0x2f, 0x81, 0xa1, 0xbd, 0xca, 0x41, + 0x29, 0xa1, 0x1c, 0x48, 0x85, 0x39, 0x59, 0xdf, 0x72, 0xc2, 0xd1, 0x2b, 0x6a, 0x40, 0x31, 0x16, + 0x23, 0x31, 0xdb, 0x4b, 0x15, 0xd1, 0x94, 0x55, 0x58, 0x53, 0x16, 0x73, 0xec, 0x79, 0xc4, 0xad, + 0xed, 0xbc, 0x7e, 0xbb, 0x31, 0xf5, 0xd5, 0x4f, 0x1b, 0x5b, 0x0d, 0x12, 0x34, 0x43, 0xab, 0x62, + 0x7b, 0x9d, 0xaa, 0xec, 0xe0, 0xc4, 0xcf, 0x1d, 0xea, 0xb4, 0xaa, 0x41, 0xaf, 0x8b, 0x29, 0x77, + 0xa0, 0x7a, 0x0c, 0xae, 0x7d, 0x96, 0x03, 0x34, 0x28, 0x3d, 0x68, 0x13, 0x16, 0x12, 0x2a, 0x16, + 0x27, 0x74, 0xbe, 0x3f, 0x78, 0xe0, 0xa0, 0x27, 0x50, 0x8c, 0xf5, 0x4d, 0x4c, 0xf2, 0xd6, 0x39, + 0xf4, 0x8d, 0x6b, 0xfc, 0x94, 0x1e, 0x43, 0x68, 0x2e, 0x2c, 0x0f, 0x18, 0xa1, 0x15, 0x98, 0x75, + 0xb0, 0xeb, 0x75, 0xe4, 0x04, 0xc4, 0x0b, 0xda, 0x83, 0x39, 0xe9, 0x36, 0x64, 0xeb, 0x0c, 0x2c, + 0x44, 0x9a, 0x30, 0xf2, 0xd4, 0xbe, 0xc9, 0xc1, 0x52, 0x46, 0x80, 0xd0, 0x1e, 0x14, 0x68, 0x60, + 0x06, 0x21, 0xe5, 0x7c, 0x8b, 0xa3, 0x0f, 0xad, 0xd8, 0xed, 0x88, 0xbb, 0xe8, 0xd2, 0x95, 0x9d, + 0x36, 0x7c, 0x93, 0x1a, 0x4d, 0x93, 0x36, 0xf9, 0x04, 0x15, 0xb9, 0x6d, 0x1f, 0x99, 0xb4, 0xc9, + 0x6a, 0xc1, 0x26, 0x0e, 0x6f, 0xea, 0x14, 0x9d, 0x3d, 0xa2, 0x7f, 0xc0, 0x2c, 0xff, 0x5b, 0xb6, + 0x61, 0x9b, 0x13, 0x08, 0xa6, 0x2e, 0x3c, 0xb4, 0x2e, 0x28, 0xf1, 0xd8, 0xe8, 0x12, 0x78, 0x18, + 0x91, 0x88, 0x8c, 0xdd, 0x1c, 0x95, 0x31, 0x06, 0x79, 0x48, 0x3a, 0x44, 0xe0, 0xca, 0xc4, 0x49, + 0xc6, 0xef, 0x72, 0x70, 0x71, 0xa8, 0xca, 0xfe, 0x4e, 0xc9, 0xbb, 0x97, 0x4e, 0xde, 0xf6, 0xc4, + 0x67, 0x43, 0x14, 0xd0, 0x17, 0x39, 0x58, 0xca, 0xfc, 0x35, 0x3a, 0x93, 0x87, 0xe9, 0x4c, 0xee, + 0x8c, 0xde, 0x7b, 0x11, 0xf0, 0x19, 0xf9, 0x64, 0x54, 0x84, 0x1a, 0x02, 0x9c, 0xc7, 0x55, 0xd4, + 0x8b, 0x84, 0x3e, 0xe1, 0xef, 0xda, 0xa7, 0x79, 0x28, 0x46, 0x72, 0x3d, 0x7a, 0x52, 0x03, 0x15, + 0x3b, 0x3d, 0xa4, 0x62, 0x57, 0xa1, 0x40, 0xe8, 0xa1, 0xe7, 0x36, 0x24, 0x91, 0x7c, 0x43, 0xf7, + 0xa0, 0x78, 0x12, 0x9a, 0x6e, 0x40, 0x82, 0x1e, 0x4f, 0xa3, 0x52, 0xdb, 0x64, 0x53, 0xfc, 0xe1, + 0xed, 0xc6, 0x65, 0xa1, 0x20, 0xd4, 0x69, 0x55, 0x88, 0x57, 0xed, 0x98, 0x41, 0xb3, 0x72, 0x88, + 0x1b, 0xa6, 0xdd, 0xdb, 0xc7, 0xb6, 0x1e, 0x3b, 0xb1, 0xb6, 0x04, 0xbb, 0x81, 0xdf, 0x13, 0xa7, + 0x07, 0x6f, 0xf6, 0x27, 0xc4, 0x00, 0xee, 0xc7, 0x4f, 0x0e, 0xf4, 0x4f, 0x28, 0x74, 0x4c, 0xbf, + 0x41, 0x5c, 0xde, 0xcb, 0x4f, 0x08, 0x20, 0x5d, 0xd0, 0x0b, 0x50, 0xed, 0xb0, 0x13, 0xb6, 0xc5, + 0x81, 0x5b, 0x0f, 0x5d, 0x87, 0xb8, 0x0d, 0x83, 0xa3, 0xf3, 0xa6, 0x7d, 0x42, 0xb8, 0xd5, 0x3e, + 0xc8, 0x43, 0x81, 0xf1, 0x2f, 0x06, 0xa1, 0x05, 0x50, 0x4a, 0x9c, 0x78, 0x2c, 0x93, 0xb4, 0xd7, + 0xb1, 0xbc, 0xb6, 0x5c, 0x08, 0xf9, 0xc6, 0x4a, 0x59, 0xa4, 0x60, 0x7a, 0x72, 0x4a, 0xe1, 0x81, + 0x10, 0xcc, 0x30, 0x8d, 0x96, 0x7b, 0x9b, 0x3f, 0x6b, 0xdf, 0xe6, 0x45, 0x7d, 0xf3, 0xfe, 0x6a, + 0xf4, 0x06, 0xb8, 0xc8, 0xd6, 0xd6, 0xb0, 0xc2, 0x1e, 0xa7, 0x2e, 0xea, 0xb3, 0x84, 0xd6, 0xc2, + 0x1e, 0xba, 0x06, 0x0b, 0xf8, 0x25, 0xb6, 0x43, 0xb6, 0x83, 0x8e, 0xfb, 0xf0, 0xe9, 0xc1, 0x5f, + 0xbf, 0x01, 0xe2, 0xb8, 0x67, 0xcf, 0x1d, 0xf7, 0xc0, 0xce, 0x2d, 0x0c, 0xd9, 0xb9, 0x7f, 0x83, + 0x7c, 0x1d, 0xe3, 0xf3, 0x2c, 0x24, 0xb3, 0xcf, 0xa8, 0x49, 0x31, 0xab, 0x26, 0x7f, 0x87, 0x8b, + 0x75, 0x8c, 0x0d, 0x1f, 0xdb, 0xa4, 0x4b, 0xb0, 0x1b, 0x18, 0xa6, 0xe3, 0xf8, 0x98, 0x52, 0xfe, + 0x45, 0xa4, 0xc8, 0xaf, 0x90, 0x0b, 0x75, 0x8c, 0xf5, 0xc8, 0xe2, 0x81, 0x30, 0x88, 0x74, 0x08, + 0xfa, 0x3a, 0x74, 0x09, 0x8a, 0xbc, 0x91, 0x66, 0x11, 0x94, 0xc4, 0x69, 0xce, 0xdf, 0x0f, 0x1c, + 0xed, 0xc7, 0x7c, 0x52, 0x61, 0x7e, 0xeb, 0xb5, 0x1c, 0xc8, 0xe7, 0xcc, 0x90, 0x7c, 0x3e, 0x85, + 0xc5, 0xa8, 0xf9, 0x33, 0x1c, 0xdc, 0x0e, 0x4c, 0xf9, 0x81, 0xbe, 0x3d, 0x4a, 0xcc, 0x22, 0x25, + 0xda, 0x67, 0x0e, 0xfa, 0x42, 0x37, 0xf9, 0xca, 0x8a, 0xb7, 0x6b, 0xf6, 0xbc, 0x30, 0x38, 0x57, + 0xf1, 0x0a, 0x97, 0x3f, 0xf6, 0xf2, 0x1e, 0xc3, 0x7c, 0xea, 0x02, 0xe4, 0x3a, 0x2c, 0xa6, 0x16, + 0x80, 0x9d, 0x87, 0x79, 0xb6, 0x4e, 0xc9, 0x15, 0xe0, 0x27, 0x5d, 0xbc, 0x03, 0x44, 0x03, 0xa5, + 0xe8, 0x4a, 0xb4, 0x05, 0xa8, 0xf6, 0x5f, 0x58, 0xca, 0x7c, 0x76, 0x7f, 0x24, 0xe0, 0x63, 0x98, + 0x4f, 0xdd, 0x75, 0x7c, 0x1c, 0xd4, 0x9d, 0x44, 0xd3, 0x2f, 0x81, 0xd3, 0x1e, 0xb9, 0x41, 0x0f, + 0x34, 0x78, 0x27, 0x87, 0xd6, 0xa0, 0x28, 0x49, 0x23, 0x97, 0xf8, 0x5d, 0x7b, 0x00, 0xea, 0x59, + 0x37, 0x6b, 0x13, 0x46, 0xa1, 0xdd, 0x82, 0xe5, 0x81, 0xdb, 0x86, 0x94, 0x98, 0xe7, 0xfb, 0x62, + 0x7e, 0xf3, 0x90, 0x19, 0x67, 0x1a, 0x15, 0xb4, 0x04, 0xa5, 0x67, 0x2e, 0xed, 0x62, 0x9b, 0xd4, + 0x09, 0x76, 0xca, 0x53, 0x08, 0xa0, 0x50, 0xf3, 0xbc, 0x16, 0x76, 0xca, 0x39, 0x54, 0x82, 0xb9, + 0x27, 0x66, 0x60, 0x37, 0xb1, 0x53, 0x9e, 0x46, 0x0b, 0xa0, 0xec, 0xb1, 0xd0, 0xda, 0x6d, 0xec, + 0x94, 0xf3, 0xbb, 0x0d, 0x28, 0x88, 0x9b, 0x0b, 0xf4, 0x22, 0x7e, 0xba, 0x31, 0xa2, 0xd5, 0x4b, + 0x5e, 0x7b, 0xae, 0x6d, 0x8d, 0x37, 0x14, 0xd7, 0x21, 0x3b, 0xb9, 0xda, 0xff, 0x5f, 0xbf, 0x5b, + 0xcf, 0xbd, 0x79, 0xb7, 0x9e, 0xfb, 0xf9, 0xdd, 0x7a, 0xee, 0xd5, 0xfb, 0xf5, 0xa9, 0x37, 0xef, + 0xd7, 0xa7, 0xbe, 0x7f, 0xbf, 0x3e, 0xf5, 0x7c, 0x3f, 0xf1, 0x85, 0x70, 0x10, 0xe1, 0x1d, 0x9a, + 0x16, 0xad, 0xc6, 0xe8, 0x77, 0x6c, 0xcf, 0xc7, 0xc9, 0xd7, 0xa6, 0x49, 0xdc, 0xe8, 0x1a, 0x99, + 0x7f, 0x43, 0x58, 0x05, 0x7e, 0x37, 0xfb, 0xd7, 0x5f, 0x02, 0x00, 0x00, 0xff, 0xff, 0x1a, 0x42, + 0x1d, 0x82, 0x67, 0x16, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -5157,7 +5157,7 @@ func (m *SpotOrderUpdate) Unmarshal(dAtA []byte) error { if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field OrderHash", wireType) } - var byteLen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowQuery @@ -5167,25 +5167,23 @@ func (m *SpotOrderUpdate) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - byteLen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if byteLen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthQuery } - postIndex := iNdEx + byteLen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthQuery } if postIndex > l { return io.ErrUnexpectedEOF } - m.OrderHash = append(m.OrderHash[:0], dAtA[iNdEx:postIndex]...) - if m.OrderHash == nil { - m.OrderHash = []byte{} - } + m.OrderHash = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 3: if wireType != 2 { @@ -5443,7 +5441,7 @@ func (m *DerivativeOrderUpdate) Unmarshal(dAtA []byte) error { if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field OrderHash", wireType) } - var byteLen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowQuery @@ -5453,25 +5451,23 @@ func (m *DerivativeOrderUpdate) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - byteLen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if byteLen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthQuery } - postIndex := iNdEx + byteLen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthQuery } if postIndex > l { return io.ErrUnexpectedEOF } - m.OrderHash = append(m.OrderHash[:0], dAtA[iNdEx:postIndex]...) - if m.OrderHash == nil { - m.OrderHash = []byte{} - } + m.OrderHash = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 3: if wireType != 2 { @@ -6366,7 +6362,7 @@ func (m *SpotTrade) Unmarshal(dAtA []byte) error { if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field OrderHash", wireType) } - var byteLen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowQuery @@ -6376,25 +6372,23 @@ func (m *SpotTrade) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - byteLen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if byteLen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthQuery } - postIndex := iNdEx + byteLen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthQuery } if postIndex > l { return io.ErrUnexpectedEOF } - m.OrderHash = append(m.OrderHash[:0], dAtA[iNdEx:postIndex]...) - if m.OrderHash == nil { - m.OrderHash = []byte{} - } + m.OrderHash = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 9: if wireType != 2 { diff --git a/chain/stream/types/request.go b/chain/stream/types/request.go deleted file mode 100644 index 3bf542aa..00000000 --- a/chain/stream/types/request.go +++ /dev/null @@ -1,54 +0,0 @@ -package types - -func NewFullStreamRequest() *StreamRequest { - return &StreamRequest{ - BankBalancesFilter: &BankBalancesFilter{ - Accounts: []string{}, - }, - SpotOrdersFilter: &OrdersFilter{ - MarketIds: []string{"*"}, - SubaccountIds: []string{"*"}, - }, - DerivativeOrdersFilter: &OrdersFilter{ - MarketIds: []string{"*"}, - SubaccountIds: []string{"*"}, - }, - SpotTradesFilter: &TradesFilter{ - MarketIds: []string{"*"}, - SubaccountIds: []string{"*"}, - }, - SubaccountDepositsFilter: &SubaccountDepositsFilter{ - SubaccountIds: []string{"*"}, - }, - DerivativeOrderbooksFilter: &OrderbookFilter{ - MarketIds: []string{"*"}, - }, - SpotOrderbooksFilter: &OrderbookFilter{ - MarketIds: []string{"*"}, - }, - PositionsFilter: &PositionsFilter{ - SubaccountIds: []string{"*"}, - MarketIds: []string{"*"}, - }, - DerivativeTradesFilter: &TradesFilter{ - SubaccountIds: []string{"*"}, - MarketIds: []string{"*"}, - }, - OraclePriceFilter: &OraclePriceFilter{ - Symbol: []string{"*"}, - }, - } -} - -// Empty query matches any set of events. -type Empty struct { -} - -// Matches always returns true. -func (Empty) Matches(tags map[string][]string) (bool, error) { - return true, nil -} - -func (Empty) String() string { - return "empty" -} diff --git a/chain/stream/types/response.go b/chain/stream/types/response.go deleted file mode 100644 index 3a215960..00000000 --- a/chain/stream/types/response.go +++ /dev/null @@ -1,84 +0,0 @@ -package types - -import ( - "fmt" - "time" -) - -type StreamResponseMap struct { - tradeEventsCounter uint64 - BlockHeight uint64 - BlockTime time.Time - BankBalancesByAccount map[string][]*BankBalance - SpotOrdersBySubaccount map[string][]*SpotOrderUpdate - SpotOrdersByMarketID map[string][]*SpotOrderUpdate - DerivativeOrdersBySubaccount map[string][]*DerivativeOrderUpdate - DerivativeOrdersByMarketID map[string][]*DerivativeOrderUpdate - SpotOrderbookUpdatesByMarketID map[string][]*OrderbookUpdate - DerivativeOrderbookUpdatesByMarketID map[string][]*OrderbookUpdate - SubaccountDepositsBySubaccountID map[string][]*SubaccountDeposits - SpotTradesBySubaccount map[string][]*SpotTrade - SpotTradesByMarketID map[string][]*SpotTrade - DerivativeTradesBySubaccount map[string][]*DerivativeTrade - DerivativeTradesByMarketID map[string][]*DerivativeTrade - PositionsBySubaccount map[string][]*Position - PositionsByMarketID map[string][]*Position - OraclePriceBySymbol map[string][]*OraclePrice -} - -func NewStreamResponseMap() *StreamResponseMap { - return &StreamResponseMap{ - BankBalancesByAccount: map[string][]*BankBalance{}, - SpotOrdersBySubaccount: map[string][]*SpotOrderUpdate{}, - SpotOrdersByMarketID: map[string][]*SpotOrderUpdate{}, - DerivativeOrdersBySubaccount: map[string][]*DerivativeOrderUpdate{}, - DerivativeOrdersByMarketID: map[string][]*DerivativeOrderUpdate{}, - SpotOrderbookUpdatesByMarketID: map[string][]*OrderbookUpdate{}, - DerivativeOrderbookUpdatesByMarketID: map[string][]*OrderbookUpdate{}, - SubaccountDepositsBySubaccountID: map[string][]*SubaccountDeposits{}, - SpotTradesBySubaccount: map[string][]*SpotTrade{}, - SpotTradesByMarketID: map[string][]*SpotTrade{}, - DerivativeTradesBySubaccount: map[string][]*DerivativeTrade{}, - DerivativeTradesByMarketID: map[string][]*DerivativeTrade{}, - PositionsBySubaccount: map[string][]*Position{}, - PositionsByMarketID: map[string][]*Position{}, - OraclePriceBySymbol: map[string][]*OraclePrice{}, - } -} - -func NewChainStreamResponse() *StreamResponse { - return &StreamResponse{ - BankBalances: []*BankBalance{}, - SubaccountDeposits: []*SubaccountDeposits{}, - SpotTrades: []*SpotTrade{}, - DerivativeTrades: []*DerivativeTrade{}, - SpotOrders: []*SpotOrderUpdate{}, - DerivativeOrders: []*DerivativeOrderUpdate{}, - SpotOrderbookUpdates: []*OrderbookUpdate{}, - DerivativeOrderbookUpdates: []*OrderbookUpdate{}, - Positions: []*Position{}, - OraclePrices: []*OraclePrice{}, - } -} - -func (m *StreamRequest) Validate() error { - if m.BankBalancesFilter == nil && - m.SubaccountDepositsFilter == nil && - m.SpotTradesFilter == nil && - m.DerivativeTradesFilter == nil && - m.SpotOrdersFilter == nil && - m.DerivativeOrdersFilter == nil && - m.SpotOrderbooksFilter == nil && - m.DerivativeOrderbooksFilter == nil && - m.PositionsFilter == nil && - m.OraclePriceFilter == nil { - return fmt.Errorf("at least one filter must be set") - } - return nil -} - -func (m *StreamResponseMap) NextTradeEventNumber() (tradeNumber uint64) { - currentTradesNumber := m.tradeEventsCounter - m.tradeEventsCounter++ - return currentTradesNumber -} diff --git a/chain/tokenfactory/types/authorityMetadata.go b/chain/tokenfactory/types/authorityMetadata.go deleted file mode 100644 index b45bffca..00000000 --- a/chain/tokenfactory/types/authorityMetadata.go +++ /dev/null @@ -1,15 +0,0 @@ -package types - -import ( - sdk "github.com/cosmos/cosmos-sdk/types" -) - -func (metadata DenomAuthorityMetadata) Validate() error { - if metadata.Admin != "" { - _, err := sdk.AccAddressFromBech32(metadata.Admin) - if err != nil { - return err - } - } - return nil -} diff --git a/chain/tokenfactory/types/authorityMetadata.pb.go b/chain/tokenfactory/types/authorityMetadata.pb.go index 51337590..381387ae 100644 --- a/chain/tokenfactory/types/authorityMetadata.pb.go +++ b/chain/tokenfactory/types/authorityMetadata.pb.go @@ -30,6 +30,8 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package type DenomAuthorityMetadata struct { // Can be empty for no admin, or a valid injective address Admin string `protobuf:"bytes,1,opt,name=admin,proto3" json:"admin,omitempty" yaml:"admin"` + // true if the admin can burn tokens from other addresses + AdminBurnAllowed bool `protobuf:"varint,2,opt,name=admin_burn_allowed,json=adminBurnAllowed,proto3" json:"admin_burn_allowed,omitempty" yaml:"admin_burn_allowed"` } func (m *DenomAuthorityMetadata) Reset() { *m = DenomAuthorityMetadata{} } @@ -72,6 +74,13 @@ func (m *DenomAuthorityMetadata) GetAdmin() string { return "" } +func (m *DenomAuthorityMetadata) GetAdminBurnAllowed() bool { + if m != nil { + return m.AdminBurnAllowed + } + return false +} + func init() { proto.RegisterType((*DenomAuthorityMetadata)(nil), "injective.tokenfactory.v1beta1.DenomAuthorityMetadata") } @@ -81,24 +90,27 @@ func init() { } var fileDescriptor_525494b77b96b2d3 = []byte{ - // 258 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x32, 0xcb, 0xcc, 0xcb, 0x4a, - 0x4d, 0x2e, 0xc9, 0x2c, 0x4b, 0xd5, 0x2f, 0xc9, 0xcf, 0x4e, 0xcd, 0x4b, 0x4b, 0x4c, 0x2e, 0xc9, - 0x2f, 0xaa, 0xd4, 0x2f, 0x33, 0x4c, 0x4a, 0x2d, 0x49, 0x34, 0xd4, 0x4f, 0x2c, 0x2d, 0xc9, 0xc8, - 0x2f, 0xca, 0x2c, 0xa9, 0xf4, 0x4d, 0x2d, 0x49, 0x4c, 0x49, 0x2c, 0x49, 0xd4, 0x2b, 0x28, 0xca, - 0x2f, 0xc9, 0x17, 0x92, 0x83, 0xeb, 0xd3, 0x43, 0xd6, 0xa7, 0x07, 0xd5, 0x27, 0x25, 0x92, 0x9e, - 0x9f, 0x9e, 0x0f, 0x56, 0xaa, 0x0f, 0x62, 0x41, 0x74, 0x49, 0xc9, 0x25, 0xe7, 0x17, 0xe7, 0xe6, - 0x17, 0xeb, 0x27, 0x25, 0x16, 0xa7, 0xc2, 0xad, 0x48, 0xce, 0xcf, 0xcc, 0x83, 0xc8, 0x2b, 0xb9, - 0x71, 0x89, 0xb9, 0xa4, 0xe6, 0xe5, 0xe7, 0x3a, 0xa2, 0xdb, 0x2a, 0xa4, 0xc6, 0xc5, 0x9a, 0x98, - 0x92, 0x9b, 0x99, 0x27, 0xc1, 0xa8, 0xc0, 0xa8, 0xc1, 0xe9, 0x24, 0xf0, 0xe9, 0x9e, 0x3c, 0x4f, - 0x65, 0x62, 0x6e, 0x8e, 0x95, 0x12, 0x58, 0x58, 0x29, 0x08, 0x22, 0x6d, 0xc5, 0xf2, 0x62, 0x81, - 0x3c, 0xa3, 0x53, 0xce, 0x89, 0x47, 0x72, 0x8c, 0x17, 0x1e, 0xc9, 0x31, 0x3e, 0x78, 0x24, 0xc7, - 0x38, 0xe1, 0xb1, 0x1c, 0xc3, 0x85, 0xc7, 0x72, 0x0c, 0x37, 0x1e, 0xcb, 0x31, 0x44, 0x05, 0xa5, - 0x67, 0x96, 0x64, 0x94, 0x26, 0xe9, 0x25, 0xe7, 0xe7, 0xea, 0x7b, 0xc2, 0xbc, 0xe0, 0x93, 0x98, - 0x54, 0xac, 0x0f, 0xf7, 0x90, 0x6e, 0x72, 0x7e, 0x51, 0x2a, 0x32, 0x37, 0x23, 0x31, 0x33, 0x4f, - 0x3f, 0x37, 0x3f, 0xa5, 0x34, 0x27, 0xb5, 0x18, 0x35, 0x94, 0x4a, 0x2a, 0x0b, 0x52, 0x8b, 0x93, - 0xd8, 0xc0, 0x8e, 0x37, 0x06, 0x04, 0x00, 0x00, 0xff, 0xff, 0x17, 0x16, 0x28, 0x7a, 0x4c, 0x01, - 0x00, 0x00, + // 305 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x5c, 0x90, 0xb1, 0x4a, 0x33, 0x41, + 0x10, 0xc7, 0xb3, 0x1f, 0x9f, 0xa2, 0x87, 0x45, 0x38, 0x44, 0x62, 0xc0, 0x4d, 0xb8, 0x42, 0xd2, + 0x78, 0x4b, 0x10, 0x2c, 0xd2, 0xe5, 0xb0, 0x11, 0xb5, 0x49, 0x69, 0x13, 0x66, 0xf7, 0xd6, 0x64, + 0xf5, 0x76, 0x27, 0xec, 0xee, 0x45, 0xee, 0x2d, 0x04, 0x5f, 0xc0, 0xc7, 0xb1, 0x4c, 0x69, 0x15, + 0x24, 0x69, 0xac, 0xf3, 0x04, 0xe2, 0x9d, 0x86, 0xc4, 0x6e, 0xe6, 0x3f, 0xf3, 0xe3, 0x0f, 0xbf, + 0xe0, 0x42, 0x99, 0x07, 0x29, 0xbc, 0x9a, 0x4a, 0xe6, 0xf1, 0x51, 0x9a, 0x7b, 0x10, 0x1e, 0x6d, + 0xc1, 0xa6, 0x5d, 0x2e, 0x3d, 0x74, 0x19, 0xe4, 0x7e, 0x8c, 0x56, 0xf9, 0xe2, 0x56, 0x7a, 0x48, + 0xc1, 0x43, 0x3c, 0xb1, 0xe8, 0x31, 0xa4, 0x6b, 0x2e, 0xde, 0xe4, 0xe2, 0x1f, 0xae, 0x79, 0x38, + 0xc2, 0x11, 0x96, 0xaf, 0xec, 0x7b, 0xaa, 0xa8, 0x26, 0x15, 0xe8, 0x34, 0x3a, 0xc6, 0xc1, 0xc9, + 0x75, 0x85, 0x40, 0x65, 0xaa, 0x7b, 0xf4, 0x42, 0x82, 0xa3, 0x4b, 0x69, 0x50, 0xf7, 0xff, 0xd6, + 0x86, 0xa7, 0xc1, 0x0e, 0xa4, 0x5a, 0x99, 0x06, 0x69, 0x93, 0xce, 0x7e, 0x52, 0x5f, 0xcd, 0x5b, + 0x07, 0x05, 0xe8, 0xac, 0x17, 0x95, 0x71, 0x34, 0xa8, 0xce, 0xe1, 0x75, 0x10, 0x96, 0xc3, 0x90, + 0xe7, 0xd6, 0x0c, 0x21, 0xcb, 0xf0, 0x49, 0xa6, 0x8d, 0x7f, 0x6d, 0xd2, 0xd9, 0x4b, 0x4e, 0x56, + 0xf3, 0xd6, 0xf1, 0x06, 0xb4, 0xf5, 0x13, 0x0d, 0xea, 0x65, 0x98, 0xe4, 0xd6, 0xf4, 0xab, 0xa8, + 0xf7, 0xff, 0xf3, 0xb5, 0x45, 0x92, 0xec, 0x6d, 0x41, 0xc9, 0x6c, 0x41, 0xc9, 0xc7, 0x82, 0x92, + 0xe7, 0x25, 0xad, 0xcd, 0x96, 0xb4, 0xf6, 0xbe, 0xa4, 0xb5, 0xbb, 0xc1, 0x48, 0xf9, 0x71, 0xce, + 0x63, 0x81, 0x9a, 0x5d, 0xfd, 0x0a, 0xb9, 0x01, 0xee, 0xd8, 0x5a, 0xcf, 0x99, 0x40, 0x2b, 0x37, + 0xd7, 0x31, 0x28, 0xc3, 0x34, 0xa6, 0x79, 0x26, 0xdd, 0xb6, 0x73, 0x5f, 0x4c, 0xa4, 0xe3, 0xbb, + 0xa5, 0x8a, 0xf3, 0xaf, 0x00, 0x00, 0x00, 0xff, 0xff, 0xf5, 0x06, 0x42, 0x33, 0x9a, 0x01, 0x00, + 0x00, } func (this *DenomAuthorityMetadata) Equal(that interface{}) bool { @@ -123,6 +135,9 @@ func (this *DenomAuthorityMetadata) Equal(that interface{}) bool { if this.Admin != that1.Admin { return false } + if this.AdminBurnAllowed != that1.AdminBurnAllowed { + return false + } return true } func (m *DenomAuthorityMetadata) Marshal() (dAtA []byte, err error) { @@ -145,6 +160,16 @@ func (m *DenomAuthorityMetadata) MarshalToSizedBuffer(dAtA []byte) (int, error) _ = i var l int _ = l + if m.AdminBurnAllowed { + i-- + if m.AdminBurnAllowed { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x10 + } if len(m.Admin) > 0 { i -= len(m.Admin) copy(dAtA[i:], m.Admin) @@ -176,6 +201,9 @@ func (m *DenomAuthorityMetadata) Size() (n int) { if l > 0 { n += 1 + l + sovAuthorityMetadata(uint64(l)) } + if m.AdminBurnAllowed { + n += 2 + } return n } @@ -246,6 +274,26 @@ func (m *DenomAuthorityMetadata) Unmarshal(dAtA []byte) error { } m.Admin = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AdminBurnAllowed", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAuthorityMetadata + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.AdminBurnAllowed = bool(v != 0) default: iNdEx = preIndex skippy, err := skipAuthorityMetadata(dAtA[iNdEx:]) diff --git a/chain/tokenfactory/types/denoms.go b/chain/tokenfactory/types/denoms.go deleted file mode 100644 index a31d5cef..00000000 --- a/chain/tokenfactory/types/denoms.go +++ /dev/null @@ -1,117 +0,0 @@ -package types - -import ( - "context" - "fmt" - "strings" - - "cosmossdk.io/errors" - sdk "github.com/cosmos/cosmos-sdk/types" - banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" -) - -const ( - ModuleDenomPrefix = "factory" - // See the TokenFactory readme for a derivation of these. - // TL;DR, MaxSubdenomLength + MaxHrpLength = 60 comes from SDK max denom length = 128 - // and the structure of tokenfactory denoms. - MaxSubdenomLength = 44 - MaxHrpLength = 16 - // MaxCreatorLength = 59 + MaxHrpLength - MaxCreatorLength = 59 + MaxHrpLength - MinSubdenomLength = 1 -) - -// GetTokenDenom constructs a denom string for tokens created by tokenfactory -// based on an input creator address and a subdenom -// The denom constructed is factory/{creator}/{subdenom} -func GetTokenDenom(creator, subdenom string) (string, error) { - if len(subdenom) > MaxSubdenomLength { - return "", ErrSubdenomTooLong - } - if len(subdenom) < MinSubdenomLength { - return "", ErrSubdenomTooShort - } - - strParts := strings.Split(subdenom, "/") - - for idx := range strParts { - if len(strParts[idx]) < MinSubdenomLength { - return "", ErrSubdenomNestedTooShort - } - } - - if len(creator) > MaxCreatorLength { - return "", ErrCreatorTooLong - } - if strings.Contains(creator, "/") || len(creator) < 1 { - return "", ErrInvalidCreator - } - - // ensure creator address is in lowercase Bech32 form - creatorAddr, err := sdk.AccAddressFromBech32(creator) - if err != nil { - return "", err - } - - denom := strings.Join([]string{ModuleDenomPrefix, creatorAddr.String(), subdenom}, "/") - return denom, sdk.ValidateDenom(denom) -} - -// DeconstructDenom takes a token denom string and verifies that it is a valid -// denom of the tokenfactory module, and is of the form `factory/{creator}/{subdenom}` -// If valid, it returns the creator address and subdenom -func DeconstructDenom(denom string) (creator, subdenom string, err error) { - err = sdk.ValidateDenom(denom) - if err != nil { - return "", "", err - } - - strParts := strings.Split(denom, "/") - if len(strParts) < 3 { - return "", "", errors.Wrapf(ErrInvalidDenom, "not enough parts of denom %s", denom) - } - - if strParts[0] != ModuleDenomPrefix { - return "", "", errors.Wrapf(ErrInvalidDenom, "denom prefix is incorrect. Is: %s. Should be: %s", strParts[0], ModuleDenomPrefix) - } - - creator = strParts[1] - creatorAddr, err := sdk.AccAddressFromBech32(creator) - if err != nil { - return "", "", errors.Wrapf(ErrInvalidDenom, "Invalid creator address (%s)", err) - } - - if len(strParts[2]) < MinSubdenomLength { - return "", "", errors.Wrapf(ErrSubdenomTooShort, "subdenom too short. Has length of: %d. Should have length at least of: %d", len(strParts[2]), MinSubdenomLength) - } - - if len(strParts) > 3 { - for i := 2; i <= len(strParts)-1; i++ { - if len(strParts[i]) < MinSubdenomLength { - return "", "", errors.Wrapf(ErrSubdenomNestedTooShort, "nested subdenom too short. Has length of: %d. Should have length at least of: %d", len(strParts[i]), MinSubdenomLength) - } - } - } - - // Handle the case where a denom has a slash in its subdenom. For example, - // when we did the split, we'd turn factory/accaddr/atomderivative/sikka into ["factory", "accaddr", "atomderivative", "sikka"] - // So we have to join [2:] with a "/" as the delimiter to get back the correct subdenom which should be "atomderivative/sikka" - subdenom = strings.Join(strParts[2:], "/") - - return creatorAddr.String(), subdenom, nil -} - -// NewTokenFactoryDenomMintCoinsRestriction creates and returns a MintingRestrictionFn that only allows minting of -// valid tokenfactory denoms -func NewTokenFactoryDenomMintCoinsRestriction() banktypes.MintingRestrictionFn { - return func(ctx context.Context, coinsToMint sdk.Coins) error { - for _, coin := range coinsToMint { - _, _, err := DeconstructDenom(coin.Denom) - if err != nil { - return fmt.Errorf("does not have permission to mint %s", coin.Denom) - } - } - return nil - } -} diff --git a/chain/tokenfactory/types/errors.go b/chain/tokenfactory/types/errors.go deleted file mode 100644 index 48ebec3a..00000000 --- a/chain/tokenfactory/types/errors.go +++ /dev/null @@ -1,25 +0,0 @@ -package types - -// DONTCOVER - -import ( - "fmt" - - "cosmossdk.io/errors" -) - -// x/tokenfactory module sentinel errors -var ( - ErrDenomExists = errors.Register(ModuleName, 2, "attempting to create a denom that already exists (has bank metadata)") - ErrUnauthorized = errors.Register(ModuleName, 3, "unauthorized account") - ErrInvalidDenom = errors.Register(ModuleName, 4, "invalid denom") - ErrInvalidCreator = errors.Register(ModuleName, 5, "invalid creator") - ErrInvalidAuthorityMetadata = errors.Register(ModuleName, 6, "invalid authority metadata") - ErrInvalidGenesis = errors.Register(ModuleName, 7, "invalid genesis") - ErrSubdenomTooLong = errors.Register(ModuleName, 8, fmt.Sprintf("subdenom too long, max length is %d bytes", MaxSubdenomLength)) - ErrSubdenomTooShort = errors.Register(ModuleName, 9, fmt.Sprintf("subdenom too short, min length is %d bytes", MinSubdenomLength)) - ErrSubdenomNestedTooShort = errors.Register(ModuleName, 10, fmt.Sprintf("nested subdenom too short, each one should have at least %d bytes", MinSubdenomLength)) - ErrCreatorTooLong = errors.Register(ModuleName, 11, fmt.Sprintf("creator too long, max length is %d bytes", MaxCreatorLength)) - ErrDenomDoesNotExist = errors.Register(ModuleName, 12, "denom does not exist") - ErrAmountNotPositive = errors.Register(ModuleName, 13, "amount has to be positive") -) diff --git a/chain/tokenfactory/types/events.pb.go b/chain/tokenfactory/types/events.pb.go index 8d71b85d..d6e06990 100644 --- a/chain/tokenfactory/types/events.pb.go +++ b/chain/tokenfactory/types/events.pb.go @@ -25,23 +25,23 @@ var _ = math.Inf // proto package needs to be updated. const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package -type EventCreateTFDenom struct { +type EventCreateDenom struct { Account string `protobuf:"bytes,1,opt,name=account,proto3" json:"account,omitempty"` Denom string `protobuf:"bytes,2,opt,name=denom,proto3" json:"denom,omitempty"` } -func (m *EventCreateTFDenom) Reset() { *m = EventCreateTFDenom{} } -func (m *EventCreateTFDenom) String() string { return proto.CompactTextString(m) } -func (*EventCreateTFDenom) ProtoMessage() {} -func (*EventCreateTFDenom) Descriptor() ([]byte, []int) { +func (m *EventCreateDenom) Reset() { *m = EventCreateDenom{} } +func (m *EventCreateDenom) String() string { return proto.CompactTextString(m) } +func (*EventCreateDenom) ProtoMessage() {} +func (*EventCreateDenom) Descriptor() ([]byte, []int) { return fileDescriptor_b9fd0c5434c2a5b7, []int{0} } -func (m *EventCreateTFDenom) XXX_Unmarshal(b []byte) error { +func (m *EventCreateDenom) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *EventCreateTFDenom) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *EventCreateDenom) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_EventCreateTFDenom.Marshal(b, m, deterministic) + return xxx_messageInfo_EventCreateDenom.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -51,49 +51,50 @@ func (m *EventCreateTFDenom) XXX_Marshal(b []byte, deterministic bool) ([]byte, return b[:n], nil } } -func (m *EventCreateTFDenom) XXX_Merge(src proto.Message) { - xxx_messageInfo_EventCreateTFDenom.Merge(m, src) +func (m *EventCreateDenom) XXX_Merge(src proto.Message) { + xxx_messageInfo_EventCreateDenom.Merge(m, src) } -func (m *EventCreateTFDenom) XXX_Size() int { +func (m *EventCreateDenom) XXX_Size() int { return m.Size() } -func (m *EventCreateTFDenom) XXX_DiscardUnknown() { - xxx_messageInfo_EventCreateTFDenom.DiscardUnknown(m) +func (m *EventCreateDenom) XXX_DiscardUnknown() { + xxx_messageInfo_EventCreateDenom.DiscardUnknown(m) } -var xxx_messageInfo_EventCreateTFDenom proto.InternalMessageInfo +var xxx_messageInfo_EventCreateDenom proto.InternalMessageInfo -func (m *EventCreateTFDenom) GetAccount() string { +func (m *EventCreateDenom) GetAccount() string { if m != nil { return m.Account } return "" } -func (m *EventCreateTFDenom) GetDenom() string { +func (m *EventCreateDenom) GetDenom() string { if m != nil { return m.Denom } return "" } -type EventMintTFDenom struct { - RecipientAddress string `protobuf:"bytes,1,opt,name=recipient_address,json=recipientAddress,proto3" json:"recipient_address,omitempty"` - Amount types.Coin `protobuf:"bytes,2,opt,name=amount,proto3" json:"amount"` +type EventMint struct { + Minter string `protobuf:"bytes,1,opt,name=minter,proto3" json:"minter,omitempty"` + Amount types.Coin `protobuf:"bytes,2,opt,name=amount,proto3" json:"amount"` + Receiver string `protobuf:"bytes,3,opt,name=receiver,proto3" json:"receiver,omitempty"` } -func (m *EventMintTFDenom) Reset() { *m = EventMintTFDenom{} } -func (m *EventMintTFDenom) String() string { return proto.CompactTextString(m) } -func (*EventMintTFDenom) ProtoMessage() {} -func (*EventMintTFDenom) Descriptor() ([]byte, []int) { +func (m *EventMint) Reset() { *m = EventMint{} } +func (m *EventMint) String() string { return proto.CompactTextString(m) } +func (*EventMint) ProtoMessage() {} +func (*EventMint) Descriptor() ([]byte, []int) { return fileDescriptor_b9fd0c5434c2a5b7, []int{1} } -func (m *EventMintTFDenom) XXX_Unmarshal(b []byte) error { +func (m *EventMint) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *EventMintTFDenom) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *EventMint) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_EventMintTFDenom.Marshal(b, m, deterministic) + return xxx_messageInfo_EventMint.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -103,49 +104,57 @@ func (m *EventMintTFDenom) XXX_Marshal(b []byte, deterministic bool) ([]byte, er return b[:n], nil } } -func (m *EventMintTFDenom) XXX_Merge(src proto.Message) { - xxx_messageInfo_EventMintTFDenom.Merge(m, src) +func (m *EventMint) XXX_Merge(src proto.Message) { + xxx_messageInfo_EventMint.Merge(m, src) } -func (m *EventMintTFDenom) XXX_Size() int { +func (m *EventMint) XXX_Size() int { return m.Size() } -func (m *EventMintTFDenom) XXX_DiscardUnknown() { - xxx_messageInfo_EventMintTFDenom.DiscardUnknown(m) +func (m *EventMint) XXX_DiscardUnknown() { + xxx_messageInfo_EventMint.DiscardUnknown(m) } -var xxx_messageInfo_EventMintTFDenom proto.InternalMessageInfo +var xxx_messageInfo_EventMint proto.InternalMessageInfo -func (m *EventMintTFDenom) GetRecipientAddress() string { +func (m *EventMint) GetMinter() string { if m != nil { - return m.RecipientAddress + return m.Minter } return "" } -func (m *EventMintTFDenom) GetAmount() types.Coin { +func (m *EventMint) GetAmount() types.Coin { if m != nil { return m.Amount } return types.Coin{} } -type EventBurnDenom struct { - BurnerAddress string `protobuf:"bytes,1,opt,name=burner_address,json=burnerAddress,proto3" json:"burner_address,omitempty"` - Amount types.Coin `protobuf:"bytes,2,opt,name=amount,proto3" json:"amount"` +func (m *EventMint) GetReceiver() string { + if m != nil { + return m.Receiver + } + return "" +} + +type EventBurn struct { + Burner string `protobuf:"bytes,1,opt,name=burner,proto3" json:"burner,omitempty"` + Amount types.Coin `protobuf:"bytes,2,opt,name=amount,proto3" json:"amount"` + BurnFrom string `protobuf:"bytes,3,opt,name=burn_from,json=burnFrom,proto3" json:"burn_from,omitempty"` } -func (m *EventBurnDenom) Reset() { *m = EventBurnDenom{} } -func (m *EventBurnDenom) String() string { return proto.CompactTextString(m) } -func (*EventBurnDenom) ProtoMessage() {} -func (*EventBurnDenom) Descriptor() ([]byte, []int) { +func (m *EventBurn) Reset() { *m = EventBurn{} } +func (m *EventBurn) String() string { return proto.CompactTextString(m) } +func (*EventBurn) ProtoMessage() {} +func (*EventBurn) Descriptor() ([]byte, []int) { return fileDescriptor_b9fd0c5434c2a5b7, []int{2} } -func (m *EventBurnDenom) XXX_Unmarshal(b []byte) error { +func (m *EventBurn) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *EventBurnDenom) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *EventBurn) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_EventBurnDenom.Marshal(b, m, deterministic) + return xxx_messageInfo_EventBurn.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -155,49 +164,56 @@ func (m *EventBurnDenom) XXX_Marshal(b []byte, deterministic bool) ([]byte, erro return b[:n], nil } } -func (m *EventBurnDenom) XXX_Merge(src proto.Message) { - xxx_messageInfo_EventBurnDenom.Merge(m, src) +func (m *EventBurn) XXX_Merge(src proto.Message) { + xxx_messageInfo_EventBurn.Merge(m, src) } -func (m *EventBurnDenom) XXX_Size() int { +func (m *EventBurn) XXX_Size() int { return m.Size() } -func (m *EventBurnDenom) XXX_DiscardUnknown() { - xxx_messageInfo_EventBurnDenom.DiscardUnknown(m) +func (m *EventBurn) XXX_DiscardUnknown() { + xxx_messageInfo_EventBurn.DiscardUnknown(m) } -var xxx_messageInfo_EventBurnDenom proto.InternalMessageInfo +var xxx_messageInfo_EventBurn proto.InternalMessageInfo -func (m *EventBurnDenom) GetBurnerAddress() string { +func (m *EventBurn) GetBurner() string { if m != nil { - return m.BurnerAddress + return m.Burner } return "" } -func (m *EventBurnDenom) GetAmount() types.Coin { +func (m *EventBurn) GetAmount() types.Coin { if m != nil { return m.Amount } return types.Coin{} } -type EventChangeTFAdmin struct { +func (m *EventBurn) GetBurnFrom() string { + if m != nil { + return m.BurnFrom + } + return "" +} + +type EventChangeAdmin struct { Denom string `protobuf:"bytes,1,opt,name=denom,proto3" json:"denom,omitempty"` NewAdminAddress string `protobuf:"bytes,2,opt,name=new_admin_address,json=newAdminAddress,proto3" json:"new_admin_address,omitempty"` } -func (m *EventChangeTFAdmin) Reset() { *m = EventChangeTFAdmin{} } -func (m *EventChangeTFAdmin) String() string { return proto.CompactTextString(m) } -func (*EventChangeTFAdmin) ProtoMessage() {} -func (*EventChangeTFAdmin) Descriptor() ([]byte, []int) { +func (m *EventChangeAdmin) Reset() { *m = EventChangeAdmin{} } +func (m *EventChangeAdmin) String() string { return proto.CompactTextString(m) } +func (*EventChangeAdmin) ProtoMessage() {} +func (*EventChangeAdmin) Descriptor() ([]byte, []int) { return fileDescriptor_b9fd0c5434c2a5b7, []int{3} } -func (m *EventChangeTFAdmin) XXX_Unmarshal(b []byte) error { +func (m *EventChangeAdmin) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *EventChangeTFAdmin) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *EventChangeAdmin) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_EventChangeTFAdmin.Marshal(b, m, deterministic) + return xxx_messageInfo_EventChangeAdmin.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -207,49 +223,49 @@ func (m *EventChangeTFAdmin) XXX_Marshal(b []byte, deterministic bool) ([]byte, return b[:n], nil } } -func (m *EventChangeTFAdmin) XXX_Merge(src proto.Message) { - xxx_messageInfo_EventChangeTFAdmin.Merge(m, src) +func (m *EventChangeAdmin) XXX_Merge(src proto.Message) { + xxx_messageInfo_EventChangeAdmin.Merge(m, src) } -func (m *EventChangeTFAdmin) XXX_Size() int { +func (m *EventChangeAdmin) XXX_Size() int { return m.Size() } -func (m *EventChangeTFAdmin) XXX_DiscardUnknown() { - xxx_messageInfo_EventChangeTFAdmin.DiscardUnknown(m) +func (m *EventChangeAdmin) XXX_DiscardUnknown() { + xxx_messageInfo_EventChangeAdmin.DiscardUnknown(m) } -var xxx_messageInfo_EventChangeTFAdmin proto.InternalMessageInfo +var xxx_messageInfo_EventChangeAdmin proto.InternalMessageInfo -func (m *EventChangeTFAdmin) GetDenom() string { +func (m *EventChangeAdmin) GetDenom() string { if m != nil { return m.Denom } return "" } -func (m *EventChangeTFAdmin) GetNewAdminAddress() string { +func (m *EventChangeAdmin) GetNewAdminAddress() string { if m != nil { return m.NewAdminAddress } return "" } -type EventSetTFDenomMetadata struct { +type EventSetDenomMetadata struct { Denom string `protobuf:"bytes,1,opt,name=denom,proto3" json:"denom,omitempty"` Metadata types1.Metadata `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata"` } -func (m *EventSetTFDenomMetadata) Reset() { *m = EventSetTFDenomMetadata{} } -func (m *EventSetTFDenomMetadata) String() string { return proto.CompactTextString(m) } -func (*EventSetTFDenomMetadata) ProtoMessage() {} -func (*EventSetTFDenomMetadata) Descriptor() ([]byte, []int) { +func (m *EventSetDenomMetadata) Reset() { *m = EventSetDenomMetadata{} } +func (m *EventSetDenomMetadata) String() string { return proto.CompactTextString(m) } +func (*EventSetDenomMetadata) ProtoMessage() {} +func (*EventSetDenomMetadata) Descriptor() ([]byte, []int) { return fileDescriptor_b9fd0c5434c2a5b7, []int{4} } -func (m *EventSetTFDenomMetadata) XXX_Unmarshal(b []byte) error { +func (m *EventSetDenomMetadata) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *EventSetTFDenomMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *EventSetDenomMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_EventSetTFDenomMetadata.Marshal(b, m, deterministic) + return xxx_messageInfo_EventSetDenomMetadata.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -259,26 +275,26 @@ func (m *EventSetTFDenomMetadata) XXX_Marshal(b []byte, deterministic bool) ([]b return b[:n], nil } } -func (m *EventSetTFDenomMetadata) XXX_Merge(src proto.Message) { - xxx_messageInfo_EventSetTFDenomMetadata.Merge(m, src) +func (m *EventSetDenomMetadata) XXX_Merge(src proto.Message) { + xxx_messageInfo_EventSetDenomMetadata.Merge(m, src) } -func (m *EventSetTFDenomMetadata) XXX_Size() int { +func (m *EventSetDenomMetadata) XXX_Size() int { return m.Size() } -func (m *EventSetTFDenomMetadata) XXX_DiscardUnknown() { - xxx_messageInfo_EventSetTFDenomMetadata.DiscardUnknown(m) +func (m *EventSetDenomMetadata) XXX_DiscardUnknown() { + xxx_messageInfo_EventSetDenomMetadata.DiscardUnknown(m) } -var xxx_messageInfo_EventSetTFDenomMetadata proto.InternalMessageInfo +var xxx_messageInfo_EventSetDenomMetadata proto.InternalMessageInfo -func (m *EventSetTFDenomMetadata) GetDenom() string { +func (m *EventSetDenomMetadata) GetDenom() string { if m != nil { return m.Denom } return "" } -func (m *EventSetTFDenomMetadata) GetMetadata() types1.Metadata { +func (m *EventSetDenomMetadata) GetMetadata() types1.Metadata { if m != nil { return m.Metadata } @@ -286,11 +302,11 @@ func (m *EventSetTFDenomMetadata) GetMetadata() types1.Metadata { } func init() { - proto.RegisterType((*EventCreateTFDenom)(nil), "injective.tokenfactory.v1beta1.EventCreateTFDenom") - proto.RegisterType((*EventMintTFDenom)(nil), "injective.tokenfactory.v1beta1.EventMintTFDenom") - proto.RegisterType((*EventBurnDenom)(nil), "injective.tokenfactory.v1beta1.EventBurnDenom") - proto.RegisterType((*EventChangeTFAdmin)(nil), "injective.tokenfactory.v1beta1.EventChangeTFAdmin") - proto.RegisterType((*EventSetTFDenomMetadata)(nil), "injective.tokenfactory.v1beta1.EventSetTFDenomMetadata") + proto.RegisterType((*EventCreateDenom)(nil), "injective.tokenfactory.v1beta1.EventCreateDenom") + proto.RegisterType((*EventMint)(nil), "injective.tokenfactory.v1beta1.EventMint") + proto.RegisterType((*EventBurn)(nil), "injective.tokenfactory.v1beta1.EventBurn") + proto.RegisterType((*EventChangeAdmin)(nil), "injective.tokenfactory.v1beta1.EventChangeAdmin") + proto.RegisterType((*EventSetDenomMetadata)(nil), "injective.tokenfactory.v1beta1.EventSetDenomMetadata") } func init() { @@ -298,38 +314,39 @@ func init() { } var fileDescriptor_b9fd0c5434c2a5b7 = []byte{ - // 442 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x52, 0xc1, 0x6a, 0x14, 0x41, - 0x10, 0xdd, 0x11, 0x8d, 0xda, 0x62, 0x4c, 0x86, 0x80, 0x6b, 0xc0, 0x51, 0x16, 0x04, 0x31, 0x38, - 0x43, 0x14, 0xf4, 0x28, 0xd9, 0xc4, 0x80, 0x60, 0x2e, 0x6b, 0xf0, 0xe0, 0x25, 0xf4, 0xf4, 0x94, - 0xbb, 0xed, 0x66, 0xaa, 0x86, 0xee, 0x9a, 0x8d, 0xfb, 0x17, 0x7e, 0x56, 0x8e, 0x39, 0x7a, 0x12, - 0xd9, 0xfd, 0x11, 0x99, 0x99, 0xee, 0xce, 0xaa, 0x88, 0x87, 0xdc, 0xa6, 0xba, 0x5e, 0xbd, 0x57, - 0xef, 0x4d, 0x89, 0x1d, 0x8d, 0x5f, 0x40, 0xb1, 0x9e, 0x41, 0xc6, 0x34, 0x05, 0xfc, 0x2c, 0x15, - 0x93, 0x99, 0x67, 0xb3, 0xdd, 0x1c, 0x58, 0xee, 0x66, 0x30, 0x03, 0x64, 0x9b, 0x56, 0x86, 0x98, - 0xe2, 0x24, 0x80, 0xd3, 0x55, 0x70, 0xea, 0xc0, 0xdb, 0x5b, 0x63, 0x1a, 0x53, 0x0b, 0xcd, 0x9a, - 0xaf, 0x6e, 0x6a, 0x3b, 0x51, 0x64, 0x4b, 0xb2, 0x59, 0x2e, 0x2d, 0x04, 0x5e, 0x45, 0x1a, 0xff, - 0xea, 0xe3, 0x34, 0xf4, 0x9b, 0xc2, 0xf5, 0x5f, 0xfd, 0x67, 0x45, 0x59, 0xf3, 0x84, 0x8c, 0xe6, - 0xf9, 0x11, 0xb0, 0x2c, 0x24, 0xcb, 0x6e, 0x6e, 0x70, 0x20, 0xe2, 0xb7, 0xcd, 0xf6, 0xfb, 0x06, - 0x24, 0xc3, 0xf1, 0xe1, 0x01, 0x20, 0x95, 0x71, 0x5f, 0xdc, 0x94, 0x4a, 0x51, 0x8d, 0xdc, 0x8f, - 0x1e, 0x47, 0x4f, 0x6f, 0x8f, 0x7c, 0x19, 0x6f, 0x89, 0x1b, 0x45, 0x03, 0xe9, 0x5f, 0x6b, 0xdf, - 0xbb, 0x62, 0xf0, 0x55, 0x6c, 0xb4, 0x2c, 0x47, 0x1a, 0xd9, 0x73, 0xec, 0x88, 0x4d, 0x03, 0x4a, - 0x57, 0x1a, 0x90, 0x4f, 0x64, 0x51, 0x18, 0xb0, 0xd6, 0xb1, 0x6d, 0x84, 0xc6, 0x5e, 0xf7, 0x1e, - 0xbf, 0x16, 0x6b, 0xb2, 0x6c, 0xf5, 0x1a, 0xde, 0x3b, 0x2f, 0x1e, 0xa4, 0x9d, 0xdf, 0xb4, 0xc9, - 0xc3, 0x47, 0x97, 0xee, 0x93, 0xc6, 0xe1, 0xf5, 0xf3, 0x1f, 0x8f, 0x7a, 0x23, 0x07, 0x1f, 0x54, - 0x62, 0xbd, 0x55, 0x1e, 0xd6, 0x06, 0x3b, 0xdd, 0x27, 0x62, 0x3d, 0xaf, 0x0d, 0x82, 0xf9, 0x43, - 0xf4, 0x6e, 0xf7, 0x7a, 0x65, 0xc5, 0x8f, 0x3e, 0xb1, 0x89, 0xc4, 0x31, 0x1c, 0x1f, 0xee, 0x15, - 0xa5, 0xc6, 0xcb, 0x5c, 0xa2, 0x95, 0x5c, 0xe2, 0x67, 0x62, 0x13, 0xe1, 0xec, 0x44, 0x36, 0x90, - 0xb0, 0x4e, 0x97, 0xdc, 0x3d, 0x84, 0xb3, 0x76, 0xd4, 0x2d, 0x34, 0xa8, 0xc4, 0xfd, 0x96, 0xf7, - 0x03, 0xf8, 0x08, 0xfd, 0xaf, 0xfa, 0x07, 0xf9, 0x1b, 0x71, 0xab, 0x74, 0x08, 0xe7, 0xe1, 0xe1, - 0xa5, 0x07, 0x9c, 0x06, 0x0f, 0x9e, 0xc6, 0xf9, 0x08, 0x43, 0xc3, 0xd3, 0xf3, 0x45, 0x12, 0x5d, - 0x2c, 0x92, 0xe8, 0xe7, 0x22, 0x89, 0xbe, 0x2d, 0x93, 0xde, 0xc5, 0x32, 0xe9, 0x7d, 0x5f, 0x26, - 0xbd, 0x4f, 0xa3, 0xb1, 0xe6, 0x49, 0x9d, 0xa7, 0x8a, 0xca, 0xec, 0x9d, 0x3f, 0xac, 0xf7, 0x32, - 0xb7, 0x59, 0x38, 0xb3, 0xe7, 0x8a, 0x0c, 0xac, 0x96, 0x13, 0xa9, 0x31, 0x2b, 0xa9, 0xa8, 0x4f, - 0xc1, 0xfe, 0x7e, 0x83, 0x3c, 0xaf, 0xc0, 0xe6, 0x6b, 0xed, 0xc1, 0xbd, 0xfc, 0x15, 0x00, 0x00, - 0xff, 0xff, 0x0f, 0x75, 0x34, 0xbb, 0x4d, 0x03, 0x00, 0x00, + // 449 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x52, 0x4d, 0x6f, 0xd3, 0x40, + 0x10, 0x8d, 0xf9, 0x08, 0xcd, 0x72, 0x00, 0xac, 0x82, 0x42, 0x10, 0x06, 0xf9, 0x84, 0x40, 0xd8, + 0x2a, 0x48, 0x70, 0x44, 0x4d, 0x01, 0x09, 0x89, 0x5e, 0x02, 0x27, 0x2e, 0xd1, 0x7a, 0x3d, 0x4d, + 0x96, 0x74, 0x67, 0xaa, 0xdd, 0x75, 0x8a, 0xff, 0x05, 0x3f, 0xab, 0xc7, 0x1c, 0x39, 0x21, 0x94, + 0xfc, 0x11, 0xb4, 0xeb, 0xb5, 0x13, 0x84, 0x10, 0x52, 0x6f, 0x7e, 0x33, 0xef, 0xbd, 0xf1, 0x9b, + 0x1d, 0xf6, 0x4c, 0xe2, 0x57, 0x10, 0x56, 0x2e, 0x21, 0xb7, 0xb4, 0x00, 0x3c, 0xe1, 0xc2, 0x92, + 0xae, 0xf3, 0xe5, 0x41, 0x01, 0x96, 0x1f, 0xe4, 0xb0, 0x04, 0xb4, 0x26, 0x3b, 0xd3, 0x64, 0x29, + 0x4e, 0x3a, 0x72, 0xb6, 0x4b, 0xce, 0x02, 0x79, 0xb4, 0x3f, 0xa3, 0x19, 0x79, 0x6a, 0xee, 0xbe, + 0x1a, 0xd5, 0x28, 0x11, 0x64, 0x14, 0x99, 0xbc, 0xe0, 0x06, 0x3a, 0x5f, 0x41, 0x12, 0xff, 0xea, + 0xe3, 0xa2, 0xeb, 0x3b, 0x10, 0xfa, 0xaf, 0xfe, 0xf3, 0x8b, 0xbc, 0xb2, 0x73, 0xd2, 0xd2, 0xd6, + 0xc7, 0x60, 0x79, 0xc9, 0x2d, 0x6f, 0x74, 0xe9, 0x98, 0xdd, 0x7e, 0xe7, 0xfe, 0xfe, 0x48, 0x03, + 0xb7, 0xf0, 0x16, 0x90, 0x54, 0x3c, 0x64, 0x37, 0xb8, 0x10, 0x54, 0xa1, 0x1d, 0x46, 0x8f, 0xa3, + 0x27, 0x83, 0x49, 0x0b, 0xe3, 0x7d, 0x76, 0xbd, 0x74, 0x94, 0xe1, 0x15, 0x5f, 0x6f, 0x40, 0xfa, + 0x8d, 0x0d, 0xbc, 0xc7, 0xb1, 0x44, 0x1b, 0xdf, 0x63, 0x7d, 0x25, 0xd1, 0x82, 0x0e, 0xda, 0x80, + 0xe2, 0xd7, 0xac, 0xcf, 0x95, 0xf7, 0x74, 0xda, 0x9b, 0x2f, 0xee, 0x67, 0x4d, 0xa2, 0xcc, 0x25, + 0x6e, 0x97, 0x93, 0x1d, 0x91, 0xc4, 0xf1, 0xb5, 0x8b, 0x9f, 0x8f, 0x7a, 0x93, 0x40, 0x8f, 0x47, + 0x6c, 0x4f, 0x83, 0x00, 0xb9, 0x04, 0x3d, 0xbc, 0xea, 0x2d, 0x3b, 0x9c, 0xd6, 0x61, 0xf2, 0xb8, + 0xd2, 0xe8, 0x26, 0x17, 0x95, 0xc6, 0xed, 0xe4, 0x06, 0x5d, 0x7e, 0xf2, 0x03, 0x36, 0x70, 0x16, + 0xd3, 0x13, 0x4d, 0xaa, 0x1d, 0xed, 0x0a, 0xef, 0x35, 0xa9, 0xf4, 0x73, 0xbb, 0xb8, 0x39, 0xc7, + 0x19, 0x1c, 0x96, 0x4a, 0xe2, 0x76, 0x3d, 0xd1, 0xce, 0x7a, 0xe2, 0xa7, 0xec, 0x0e, 0xc2, 0xf9, + 0x94, 0x3b, 0xca, 0x94, 0x97, 0xa5, 0x06, 0x63, 0xc2, 0x02, 0x6f, 0x21, 0x9c, 0x7b, 0xe9, 0x61, + 0x53, 0x4e, 0x91, 0xdd, 0xf5, 0xae, 0x9f, 0xc0, 0xfa, 0xb7, 0x68, 0x5f, 0xeb, 0x1f, 0xd6, 0x6f, + 0xd8, 0x9e, 0x0a, 0x8c, 0x10, 0xee, 0xe1, 0x36, 0x1c, 0x2e, 0xba, 0x70, 0xad, 0x4d, 0x08, 0xd8, + 0x89, 0xc6, 0xa7, 0x17, 0xeb, 0x24, 0x5a, 0xad, 0x93, 0xe8, 0xd7, 0x3a, 0x89, 0xbe, 0x6f, 0x92, + 0xde, 0x6a, 0x93, 0xf4, 0x7e, 0x6c, 0x92, 0xde, 0x97, 0xc9, 0x4c, 0xda, 0x79, 0x55, 0x64, 0x82, + 0x54, 0xfe, 0xa1, 0xbd, 0xad, 0x8f, 0xbc, 0x30, 0x79, 0x77, 0x69, 0xcf, 0x05, 0x69, 0xd8, 0x85, + 0x73, 0x2e, 0x31, 0x57, 0x54, 0x56, 0xa7, 0x60, 0xfe, 0x3c, 0x43, 0x5b, 0x9f, 0x81, 0x29, 0xfa, + 0xfe, 0xe6, 0x5e, 0xfe, 0x0e, 0x00, 0x00, 0xff, 0xff, 0x69, 0xd3, 0xee, 0x9b, 0x50, 0x03, 0x00, + 0x00, } -func (m *EventCreateTFDenom) Marshal() (dAtA []byte, err error) { +func (m *EventCreateDenom) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -339,12 +356,12 @@ func (m *EventCreateTFDenom) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *EventCreateTFDenom) MarshalTo(dAtA []byte) (int, error) { +func (m *EventCreateDenom) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *EventCreateTFDenom) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *EventCreateDenom) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -366,7 +383,7 @@ func (m *EventCreateTFDenom) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func (m *EventMintTFDenom) Marshal() (dAtA []byte, err error) { +func (m *EventMint) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -376,16 +393,23 @@ func (m *EventMintTFDenom) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *EventMintTFDenom) MarshalTo(dAtA []byte) (int, error) { +func (m *EventMint) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *EventMintTFDenom) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *EventMint) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l + if len(m.Receiver) > 0 { + i -= len(m.Receiver) + copy(dAtA[i:], m.Receiver) + i = encodeVarintEvents(dAtA, i, uint64(len(m.Receiver))) + i-- + dAtA[i] = 0x1a + } { size, err := m.Amount.MarshalToSizedBuffer(dAtA[:i]) if err != nil { @@ -396,17 +420,17 @@ func (m *EventMintTFDenom) MarshalToSizedBuffer(dAtA []byte) (int, error) { } i-- dAtA[i] = 0x12 - if len(m.RecipientAddress) > 0 { - i -= len(m.RecipientAddress) - copy(dAtA[i:], m.RecipientAddress) - i = encodeVarintEvents(dAtA, i, uint64(len(m.RecipientAddress))) + if len(m.Minter) > 0 { + i -= len(m.Minter) + copy(dAtA[i:], m.Minter) + i = encodeVarintEvents(dAtA, i, uint64(len(m.Minter))) i-- dAtA[i] = 0xa } return len(dAtA) - i, nil } -func (m *EventBurnDenom) Marshal() (dAtA []byte, err error) { +func (m *EventBurn) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -416,16 +440,23 @@ func (m *EventBurnDenom) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *EventBurnDenom) MarshalTo(dAtA []byte) (int, error) { +func (m *EventBurn) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *EventBurnDenom) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *EventBurn) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l + if len(m.BurnFrom) > 0 { + i -= len(m.BurnFrom) + copy(dAtA[i:], m.BurnFrom) + i = encodeVarintEvents(dAtA, i, uint64(len(m.BurnFrom))) + i-- + dAtA[i] = 0x1a + } { size, err := m.Amount.MarshalToSizedBuffer(dAtA[:i]) if err != nil { @@ -436,17 +467,17 @@ func (m *EventBurnDenom) MarshalToSizedBuffer(dAtA []byte) (int, error) { } i-- dAtA[i] = 0x12 - if len(m.BurnerAddress) > 0 { - i -= len(m.BurnerAddress) - copy(dAtA[i:], m.BurnerAddress) - i = encodeVarintEvents(dAtA, i, uint64(len(m.BurnerAddress))) + if len(m.Burner) > 0 { + i -= len(m.Burner) + copy(dAtA[i:], m.Burner) + i = encodeVarintEvents(dAtA, i, uint64(len(m.Burner))) i-- dAtA[i] = 0xa } return len(dAtA) - i, nil } -func (m *EventChangeTFAdmin) Marshal() (dAtA []byte, err error) { +func (m *EventChangeAdmin) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -456,12 +487,12 @@ func (m *EventChangeTFAdmin) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *EventChangeTFAdmin) MarshalTo(dAtA []byte) (int, error) { +func (m *EventChangeAdmin) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *EventChangeTFAdmin) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *EventChangeAdmin) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -483,7 +514,7 @@ func (m *EventChangeTFAdmin) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func (m *EventSetTFDenomMetadata) Marshal() (dAtA []byte, err error) { +func (m *EventSetDenomMetadata) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -493,12 +524,12 @@ func (m *EventSetTFDenomMetadata) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *EventSetTFDenomMetadata) MarshalTo(dAtA []byte) (int, error) { +func (m *EventSetDenomMetadata) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *EventSetTFDenomMetadata) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *EventSetDenomMetadata) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -534,7 +565,7 @@ func encodeVarintEvents(dAtA []byte, offset int, v uint64) int { dAtA[offset] = uint8(v) return base } -func (m *EventCreateTFDenom) Size() (n int) { +func (m *EventCreateDenom) Size() (n int) { if m == nil { return 0 } @@ -551,37 +582,45 @@ func (m *EventCreateTFDenom) Size() (n int) { return n } -func (m *EventMintTFDenom) Size() (n int) { +func (m *EventMint) Size() (n int) { if m == nil { return 0 } var l int _ = l - l = len(m.RecipientAddress) + l = len(m.Minter) if l > 0 { n += 1 + l + sovEvents(uint64(l)) } l = m.Amount.Size() n += 1 + l + sovEvents(uint64(l)) + l = len(m.Receiver) + if l > 0 { + n += 1 + l + sovEvents(uint64(l)) + } return n } -func (m *EventBurnDenom) Size() (n int) { +func (m *EventBurn) Size() (n int) { if m == nil { return 0 } var l int _ = l - l = len(m.BurnerAddress) + l = len(m.Burner) if l > 0 { n += 1 + l + sovEvents(uint64(l)) } l = m.Amount.Size() n += 1 + l + sovEvents(uint64(l)) + l = len(m.BurnFrom) + if l > 0 { + n += 1 + l + sovEvents(uint64(l)) + } return n } -func (m *EventChangeTFAdmin) Size() (n int) { +func (m *EventChangeAdmin) Size() (n int) { if m == nil { return 0 } @@ -598,7 +637,7 @@ func (m *EventChangeTFAdmin) Size() (n int) { return n } -func (m *EventSetTFDenomMetadata) Size() (n int) { +func (m *EventSetDenomMetadata) Size() (n int) { if m == nil { return 0 } @@ -619,7 +658,7 @@ func sovEvents(x uint64) (n int) { func sozEvents(x uint64) (n int) { return sovEvents(uint64((x << 1) ^ uint64((int64(x) >> 63)))) } -func (m *EventCreateTFDenom) Unmarshal(dAtA []byte) error { +func (m *EventCreateDenom) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -642,10 +681,10 @@ func (m *EventCreateTFDenom) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: EventCreateTFDenom: wiretype end group for non-group") + return fmt.Errorf("proto: EventCreateDenom: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: EventCreateTFDenom: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: EventCreateDenom: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -733,7 +772,7 @@ func (m *EventCreateTFDenom) Unmarshal(dAtA []byte) error { } return nil } -func (m *EventMintTFDenom) Unmarshal(dAtA []byte) error { +func (m *EventMint) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -756,15 +795,15 @@ func (m *EventMintTFDenom) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: EventMintTFDenom: wiretype end group for non-group") + return fmt.Errorf("proto: EventMint: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: EventMintTFDenom: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: EventMint: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field RecipientAddress", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Minter", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -792,7 +831,7 @@ func (m *EventMintTFDenom) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.RecipientAddress = string(dAtA[iNdEx:postIndex]) + m.Minter = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 2 { @@ -827,6 +866,38 @@ func (m *EventMintTFDenom) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Receiver", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Receiver = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipEvents(dAtA[iNdEx:]) @@ -848,7 +919,7 @@ func (m *EventMintTFDenom) Unmarshal(dAtA []byte) error { } return nil } -func (m *EventBurnDenom) Unmarshal(dAtA []byte) error { +func (m *EventBurn) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -871,15 +942,15 @@ func (m *EventBurnDenom) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: EventBurnDenom: wiretype end group for non-group") + return fmt.Errorf("proto: EventBurn: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: EventBurnDenom: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: EventBurn: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field BurnerAddress", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Burner", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -907,7 +978,7 @@ func (m *EventBurnDenom) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.BurnerAddress = string(dAtA[iNdEx:postIndex]) + m.Burner = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 2 { @@ -942,6 +1013,38 @@ func (m *EventBurnDenom) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field BurnFrom", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.BurnFrom = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipEvents(dAtA[iNdEx:]) @@ -963,7 +1066,7 @@ func (m *EventBurnDenom) Unmarshal(dAtA []byte) error { } return nil } -func (m *EventChangeTFAdmin) Unmarshal(dAtA []byte) error { +func (m *EventChangeAdmin) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -986,10 +1089,10 @@ func (m *EventChangeTFAdmin) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: EventChangeTFAdmin: wiretype end group for non-group") + return fmt.Errorf("proto: EventChangeAdmin: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: EventChangeTFAdmin: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: EventChangeAdmin: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -1077,7 +1180,7 @@ func (m *EventChangeTFAdmin) Unmarshal(dAtA []byte) error { } return nil } -func (m *EventSetTFDenomMetadata) Unmarshal(dAtA []byte) error { +func (m *EventSetDenomMetadata) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -1100,10 +1203,10 @@ func (m *EventSetTFDenomMetadata) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: EventSetTFDenomMetadata: wiretype end group for non-group") + return fmt.Errorf("proto: EventSetDenomMetadata: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: EventSetTFDenomMetadata: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: EventSetDenomMetadata: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: diff --git a/chain/tokenfactory/types/expected_keepers.go b/chain/tokenfactory/types/expected_keepers.go deleted file mode 100644 index 27c25b23..00000000 --- a/chain/tokenfactory/types/expected_keepers.go +++ /dev/null @@ -1,35 +0,0 @@ -package types - -import ( - "context" - - sdk "github.com/cosmos/cosmos-sdk/types" - banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" -) - -type BankKeeper interface { - // Methods imported from bank should be defined here - GetDenomMetaData(ctx context.Context, denom string) (banktypes.Metadata, bool) - SetDenomMetaData(ctx context.Context, denomMetaData banktypes.Metadata) - - HasSupply(ctx context.Context, denom string) bool - - SendCoinsFromModuleToAccount(ctx context.Context, senderModule string, recipientAddr sdk.AccAddress, amt sdk.Coins) error - SendCoinsFromAccountToModule(ctx context.Context, senderAddr sdk.AccAddress, recipientModule string, amt sdk.Coins) error - MintCoins(ctx context.Context, moduleName string, amt sdk.Coins) error - BurnCoins(ctx context.Context, moduleName string, amt sdk.Coins) error - - SendCoins(ctx context.Context, fromAddr sdk.AccAddress, toAddr sdk.AccAddress, amt sdk.Coins) error - HasBalance(ctx context.Context, addr sdk.AccAddress, amt sdk.Coin) bool - BlockedAddr(addr sdk.AccAddress) bool -} - -type AccountKeeper interface { - SetModuleAccount(ctx context.Context, macc sdk.ModuleAccountI) - NewAccount(ctx context.Context, acc sdk.AccountI) sdk.AccountI -} - -// CommunityPoolKeeper defines the contract needed to be fulfilled for community pool interactions. -type CommunityPoolKeeper interface { - FundCommunityPool(ctx context.Context, amount sdk.Coins, sender sdk.AccAddress) error -} diff --git a/chain/tokenfactory/types/genesis.go b/chain/tokenfactory/types/genesis.go deleted file mode 100644 index 3c4bdb6d..00000000 --- a/chain/tokenfactory/types/genesis.go +++ /dev/null @@ -1,51 +0,0 @@ -package types - -import ( - "cosmossdk.io/errors" - sdk "github.com/cosmos/cosmos-sdk/types" -) - -// this line is used by starport scaffolding # genesis/types/import - -// DefaultIndex is the default capability global index -const DefaultIndex uint64 = 1 - -// DefaultGenesis returns the default Capability genesis state -func DefaultGenesis() *GenesisState { - return &GenesisState{ - Params: DefaultParams(), - FactoryDenoms: []GenesisDenom{}, - } -} - -// Validate performs basic genesis state validation returning an error upon any -// failure. -func (gs GenesisState) Validate() error { - err := gs.Params.Validate() - if err != nil { - return err - } - - seenDenoms := map[string]bool{} - - for _, denom := range gs.GetFactoryDenoms() { - if seenDenoms[denom.GetDenom()] { - return errors.Wrapf(ErrInvalidGenesis, "duplicate denom: %s", denom.GetDenom()) - } - seenDenoms[denom.GetDenom()] = true - - _, _, err := DeconstructDenom(denom.GetDenom()) - if err != nil { - return err - } - - if denom.AuthorityMetadata.Admin != "" { - _, err = sdk.AccAddressFromBech32(denom.AuthorityMetadata.Admin) - if err != nil { - return errors.Wrapf(ErrInvalidAuthorityMetadata, "Invalid admin address (%s)", err) - } - } - } - - return nil -} diff --git a/chain/tokenfactory/types/gov.go b/chain/tokenfactory/types/gov.go deleted file mode 100644 index 346c24ae..00000000 --- a/chain/tokenfactory/types/gov.go +++ /dev/null @@ -1,54 +0,0 @@ -package types - -import ( - errorsmod "cosmossdk.io/errors" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" - govtypes "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" -) - -const ( - ProposalTypeUpdateDenomsMetaData = "UpdateDenomsMetaData" -) - -func init() { - govtypes.RegisterProposalType(ProposalTypeUpdateDenomsMetaData) -} - -var ( - _ govtypes.Content = &UpdateDenomsMetadataProposal{} -) - -func NewUpdateDenomsMetadataProposal(title, description string, metadatas []banktypes.Metadata) govtypes.Content { - return &UpdateDenomsMetadataProposal{ - Title: title, - Description: description, - Metadatas: metadatas, - } -} - -func (p *UpdateDenomsMetadataProposal) GetTitle() string { return p.Title } - -func (p *UpdateDenomsMetadataProposal) GetDescription() string { return p.Description } - -func (p *UpdateDenomsMetadataProposal) ProposalRoute() string { return RouterKey } - -func (p *UpdateDenomsMetadataProposal) ProposalType() string { - return ProposalTypeUpdateDenomsMetaData -} - -func (p *UpdateDenomsMetadataProposal) ValidateBasic() error { - err := govtypes.ValidateAbstract(p) - if err != nil { - return err - } - - for idx := range p.Metadatas { - metadata := p.Metadatas[idx] - if metadata.Base == "" { - return errorsmod.Wrapf(sdkerrors.ErrInvalidRequest, "invalid denom (%s)", metadata.Base) - } - } - - return nil -} diff --git a/chain/tokenfactory/types/gov.pb.go b/chain/tokenfactory/types/gov.pb.go deleted file mode 100644 index 0a090625..00000000 --- a/chain/tokenfactory/types/gov.pb.go +++ /dev/null @@ -1,465 +0,0 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: injective/tokenfactory/v1beta1/gov.proto - -package types - -import ( - fmt "fmt" - types "github.com/cosmos/cosmos-sdk/x/bank/types" - _ "github.com/cosmos/gogoproto/gogoproto" - proto "github.com/cosmos/gogoproto/proto" - io "io" - math "math" - math_bits "math/bits" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package - -type UpdateDenomsMetadataProposal struct { - Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"` - Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` - Metadatas []types.Metadata `protobuf:"bytes,3,rep,name=metadatas,proto3" json:"metadatas"` - Deposit string `protobuf:"bytes,4,opt,name=deposit,proto3" json:"deposit,omitempty" yaml:"deposit"` -} - -func (m *UpdateDenomsMetadataProposal) Reset() { *m = UpdateDenomsMetadataProposal{} } -func (m *UpdateDenomsMetadataProposal) String() string { return proto.CompactTextString(m) } -func (*UpdateDenomsMetadataProposal) ProtoMessage() {} -func (*UpdateDenomsMetadataProposal) Descriptor() ([]byte, []int) { - return fileDescriptor_2c4dd8ce2ae85492, []int{0} -} -func (m *UpdateDenomsMetadataProposal) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *UpdateDenomsMetadataProposal) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_UpdateDenomsMetadataProposal.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *UpdateDenomsMetadataProposal) XXX_Merge(src proto.Message) { - xxx_messageInfo_UpdateDenomsMetadataProposal.Merge(m, src) -} -func (m *UpdateDenomsMetadataProposal) XXX_Size() int { - return m.Size() -} -func (m *UpdateDenomsMetadataProposal) XXX_DiscardUnknown() { - xxx_messageInfo_UpdateDenomsMetadataProposal.DiscardUnknown(m) -} - -var xxx_messageInfo_UpdateDenomsMetadataProposal proto.InternalMessageInfo - -func init() { - proto.RegisterType((*UpdateDenomsMetadataProposal)(nil), "injective.tokenfactory.v1beta1.UpdateDenomsMetadataProposal") -} - -func init() { - proto.RegisterFile("injective/tokenfactory/v1beta1/gov.proto", fileDescriptor_2c4dd8ce2ae85492) -} - -var fileDescriptor_2c4dd8ce2ae85492 = []byte{ - // 332 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x54, 0x91, 0xc1, 0x4e, 0xf2, 0x40, - 0x14, 0x85, 0xdb, 0x1f, 0x7e, 0x0d, 0x25, 0x71, 0xd1, 0xb0, 0x68, 0x88, 0x0e, 0x84, 0x15, 0x0b, - 0x9d, 0x09, 0xba, 0x63, 0x27, 0x71, 0x63, 0xa2, 0x89, 0x69, 0xe2, 0xc6, 0xdd, 0xb4, 0xbd, 0x96, - 0x91, 0xb6, 0x77, 0xd2, 0xb9, 0x90, 0xf0, 0x06, 0x2e, 0x7d, 0x04, 0x1f, 0x87, 0x8d, 0x09, 0x4b, - 0x57, 0xc4, 0xc0, 0x1b, 0xf8, 0x04, 0x86, 0xb6, 0x20, 0xee, 0x7a, 0x7a, 0xbe, 0x7b, 0xcf, 0xcd, - 0x19, 0xa7, 0xaf, 0xb2, 0x17, 0x08, 0x49, 0xcd, 0x40, 0x10, 0x4e, 0x20, 0x7b, 0x96, 0x21, 0x61, - 0x3e, 0x17, 0xb3, 0x41, 0x00, 0x24, 0x07, 0x22, 0xc6, 0x19, 0xd7, 0x39, 0x12, 0xba, 0x6c, 0x4f, - 0xf2, 0x43, 0x92, 0x57, 0x64, 0xbb, 0x15, 0x63, 0x8c, 0x05, 0x2a, 0xb6, 0x5f, 0xe5, 0x54, 0x9b, - 0x85, 0x68, 0x52, 0x34, 0x22, 0x90, 0xd9, 0x64, 0xbf, 0x74, 0x2b, 0x4a, 0xbf, 0xf7, 0x61, 0x3b, - 0xa7, 0x8f, 0x3a, 0x92, 0x04, 0x37, 0x90, 0x61, 0x6a, 0xee, 0x81, 0x64, 0x24, 0x49, 0x3e, 0xe4, - 0xa8, 0xd1, 0xc8, 0xc4, 0x6d, 0x39, 0xff, 0x49, 0x51, 0x02, 0x9e, 0xdd, 0xb5, 0xfb, 0x0d, 0xbf, - 0x14, 0x6e, 0xd7, 0x69, 0x46, 0x60, 0xc2, 0x5c, 0x69, 0x52, 0x98, 0x79, 0xff, 0x0a, 0xef, 0xf0, - 0x97, 0x7b, 0xed, 0x34, 0xd2, 0x6a, 0x97, 0xf1, 0x6a, 0xdd, 0x5a, 0xbf, 0x79, 0x79, 0xc6, 0xcb, - 0x63, 0x78, 0x91, 0x5f, 0x1d, 0xc3, 0x77, 0x89, 0xa3, 0xfa, 0x62, 0xd5, 0xb1, 0xfc, 0xdf, 0x29, - 0xf7, 0xdc, 0x39, 0x8e, 0x40, 0xa3, 0x51, 0xe4, 0xd5, 0xb7, 0x01, 0x23, 0xf7, 0x7b, 0xd5, 0x39, - 0x99, 0xcb, 0x34, 0x19, 0xf6, 0x2a, 0xa3, 0xe7, 0xef, 0x90, 0x61, 0xfd, 0xf5, 0xbd, 0x63, 0x8d, - 0x92, 0xc5, 0x9a, 0xd9, 0xcb, 0x35, 0xb3, 0xbf, 0xd6, 0xcc, 0x7e, 0xdb, 0x30, 0x6b, 0xb9, 0x61, - 0xd6, 0xe7, 0x86, 0x59, 0x4f, 0x7e, 0xac, 0x68, 0x3c, 0x0d, 0x78, 0x88, 0xa9, 0xb8, 0xdd, 0x55, - 0x79, 0x27, 0x03, 0x23, 0xf6, 0xc5, 0x5e, 0x84, 0x98, 0xc3, 0xa1, 0x1c, 0x4b, 0x95, 0x89, 0x14, - 0xa3, 0x69, 0x02, 0xe6, 0xef, 0xfb, 0xd0, 0x5c, 0x83, 0x09, 0x8e, 0x8a, 0x12, 0xaf, 0x7e, 0x02, - 0x00, 0x00, 0xff, 0xff, 0x31, 0xc4, 0xfd, 0x93, 0xc6, 0x01, 0x00, 0x00, -} - -func (m *UpdateDenomsMetadataProposal) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *UpdateDenomsMetadataProposal) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *UpdateDenomsMetadataProposal) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Deposit) > 0 { - i -= len(m.Deposit) - copy(dAtA[i:], m.Deposit) - i = encodeVarintGov(dAtA, i, uint64(len(m.Deposit))) - i-- - dAtA[i] = 0x22 - } - if len(m.Metadatas) > 0 { - for iNdEx := len(m.Metadatas) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.Metadatas[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGov(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x1a - } - } - if len(m.Description) > 0 { - i -= len(m.Description) - copy(dAtA[i:], m.Description) - i = encodeVarintGov(dAtA, i, uint64(len(m.Description))) - i-- - dAtA[i] = 0x12 - } - if len(m.Title) > 0 { - i -= len(m.Title) - copy(dAtA[i:], m.Title) - i = encodeVarintGov(dAtA, i, uint64(len(m.Title))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func encodeVarintGov(dAtA []byte, offset int, v uint64) int { - offset -= sovGov(v) - base := offset - for v >= 1<<7 { - dAtA[offset] = uint8(v&0x7f | 0x80) - v >>= 7 - offset++ - } - dAtA[offset] = uint8(v) - return base -} -func (m *UpdateDenomsMetadataProposal) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Title) - if l > 0 { - n += 1 + l + sovGov(uint64(l)) - } - l = len(m.Description) - if l > 0 { - n += 1 + l + sovGov(uint64(l)) - } - if len(m.Metadatas) > 0 { - for _, e := range m.Metadatas { - l = e.Size() - n += 1 + l + sovGov(uint64(l)) - } - } - l = len(m.Deposit) - if l > 0 { - n += 1 + l + sovGov(uint64(l)) - } - return n -} - -func sovGov(x uint64) (n int) { - return (math_bits.Len64(x|1) + 6) / 7 -} -func sozGov(x uint64) (n int) { - return sovGov(uint64((x << 1) ^ uint64((int64(x) >> 63)))) -} -func (m *UpdateDenomsMetadataProposal) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGov - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: UpdateDenomsMetadataProposal: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: UpdateDenomsMetadataProposal: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Title", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGov - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGov - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGov - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Title = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Description", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGov - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGov - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGov - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Description = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Metadatas", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGov - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGov - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGov - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Metadatas = append(m.Metadatas, types.Metadata{}) - if err := m.Metadatas[len(m.Metadatas)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Deposit", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGov - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGov - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGov - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Deposit = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipGov(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthGov - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func skipGov(dAtA []byte) (n int, err error) { - l := len(dAtA) - iNdEx := 0 - depth := 0 - for iNdEx < l { - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowGov - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - wireType := int(wire & 0x7) - switch wireType { - case 0: - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowGov - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - iNdEx++ - if dAtA[iNdEx-1] < 0x80 { - break - } - } - case 1: - iNdEx += 8 - case 2: - var length int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowGov - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - length |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if length < 0 { - return 0, ErrInvalidLengthGov - } - iNdEx += length - case 3: - depth++ - case 4: - if depth == 0 { - return 0, ErrUnexpectedEndOfGroupGov - } - depth-- - case 5: - iNdEx += 4 - default: - return 0, fmt.Errorf("proto: illegal wireType %d", wireType) - } - if iNdEx < 0 { - return 0, ErrInvalidLengthGov - } - if depth == 0 { - return iNdEx, nil - } - } - return 0, io.ErrUnexpectedEOF -} - -var ( - ErrInvalidLengthGov = fmt.Errorf("proto: negative length found during unmarshaling") - ErrIntOverflowGov = fmt.Errorf("proto: integer overflow") - ErrUnexpectedEndOfGroupGov = fmt.Errorf("proto: unexpected end of group") -) diff --git a/chain/tokenfactory/types/keys.go b/chain/tokenfactory/types/keys.go deleted file mode 100644 index 6d8aed08..00000000 --- a/chain/tokenfactory/types/keys.go +++ /dev/null @@ -1,50 +0,0 @@ -package types - -import ( - "strings" -) - -const ( - // ModuleName defines the module name - ModuleName = "tokenfactory" - - // StoreKey defines the primary module store key - StoreKey = ModuleName - - // RouterKey is the message route for slashing - RouterKey = ModuleName - - // QuerierRoute defines the module's query routing key - QuerierRoute = ModuleName - - // MemStoreKey defines the in-memory store key - MemStoreKey = "mem_tokenfactory" -) - -// KeySeparator is used to combine parts of the keys in the store -const KeySeparator = "|" - -var ( - DenomAuthorityMetadataKey = []byte{0x01} - DenomsPrefixKey = []byte{0x02} - CreatorPrefixKey = []byte{0x03} - AdminPrefixKey = []byte{0x04} - ParamsKey = []byte{0x05} -) - -// GetDenomPrefixStore returns the store prefix where all the data associated with a specific denom -// is stored -func GetDenomPrefixStore(denom string) []byte { - return []byte(strings.Join([]string{string(DenomsPrefixKey), denom, ""}, KeySeparator)) -} - -// GetCreatorPrefix returns the store prefix where the list of the denoms created by a specific -// creator are stored. -func GetCreatorPrefix(creator string) []byte { - return []byte(strings.Join([]string{string(CreatorPrefixKey), creator, ""}, KeySeparator)) -} - -// GetCreatorsPrefix returns the store prefix where a list of all creator addresses are stored -func GetCreatorsPrefix() []byte { - return append(CreatorPrefixKey, []byte(KeySeparator)...) -} diff --git a/chain/tokenfactory/types/msgs.go b/chain/tokenfactory/types/msgs.go deleted file mode 100644 index c3a62338..00000000 --- a/chain/tokenfactory/types/msgs.go +++ /dev/null @@ -1,288 +0,0 @@ -package types - -import ( - "cosmossdk.io/errors" - "cosmossdk.io/math" - "github.com/InjectiveLabs/sdk-go/chain/types" - sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" - "strings" -) - -// constants -const ( - TypeMsgCreateDenom = "create_denom" - TypeMsgMint = "tf_mint" - TypeMsgBurn = "tf_burn" - TypeMsgChangeAdmin = "change_admin" - TypeMsgSetDenomMetadata = "set_denom_metadata" - TypeMsgUpdateParams = "update_params" -) - -var _ sdk.Msg = &MsgCreateDenom{} -var _ sdk.Msg = &MsgMint{} -var _ sdk.Msg = &MsgBurn{} -var _ sdk.Msg = &MsgSetDenomMetadata{} -var _ sdk.Msg = &MsgChangeAdmin{} -var _ sdk.Msg = &MsgUpdateParams{} - -func (m MsgUpdateParams) Route() string { return RouterKey } - -func (m MsgUpdateParams) Type() string { return TypeMsgUpdateParams } - -func (m MsgUpdateParams) ValidateBasic() error { - if _, err := sdk.AccAddressFromBech32(m.Authority); err != nil { - return errors.Wrap(err, "invalid authority address") - } - - if err := m.Params.Validate(); err != nil { - return err - } - - return nil -} - -func (m *MsgUpdateParams) GetSignBytes() []byte { - return sdk.MustSortJSON(ModuleCdc.MustMarshal(m)) -} - -func (m MsgUpdateParams) GetSigners() []sdk.AccAddress { - addr, _ := sdk.AccAddressFromBech32(m.Authority) - return []sdk.AccAddress{addr} -} - -// NewMsgCreateDenom creates a msg to create a new denom -func NewMsgCreateDenom(sender, subdenom, name, symbol string, decimals uint32) *MsgCreateDenom { - return &MsgCreateDenom{ - Sender: sender, - Subdenom: subdenom, - Name: name, - Symbol: symbol, - Decimals: decimals, - } -} - -func (m MsgCreateDenom) Route() string { return RouterKey } -func (m MsgCreateDenom) Type() string { return TypeMsgCreateDenom } -func (m MsgCreateDenom) ValidateBasic() error { - _, err := sdk.AccAddressFromBech32(m.Sender) - if err != nil { - return errors.Wrapf(sdkerrors.ErrInvalidAddress, "Invalid sender address (%s)", err) - } - - _, err = GetTokenDenom(m.Sender, m.Subdenom) - if err != nil { - return errors.Wrap(ErrInvalidDenom, err.Error()) - } - - return nil -} - -func (m *MsgCreateDenom) GetSignBytes() []byte { - return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(m)) -} - -func (m MsgCreateDenom) GetSigners() []sdk.AccAddress { - sender, _ := sdk.AccAddressFromBech32(m.Sender) - return []sdk.AccAddress{sender} -} - -// NewMsgMint creates a message to mint tokens -func NewMsgMint(sender string, amount sdk.Coin) *MsgMint { - return &MsgMint{ - Sender: sender, - Amount: amount, - } -} - -func (m MsgMint) Route() string { return RouterKey } -func (m MsgMint) Type() string { return TypeMsgMint } -func (m MsgMint) ValidateBasic() error { - _, err := sdk.AccAddressFromBech32(m.Sender) - if err != nil { - return errors.Wrapf(sdkerrors.ErrInvalidAddress, "Invalid sender address (%s)", err) - } - - if !m.Amount.IsValid() || m.Amount.Amount.Equal(math.ZeroInt()) { - return errors.Wrap(sdkerrors.ErrInvalidCoins, m.Amount.String()) - } - - return nil -} - -func (m MsgMint) GetSignBytes() []byte { - return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(&m)) -} - -func (m MsgMint) GetSigners() []sdk.AccAddress { - sender, _ := sdk.AccAddressFromBech32(m.Sender) - return []sdk.AccAddress{sender} -} - -// NewMsgBurn creates a message to burn tokens -func NewMsgBurn(sender string, amount sdk.Coin) *MsgBurn { - return &MsgBurn{ - Sender: sender, - Amount: amount, - } -} - -func (m MsgBurn) Route() string { return RouterKey } -func (m MsgBurn) Type() string { return TypeMsgBurn } -func (m MsgBurn) ValidateBasic() error { - _, err := sdk.AccAddressFromBech32(m.Sender) - if err != nil { - return errors.Wrapf(sdkerrors.ErrInvalidAddress, "Invalid sender address (%s)", err) - } - - if !m.Amount.IsValid() || !m.Amount.IsPositive() { - return errors.Wrap(sdkerrors.ErrInvalidCoins, m.Amount.String()) - } - - return nil -} - -func (m *MsgBurn) GetSignBytes() []byte { - return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(m)) -} - -func (m MsgBurn) GetSigners() []sdk.AccAddress { - sender, _ := sdk.AccAddressFromBech32(m.Sender) - return []sdk.AccAddress{sender} -} - -// NewMsgChangeAdmin creates a message to change the admin -func NewMsgChangeAdmin(sender, denom, newAdmin string) *MsgChangeAdmin { - return &MsgChangeAdmin{ - Sender: sender, - Denom: denom, - NewAdmin: newAdmin, - } -} - -func (m MsgChangeAdmin) Route() string { return RouterKey } -func (m MsgChangeAdmin) Type() string { return TypeMsgChangeAdmin } -func (m MsgChangeAdmin) ValidateBasic() error { - _, err := sdk.AccAddressFromBech32(m.Sender) - if err != nil { - return errors.Wrapf(sdkerrors.ErrInvalidAddress, "Invalid sender address (%s)", err) - } - - _, err = sdk.AccAddressFromBech32(m.NewAdmin) - if err != nil { - return errors.Wrapf(sdkerrors.ErrInvalidAddress, "Invalid address (%s)", err) - } - - _, _, err = DeconstructDenom(m.Denom) - if err != nil { - return err - } - - return nil -} - -func (m *MsgChangeAdmin) GetSignBytes() []byte { - return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(m)) -} - -func (m MsgChangeAdmin) GetSigners() []sdk.AccAddress { - sender, _ := sdk.AccAddressFromBech32(m.Sender) - return []sdk.AccAddress{sender} -} - -// NewMsgSetDenomMetadata creates a message to set the denom metadata -func NewMsgSetDenomMetadata(sender string, metadata banktypes.Metadata) *MsgSetDenomMetadata { - return &MsgSetDenomMetadata{ - Sender: sender, - Metadata: metadata, - } -} - -func (m MsgSetDenomMetadata) Route() string { return RouterKey } -func (m MsgSetDenomMetadata) Type() string { return TypeMsgSetDenomMetadata } -func (m MsgSetDenomMetadata) ValidateBasic() error { - _, err := sdk.AccAddressFromBech32(m.Sender) - if err != nil { - return errors.Wrapf(sdkerrors.ErrInvalidAddress, "Invalid sender address (%s)", err) - } - - err = m.Metadata.Validate() - if err != nil { - return err - } - - if m.Metadata.Base == types.InjectiveCoin { - return errors.Wrap(ErrInvalidDenom, "cannot set metadata for INJ") - } - - err = sdk.ValidateDenom(m.Metadata.Base) - if err != nil { - return err - } - - // If denom metadata is for a TokenFactory denom, run the different components validations - strParts := strings.Split(m.Metadata.Base, "/") - if len(strParts) > 2 { - _, _, err = DeconstructDenom(m.Metadata.Base) - if err != nil { - return err - } - } - - return nil -} - -func (m *MsgSetDenomMetadata) GetSignBytes() []byte { - return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(m)) -} - -func (m MsgSetDenomMetadata) GetSigners() []sdk.AccAddress { - sender, _ := sdk.AccAddressFromBech32(m.Sender) - return []sdk.AccAddress{sender} -} - -// var _ sdk.Msg = &MsgForceTransfer{} - -// // NewMsgForceTransfer creates a transfer funds from one account to another -// func NewMsgForceTransfer(sender string, amount sdk.Coin, fromAddr, toAddr string) *MsgForceTransfer { -// return &MsgForceTransfer{ -// Sender: sender, -// Amount: amount, -// TransferFromAddress: fromAddr, -// TransferToAddress: toAddr, -// } -// } - -// func (m MsgForceTransfer) Route() string { return RouterKey } -// func (m MsgForceTransfer) Type() string { return TypeMsgForceTransfer } -// func (m MsgForceTransfer) ValidateBasic() error { -// _, err := sdk.AccAddressFromBech32(m.Sender) -// if err != nil { -// return errors.Wrapf(sdkerrors.ErrInvalidAddress, "Invalid sender address (%s)", err) -// } - -// _, err = sdk.AccAddressFromBech32(m.TransferFromAddress) -// if err != nil { -// return errors.Wrapf(sdkerrors.ErrInvalidAddress, "Invalid address (%s)", err) -// } -// _, err = sdk.AccAddressFromBech32(m.TransferToAddress) -// if err != nil { -// return errors.Wrapf(sdkerrors.ErrInvalidAddress, "Invalid address (%s)", err) -// } - -// if !m.Amount.IsValid() { -// return errors.Wrap(sdkerrors.ErrInvalidCoins, m.Amount.String()) -// } - -// return nil -// } - -// func (m MsgForceTransfer) GetSignBytes() []byte { -// return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(&m)) -// } - -// func (m MsgForceTransfer) GetSigners() []sdk.AccAddress { -// sender, _ := sdk.AccAddressFromBech32(m.Sender) -// return []sdk.AccAddress{sender} -// } diff --git a/chain/tokenfactory/types/params.go b/chain/tokenfactory/types/params.go deleted file mode 100644 index f1d52477..00000000 --- a/chain/tokenfactory/types/params.go +++ /dev/null @@ -1,63 +0,0 @@ -package types - -import ( - "fmt" - - "cosmossdk.io/math" - sdk "github.com/cosmos/cosmos-sdk/types" - paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" - - chaintypes "github.com/InjectiveLabs/sdk-go/chain/types" -) - -// Parameter store keys. -var ( - KeyDenomCreationFee = []byte("DenomCreationFee") -) - -// ParamTable for gamm module. -func ParamKeyTable() paramtypes.KeyTable { - return paramtypes.NewKeyTable().RegisterParamSet(&Params{}) -} - -func NewParams(denomCreationFee sdk.Coins) Params { - return Params{ - DenomCreationFee: denomCreationFee, - } -} - -// default gamm module parameters. -func DefaultParams() Params { - return Params{ - DenomCreationFee: sdk.NewCoins(sdk.NewCoin(chaintypes.InjectiveCoin, math.NewIntWithDecimal(10, 18))), // 10 INJ - } -} - -// validate params. -func (p Params) Validate() error { - if err := validateDenomCreationFee(p.DenomCreationFee); err != nil { - return err - } - - return nil -} - -// Implements params.ParamSet. -func (p *Params) ParamSetPairs() paramtypes.ParamSetPairs { - return paramtypes.ParamSetPairs{ - paramtypes.NewParamSetPair(KeyDenomCreationFee, &p.DenomCreationFee, validateDenomCreationFee), - } -} - -func validateDenomCreationFee(i interface{}) error { - v, ok := i.(sdk.Coins) - if !ok { - return fmt.Errorf("invalid parameter type: %T", i) - } - - if v.Validate() != nil { - return fmt.Errorf("invalid denom creation fee: %+v", i) - } - - return nil -} diff --git a/chain/tokenfactory/types/tx.pb.go b/chain/tokenfactory/types/tx.pb.go index 10dc706d..5bcfbf5a 100644 --- a/chain/tokenfactory/types/tx.pb.go +++ b/chain/tokenfactory/types/tx.pb.go @@ -49,6 +49,8 @@ type MsgCreateDenom struct { Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty" yaml:"name"` Symbol string `protobuf:"bytes,4,opt,name=symbol,proto3" json:"symbol,omitempty" yaml:"symbol"` Decimals uint32 `protobuf:"varint,5,opt,name=decimals,proto3" json:"decimals,omitempty" yaml:"decimals"` + // true if admins are allowed to burn tokens from other addresses + AllowAdminBurn bool `protobuf:"varint,6,opt,name=allow_admin_burn,json=allowAdminBurn,proto3" json:"allow_admin_burn,omitempty" yaml:"allow_admin_burn"` } func (m *MsgCreateDenom) Reset() { *m = MsgCreateDenom{} } @@ -119,6 +121,13 @@ func (m *MsgCreateDenom) GetDecimals() uint32 { return 0 } +func (m *MsgCreateDenom) GetAllowAdminBurn() bool { + if m != nil { + return m.AllowAdminBurn + } + return false +} + // MsgCreateDenomResponse is the return value of MsgCreateDenom // It returns the full string of the newly created denom type MsgCreateDenomResponse struct { @@ -165,11 +174,12 @@ func (m *MsgCreateDenomResponse) GetNewTokenDenom() string { return "" } -// MsgMint is the sdk.Msg type for allowing an admin account to mint -// more of a token. For now, we only support minting to the sender account +// MsgMint is the sdk.Msg type for allowing an admin account or other permitted accounts to mint +// more of a token. type MsgMint struct { - Sender string `protobuf:"bytes,1,opt,name=sender,proto3" json:"sender,omitempty" yaml:"sender"` - Amount types.Coin `protobuf:"bytes,2,opt,name=amount,proto3" json:"amount" yaml:"amount"` + Sender string `protobuf:"bytes,1,opt,name=sender,proto3" json:"sender,omitempty" yaml:"sender"` + Amount types.Coin `protobuf:"bytes,2,opt,name=amount,proto3" json:"amount" yaml:"amount"` + Receiver string `protobuf:"bytes,3,opt,name=receiver,proto3" json:"receiver,omitempty" yaml:"receiver"` } func (m *MsgMint) Reset() { *m = MsgMint{} } @@ -219,6 +229,13 @@ func (m *MsgMint) GetAmount() types.Coin { return types.Coin{} } +func (m *MsgMint) GetReceiver() string { + if m != nil { + return m.Receiver + } + return "" +} + type MsgMintResponse struct { } @@ -256,10 +273,11 @@ func (m *MsgMintResponse) XXX_DiscardUnknown() { var xxx_messageInfo_MsgMintResponse proto.InternalMessageInfo // MsgBurn is the sdk.Msg type for allowing an admin account to burn -// a token. For now, we only support burning from the sender account. +// a token. type MsgBurn struct { - Sender string `protobuf:"bytes,1,opt,name=sender,proto3" json:"sender,omitempty" yaml:"sender"` - Amount types.Coin `protobuf:"bytes,2,opt,name=amount,proto3" json:"amount" yaml:"amount"` + Sender string `protobuf:"bytes,1,opt,name=sender,proto3" json:"sender,omitempty" yaml:"sender"` + Amount types.Coin `protobuf:"bytes,2,opt,name=amount,proto3" json:"amount" yaml:"amount"` + BurnFromAddress string `protobuf:"bytes,3,opt,name=burnFromAddress,proto3" json:"burnFromAddress,omitempty" yaml:"burn_from_address"` } func (m *MsgBurn) Reset() { *m = MsgBurn{} } @@ -309,6 +327,13 @@ func (m *MsgBurn) GetAmount() types.Coin { return types.Coin{} } +func (m *MsgBurn) GetBurnFromAddress() string { + if m != nil { + return m.BurnFromAddress + } + return "" +} + type MsgBurnResponse struct { } @@ -448,8 +473,9 @@ var xxx_messageInfo_MsgChangeAdminResponse proto.InternalMessageInfo // MsgSetDenomMetadata is the sdk.Msg type for allowing an admin account to set // the denom's bank metadata type MsgSetDenomMetadata struct { - Sender string `protobuf:"bytes,1,opt,name=sender,proto3" json:"sender,omitempty" yaml:"sender"` - Metadata types1.Metadata `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata" yaml:"metadata"` + Sender string `protobuf:"bytes,1,opt,name=sender,proto3" json:"sender,omitempty" yaml:"sender"` + Metadata types1.Metadata `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata" yaml:"metadata"` + AdminBurnDisabled *MsgSetDenomMetadata_AdminBurnDisabled `protobuf:"bytes,3,opt,name=admin_burn_disabled,json=adminBurnDisabled,proto3" json:"admin_burn_disabled,omitempty" yaml:"admin_burn_disabled"` } func (m *MsgSetDenomMetadata) Reset() { *m = MsgSetDenomMetadata{} } @@ -499,6 +525,58 @@ func (m *MsgSetDenomMetadata) GetMetadata() types1.Metadata { return types1.Metadata{} } +func (m *MsgSetDenomMetadata) GetAdminBurnDisabled() *MsgSetDenomMetadata_AdminBurnDisabled { + if m != nil { + return m.AdminBurnDisabled + } + return nil +} + +type MsgSetDenomMetadata_AdminBurnDisabled struct { + // true if the admin burn capability should be disabled + ShouldDisable bool `protobuf:"varint,1,opt,name=should_disable,json=shouldDisable,proto3" json:"should_disable,omitempty" yaml:"should_disable"` +} + +func (m *MsgSetDenomMetadata_AdminBurnDisabled) Reset() { *m = MsgSetDenomMetadata_AdminBurnDisabled{} } +func (m *MsgSetDenomMetadata_AdminBurnDisabled) String() string { return proto.CompactTextString(m) } +func (*MsgSetDenomMetadata_AdminBurnDisabled) ProtoMessage() {} +func (*MsgSetDenomMetadata_AdminBurnDisabled) Descriptor() ([]byte, []int) { + return fileDescriptor_b0b26fd7f19ce3c4, []int{8, 0} +} +func (m *MsgSetDenomMetadata_AdminBurnDisabled) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgSetDenomMetadata_AdminBurnDisabled) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgSetDenomMetadata_AdminBurnDisabled.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgSetDenomMetadata_AdminBurnDisabled) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgSetDenomMetadata_AdminBurnDisabled.Merge(m, src) +} +func (m *MsgSetDenomMetadata_AdminBurnDisabled) XXX_Size() int { + return m.Size() +} +func (m *MsgSetDenomMetadata_AdminBurnDisabled) XXX_DiscardUnknown() { + xxx_messageInfo_MsgSetDenomMetadata_AdminBurnDisabled.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgSetDenomMetadata_AdminBurnDisabled proto.InternalMessageInfo + +func (m *MsgSetDenomMetadata_AdminBurnDisabled) GetShouldDisable() bool { + if m != nil { + return m.ShouldDisable + } + return false +} + // MsgSetDenomMetadataResponse defines the response structure for an executed // MsgSetDenomMetadata message. type MsgSetDenomMetadataResponse struct { @@ -639,6 +717,7 @@ func init() { proto.RegisterType((*MsgChangeAdmin)(nil), "injective.tokenfactory.v1beta1.MsgChangeAdmin") proto.RegisterType((*MsgChangeAdminResponse)(nil), "injective.tokenfactory.v1beta1.MsgChangeAdminResponse") proto.RegisterType((*MsgSetDenomMetadata)(nil), "injective.tokenfactory.v1beta1.MsgSetDenomMetadata") + proto.RegisterType((*MsgSetDenomMetadata_AdminBurnDisabled)(nil), "injective.tokenfactory.v1beta1.MsgSetDenomMetadata.AdminBurnDisabled") proto.RegisterType((*MsgSetDenomMetadataResponse)(nil), "injective.tokenfactory.v1beta1.MsgSetDenomMetadataResponse") proto.RegisterType((*MsgUpdateParams)(nil), "injective.tokenfactory.v1beta1.MsgUpdateParams") proto.RegisterType((*MsgUpdateParamsResponse)(nil), "injective.tokenfactory.v1beta1.MsgUpdateParamsResponse") @@ -649,63 +728,74 @@ func init() { } var fileDescriptor_b0b26fd7f19ce3c4 = []byte{ - // 888 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x56, 0xbd, 0x6f, 0xdb, 0x46, - 0x14, 0x37, 0x13, 0x49, 0xb5, 0xcf, 0x71, 0x65, 0x33, 0x6e, 0x2c, 0x33, 0x08, 0x15, 0x30, 0x45, - 0x3e, 0x1c, 0x88, 0x84, 0x62, 0x20, 0x41, 0xd5, 0x29, 0x4a, 0x86, 0x16, 0xa8, 0x80, 0x82, 0x69, - 0x97, 0xa2, 0x80, 0x7b, 0x24, 0xaf, 0x14, 0x6b, 0xf1, 0x4e, 0xe0, 0x1d, 0xed, 0x68, 0x2b, 0x8a, - 0x4e, 0x9d, 0xfa, 0x37, 0x74, 0xed, 0xe2, 0xa1, 0x7b, 0x57, 0x03, 0x1d, 0x1a, 0x74, 0xea, 0x24, - 0x14, 0xf6, 0xe0, 0x5d, 0x7f, 0x41, 0x71, 0x1f, 0xa4, 0x28, 0xa9, 0x6a, 0xa8, 0x4e, 0x5d, 0x24, - 0xf2, 0xde, 0xef, 0x7d, 0xfc, 0x7e, 0xf7, 0xde, 0x93, 0xc0, 0x83, 0x08, 0x7f, 0x83, 0x7c, 0x16, - 0x9d, 0x20, 0x87, 0x91, 0x63, 0x84, 0xbf, 0x86, 0x3e, 0x23, 0xc9, 0xc8, 0x39, 0x69, 0x7b, 0x88, - 0xc1, 0xb6, 0xc3, 0x5e, 0xdb, 0xc3, 0x84, 0x30, 0xa2, 0x9b, 0x39, 0xd0, 0x2e, 0x02, 0x6d, 0x05, - 0x34, 0x76, 0x43, 0x12, 0x12, 0x01, 0x75, 0xf8, 0x93, 0xf4, 0x32, 0x4c, 0x9f, 0xd0, 0x98, 0x50, - 0xc7, 0x83, 0x14, 0xe5, 0x31, 0x7d, 0x12, 0xe1, 0x05, 0x3b, 0x3e, 0xce, 0xed, 0xfc, 0x45, 0xd9, - 0xf7, 0x94, 0x3d, 0xa6, 0xa1, 0x73, 0xd2, 0xe6, 0x5f, 0xca, 0xb0, 0x2f, 0x0d, 0x47, 0x32, 0xa3, - 0x7c, 0x51, 0xa6, 0xc7, 0x6f, 0xa1, 0x34, 0x84, 0x09, 0x8c, 0x33, 0xf0, 0x0e, 0x8c, 0x23, 0x4c, - 0x1c, 0xf1, 0x29, 0x8f, 0xac, 0x9f, 0xae, 0x81, 0x77, 0x7b, 0x34, 0x7c, 0x91, 0x20, 0xc8, 0xd0, - 0x4b, 0x84, 0x49, 0xac, 0x3f, 0x02, 0x35, 0x8a, 0x70, 0x80, 0x92, 0x86, 0x76, 0x57, 0x7b, 0xb8, - 0xd1, 0xdd, 0x99, 0x8c, 0x9b, 0x5b, 0x23, 0x18, 0x0f, 0x3a, 0x96, 0x3c, 0xb7, 0x5c, 0x05, 0xd0, - 0x1d, 0xb0, 0x4e, 0x53, 0x2f, 0xe0, 0x6e, 0x8d, 0x6b, 0x02, 0x7c, 0x73, 0x32, 0x6e, 0xd6, 0x15, - 0x58, 0x59, 0x2c, 0x37, 0x07, 0xe9, 0xf7, 0x40, 0x05, 0xc3, 0x18, 0x35, 0xae, 0x0b, 0x70, 0x7d, - 0x32, 0x6e, 0x6e, 0x4a, 0x30, 0x3f, 0xb5, 0x5c, 0x61, 0x14, 0x05, 0x8c, 0x62, 0x8f, 0x0c, 0x1a, - 0x95, 0x85, 0x02, 0xc4, 0x39, 0x2f, 0x40, 0x3c, 0xf0, 0x02, 0x02, 0xe4, 0x47, 0x31, 0x1c, 0xd0, - 0x46, 0xf5, 0xae, 0xf6, 0x70, 0xab, 0x58, 0x40, 0x66, 0xb1, 0xdc, 0x1c, 0xd4, 0x39, 0xfc, 0xee, - 0xea, 0xec, 0x40, 0x95, 0xff, 0xc3, 0xd5, 0xd9, 0xc1, 0xbd, 0x25, 0xfa, 0xf9, 0x42, 0x90, 0x96, - 0x24, 0xf0, 0x25, 0xb8, 0x35, 0xab, 0x91, 0x8b, 0xe8, 0x90, 0x60, 0x8a, 0xf4, 0x2e, 0xa8, 0x63, - 0x74, 0x7a, 0x24, 0x5c, 0x8f, 0xa4, 0x0e, 0x52, 0x34, 0x63, 0x32, 0x6e, 0xde, 0x52, 0xd4, 0x66, - 0x01, 0x96, 0xbb, 0x85, 0xd1, 0xe9, 0x67, 0xfc, 0x40, 0xc4, 0xb2, 0x7e, 0xd6, 0xc0, 0x3b, 0x3d, - 0x1a, 0xf6, 0x22, 0xcc, 0x56, 0xd1, 0xfe, 0x23, 0x50, 0x83, 0x31, 0x49, 0x31, 0x13, 0xca, 0x6f, - 0x3e, 0xd9, 0xb7, 0x55, 0x63, 0xf0, 0xf6, 0xcb, 0x3a, 0xd5, 0x7e, 0x41, 0x22, 0xdc, 0x7d, 0xef, - 0x7c, 0xdc, 0x5c, 0x9b, 0x46, 0x92, 0x6e, 0x96, 0xab, 0xfc, 0x3b, 0x8f, 0xe7, 0x34, 0xb9, 0xbd, - 0x44, 0x93, 0x38, 0xc2, 0xcc, 0xda, 0x01, 0x75, 0x55, 0x6c, 0x26, 0x42, 0x46, 0xa0, 0x9b, 0x26, - 0xf8, 0xff, 0x4d, 0xc0, 0x4b, 0x13, 0xac, 0x08, 0xf0, 0x62, 0x73, 0x02, 0xbf, 0x69, 0x72, 0x08, - 0xfa, 0x10, 0x87, 0xe8, 0x79, 0x10, 0x47, 0x2b, 0xf1, 0xb8, 0x0f, 0xaa, 0xc5, 0x09, 0xd8, 0x9e, - 0x8c, 0x9b, 0x37, 0xb2, 0x06, 0x14, 0xf7, 0x2d, 0xcd, 0x7a, 0x1b, 0x6c, 0xf0, 0x56, 0x80, 0x3c, - 0xbe, 0x1a, 0x80, 0xdd, 0xc9, 0xb8, 0xb9, 0x3d, 0xed, 0x12, 0x61, 0xb2, 0xdc, 0x75, 0x8c, 0x4e, - 0x45, 0x15, 0xe5, 0xbb, 0x55, 0x54, 0xde, 0x92, 0xfe, 0x0d, 0xd9, 0xad, 0x53, 0x32, 0x39, 0xcf, - 0xdf, 0x35, 0x70, 0xb3, 0x47, 0xc3, 0x57, 0x88, 0x89, 0xce, 0xeb, 0x21, 0x06, 0x03, 0xc8, 0xe0, - 0x2a, 0x64, 0x5d, 0xb0, 0x1e, 0x2b, 0x37, 0x75, 0x6d, 0x77, 0xa6, 0xd7, 0x86, 0x8f, 0xf3, 0x6b, - 0xcb, 0x62, 0x77, 0xf7, 0xd4, 0xd5, 0xa9, 0x99, 0xcc, 0x9c, 0x2d, 0x37, 0x8f, 0xd3, 0xf9, 0x60, - 0x8e, 0xe5, 0xa3, 0x25, 0x2c, 0x29, 0x62, 0x72, 0x20, 0x5b, 0x79, 0x94, 0x3b, 0xe0, 0xf6, 0x3f, - 0x10, 0xca, 0x09, 0x9f, 0x6b, 0xe2, 0xb2, 0x3f, 0x1f, 0x06, 0x90, 0xa1, 0x4f, 0xc5, 0x2a, 0xd4, - 0x9f, 0x82, 0x0d, 0x98, 0xb2, 0x3e, 0x49, 0x22, 0x36, 0x52, 0x7c, 0x1b, 0x7f, 0xfc, 0xd2, 0xda, - 0x55, 0x2c, 0x9e, 0x07, 0x41, 0x82, 0x28, 0x7d, 0xc5, 0x92, 0x08, 0x87, 0xee, 0x14, 0xaa, 0xbf, - 0x04, 0x35, 0xb9, 0x4c, 0x15, 0xef, 0xfb, 0xf6, 0xbf, 0xff, 0x48, 0xd8, 0x32, 0x5f, 0xb7, 0xc2, - 0x05, 0x70, 0x95, 0x6f, 0xe7, 0x19, 0xe7, 0x3a, 0x8d, 0xca, 0xe9, 0xbe, 0xbf, 0x84, 0x6e, 0x2a, - 0xaa, 0x6e, 0x49, 0x47, 0x6b, 0x1f, 0xec, 0xcd, 0x31, 0xc9, 0x58, 0x3e, 0xf9, 0xb5, 0x0a, 0xae, - 0xf7, 0x68, 0xa8, 0xa7, 0x60, 0xb3, 0xb8, 0xc7, 0xed, 0xb7, 0x15, 0x38, 0xbb, 0xd3, 0x8c, 0xa7, - 0xab, 0xe1, 0xf3, 0x1d, 0xf8, 0x15, 0xa8, 0x88, 0xdd, 0xf5, 0xa0, 0x84, 0x3f, 0x07, 0x1a, 0x4e, - 0x49, 0x60, 0x31, 0x83, 0x58, 0x2e, 0x65, 0x32, 0x70, 0x60, 0xa9, 0x0c, 0xc5, 0x0d, 0x20, 0xa4, - 0x2b, 0x4c, 0x7f, 0x29, 0xe9, 0xa6, 0xf8, 0x72, 0xd2, 0x2d, 0x0e, 0xa4, 0xfe, 0xbd, 0x06, 0xb6, - 0x17, 0xa6, 0xf1, 0xb0, 0x44, 0xb0, 0x79, 0x27, 0xe3, 0xc3, 0xff, 0xe0, 0x94, 0x97, 0xf1, 0x1a, - 0xdc, 0x98, 0x19, 0x91, 0x32, 0xf2, 0x15, 0x1d, 0x8c, 0x67, 0x2b, 0x3a, 0x64, 0x99, 0x8d, 0xea, - 0xb7, 0x57, 0x67, 0x07, 0x5a, 0x77, 0x70, 0x7e, 0x61, 0x6a, 0x6f, 0x2e, 0x4c, 0xed, 0xaf, 0x0b, - 0x53, 0xfb, 0xf1, 0xd2, 0x5c, 0x7b, 0x73, 0x69, 0xae, 0xfd, 0x79, 0x69, 0xae, 0x7d, 0xe1, 0x86, - 0x11, 0xeb, 0xa7, 0x9e, 0xed, 0x93, 0xd8, 0xf9, 0x38, 0xcb, 0xf1, 0x09, 0xf4, 0xa8, 0x93, 0x67, - 0x6c, 0xf9, 0x24, 0x41, 0xc5, 0xd7, 0x3e, 0x8c, 0xb0, 0x13, 0x93, 0x20, 0x1d, 0x20, 0x3a, 0x3b, - 0x52, 0x6c, 0x34, 0x44, 0xd4, 0xab, 0x89, 0xbf, 0x3e, 0x87, 0x7f, 0x07, 0x00, 0x00, 0xff, 0xff, - 0xf0, 0x22, 0x4e, 0x61, 0x0f, 0x0a, 0x00, 0x00, + // 1063 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x56, 0xcf, 0x6f, 0xdc, 0x44, + 0x14, 0x8e, 0x9b, 0x1f, 0x24, 0x93, 0xe6, 0x97, 0x93, 0x36, 0x1b, 0x47, 0x5d, 0x07, 0x17, 0xb5, + 0x69, 0xaa, 0xb5, 0x95, 0x44, 0x6a, 0x45, 0xb8, 0x50, 0x37, 0x45, 0x20, 0x58, 0x09, 0xb9, 0xf4, + 0x82, 0x90, 0x96, 0xd9, 0xf5, 0xd4, 0x31, 0x59, 0xcf, 0x44, 0x9e, 0x71, 0xd2, 0xdc, 0x10, 0xe2, + 0xc4, 0x89, 0x0b, 0xff, 0x03, 0xc7, 0x1c, 0x38, 0xc3, 0x35, 0x12, 0x97, 0x8a, 0x13, 0x07, 0x64, + 0xa1, 0xe4, 0x10, 0x71, 0xf5, 0x89, 0x23, 0x9a, 0x1f, 0xf6, 0x3a, 0xbb, 0x0d, 0xf5, 0xf6, 0xd2, + 0x4b, 0xbb, 0x9e, 0xf7, 0x7d, 0xf3, 0xe6, 0x7d, 0xef, 0x7b, 0x33, 0x01, 0x77, 0x43, 0xfc, 0x0d, + 0xea, 0xb0, 0xf0, 0x10, 0x39, 0x8c, 0xec, 0x23, 0xfc, 0x1c, 0x76, 0x18, 0x89, 0x8f, 0x9d, 0xc3, + 0xcd, 0x36, 0x62, 0x70, 0xd3, 0x61, 0x2f, 0xec, 0x83, 0x98, 0x30, 0xa2, 0xd7, 0x0b, 0xa0, 0x5d, + 0x06, 0xda, 0x0a, 0x68, 0x2c, 0x05, 0x24, 0x20, 0x02, 0xea, 0xf0, 0x5f, 0x92, 0x65, 0xd4, 0x3b, + 0x84, 0x46, 0x84, 0x3a, 0x6d, 0x48, 0x51, 0xb1, 0x67, 0x87, 0x84, 0x78, 0x20, 0x8e, 0xf7, 0x8b, + 0x38, 0xff, 0x50, 0xf1, 0x65, 0x15, 0x8f, 0x68, 0xe0, 0x1c, 0x6e, 0xf2, 0xff, 0x54, 0x60, 0x45, + 0x06, 0x5a, 0x32, 0xa3, 0xfc, 0x50, 0xa1, 0xfb, 0xaf, 0x29, 0xe9, 0x00, 0xc6, 0x30, 0xca, 0xc1, + 0x0b, 0x30, 0x0a, 0x31, 0x71, 0xc4, 0xbf, 0x72, 0xc9, 0xfa, 0xe7, 0x1a, 0x98, 0x6d, 0xd2, 0xe0, + 0x71, 0x8c, 0x20, 0x43, 0xbb, 0x08, 0x93, 0x48, 0xbf, 0x07, 0x26, 0x28, 0xc2, 0x3e, 0x8a, 0x6b, + 0xda, 0x9a, 0xb6, 0x3e, 0xe5, 0x2e, 0x64, 0xa9, 0x39, 0x73, 0x0c, 0xa3, 0xee, 0x8e, 0x25, 0xd7, + 0x2d, 0x4f, 0x01, 0x74, 0x07, 0x4c, 0xd2, 0xa4, 0xed, 0x73, 0x5a, 0xed, 0x9a, 0x00, 0x2f, 0x66, + 0xa9, 0x39, 0xa7, 0xc0, 0x2a, 0x62, 0x79, 0x05, 0x48, 0xbf, 0x0d, 0xc6, 0x30, 0x8c, 0x50, 0x6d, + 0x54, 0x80, 0xe7, 0xb2, 0xd4, 0x9c, 0x96, 0x60, 0xbe, 0x6a, 0x79, 0x22, 0x28, 0x0e, 0x70, 0x1c, + 0xb5, 0x49, 0xb7, 0x36, 0x36, 0x70, 0x00, 0xb1, 0xce, 0x0f, 0x20, 0x7e, 0xf0, 0x03, 0xf8, 0xa8, + 0x13, 0x46, 0xb0, 0x4b, 0x6b, 0xe3, 0x6b, 0xda, 0xfa, 0x4c, 0xf9, 0x00, 0x79, 0xc4, 0xf2, 0x0a, + 0x90, 0xfe, 0x04, 0xcc, 0xc3, 0x6e, 0x97, 0x1c, 0xb5, 0xa0, 0x1f, 0x85, 0xb8, 0xd5, 0x4e, 0x62, + 0x5c, 0x9b, 0x58, 0xd3, 0xd6, 0x27, 0xdd, 0xd5, 0x2c, 0x35, 0x97, 0x25, 0xb1, 0x1f, 0x61, 0x79, + 0xb3, 0x62, 0xe9, 0x11, 0x5f, 0x71, 0x93, 0x18, 0xef, 0x6c, 0x7f, 0x77, 0x71, 0xb2, 0xa1, 0x54, + 0xf8, 0xe1, 0xe2, 0x64, 0xe3, 0xf6, 0x15, 0x6d, 0xe8, 0x08, 0x5d, 0x1b, 0x52, 0x87, 0xaf, 0xc0, + 0xcd, 0xcb, 0x52, 0x7b, 0x88, 0x1e, 0x10, 0x4c, 0x91, 0xee, 0x82, 0x39, 0x8c, 0x8e, 0x5a, 0x82, + 0xda, 0x92, 0x72, 0x4a, 0xed, 0x8d, 0x2c, 0x35, 0x6f, 0x2a, 0x85, 0x2e, 0x03, 0x2c, 0x6f, 0x06, + 0xa3, 0xa3, 0x2f, 0xf8, 0x82, 0xd8, 0xcb, 0xfa, 0x4b, 0x03, 0xef, 0x34, 0x69, 0xd0, 0x0c, 0x31, + 0x1b, 0xa6, 0x85, 0x1f, 0x83, 0x09, 0x18, 0x91, 0x04, 0x33, 0xd1, 0xc0, 0xe9, 0xad, 0x15, 0x5b, + 0xf9, 0x8b, 0xbb, 0x38, 0x37, 0xbc, 0xfd, 0x98, 0x84, 0xd8, 0xbd, 0x71, 0x9a, 0x9a, 0x23, 0xbd, + 0x9d, 0x24, 0xcd, 0xf2, 0x14, 0x9f, 0xf7, 0x22, 0x46, 0x1d, 0x14, 0x1e, 0xa2, 0x58, 0xf5, 0xb7, + 0xd4, 0x8b, 0x3c, 0x62, 0x79, 0x05, 0x68, 0xe7, 0x7e, 0x9f, 0x88, 0xab, 0x57, 0x88, 0x18, 0x85, + 0x98, 0x59, 0x0b, 0x60, 0x4e, 0x55, 0x97, 0xab, 0x66, 0xfd, 0x2b, 0x2b, 0xe6, 0x0d, 0x79, 0x3b, + 0x15, 0x7f, 0x0a, 0xe6, 0xb8, 0x3d, 0x3e, 0x8a, 0x49, 0xf4, 0xc8, 0xf7, 0x63, 0x44, 0xa9, 0x2a, + 0xfc, 0xdd, 0x2c, 0x35, 0x6b, 0x92, 0xc3, 0x01, 0xad, 0xe7, 0x31, 0x89, 0x5a, 0x50, 0x42, 0xac, + 0x9f, 0x2f, 0x4e, 0x36, 0x34, 0xaf, 0x9f, 0x59, 0x59, 0x0d, 0x61, 0x48, 0xa9, 0x06, 0xaf, 0xbc, + 0x50, 0xe3, 0x77, 0x4d, 0x4e, 0xf2, 0x1e, 0xc4, 0x01, 0x12, 0x4e, 0x1d, 0x46, 0x94, 0x3b, 0x60, + 0xbc, 0x3c, 0xc6, 0xf3, 0x59, 0x6a, 0x5e, 0xcf, 0xa7, 0x48, 0xb8, 0x4d, 0x86, 0xf5, 0x4d, 0x30, + 0xc5, 0x8d, 0x28, 0x66, 0x43, 0x15, 0xbb, 0x94, 0xa5, 0xe6, 0x7c, 0xcf, 0xa3, 0x22, 0x64, 0x79, + 0x93, 0x18, 0xc9, 0x79, 0xa9, 0x3e, 0x2b, 0xe2, 0xe4, 0x0d, 0xc9, 0xaf, 0xc9, 0x59, 0xe9, 0x15, + 0x53, 0xd4, 0xf9, 0xeb, 0x28, 0x58, 0x6c, 0xd2, 0xe0, 0x29, 0x62, 0xc2, 0xf7, 0x4d, 0xc4, 0xa0, + 0x0f, 0x19, 0x1c, 0xa6, 0x58, 0x0f, 0x4c, 0x46, 0x8a, 0xa6, 0x3c, 0x70, 0xab, 0xe7, 0x01, 0xbc, + 0x5f, 0x78, 0x20, 0xdf, 0xdb, 0x5d, 0x56, 0x3e, 0x50, 0x66, 0xce, 0xc9, 0x96, 0x57, 0xec, 0xa3, + 0xff, 0xa4, 0x81, 0xc5, 0xde, 0x8d, 0xd1, 0xf2, 0x43, 0x0a, 0xdb, 0x5d, 0xe4, 0x0b, 0x8d, 0xa6, + 0xb7, 0x9e, 0xd8, 0xff, 0xff, 0xa2, 0xd8, 0xaf, 0xa8, 0xc8, 0x2e, 0xae, 0x9b, 0x5d, 0xb5, 0x99, + 0x5b, 0xcf, 0x52, 0xd3, 0x50, 0x5e, 0x1c, 0xcc, 0x65, 0x79, 0x0b, 0xb0, 0x9f, 0x62, 0x3c, 0x03, + 0x0b, 0x03, 0xfb, 0xe8, 0x1f, 0x82, 0x59, 0xba, 0x47, 0x92, 0xae, 0x9f, 0x73, 0x85, 0x66, 0x93, + 0xee, 0x4a, 0x96, 0x9a, 0x37, 0x94, 0x66, 0x97, 0xe2, 0x96, 0x37, 0x23, 0x17, 0xd4, 0x16, 0x3b, + 0xef, 0xf7, 0x35, 0xf5, 0xde, 0x15, 0x4d, 0xa5, 0x88, 0xc9, 0xdb, 0xaf, 0x51, 0x88, 0x76, 0x0b, + 0xac, 0xbe, 0xa2, 0xda, 0xa2, 0xbf, 0xa7, 0x9a, 0xf0, 0xf6, 0xb3, 0x03, 0x1f, 0x32, 0xf4, 0xb9, + 0x78, 0xbe, 0xf4, 0x07, 0x60, 0x0a, 0x26, 0x6c, 0x8f, 0xc4, 0x21, 0x3b, 0x56, 0xed, 0xad, 0xfd, + 0xf1, 0x4b, 0x63, 0x49, 0x35, 0x4d, 0x8d, 0xd0, 0x53, 0x16, 0x87, 0x38, 0xf0, 0x7a, 0x50, 0x7d, + 0x17, 0x4c, 0xc8, 0x07, 0x50, 0xb5, 0xf9, 0xce, 0xeb, 0xda, 0x20, 0xf3, 0xb9, 0x63, 0xbc, 0xdf, + 0x9e, 0xe2, 0xee, 0x3c, 0xe4, 0xb5, 0xf6, 0x76, 0xe5, 0xe5, 0xbe, 0x77, 0x45, 0xb9, 0x89, 0x38, + 0x75, 0x43, 0x12, 0xad, 0x15, 0xb0, 0xdc, 0x57, 0x49, 0x5e, 0xe5, 0xd6, 0x6f, 0xe3, 0x60, 0xb4, + 0x49, 0x03, 0x3d, 0x01, 0xd3, 0xe5, 0xb7, 0xd7, 0xae, 0xe0, 0x93, 0x12, 0xde, 0x78, 0x30, 0x1c, + 0xbe, 0x78, 0x70, 0xbe, 0x06, 0x63, 0xe2, 0xa1, 0xb8, 0x5b, 0x81, 0xcf, 0x81, 0x86, 0x53, 0x11, + 0x58, 0xce, 0x20, 0x2e, 0xe6, 0x2a, 0x19, 0x38, 0xb0, 0x52, 0x86, 0xf2, 0x85, 0x27, 0xa4, 0x2b, + 0x5d, 0x76, 0x95, 0xa4, 0xeb, 0xe1, 0xab, 0x49, 0x37, 0x78, 0xff, 0xe8, 0xdf, 0x6b, 0x60, 0x7e, + 0xe0, 0xf2, 0xd9, 0x7e, 0x83, 0xf9, 0x36, 0x3e, 0x78, 0x03, 0x52, 0x71, 0x8c, 0x17, 0xe0, 0xfa, + 0xa5, 0x11, 0xa9, 0x22, 0x5f, 0x99, 0x60, 0x3c, 0x1c, 0x92, 0x90, 0x67, 0x36, 0xc6, 0xbf, 0xe5, + 0x0f, 0x98, 0xdb, 0x3d, 0x3d, 0xab, 0x6b, 0x2f, 0xcf, 0xea, 0xda, 0xdf, 0x67, 0x75, 0xed, 0xc7, + 0xf3, 0xfa, 0xc8, 0xcb, 0xf3, 0xfa, 0xc8, 0x9f, 0xe7, 0xf5, 0x91, 0x2f, 0xbd, 0x20, 0x64, 0x7b, + 0x49, 0xdb, 0xee, 0x90, 0xc8, 0xf9, 0x24, 0xcf, 0xf1, 0x19, 0x6c, 0x53, 0xa7, 0xc8, 0xd8, 0xe8, + 0x90, 0x18, 0x95, 0x3f, 0xf7, 0x60, 0x88, 0x9d, 0x88, 0xf8, 0x49, 0x17, 0xd1, 0xcb, 0x23, 0xc5, + 0x8e, 0x0f, 0x10, 0x6d, 0x4f, 0x88, 0x3f, 0x57, 0xb7, 0xff, 0x0b, 0x00, 0x00, 0xff, 0xff, 0xaa, + 0x21, 0x43, 0x44, 0xc3, 0x0b, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -988,6 +1078,16 @@ func (m *MsgCreateDenom) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.AllowAdminBurn { + i-- + if m.AllowAdminBurn { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x30 + } if m.Decimals != 0 { i = encodeVarintTx(dAtA, i, uint64(m.Decimals)) i-- @@ -1074,6 +1174,13 @@ func (m *MsgMint) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if len(m.Receiver) > 0 { + i -= len(m.Receiver) + copy(dAtA[i:], m.Receiver) + i = encodeVarintTx(dAtA, i, uint64(len(m.Receiver))) + i-- + dAtA[i] = 0x1a + } { size, err := m.Amount.MarshalToSizedBuffer(dAtA[:i]) if err != nil { @@ -1137,6 +1244,13 @@ func (m *MsgBurn) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if len(m.BurnFromAddress) > 0 { + i -= len(m.BurnFromAddress) + copy(dAtA[i:], m.BurnFromAddress) + i = encodeVarintTx(dAtA, i, uint64(len(m.BurnFromAddress))) + i-- + dAtA[i] = 0x1a + } { size, err := m.Amount.MarshalToSizedBuffer(dAtA[:i]) if err != nil { @@ -1267,6 +1381,18 @@ func (m *MsgSetDenomMetadata) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.AdminBurnDisabled != nil { + { + size, err := m.AdminBurnDisabled.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } { size, err := m.Metadata.MarshalToSizedBuffer(dAtA[:i]) if err != nil { @@ -1287,6 +1413,39 @@ func (m *MsgSetDenomMetadata) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *MsgSetDenomMetadata_AdminBurnDisabled) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgSetDenomMetadata_AdminBurnDisabled) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgSetDenomMetadata_AdminBurnDisabled) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.ShouldDisable { + i-- + if m.ShouldDisable { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + func (m *MsgSetDenomMetadataResponse) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -1409,6 +1568,9 @@ func (m *MsgCreateDenom) Size() (n int) { if m.Decimals != 0 { n += 1 + sovTx(uint64(m.Decimals)) } + if m.AllowAdminBurn { + n += 2 + } return n } @@ -1437,6 +1599,10 @@ func (m *MsgMint) Size() (n int) { } l = m.Amount.Size() n += 1 + l + sovTx(uint64(l)) + l = len(m.Receiver) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } return n } @@ -1461,6 +1627,10 @@ func (m *MsgBurn) Size() (n int) { } l = m.Amount.Size() n += 1 + l + sovTx(uint64(l)) + l = len(m.BurnFromAddress) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } return n } @@ -1515,6 +1685,22 @@ func (m *MsgSetDenomMetadata) Size() (n int) { } l = m.Metadata.Size() n += 1 + l + sovTx(uint64(l)) + if m.AdminBurnDisabled != nil { + l = m.AdminBurnDisabled.Size() + n += 1 + l + sovTx(uint64(l)) + } + return n +} + +func (m *MsgSetDenomMetadata_AdminBurnDisabled) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.ShouldDisable { + n += 2 + } return n } @@ -1733,6 +1919,26 @@ func (m *MsgCreateDenom) Unmarshal(dAtA []byte) error { break } } + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AllowAdminBurn", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.AllowAdminBurn = bool(v != 0) default: iNdEx = preIndex skippy, err := skipTx(dAtA[iNdEx:]) @@ -1930,6 +2136,38 @@ func (m *MsgMint) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Receiver", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Receiver = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipTx(dAtA[iNdEx:]) @@ -2095,6 +2333,38 @@ func (m *MsgBurn) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field BurnFromAddress", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.BurnFromAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipTx(dAtA[iNdEx:]) @@ -2456,6 +2726,112 @@ func (m *MsgSetDenomMetadata) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AdminBurnDisabled", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.AdminBurnDisabled == nil { + m.AdminBurnDisabled = &MsgSetDenomMetadata_AdminBurnDisabled{} + } + if err := m.AdminBurnDisabled.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgSetDenomMetadata_AdminBurnDisabled) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: AdminBurnDisabled: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: AdminBurnDisabled: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ShouldDisable", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.ShouldDisable = bool(v != 0) default: iNdEx = preIndex skippy, err := skipTx(dAtA[iNdEx:]) diff --git a/chain/types/account.go b/chain/types/account.go deleted file mode 100644 index 7d6be3d5..00000000 --- a/chain/types/account.go +++ /dev/null @@ -1,186 +0,0 @@ -package types - -import ( - "bytes" - "encoding/json" - "fmt" - "strings" - - authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - "gopkg.in/yaml.v2" - - "cosmossdk.io/errors" - codectypes "github.com/cosmos/cosmos-sdk/codec/types" - sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - - ethcmn "github.com/ethereum/go-ethereum/common" - ethcrypto "github.com/ethereum/go-ethereum/crypto" -) - -var ( - _ sdk.AccountI = (*EthAccount)(nil) - _ authtypes.GenesisAccount = (*EthAccount)(nil) - _ codectypes.UnpackInterfacesMessage = (*EthAccount)(nil) -) - -var EmptyCodeHash = ethcrypto.Keccak256(nil) - -// ---------------------------------------------------------------------------- -// Main Ethermint account -// ---------------------------------------------------------------------------- - -// ProtoAccount defines the prototype function for BaseAccount used for an -// AccountKeeper. -func ProtoAccount() sdk.AccountI { - return &EthAccount{ - BaseAccount: &authtypes.BaseAccount{}, - CodeHash: ethcrypto.Keccak256(nil), - } -} - -// EthAddress returns the account address ethereum format. -func (acc EthAccount) EthAddress() ethcmn.Address { - return ethcmn.BytesToAddress(acc.GetAddress().Bytes()) -} - -type ethAccountPretty struct { - Address string `json:"address" yaml:"address"` - EthAddress string `json:"eth_address" yaml:"eth_address"` - PubKey string `json:"public_key" yaml:"public_key"` - AccountNumber uint64 `json:"account_number" yaml:"account_number"` - Sequence uint64 `json:"sequence" yaml:"sequence"` - CodeHash string `json:"code_hash" yaml:"code_hash"` -} - -// MarshalYAML returns the YAML representation of an account. -func (acc EthAccount) MarshalYAML() (interface{}, error) { - alias := ethAccountPretty{ - Address: acc.Address, - EthAddress: acc.EthAddress().String(), - AccountNumber: acc.AccountNumber, - Sequence: acc.Sequence, - CodeHash: ethcmn.Bytes2Hex(acc.CodeHash), - PubKey: "", - } - - var err error - - bz, err := yaml.Marshal(alias) - if err != nil { - return nil, err - } - - return string(bz), err -} - -// MarshalJSON returns the JSON representation of an EthAccount. -func (acc EthAccount) MarshalJSON() ([]byte, error) { - var ethAddress = "" - - if acc.BaseAccount != nil && acc.Address == "" { - ethAddress = acc.EthAddress().String() - } - - alias := ethAccountPretty{ - Address: acc.Address, - EthAddress: ethAddress, - AccountNumber: acc.AccountNumber, - Sequence: acc.Sequence, - CodeHash: ethcmn.Bytes2Hex(acc.CodeHash), - PubKey: "", - } - - return json.Marshal(alias) -} - -// UnmarshalJSON unmarshals raw JSON bytes into an EthAccount. -func (acc *EthAccount) UnmarshalJSON(bz []byte) error { - var ( - alias ethAccountPretty - err error - ) - - if err := json.Unmarshal(bz, &alias); err != nil { - return err - } - - switch { - case alias.Address != "" && alias.EthAddress != "": - // Both addresses provided. Verify correctness - ethAddress := ethcmn.HexToAddress(alias.EthAddress) - - var address sdk.AccAddress - address, err = sdk.AccAddressFromBech32(alias.Address) - if err != nil { - return err - } - - ethAddressFromAccAddress := ethcmn.BytesToAddress(address.Bytes()) - - if !bytes.Equal(ethAddress.Bytes(), address.Bytes()) { - err = errors.Wrapf( - sdkerrors.ErrInvalidAddress, - "expected %s, got %s", - ethAddressFromAccAddress.String(), ethAddress.String(), - ) - } - - case alias.Address != "" && alias.EthAddress == "": - // unmarshal sdk.AccAddress only. Do nothing here - case alias.Address == "" && alias.EthAddress != "": - // retrieve sdk.AccAddress from ethereum address - ethAddress := ethcmn.HexToAddress(alias.EthAddress) - alias.Address = sdk.AccAddress(ethAddress.Bytes()).String() - case alias.Address == "" && alias.EthAddress == "": - err = errors.Wrapf( - sdkerrors.ErrInvalidAddress, - "account must contain address in Ethereum Hex or Cosmos Bech32 format", - ) - } - - if err != nil { - return err - } - - acc.BaseAccount = &authtypes.BaseAccount{ - Address: alias.Address, - AccountNumber: alias.AccountNumber, - Sequence: alias.Sequence, - } - - acc.CodeHash = ethcmn.HexToHash(alias.CodeHash).Bytes() - - return nil -} - -// String implements the fmt.Stringer interface -func (acc EthAccount) String() string { - out, _ := yaml.Marshal(acc) - return string(out) -} - -func CosmosAddressToEthAddress(addr string) (ethcmn.Address, error) { - if strings.HasPrefix(addr, sdk.GetConfig().GetBech32AccountAddrPrefix()) { - // Check to see if address is Cosmos bech32 formatted - toAddr, err := sdk.AccAddressFromBech32(addr) - if err != nil { - return ethcmn.Address{}, errors.Wrap(err, "must provide a valid Bech32 address") - } - ethAddr := ethcmn.BytesToAddress(toAddr.Bytes()) - return ethAddr, nil - } - - if !strings.HasPrefix(addr, "0x") { - addr = "0x" + addr - } - - valid := ethcmn.IsHexAddress(addr) - if !valid { - return ethcmn.Address{}, fmt.Errorf("%s is not a valid Ethereum or Cosmos address", addr) - } - - ethAddr := ethcmn.HexToAddress(addr) - - return ethAddr, nil -} diff --git a/chain/types/chain_id.go b/chain/types/chain_id.go deleted file mode 100644 index 6882db48..00000000 --- a/chain/types/chain_id.go +++ /dev/null @@ -1,54 +0,0 @@ -package types - -import ( - "fmt" - "math/big" - "regexp" - "strings" - - "cosmossdk.io/errors" - tmrand "github.com/cometbft/cometbft/libs/rand" -) - -var ( - regexChainID = `[a-z]*` - regexSeparator = `-{1}` - regexEpoch = `[1-9][0-9]*` - injectiveChainID = regexp.MustCompile(fmt.Sprintf(`^(%s)%s(%s)$`, regexChainID, regexSeparator, regexEpoch)) -) - -// IsValidChainID returns false if the given chain identifier is incorrectly formatted. -func IsValidChainID(chainID string) bool { - if len(chainID) > 48 { - return false - } - - return injectiveChainID.MatchString(chainID) -} - -// ParseChainID parses a string chain identifier's epoch to an Ethereum-compatible -// chain-id in *big.Int format. The function returns an error if the chain-id has an invalid format -func ParseChainID(chainID string) (*big.Int, error) { - chainID = strings.TrimSpace(chainID) - if len(chainID) > 48 { - return nil, errors.Wrapf(ErrInvalidChainID, "chain-id '%s' cannot exceed 48 chars", chainID) - } - - matches := injectiveChainID.FindStringSubmatch(chainID) - if matches == nil || len(matches) != 3 || matches[1] == "" { - return nil, errors.Wrap(ErrInvalidChainID, chainID) - } - - // verify that the chain-id entered is a base 10 integer - chainIDInt, ok := new(big.Int).SetString(matches[2], 10) - if !ok { - return nil, errors.Wrapf(ErrInvalidChainID, "epoch %s must be base-10 integer format", matches[2]) - } - - return chainIDInt, nil -} - -// GenerateRandomChainID returns a random chain-id in the valid format. -func GenerateRandomChainID() string { - return fmt.Sprintf("injective-%d", 10+tmrand.Intn(10000)) -} diff --git a/chain/types/code.go b/chain/types/code.go deleted file mode 100644 index fa1da75d..00000000 --- a/chain/types/code.go +++ /dev/null @@ -1,12 +0,0 @@ -package types - -// ---------------------------------------------------------------------------- -// Code -// ---------------------------------------------------------------------------- - -// Code is account Code type alias -type Code []byte - -func (c Code) String() string { - return string(c) -} diff --git a/chain/types/coin.go b/chain/types/coin.go deleted file mode 100644 index b8ec01ae..00000000 --- a/chain/types/coin.go +++ /dev/null @@ -1,33 +0,0 @@ -package types - -import ( - "cosmossdk.io/math" - sdk "github.com/cosmos/cosmos-sdk/types" -) - -const ( - // INJ defines the default coin denomination used in Ethermint in: - // - // - Staking parameters: denomination used as stake in the dPoS chain - // - Mint parameters: denomination minted due to fee distribution rewards - // - Governance parameters: denomination used for spam prevention in proposal deposits - // - Crisis parameters: constant fee denomination used for spam prevention to check broken invariant - // - EVM parameters: denomination used for running EVM state transitions in Ethermint. - InjectiveCoin string = "inj" - - // BaseDenomUnit defines the base denomination unit for Photons. - // 1 photon = 1x10^{BaseDenomUnit} inj - BaseDenomUnit = 18 -) - -// NewInjectiveCoin is a utility function that returns an "inj" coin with the given math.Int amount. -// The function will panic if the provided amount is negative. -func NewInjectiveCoin(amount math.Int) sdk.Coin { - return sdk.NewCoin(InjectiveCoin, amount) -} - -// NewInjectiveCoinInt64 is a utility function that returns an "inj" coin with the given int64 amount. -// The function will panic if the provided amount is negative. -func NewInjectiveCoinInt64(amount int64) sdk.Coin { - return sdk.NewInt64Coin(InjectiveCoin, amount) -} diff --git a/chain/types/errors.go b/chain/types/errors.go deleted file mode 100644 index 2408fad5..00000000 --- a/chain/types/errors.go +++ /dev/null @@ -1,15 +0,0 @@ -package types - -import "cosmossdk.io/errors" - -const ( - // RootCodespace is the codespace for all errors defined in this package - RootCodespace = "injective" -) - -// NOTE: We can't use 1 since that error code is reserved for internal errors. - -var ( - // ErrInvalidChainID returns an error resulting from an invalid chain ID. - ErrInvalidChainID = errors.Register(RootCodespace, 3, "invalid chain ID") -) diff --git a/chain/types/gas.go b/chain/types/gas.go deleted file mode 100644 index b14660de..00000000 --- a/chain/types/gas.go +++ /dev/null @@ -1,97 +0,0 @@ -package types - -import ( - "fmt" - "math" - "sync" - - storetypes "cosmossdk.io/store/types" -) - -type infiniteGasMeter struct { - consumed storetypes.Gas - mux sync.RWMutex -} - -// NewThreadsafeInfiniteGasMeter returns a reference to a new thread-safe infiniteGasMeter. -func NewThreadsafeInfiniteGasMeter() storetypes.GasMeter { - return &infiniteGasMeter{ - consumed: 0, - } -} - -func (g *infiniteGasMeter) GasRemaining() storetypes.Gas { - return math.MaxUint64 -} - -func (g *infiniteGasMeter) GasConsumed() storetypes.Gas { - g.mux.RLock() - defer g.mux.RUnlock() - - return g.consumed -} - -func (g *infiniteGasMeter) GasConsumedToLimit() storetypes.Gas { - g.mux.RLock() - defer g.mux.RUnlock() - - return g.consumed -} - -func (g *infiniteGasMeter) Limit() storetypes.Gas { - return 0 -} - -func (g *infiniteGasMeter) ConsumeGas(amount storetypes.Gas, descriptor string) { - g.mux.Lock() - defer g.mux.Unlock() - - var overflow bool - // TODO: Should we set the consumed field after overflow checking? - g.consumed, overflow = addUint64Overflow(g.consumed, amount) - if overflow { - panic(storetypes.ErrorGasOverflow{Descriptor: descriptor}) - } -} - -// RefundGas will deduct the given amount from the gas consumed. If the amount is greater than the -// gas consumed, the function will panic. -// -// Use case: This functionality enables refunding gas to the trasaction or block gas pools so that -// EVM-compatible chains can fully support the go-ethereum StateDb interface. -// See https://github.com/cosmos/cosmos-sdk/pull/9403 for reference. -func (g *infiniteGasMeter) RefundGas(amount storetypes.Gas, descriptor string) { - g.mux.Lock() - defer g.mux.Unlock() - - if g.consumed < amount { - panic(storetypes.ErrorNegativeGasConsumed{Descriptor: descriptor}) - } - - g.consumed -= amount -} - -func (g *infiniteGasMeter) IsPastLimit() bool { - return false -} - -func (g *infiniteGasMeter) IsOutOfGas() bool { - return false -} - -func (g *infiniteGasMeter) String() string { - g.mux.RLock() - defer g.mux.RUnlock() - - return fmt.Sprintf("InfiniteGasMeter:\n consumed: %d", g.consumed) -} - -// addUint64Overflow performs the addition operation on two uint64 integers and -// returns a boolean on whether or not the result overflows. -func addUint64Overflow(a, b uint64) (uint64, bool) { - if math.MaxUint64-a < b { - return 0, true - } - - return a + b, false -} diff --git a/chain/types/int.go b/chain/types/int.go deleted file mode 100644 index af991c40..00000000 --- a/chain/types/int.go +++ /dev/null @@ -1,22 +0,0 @@ -package types - -import "math/big" - -// MarshalBigInt marshals big int into text string for consistent encoding -func MarshalBigInt(i *big.Int) (string, error) { - bz, err := i.MarshalText() - if err != nil { - return "", err - } - return string(bz), nil -} - -// UnmarshalBigInt unmarshals string from *big.Int -func UnmarshalBigInt(s string) (*big.Int, error) { - ret := new(big.Int) - err := ret.UnmarshalText([]byte(s)) - if err != nil { - return nil, err - } - return ret, nil -} diff --git a/chain/types/params.go b/chain/types/params.go deleted file mode 100644 index 9d322668..00000000 --- a/chain/types/params.go +++ /dev/null @@ -1,8 +0,0 @@ -package types - -const ( - // DefaultGasPrice is default gas price for evm transactions - DefaultGasPrice = 0 - // DefaultRPCGasLimit is default gas limit for RPC call operations - DefaultRPCGasLimit = 80000000 -) diff --git a/chain/wasmx/types/exec_callback_msgs.go b/chain/wasmx/types/exec_callback_msgs.go deleted file mode 100644 index 784a2abe..00000000 --- a/chain/wasmx/types/exec_callback_msgs.go +++ /dev/null @@ -1,25 +0,0 @@ -package types - -func NewRegistryDeregisterCallbackMsg() RegistryDeregisterCallbackMsg { - return RegistryDeregisterCallbackMsg{ - DeregisterCallback: &DeregisterCallbackMsg{}, - } -} - -type RegistryDeregisterCallbackMsg struct { - DeregisterCallback *DeregisterCallbackMsg `json:"deregister,omitempty"` -} - -type DeregisterCallbackMsg struct{} - -func NewRegistryDeactivateCallbackMsg() RegistryDeactivateCallbackMsg { - return RegistryDeactivateCallbackMsg{ - DeactivateCallback: &DeactivateCallbackMsg{}, - } -} - -type RegistryDeactivateCallbackMsg struct { - DeactivateCallback *DeactivateCallbackMsg `json:"deactivate,omitempty"` -} - -type DeactivateCallbackMsg struct{} diff --git a/chain/wasmx/types/exec_msgs.go b/chain/wasmx/types/exec_msgs.go deleted file mode 100644 index 1f6ad121..00000000 --- a/chain/wasmx/types/exec_msgs.go +++ /dev/null @@ -1,26 +0,0 @@ -package types - -import ( - "encoding/json" -) - -func NewBeginBlockerExecMsg() ([]byte, error) { - // Construct Exec message - beginBlocker := CWBeginBlockerExecMsg{BeginBlockerMsg: &BeginBlockerMsg{}} - - // nolint:all - // execMsg := []byte(`{"begin_blocker":{}}`) - execMsg, err := json.Marshal(beginBlocker) - if err != nil { - return nil, err - } - - return execMsg, nil -} - -type CWBeginBlockerExecMsg struct { - BeginBlockerMsg *BeginBlockerMsg `json:"begin_blocker,omitempty"` -} - -type BeginBlockerMsg struct { -} diff --git a/chain/wasmx/types/expected_keepers.go b/chain/wasmx/types/expected_keepers.go deleted file mode 100644 index e9d5d692..00000000 --- a/chain/wasmx/types/expected_keepers.go +++ /dev/null @@ -1,28 +0,0 @@ -package types - -import ( - "context" - - wasmtypes "github.com/CosmWasm/wasmd/x/wasm/types" - sdk "github.com/cosmos/cosmos-sdk/types" -) - -// BankKeeper defines the expected bank keeper methods -type BankKeeper interface { - GetBalance(ctx context.Context, addr sdk.AccAddress, denom string) sdk.Coin - GetAllBalances(ctx context.Context, addr sdk.AccAddress) sdk.Coins - SendCoinsFromModuleToModule(ctx context.Context, senderModule, recipientModule string, amt sdk.Coins) error - SendCoinsFromModuleToAccount(ctx context.Context, senderModule string, recipientAddr sdk.AccAddress, amt sdk.Coins) error - SendCoinsFromAccountToModule(ctx context.Context, senderAddr sdk.AccAddress, recipientModule string, amt sdk.Coins) error - BurnCoins(ctx context.Context, moduleName string, amt sdk.Coins) error - IsSendEnabledCoins(ctx context.Context, coins ...sdk.Coin) error - SendCoins(ctx context.Context, from, to sdk.AccAddress, amt sdk.Coins) error -} - -type WasmViewKeeper interface { - wasmtypes.ViewKeeper -} - -type WasmContractOpsKeeper interface { - wasmtypes.ContractOpsKeeper -} diff --git a/chain/wasmx/types/genesis.go b/chain/wasmx/types/genesis.go deleted file mode 100644 index 3739aca4..00000000 --- a/chain/wasmx/types/genesis.go +++ /dev/null @@ -1,18 +0,0 @@ -package types - -func NewGenesisState() GenesisState { - return GenesisState{} -} - -func (gs GenesisState) Validate() error { - if err := gs.Params.Validate(); err != nil { - return err - } - return nil -} - -func DefaultGenesisState() *GenesisState { - return &GenesisState{ - Params: DefaultParams(), - } -} diff --git a/chain/wasmx/types/paramset.go b/chain/wasmx/types/paramset.go deleted file mode 100644 index 80d0852b..00000000 --- a/chain/wasmx/types/paramset.go +++ /dev/null @@ -1,26 +0,0 @@ -package types - -type ( - ValueValidatorFn func(value interface{}) error - - // ParamSetPair is used for associating paramsubspace key and field of param - // structs. - ParamSetPair struct { - Key []byte - Value interface{} - ValidatorFn ValueValidatorFn - } -) - -// NewParamSetPair creates a new ParamSetPair instance. -func NewParamSetPair(key []byte, value interface{}, vfn ValueValidatorFn) ParamSetPair { - return ParamSetPair{key, value, vfn} -} - -// ParamSetPairs Slice of KeyFieldPair -type ParamSetPairs []ParamSetPair - -// ParamSet defines an interface for structs containing parameters for a module -type ParamSet interface { - ParamSetPairs() ParamSetPairs -} diff --git a/chain/wasmx/types/util.go b/chain/wasmx/types/util.go deleted file mode 100644 index 49eb4491..00000000 --- a/chain/wasmx/types/util.go +++ /dev/null @@ -1,17 +0,0 @@ -package types - -import ( - "github.com/CosmWasm/wasmd/x/wasm/types" - sdktypes "github.com/cosmos/cosmos-sdk/types" -) - -func IsAllowed(accessConfig types.AccessConfig, actor sdktypes.AccAddress) bool { - if accessConfig.Permission == types.AccessTypeAnyOfAddresses { - for _, v := range accessConfig.Addresses { - if v == actor.String() { - return true - } - } - } - return false -} diff --git a/client/chain/chain.go b/client/chain/chain.go index 7475f506..26d50e5b 100644 --- a/client/chain/chain.go +++ b/client/chain/chain.go @@ -287,11 +287,18 @@ type ChainClient interface { FetchIBCConnectionParams(ctx context.Context) (*ibcconnectiontypes.QueryConnectionParamsResponse, error) // Permissions module - FetchAllNamespaces(ctx context.Context) (*permissionstypes.QueryAllNamespacesResponse, error) - FetchNamespaceByDenom(ctx context.Context, denom string, includeRoles bool) (*permissionstypes.QueryNamespaceByDenomResponse, error) - FetchAddressRoles(ctx context.Context, denom, address string) (*permissionstypes.QueryAddressRolesResponse, error) - FetchAddressesByRole(ctx context.Context, denom, role string) (*permissionstypes.QueryAddressesByRoleResponse, error) - FetchVouchersForAddress(ctx context.Context, address string) (*permissionstypes.QueryVouchersForAddressResponse, error) + FetchPermissionsNamespaceDenoms(ctx context.Context) (*permissionstypes.QueryNamespaceDenomsResponse, error) + FetchPermissionsNamespaces(ctx context.Context) (*permissionstypes.QueryNamespacesResponse, error) + FetchPermissionsNamespace(ctx context.Context, denom string) (*permissionstypes.QueryNamespaceResponse, error) + FetchPermissionsRolesByActor(ctx context.Context, denom, actor string) (*permissionstypes.QueryRolesByActorResponse, error) + FetchPermissionsActorsByRole(ctx context.Context, denom, role string) (*permissionstypes.QueryActorsByRoleResponse, error) + FetchPermissionsRoleManagers(ctx context.Context, denom string) (*permissionstypes.QueryRoleManagersResponse, error) + FetchPermissionsRoleManager(ctx context.Context, denom, manager string) (*permissionstypes.QueryRoleManagerResponse, error) + FetchPermissionsPolicyStatuses(ctx context.Context, denom string) (*permissionstypes.QueryPolicyStatusesResponse, error) + FetchPermissionsPolicyManagerCapabilities(ctx context.Context, denom string) (*permissionstypes.QueryPolicyManagerCapabilitiesResponse, error) + FetchPermissionsVouchers(ctx context.Context, denom string) (*permissionstypes.QueryVouchersResponse, error) + FetchPermissionsVoucher(ctx context.Context, denom, address string) (*permissionstypes.QueryVoucherResponse, error) + FetchPermissionsModuleState(ctx context.Context) (*permissionstypes.QueryModuleStateResponse, error) GetNetwork() common.Network Close() @@ -2602,48 +2609,108 @@ func (c *chainClient) FetchIBCConnectionParams(ctx context.Context) (*ibcconnect // Permissions module -func (c *chainClient) FetchAllNamespaces(ctx context.Context) (*permissionstypes.QueryAllNamespacesResponse, error) { - req := &permissionstypes.QueryAllNamespacesRequest{} - res, err := common.ExecuteCall(ctx, c.network.ChainCookieAssistant, c.permissionsQueryClient.AllNamespaces, req) +func (c *chainClient) FetchPermissionsNamespaceDenoms(ctx context.Context) (*permissionstypes.QueryNamespaceDenomsResponse, error) { + req := &permissionstypes.QueryNamespaceDenomsRequest{} + res, err := common.ExecuteCall(ctx, c.network.ChainCookieAssistant, c.permissionsQueryClient.NamespaceDenoms, req) return res, err } -func (c *chainClient) FetchNamespaceByDenom(ctx context.Context, denom string, includeRoles bool) (*permissionstypes.QueryNamespaceByDenomResponse, error) { - req := &permissionstypes.QueryNamespaceByDenomRequest{ - Denom: denom, - IncludeRoles: includeRoles, +func (c *chainClient) FetchPermissionsNamespaces(ctx context.Context) (*permissionstypes.QueryNamespacesResponse, error) { + req := &permissionstypes.QueryNamespacesRequest{} + res, err := common.ExecuteCall(ctx, c.network.ChainCookieAssistant, c.permissionsQueryClient.Namespaces, req) + + return res, err +} + +func (c *chainClient) FetchPermissionsNamespace(ctx context.Context, denom string) (*permissionstypes.QueryNamespaceResponse, error) { + req := &permissionstypes.QueryNamespaceRequest{ + Denom: denom, } - res, err := common.ExecuteCall(ctx, c.network.ChainCookieAssistant, c.permissionsQueryClient.NamespaceByDenom, req) + res, err := common.ExecuteCall(ctx, c.network.ChainCookieAssistant, c.permissionsQueryClient.Namespace, req) return res, err } -func (c *chainClient) FetchAddressRoles(ctx context.Context, denom, address string) (*permissionstypes.QueryAddressRolesResponse, error) { - req := &permissionstypes.QueryAddressRolesRequest{ - Denom: denom, - Address: address, +func (c *chainClient) FetchPermissionsRolesByActor(ctx context.Context, denom, actor string) (*permissionstypes.QueryRolesByActorResponse, error) { + req := &permissionstypes.QueryRolesByActorRequest{ + Denom: denom, + Actor: actor, } - res, err := common.ExecuteCall(ctx, c.network.ChainCookieAssistant, c.permissionsQueryClient.AddressRoles, req) + res, err := common.ExecuteCall(ctx, c.network.ChainCookieAssistant, c.permissionsQueryClient.RolesByActor, req) return res, err } -func (c *chainClient) FetchAddressesByRole(ctx context.Context, denom, role string) (*permissionstypes.QueryAddressesByRoleResponse, error) { - req := &permissionstypes.QueryAddressesByRoleRequest{ +func (c *chainClient) FetchPermissionsActorsByRole(ctx context.Context, denom, role string) (*permissionstypes.QueryActorsByRoleResponse, error) { + req := &permissionstypes.QueryActorsByRoleRequest{ Denom: denom, Role: role, } - res, err := common.ExecuteCall(ctx, c.network.ChainCookieAssistant, c.permissionsQueryClient.AddressesByRole, req) + res, err := common.ExecuteCall(ctx, c.network.ChainCookieAssistant, c.permissionsQueryClient.ActorsByRole, req) + + return res, err +} + +func (c *chainClient) FetchPermissionsRoleManagers(ctx context.Context, denom string) (*permissionstypes.QueryRoleManagersResponse, error) { + req := &permissionstypes.QueryRoleManagersRequest{ + Denom: denom, + } + res, err := common.ExecuteCall(ctx, c.network.ChainCookieAssistant, c.permissionsQueryClient.RoleManagers, req) + + return res, err +} + +func (c *chainClient) FetchPermissionsRoleManager(ctx context.Context, denom, manager string) (*permissionstypes.QueryRoleManagerResponse, error) { + req := &permissionstypes.QueryRoleManagerRequest{ + Denom: denom, + Manager: manager, + } + res, err := common.ExecuteCall(ctx, c.network.ChainCookieAssistant, c.permissionsQueryClient.RoleManager, req) + + return res, err +} + +func (c *chainClient) FetchPermissionsPolicyStatuses(ctx context.Context, denom string) (*permissionstypes.QueryPolicyStatusesResponse, error) { + req := &permissionstypes.QueryPolicyStatusesRequest{ + Denom: denom, + } + res, err := common.ExecuteCall(ctx, c.network.ChainCookieAssistant, c.permissionsQueryClient.PolicyStatuses, req) + + return res, err +} + +func (c *chainClient) FetchPermissionsPolicyManagerCapabilities(ctx context.Context, denom string) (*permissionstypes.QueryPolicyManagerCapabilitiesResponse, error) { + req := &permissionstypes.QueryPolicyManagerCapabilitiesRequest{ + Denom: denom, + } + res, err := common.ExecuteCall(ctx, c.network.ChainCookieAssistant, c.permissionsQueryClient.PolicyManagerCapabilities, req) return res, err } -func (c *chainClient) FetchVouchersForAddress(ctx context.Context, address string) (*permissionstypes.QueryVouchersForAddressResponse, error) { - req := &permissionstypes.QueryVouchersForAddressRequest{ +func (c *chainClient) FetchPermissionsVouchers(ctx context.Context, denom string) (*permissionstypes.QueryVouchersResponse, error) { + req := &permissionstypes.QueryVouchersRequest{ + Denom: denom, + } + res, err := common.ExecuteCall(ctx, c.network.ChainCookieAssistant, c.permissionsQueryClient.Vouchers, req) + + return res, err +} + +func (c *chainClient) FetchPermissionsVoucher(ctx context.Context, denom, address string) (*permissionstypes.QueryVoucherResponse, error) { + req := &permissionstypes.QueryVoucherRequest{ + Denom: denom, Address: address, } - res, err := common.ExecuteCall(ctx, c.network.ChainCookieAssistant, c.permissionsQueryClient.VouchersForAddress, req) + res, err := common.ExecuteCall(ctx, c.network.ChainCookieAssistant, c.permissionsQueryClient.Voucher, req) + + return res, err +} + +func (c *chainClient) FetchPermissionsModuleState(ctx context.Context) (*permissionstypes.QueryModuleStateResponse, error) { + req := &permissionstypes.QueryModuleStateRequest{} + res, err := common.ExecuteCall(ctx, c.network.ChainCookieAssistant, c.permissionsQueryClient.PermissionsModuleState, req) return res, err } diff --git a/client/chain/chain_test_support.go b/client/chain/chain_test_support.go index e7f6d750..d5881e50 100644 --- a/client/chain/chain_test_support.go +++ b/client/chain/chain_test_support.go @@ -751,24 +751,52 @@ func (c *MockChainClient) FetchIBCConnectionParams(ctx context.Context) (*ibccon // Permissions module -func (c *MockChainClient) FetchAllNamespaces(ctx context.Context) (*permissionstypes.QueryAllNamespacesResponse, error) { - return &permissionstypes.QueryAllNamespacesResponse{}, nil +func (c *MockChainClient) FetchPermissionsNamespaceDenoms(ctx context.Context) (*permissionstypes.QueryNamespaceDenomsResponse, error) { + return &permissionstypes.QueryNamespaceDenomsResponse{}, nil } -func (c *MockChainClient) FetchNamespaceByDenom(ctx context.Context, denom string, includeRoles bool) (*permissionstypes.QueryNamespaceByDenomResponse, error) { - return &permissionstypes.QueryNamespaceByDenomResponse{}, nil +func (c *MockChainClient) FetchPermissionsNamespaces(ctx context.Context) (*permissionstypes.QueryNamespacesResponse, error) { + return &permissionstypes.QueryNamespacesResponse{}, nil } -func (c *MockChainClient) FetchAddressRoles(ctx context.Context, denom, address string) (*permissionstypes.QueryAddressRolesResponse, error) { - return &permissionstypes.QueryAddressRolesResponse{}, nil +func (c *MockChainClient) FetchPermissionsNamespace(ctx context.Context, denom string) (*permissionstypes.QueryNamespaceResponse, error) { + return &permissionstypes.QueryNamespaceResponse{}, nil } -func (c *MockChainClient) FetchAddressesByRole(ctx context.Context, denom, role string) (*permissionstypes.QueryAddressesByRoleResponse, error) { - return &permissionstypes.QueryAddressesByRoleResponse{}, nil +func (c *MockChainClient) FetchPermissionsRolesByActor(ctx context.Context, denom, actor string) (*permissionstypes.QueryRolesByActorResponse, error) { + return &permissionstypes.QueryRolesByActorResponse{}, nil } -func (c *MockChainClient) FetchVouchersForAddress(ctx context.Context, address string) (*permissionstypes.QueryVouchersForAddressResponse, error) { - return &permissionstypes.QueryVouchersForAddressResponse{}, nil +func (c *MockChainClient) FetchPermissionsActorsByRole(ctx context.Context, denom, role string) (*permissionstypes.QueryActorsByRoleResponse, error) { + return &permissionstypes.QueryActorsByRoleResponse{}, nil +} + +func (c *MockChainClient) FetchPermissionsRoleManagers(ctx context.Context, denom string) (*permissionstypes.QueryRoleManagersResponse, error) { + return &permissionstypes.QueryRoleManagersResponse{}, nil +} + +func (c *MockChainClient) FetchPermissionsRoleManager(ctx context.Context, denom, manager string) (*permissionstypes.QueryRoleManagerResponse, error) { + return &permissionstypes.QueryRoleManagerResponse{}, nil +} + +func (c *MockChainClient) FetchPermissionsPolicyStatuses(ctx context.Context, denom string) (*permissionstypes.QueryPolicyStatusesResponse, error) { + return &permissionstypes.QueryPolicyStatusesResponse{}, nil +} + +func (c *MockChainClient) FetchPermissionsPolicyManagerCapabilities(ctx context.Context, denom string) (*permissionstypes.QueryPolicyManagerCapabilitiesResponse, error) { + return &permissionstypes.QueryPolicyManagerCapabilitiesResponse{}, nil +} + +func (c *MockChainClient) FetchPermissionsVouchers(ctx context.Context, denom string) (*permissionstypes.QueryVouchersResponse, error) { + return &permissionstypes.QueryVouchersResponse{}, nil +} + +func (c *MockChainClient) FetchPermissionsVoucher(ctx context.Context, denom, address string) (*permissionstypes.QueryVoucherResponse, error) { + return &permissionstypes.QueryVoucherResponse{}, nil +} + +func (c *MockChainClient) FetchPermissionsModuleState(ctx context.Context) (*permissionstypes.QueryModuleStateResponse, error) { + return &permissionstypes.QueryModuleStateResponse{}, nil } func (c *MockChainClient) GetNetwork() common.Network { diff --git a/client/chain/markets_assistant.go b/client/chain/markets_assistant.go index 52340223..924f41c4 100644 --- a/client/chain/markets_assistant.go +++ b/client/chain/markets_assistant.go @@ -317,16 +317,16 @@ func (assistant *MarketsAssistant) initializeFromChain(ctx context.Context, chai continue } - makerFeeRate := decimal.RequireFromString(marketInfo.GetMakerFeeRate().String()) - takerFeeRate := decimal.RequireFromString(marketInfo.GetTakerFeeRate().String()) - serviceProviderFee := decimal.RequireFromString(marketInfo.GetRelayerFeeShareRate().String()) - minPriceTickSize := decimal.RequireFromString(marketInfo.GetMinPriceTickSize().String()) - minQuantityTickSize := decimal.RequireFromString(marketInfo.GetMinQuantityTickSize().String()) - minNotional := decimal.RequireFromString(marketInfo.GetMinNotional().String()) + makerFeeRate := decimal.RequireFromString(marketInfo.MakerFeeRate.String()) + takerFeeRate := decimal.RequireFromString(marketInfo.TakerFeeRate.String()) + serviceProviderFee := decimal.RequireFromString(marketInfo.RelayerFeeShareRate.String()) + minPriceTickSize := decimal.RequireFromString(marketInfo.MinPriceTickSize.String()) + minQuantityTickSize := decimal.RequireFromString(marketInfo.MinQuantityTickSize.String()) + minNotional := decimal.RequireFromString(marketInfo.MinNotional.String()) market := core.SpotMarket{ Id: marketInfo.GetMarketId(), - Status: marketInfo.GetMarketStatus().String(), + Status: marketInfo.Status.String(), Ticker: marketInfo.GetTicker(), BaseToken: baseToken, QuoteToken: quoteToken, @@ -350,29 +350,29 @@ func (assistant *MarketsAssistant) initializeFromChain(ctx context.Context, chai for _, fullMarket := range derivativeMarkets.GetMarkets() { marketInfo := fullMarket.GetMarket() - quoteToken, quoteTokenFound := assistant.tokensByDenom[marketInfo.GetQuoteDenom()] + quoteToken, quoteTokenFound := assistant.tokensByDenom[marketInfo.QuoteDenom] if !quoteTokenFound { // Ignore the market because it references a token that is not in the token list continue } - initialMarginRatio := decimal.RequireFromString(marketInfo.GetInitialMarginRatio().String()) + initialMarginRatio := decimal.RequireFromString(marketInfo.InitialMarginRatio.String()) maintenanceMarginRatio := decimal.RequireFromString(marketInfo.MaintenanceMarginRatio.String()) - makerFeeRate := decimal.RequireFromString(marketInfo.GetMakerFeeRate().String()) - takerFeeRate := decimal.RequireFromString(marketInfo.GetTakerFeeRate().String()) - serviceProviderFee := decimal.RequireFromString(marketInfo.GetRelayerFeeShareRate().String()) - minPriceTickSize := decimal.RequireFromString(marketInfo.GetMinPriceTickSize().String()) - minQuantityTickSize := decimal.RequireFromString(marketInfo.GetMinQuantityTickSize().String()) - minNotional := decimal.RequireFromString(marketInfo.GetMinNotional().String()) + makerFeeRate := decimal.RequireFromString(marketInfo.MakerFeeRate.String()) + takerFeeRate := decimal.RequireFromString(marketInfo.TakerFeeRate.String()) + serviceProviderFee := decimal.RequireFromString(marketInfo.RelayerFeeShareRate.String()) + minPriceTickSize := decimal.RequireFromString(marketInfo.MinPriceTickSize.String()) + minQuantityTickSize := decimal.RequireFromString(marketInfo.MinQuantityTickSize.String()) + minNotional := decimal.RequireFromString(marketInfo.MinNotional.String()) market := core.DerivativeMarket{ Id: marketInfo.MarketId, - Status: marketInfo.GetMarketStatus().String(), - Ticker: marketInfo.GetTicker(), + Status: marketInfo.Status.String(), + Ticker: marketInfo.Ticker, OracleBase: marketInfo.OracleBase, OracleQuote: marketInfo.OracleQuote, OracleType: marketInfo.OracleType.String(), - OracleScaleFactor: marketInfo.GetOracleScaleFactor(), + OracleScaleFactor: marketInfo.OracleScaleFactor, InitialMarginRatio: initialMarginRatio, MaintenanceMarginRatio: maintenanceMarginRatio, QuoteToken: quoteToken, @@ -394,27 +394,27 @@ func (assistant *MarketsAssistant) initializeFromChain(ctx context.Context, chai } for _, marketInfo := range binaryOptionsMarkets.GetMarkets() { - quoteToken, quoteTokenFound := assistant.tokensByDenom[marketInfo.GetQuoteDenom()] + quoteToken, quoteTokenFound := assistant.tokensByDenom[marketInfo.QuoteDenom] if !quoteTokenFound { // Ignore the market because it references a token that is not in the token list continue } - makerFeeRate := decimal.RequireFromString(marketInfo.GetMakerFeeRate().String()) - takerFeeRate := decimal.RequireFromString(marketInfo.GetTakerFeeRate().String()) - serviceProviderFee := decimal.RequireFromString(marketInfo.GetRelayerFeeShareRate().String()) - minPriceTickSize := decimal.RequireFromString(marketInfo.GetMinPriceTickSize().String()) - minQuantityTickSize := decimal.RequireFromString(marketInfo.GetMinQuantityTickSize().String()) - minNotional := decimal.RequireFromString(marketInfo.GetMinNotional().String()) + makerFeeRate := decimal.RequireFromString(marketInfo.MakerFeeRate.String()) + takerFeeRate := decimal.RequireFromString(marketInfo.TakerFeeRate.String()) + serviceProviderFee := decimal.RequireFromString(marketInfo.RelayerFeeShareRate.String()) + minPriceTickSize := decimal.RequireFromString(marketInfo.MinPriceTickSize.String()) + minQuantityTickSize := decimal.RequireFromString(marketInfo.MinQuantityTickSize.String()) + minNotional := decimal.RequireFromString(marketInfo.MinNotional.String()) market := core.BinaryOptionMarket{ Id: marketInfo.MarketId, - Status: marketInfo.GetMarketStatus().String(), - Ticker: marketInfo.GetTicker(), + Status: marketInfo.Status.String(), + Ticker: marketInfo.Ticker, OracleSymbol: marketInfo.OracleSymbol, OracleProvider: marketInfo.OracleProvider, OracleType: marketInfo.OracleType.String(), - OracleScaleFactor: marketInfo.GetOracleScaleFactor(), + OracleScaleFactor: marketInfo.OracleScaleFactor, ExpirationTimestamp: marketInfo.ExpirationTimestamp, SettlementTimestamp: marketInfo.SettlementTimestamp, QuoteToken: quoteToken, diff --git a/examples/chain/permissions/1_MsgCreateNamespace/example.go b/examples/chain/permissions/1_MsgCreateNamespace/example.go new file mode 100644 index 00000000..087a4f81 --- /dev/null +++ b/examples/chain/permissions/1_MsgCreateNamespace/example.go @@ -0,0 +1,135 @@ +package main + +import ( + "encoding/json" + "fmt" + "os" + + permissionstypes "github.com/InjectiveLabs/sdk-go/chain/permissions/types" + "github.com/InjectiveLabs/sdk-go/client" + chainclient "github.com/InjectiveLabs/sdk-go/client/chain" + "github.com/InjectiveLabs/sdk-go/client/common" + rpchttp "github.com/cometbft/cometbft/rpc/client/http" +) + +func main() { + network := common.LoadNetwork("devnet", "lb") + tmClient, err := rpchttp.New(network.TmEndpoint, "/websocket") + if err != nil { + panic(err) + } + + senderAddress, cosmosKeyring, err := chainclient.InitCosmosKeyring( + os.Getenv("HOME")+"/.injectived", + "injectived", + "file", + "inj-user", + "12345678", + "f9db9bf330e23cb7839039e944adef6e9df447b90b503d5b4464c90bea9022f3", // keyring will be used if pk not provided + false, + ) + + if err != nil { + panic(err) + } + + clientCtx, err := chainclient.NewClientContext( + network.ChainId, + senderAddress.String(), + cosmosKeyring, + ) + + if err != nil { + panic(err) + } + + clientCtx = clientCtx.WithNodeURI(network.TmEndpoint).WithClient(tmClient) + + chainClient, err := chainclient.NewChainClient( + clientCtx, + network, + common.OptionGasPrices(client.DefaultGasPriceWithDenom), + ) + + if err != nil { + panic(err) + } + + denom := "factory/inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r/inj_test" + role1 := permissionstypes.Role{ + Name: "EVERYONE", + RoleId: 0, + Permissions: uint32(permissionstypes.Action_RECEIVE | permissionstypes.Action_SEND), + } + role2 := permissionstypes.Role{ + Name: "admin", + RoleId: 1, + Permissions: uint32(permissionstypes.Action_MODIFY_ROLE_PERMISSIONS), + } + role3 := permissionstypes.Role{ + Name: "user", + RoleId: 2, + Permissions: uint32( + permissionstypes.Action_MINT | + permissionstypes.Action_RECEIVE | + permissionstypes.Action_BURN | + permissionstypes.Action_SEND), + } + + actor_role1 := permissionstypes.ActorRoles{ + Actor: "inj1specificactoraddress", + Roles: []string{"admin"}, + } + actor_role2 := permissionstypes.ActorRoles{ + Actor: "inj1anotheractoraddress", + Roles: []string{"user"}, + } + + role_manager := permissionstypes.RoleManager{ + Manager: "inj1manageraddress", + Roles: []string{"admin"}, + } + + policy_status1 := permissionstypes.PolicyStatus{ + Action: permissionstypes.Action_MINT, + IsDisabled: false, + IsSealed: false, + } + policy_status2 := permissionstypes.PolicyStatus{ + Action: permissionstypes.Action_BURN, + IsDisabled: false, + IsSealed: false, + } + + policy_manager_capability := permissionstypes.PolicyManagerCapability{ + Manager: "inj1policymanageraddress", + Action: permissionstypes.Action_MODIFY_CONTRACT_HOOK, + CanDisable: true, + CanSeal: false, + } + + namespace := permissionstypes.Namespace{ + Denom: denom, + ContractHook: "", + RolePermissions: []*permissionstypes.Role{&role1, &role2, &role3}, + ActorRoles: []*permissionstypes.ActorRoles{&actor_role1, &actor_role2}, + RoleManagers: []*permissionstypes.RoleManager{&role_manager}, + PolicyStatuses: []*permissionstypes.PolicyStatus{&policy_status1, &policy_status2}, + PolicyManagerCapabilities: []*permissionstypes.PolicyManagerCapability{&policy_manager_capability}, + } + + msg := &permissionstypes.MsgCreateNamespace{ + Sender: senderAddress.String(), + Namespace: namespace, + } + + //AsyncBroadcastMsg, SyncBroadcastMsg, QueueBroadcastMsg + response, err := chainClient.SyncBroadcastMsg(msg) + + if err != nil { + panic(err) + } + + str, _ := json.MarshalIndent(response, "", " ") + fmt.Print(string(str)) +} diff --git a/examples/chain/permissions/2_DeleteNamespace/example.go b/examples/chain/permissions/2_DeleteNamespace/example.go deleted file mode 100644 index 611f569e..00000000 --- a/examples/chain/permissions/2_DeleteNamespace/example.go +++ /dev/null @@ -1,74 +0,0 @@ -package main - -import ( - "encoding/json" - "fmt" - "os" - - permissionstypes "github.com/InjectiveLabs/sdk-go/chain/permissions/types" - "github.com/InjectiveLabs/sdk-go/client" - chainclient "github.com/InjectiveLabs/sdk-go/client/chain" - "github.com/InjectiveLabs/sdk-go/client/common" - rpchttp "github.com/cometbft/cometbft/rpc/client/http" -) - -func main() { - network := common.LoadNetwork("devnet", "lb") - tmClient, err := rpchttp.New(network.TmEndpoint, "/websocket") - if err != nil { - panic(err) - } - - senderAddress, cosmosKeyring, err := chainclient.InitCosmosKeyring( - os.Getenv("HOME")+"/.injectived", - "injectived", - "file", - "inj-user", - "12345678", - "f9db9bf330e23cb7839039e944adef6e9df447b90b503d5b4464c90bea9022f3", // keyring will be used if pk not provided - false, - ) - - if err != nil { - panic(err) - } - - clientCtx, err := chainclient.NewClientContext( - network.ChainId, - senderAddress.String(), - cosmosKeyring, - ) - - if err != nil { - panic(err) - } - - clientCtx = clientCtx.WithNodeURI(network.TmEndpoint).WithClient(tmClient) - - chainClient, err := chainclient.NewChainClient( - clientCtx, - network, - common.OptionGasPrices(client.DefaultGasPriceWithDenom), - ) - - if err != nil { - panic(err) - } - - namespaceDenom := "factory/inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r/inj_test" - - msg := &permissionstypes.MsgDeleteNamespace{ - Sender: senderAddress.String(), - NamespaceDenom: namespaceDenom, - } - - //AsyncBroadcastMsg, SyncBroadcastMsg, QueueBroadcastMsg - response, err := chainClient.SyncBroadcastMsg(msg) - - if err != nil { - panic(err) - } - - str, _ := json.MarshalIndent(response, "", " ") - fmt.Print(string(str)) -} diff --git a/examples/chain/permissions/2_MsgUpdateNamespace/example.go b/examples/chain/permissions/2_MsgUpdateNamespace/example.go new file mode 100644 index 00000000..6d50bd00 --- /dev/null +++ b/examples/chain/permissions/2_MsgUpdateNamespace/example.go @@ -0,0 +1,113 @@ +package main + +import ( + "encoding/json" + "fmt" + "os" + + permissionstypes "github.com/InjectiveLabs/sdk-go/chain/permissions/types" + "github.com/InjectiveLabs/sdk-go/client" + chainclient "github.com/InjectiveLabs/sdk-go/client/chain" + "github.com/InjectiveLabs/sdk-go/client/common" + rpchttp "github.com/cometbft/cometbft/rpc/client/http" +) + +func main() { + network := common.LoadNetwork("devnet", "lb") + tmClient, err := rpchttp.New(network.TmEndpoint, "/websocket") + if err != nil { + panic(err) + } + + senderAddress, cosmosKeyring, err := chainclient.InitCosmosKeyring( + os.Getenv("HOME")+"/.injectived", + "injectived", + "file", + "inj-user", + "12345678", + "f9db9bf330e23cb7839039e944adef6e9df447b90b503d5b4464c90bea9022f3", // keyring will be used if pk not provided + false, + ) + + if err != nil { + panic(err) + } + + clientCtx, err := chainclient.NewClientContext( + network.ChainId, + senderAddress.String(), + cosmosKeyring, + ) + + if err != nil { + panic(err) + } + + clientCtx = clientCtx.WithNodeURI(network.TmEndpoint).WithClient(tmClient) + + chainClient, err := chainclient.NewChainClient( + clientCtx, + network, + common.OptionGasPrices(client.DefaultGasPriceWithDenom), + ) + + if err != nil { + panic(err) + } + + denom := "factory/inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r/inj_test" + + role1 := permissionstypes.Role{ + Name: "EVERYONE", + RoleId: 0, + Permissions: uint32(permissionstypes.Action_UNSPECIFIED), + } + role2 := permissionstypes.Role{ + Name: "user", + RoleId: 2, + Permissions: uint32(permissionstypes.Action_RECEIVE | permissionstypes.Action_SEND), + } + + role_manager := permissionstypes.RoleManager{ + Manager: "inj1manageraddress", + Roles: []string{"admin", "user"}, + } + + policy_status1 := permissionstypes.PolicyStatus{ + Action: permissionstypes.Action_MINT, + IsDisabled: true, + IsSealed: false, + } + policy_status2 := permissionstypes.PolicyStatus{ + Action: permissionstypes.Action_BURN, + IsDisabled: false, + IsSealed: true, + } + + policy_manager_capability := permissionstypes.PolicyManagerCapability{ + Manager: "inj1policymanageraddress", + Action: permissionstypes.Action_MODIFY_ROLE_PERMISSIONS, + CanDisable: true, + CanSeal: false, + } + + msg := &permissionstypes.MsgUpdateNamespace{ + Sender: senderAddress.String(), + Denom: denom, + ContractHook: &permissionstypes.MsgUpdateNamespace_SetContractHook{NewValue: "inj19ld6swyldyujcn72j7ugnu9twafhs9wxlyye5m"}, + RolePermissions: []*permissionstypes.Role{&role1, &role2}, + RoleManagers: []*permissionstypes.RoleManager{&role_manager}, + PolicyStatuses: []*permissionstypes.PolicyStatus{&policy_status1, &policy_status2}, + PolicyManagerCapabilities: []*permissionstypes.PolicyManagerCapability{&policy_manager_capability}, + } + + //AsyncBroadcastMsg, SyncBroadcastMsg, QueueBroadcastMsg + response, err := chainClient.SyncBroadcastMsg(msg) + + if err != nil { + panic(err) + } + + str, _ := json.MarshalIndent(response, "", " ") + fmt.Print(string(str)) +} diff --git a/examples/chain/permissions/1_CreateNamespace/example.go b/examples/chain/permissions/3_MsgUpdateActorRoles/example.go similarity index 64% rename from examples/chain/permissions/1_CreateNamespace/example.go rename to examples/chain/permissions/3_MsgUpdateActorRoles/example.go index 540d2a9b..dc9d5594 100644 --- a/examples/chain/permissions/1_CreateNamespace/example.go +++ b/examples/chain/permissions/3_MsgUpdateActorRoles/example.go @@ -55,30 +55,29 @@ func main() { panic(err) } - blockedAddress := "inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r" - namespace := permissionstypes.Namespace{ - Denom: "factory/inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r/inj_test", - RolePermissions: []*permissionstypes.Role{ - { - Role: permissionstypes.EVERYONE, - Permissions: uint32(permissionstypes.Action_MINT | permissionstypes.Action_RECEIVE | permissionstypes.Action_BURN), - }, - { - Role: "blacklisted", - Permissions: 0, - }, - }, - AddressRoles: []*permissionstypes.AddressRoles{ - { - Address: blockedAddress, - Roles: []string{"blacklisted"}, - }, - }, + denom := "factory/inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r/inj_test" + roleActors1 := permissionstypes.RoleActors{ + Role: "admin", + Actors: []string{"inj1actoraddress1", "inj1actoraddress2"}, + } + roleActors2 := permissionstypes.RoleActors{ + Role: "user", + Actors: []string{"inj1actoraddress3"}, + } + roleActors3 := permissionstypes.RoleActors{ + Role: "user", + Actors: []string{"inj1actoraddress4"}, + } + roleActors4 := permissionstypes.RoleActors{ + Role: "admin", + Actors: []string{"inj1actoraddress5"}, } - msg := &permissionstypes.MsgCreateNamespace{ - Sender: senderAddress.String(), - Namespace: namespace, + msg := &permissionstypes.MsgUpdateActorRoles{ + Sender: senderAddress.String(), + Denom: denom, + RoleActorsToAdd: []*permissionstypes.RoleActors{&roleActors1, &roleActors2}, + RoleActorsToRevoke: []*permissionstypes.RoleActors{&roleActors3, &roleActors4}, } //AsyncBroadcastMsg, SyncBroadcastMsg, QueueBroadcastMsg diff --git a/examples/chain/permissions/3_UpdateNamespace/example.go b/examples/chain/permissions/3_UpdateNamespace/example.go deleted file mode 100644 index 2fd48eaf..00000000 --- a/examples/chain/permissions/3_UpdateNamespace/example.go +++ /dev/null @@ -1,78 +0,0 @@ -package main - -import ( - "encoding/json" - "fmt" - "os" - - permissionstypes "github.com/InjectiveLabs/sdk-go/chain/permissions/types" - "github.com/InjectiveLabs/sdk-go/client" - chainclient "github.com/InjectiveLabs/sdk-go/client/chain" - "github.com/InjectiveLabs/sdk-go/client/common" - rpchttp "github.com/cometbft/cometbft/rpc/client/http" -) - -func main() { - network := common.LoadNetwork("devnet", "lb") - tmClient, err := rpchttp.New(network.TmEndpoint, "/websocket") - if err != nil { - panic(err) - } - - senderAddress, cosmosKeyring, err := chainclient.InitCosmosKeyring( - os.Getenv("HOME")+"/.injectived", - "injectived", - "file", - "inj-user", - "12345678", - "f9db9bf330e23cb7839039e944adef6e9df447b90b503d5b4464c90bea9022f3", // keyring will be used if pk not provided - false, - ) - - if err != nil { - panic(err) - } - - clientCtx, err := chainclient.NewClientContext( - network.ChainId, - senderAddress.String(), - cosmosKeyring, - ) - - if err != nil { - panic(err) - } - - clientCtx = clientCtx.WithNodeURI(network.TmEndpoint).WithClient(tmClient) - - chainClient, err := chainclient.NewChainClient( - clientCtx, - network, - common.OptionGasPrices(client.DefaultGasPriceWithDenom), - ) - - if err != nil { - panic(err) - } - - namespaceDenom := "factory/inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r/inj_test" - - msg := &permissionstypes.MsgUpdateNamespace{ - Sender: senderAddress.String(), - NamespaceDenom: namespaceDenom, - WasmHook: &permissionstypes.MsgUpdateNamespace_MsgSetWasmHook{NewValue: "inj19ld6swyldyujcn72j7ugnu9twafhs9wxlyye5m"}, - SendsPaused: &permissionstypes.MsgUpdateNamespace_MsgSetSendsPaused{NewValue: true}, - MintsPaused: &permissionstypes.MsgUpdateNamespace_MsgSetMintsPaused{NewValue: true}, - BurnsPaused: &permissionstypes.MsgUpdateNamespace_MsgSetBurnsPaused{NewValue: true}, - } - - //AsyncBroadcastMsg, SyncBroadcastMsg, QueueBroadcastMsg - response, err := chainClient.SyncBroadcastMsg(msg) - - if err != nil { - panic(err) - } - - str, _ := json.MarshalIndent(response, "", " ") - fmt.Print(string(str)) -} diff --git a/examples/chain/permissions/6_ClaimVoucher/example.go b/examples/chain/permissions/4_MsgClaimVoucher/example.go similarity index 100% rename from examples/chain/permissions/6_ClaimVoucher/example.go rename to examples/chain/permissions/4_MsgClaimVoucher/example.go diff --git a/examples/chain/permissions/4_UpdateNamespaceRoles/example.go b/examples/chain/permissions/4_UpdateNamespaceRoles/example.go deleted file mode 100644 index 62941e9d..00000000 --- a/examples/chain/permissions/4_UpdateNamespaceRoles/example.go +++ /dev/null @@ -1,91 +0,0 @@ -package main - -import ( - "encoding/json" - "fmt" - "os" - - permissionstypes "github.com/InjectiveLabs/sdk-go/chain/permissions/types" - "github.com/InjectiveLabs/sdk-go/client" - chainclient "github.com/InjectiveLabs/sdk-go/client/chain" - "github.com/InjectiveLabs/sdk-go/client/common" - rpchttp "github.com/cometbft/cometbft/rpc/client/http" -) - -func main() { - network := common.LoadNetwork("devnet", "lb") - tmClient, err := rpchttp.New(network.TmEndpoint, "/websocket") - if err != nil { - panic(err) - } - - senderAddress, cosmosKeyring, err := chainclient.InitCosmosKeyring( - os.Getenv("HOME")+"/.injectived", - "injectived", - "file", - "inj-user", - "12345678", - "f9db9bf330e23cb7839039e944adef6e9df447b90b503d5b4464c90bea9022f3", // keyring will be used if pk not provided - false, - ) - - if err != nil { - panic(err) - } - - clientCtx, err := chainclient.NewClientContext( - network.ChainId, - senderAddress.String(), - cosmosKeyring, - ) - - if err != nil { - panic(err) - } - - clientCtx = clientCtx.WithNodeURI(network.TmEndpoint).WithClient(tmClient) - - chainClient, err := chainclient.NewChainClient( - clientCtx, - network, - common.OptionGasPrices(client.DefaultGasPriceWithDenom), - ) - - if err != nil { - panic(err) - } - - namespaceDenom := "factory/inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r/inj_test" - blockedAddress := "inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r" - - msg := &permissionstypes.MsgUpdateNamespaceRoles{ - Sender: senderAddress.String(), - NamespaceDenom: namespaceDenom, - RolePermissions: []*permissionstypes.Role{ - { - Role: permissionstypes.EVERYONE, - Permissions: uint32(permissionstypes.Action_RECEIVE), - }, - { - Role: "blacklisted", - Permissions: 0, - }, - }, - AddressRoles: []*permissionstypes.AddressRoles{ - { - Address: blockedAddress, - Roles: []string{"blacklisted"}, - }, - }, - } - - //AsyncBroadcastMsg, SyncBroadcastMsg, QueueBroadcastMsg - response, err := chainClient.SyncBroadcastMsg(msg) - - if err != nil { - panic(err) - } - - str, _ := json.MarshalIndent(response, "", " ") - fmt.Print(string(str)) -} diff --git a/examples/chain/permissions/5_RevokeNamespaceRoles/example.go b/examples/chain/permissions/5_RevokeNamespaceRoles/example.go deleted file mode 100644 index 3bc62f57..00000000 --- a/examples/chain/permissions/5_RevokeNamespaceRoles/example.go +++ /dev/null @@ -1,81 +0,0 @@ -package main - -import ( - "encoding/json" - "fmt" - "os" - - permissionstypes "github.com/InjectiveLabs/sdk-go/chain/permissions/types" - "github.com/InjectiveLabs/sdk-go/client" - chainclient "github.com/InjectiveLabs/sdk-go/client/chain" - "github.com/InjectiveLabs/sdk-go/client/common" - rpchttp "github.com/cometbft/cometbft/rpc/client/http" -) - -func main() { - network := common.LoadNetwork("devnet", "lb") - tmClient, err := rpchttp.New(network.TmEndpoint, "/websocket") - if err != nil { - panic(err) - } - - senderAddress, cosmosKeyring, err := chainclient.InitCosmosKeyring( - os.Getenv("HOME")+"/.injectived", - "injectived", - "file", - "inj-user", - "12345678", - "f9db9bf330e23cb7839039e944adef6e9df447b90b503d5b4464c90bea9022f3", // keyring will be used if pk not provided - false, - ) - - if err != nil { - panic(err) - } - - clientCtx, err := chainclient.NewClientContext( - network.ChainId, - senderAddress.String(), - cosmosKeyring, - ) - - if err != nil { - panic(err) - } - - clientCtx = clientCtx.WithNodeURI(network.TmEndpoint).WithClient(tmClient) - - chainClient, err := chainclient.NewChainClient( - clientCtx, - network, - common.OptionGasPrices(client.DefaultGasPriceWithDenom), - ) - - if err != nil { - panic(err) - } - - namespaceDenom := "factory/inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r/inj_test" - blockedAddress := "inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r" - - msg := &permissionstypes.MsgRevokeNamespaceRoles{ - Sender: senderAddress.String(), - NamespaceDenom: namespaceDenom, - AddressRolesToRevoke: []*permissionstypes.AddressRoles{ - { - Address: blockedAddress, - Roles: []string{"blacklisted"}, - }, - }, - } - - //AsyncBroadcastMsg, SyncBroadcastMsg, QueueBroadcastMsg - response, err := chainClient.SyncBroadcastMsg(msg) - - if err != nil { - panic(err) - } - - str, _ := json.MarshalIndent(response, "", " ") - fmt.Print(string(str)) -} diff --git a/examples/chain/permissions/query/5_VouchersForAddress/example.go b/examples/chain/permissions/query/10_Vouchers/example.go similarity index 90% rename from examples/chain/permissions/query/5_VouchersForAddress/example.go rename to examples/chain/permissions/query/10_Vouchers/example.go index fe7b9d96..fe7d9b84 100644 --- a/examples/chain/permissions/query/5_VouchersForAddress/example.go +++ b/examples/chain/permissions/query/10_Vouchers/example.go @@ -55,11 +55,11 @@ func main() { panic(err) } - address := senderAddress.String() - ctx := context.Background() - res, err := chainClient.FetchVouchersForAddress(ctx, address) + denom := "factory/inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r/inj_test" + + res, err := chainClient.FetchPermissionsVouchers(ctx, denom) if err != nil { fmt.Println(err) } diff --git a/examples/chain/permissions/query/11_Voucher/example.go b/examples/chain/permissions/query/11_Voucher/example.go new file mode 100644 index 00000000..dc393327 --- /dev/null +++ b/examples/chain/permissions/query/11_Voucher/example.go @@ -0,0 +1,70 @@ +package main + +import ( + "context" + "encoding/json" + "fmt" + "os" + + "github.com/InjectiveLabs/sdk-go/client" + chainclient "github.com/InjectiveLabs/sdk-go/client/chain" + "github.com/InjectiveLabs/sdk-go/client/common" + rpchttp "github.com/cometbft/cometbft/rpc/client/http" +) + +func main() { + network := common.LoadNetwork("devnet", "lb") + tmClient, err := rpchttp.New(network.TmEndpoint, "/websocket") + if err != nil { + panic(err) + } + + senderAddress, cosmosKeyring, err := chainclient.InitCosmosKeyring( + os.Getenv("HOME")+"/.injectived", + "injectived", + "file", + "inj-user", + "12345678", + "f9db9bf330e23cb7839039e944adef6e9df447b90b503d5b4464c90bea9022f3", // keyring will be used if pk not provided + false, + ) + + if err != nil { + panic(err) + } + + clientCtx, err := chainclient.NewClientContext( + network.ChainId, + senderAddress.String(), + cosmosKeyring, + ) + + if err != nil { + panic(err) + } + + clientCtx = clientCtx.WithNodeURI(network.TmEndpoint).WithClient(tmClient) + + chainClient, err := chainclient.NewChainClient( + clientCtx, + network, + common.OptionGasPrices(client.DefaultGasPriceWithDenom), + ) + + if err != nil { + panic(err) + } + + ctx := context.Background() + + denom := "factory/inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r/inj_test" + address := "inj1knhahceyp57j5x7xh69p7utegnnnfgxavmahjr" + + res, err := chainClient.FetchPermissionsVoucher(ctx, denom, address) + if err != nil { + fmt.Println(err) + } + + str, _ := json.MarshalIndent(res, "", " ") + fmt.Print(string(str)) +} diff --git a/examples/chain/permissions/query/12_PermissionsModuleState/example.go b/examples/chain/permissions/query/12_PermissionsModuleState/example.go new file mode 100644 index 00000000..71687687 --- /dev/null +++ b/examples/chain/permissions/query/12_PermissionsModuleState/example.go @@ -0,0 +1,69 @@ +package main + +import ( + "context" + "encoding/json" + "fmt" + + "os" + + "github.com/InjectiveLabs/sdk-go/client" + chainclient "github.com/InjectiveLabs/sdk-go/client/chain" + "github.com/InjectiveLabs/sdk-go/client/common" + rpchttp "github.com/cometbft/cometbft/rpc/client/http" +) + +func main() { + network := common.LoadNetwork("devnet", "lb") + tmClient, err := rpchttp.New(network.TmEndpoint, "/websocket") + if err != nil { + panic(err) + } + + senderAddress, cosmosKeyring, err := chainclient.InitCosmosKeyring( + os.Getenv("HOME")+"/.injectived", + "injectived", + "file", + "inj-user", + "12345678", + "5d386fbdbf11f1141010f81a46b40f94887367562bd33b452bbaa6ce1cd1381e", // keyring will be used if pk not provided + false, + ) + + if err != nil { + panic(err) + } + + clientCtx, err := chainclient.NewClientContext( + network.ChainId, + senderAddress.String(), + cosmosKeyring, + ) + + if err != nil { + panic(err) + } + + clientCtx = clientCtx.WithNodeURI(network.TmEndpoint).WithClient(tmClient) + + chainClient, err := chainclient.NewChainClient( + clientCtx, + network, + common.OptionGasPrices(client.DefaultGasPriceWithDenom), + ) + + if err != nil { + panic(err) + } + + ctx := context.Background() + + res, err := chainClient.FetchPermissionsModuleState(ctx) + if err != nil { + fmt.Println(err) + } + + str, _ := json.MarshalIndent(res, "", " ") + fmt.Print(string(str)) + +} diff --git a/examples/chain/permissions/query/1_NamespaceDenoms/example.go b/examples/chain/permissions/query/1_NamespaceDenoms/example.go new file mode 100644 index 00000000..23ac104f --- /dev/null +++ b/examples/chain/permissions/query/1_NamespaceDenoms/example.go @@ -0,0 +1,69 @@ +package main + +import ( + "context" + "encoding/json" + "fmt" + + "os" + + "github.com/InjectiveLabs/sdk-go/client" + chainclient "github.com/InjectiveLabs/sdk-go/client/chain" + "github.com/InjectiveLabs/sdk-go/client/common" + rpchttp "github.com/cometbft/cometbft/rpc/client/http" +) + +func main() { + network := common.LoadNetwork("devnet", "lb") + tmClient, err := rpchttp.New(network.TmEndpoint, "/websocket") + if err != nil { + panic(err) + } + + senderAddress, cosmosKeyring, err := chainclient.InitCosmosKeyring( + os.Getenv("HOME")+"/.injectived", + "injectived", + "file", + "inj-user", + "12345678", + "5d386fbdbf11f1141010f81a46b40f94887367562bd33b452bbaa6ce1cd1381e", // keyring will be used if pk not provided + false, + ) + + if err != nil { + panic(err) + } + + clientCtx, err := chainclient.NewClientContext( + network.ChainId, + senderAddress.String(), + cosmosKeyring, + ) + + if err != nil { + panic(err) + } + + clientCtx = clientCtx.WithNodeURI(network.TmEndpoint).WithClient(tmClient) + + chainClient, err := chainclient.NewChainClient( + clientCtx, + network, + common.OptionGasPrices(client.DefaultGasPriceWithDenom), + ) + + if err != nil { + panic(err) + } + + ctx := context.Background() + + res, err := chainClient.FetchPermissionsNamespaceDenoms(ctx) + if err != nil { + fmt.Println(err) + } + + str, _ := json.MarshalIndent(res, "", " ") + fmt.Print(string(str)) + +} diff --git a/examples/chain/permissions/query/1_AllNamespaces/example.go b/examples/chain/permissions/query/2_Namespaces/example.go similarity index 95% rename from examples/chain/permissions/query/1_AllNamespaces/example.go rename to examples/chain/permissions/query/2_Namespaces/example.go index 650477d2..10bceac6 100644 --- a/examples/chain/permissions/query/1_AllNamespaces/example.go +++ b/examples/chain/permissions/query/2_Namespaces/example.go @@ -58,7 +58,7 @@ func main() { ctx := context.Background() - res, err := chainClient.FetchAllNamespaces(ctx) + res, err := chainClient.FetchPermissionsNamespaces(ctx) if err != nil { fmt.Println(err) } diff --git a/examples/chain/permissions/query/2_NamespaceByDenom/example.go b/examples/chain/permissions/query/3_Namespace/example.go similarity index 94% rename from examples/chain/permissions/query/2_NamespaceByDenom/example.go rename to examples/chain/permissions/query/3_Namespace/example.go index 69efeb11..3a48c57d 100644 --- a/examples/chain/permissions/query/2_NamespaceByDenom/example.go +++ b/examples/chain/permissions/query/3_Namespace/example.go @@ -59,7 +59,7 @@ func main() { ctx := context.Background() - res, err := chainClient.FetchNamespaceByDenom(ctx, namespaceDenom, true) + res, err := chainClient.FetchPermissionsNamespace(ctx, namespaceDenom) if err != nil { fmt.Println(err) } diff --git a/examples/chain/permissions/query/3_AddressRoles/example.go b/examples/chain/permissions/query/4_RolesByActor/example.go similarity index 92% rename from examples/chain/permissions/query/3_AddressRoles/example.go rename to examples/chain/permissions/query/4_RolesByActor/example.go index 17fe06a0..b86c5d4b 100644 --- a/examples/chain/permissions/query/3_AddressRoles/example.go +++ b/examples/chain/permissions/query/4_RolesByActor/example.go @@ -56,11 +56,11 @@ func main() { } namespaceDenom := "factory/inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r/inj_test" - address := senderAddress.String() + actor := senderAddress.String() ctx := context.Background() - res, err := chainClient.FetchAddressRoles(ctx, namespaceDenom, address) + res, err := chainClient.FetchPermissionsRolesByActor(ctx, namespaceDenom, actor) if err != nil { fmt.Println(err) } diff --git a/examples/chain/permissions/query/4_AddressesByRole/example.go b/examples/chain/permissions/query/5_ActorsByRole/example.go similarity index 94% rename from examples/chain/permissions/query/4_AddressesByRole/example.go rename to examples/chain/permissions/query/5_ActorsByRole/example.go index ca2b3f7f..35ed2e24 100644 --- a/examples/chain/permissions/query/4_AddressesByRole/example.go +++ b/examples/chain/permissions/query/5_ActorsByRole/example.go @@ -60,7 +60,7 @@ func main() { ctx := context.Background() - res, err := chainClient.FetchAddressesByRole(ctx, namespaceDenom, role) + res, err := chainClient.FetchPermissionsActorsByRole(ctx, namespaceDenom, role) if err != nil { fmt.Println(err) } diff --git a/examples/chain/permissions/query/6_RoleManagers/example.go b/examples/chain/permissions/query/6_RoleManagers/example.go new file mode 100644 index 00000000..9e99b3aa --- /dev/null +++ b/examples/chain/permissions/query/6_RoleManagers/example.go @@ -0,0 +1,69 @@ +package main + +import ( + "context" + "encoding/json" + "fmt" + "os" + + "github.com/InjectiveLabs/sdk-go/client" + chainclient "github.com/InjectiveLabs/sdk-go/client/chain" + "github.com/InjectiveLabs/sdk-go/client/common" + rpchttp "github.com/cometbft/cometbft/rpc/client/http" +) + +func main() { + network := common.LoadNetwork("devnet", "lb") + tmClient, err := rpchttp.New(network.TmEndpoint, "/websocket") + if err != nil { + panic(err) + } + + senderAddress, cosmosKeyring, err := chainclient.InitCosmosKeyring( + os.Getenv("HOME")+"/.injectived", + "injectived", + "file", + "inj-user", + "12345678", + "f9db9bf330e23cb7839039e944adef6e9df447b90b503d5b4464c90bea9022f3", // keyring will be used if pk not provided + false, + ) + + if err != nil { + panic(err) + } + + clientCtx, err := chainclient.NewClientContext( + network.ChainId, + senderAddress.String(), + cosmosKeyring, + ) + + if err != nil { + panic(err) + } + + clientCtx = clientCtx.WithNodeURI(network.TmEndpoint).WithClient(tmClient) + + chainClient, err := chainclient.NewChainClient( + clientCtx, + network, + common.OptionGasPrices(client.DefaultGasPriceWithDenom), + ) + + if err != nil { + panic(err) + } + + ctx := context.Background() + + denom := "factory/inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r/inj_test" + + res, err := chainClient.FetchPermissionsRoleManagers(ctx, denom) + if err != nil { + fmt.Println(err) + } + + str, _ := json.MarshalIndent(res, "", " ") + fmt.Print(string(str)) +} diff --git a/examples/chain/permissions/query/7_RoleManager/example.go b/examples/chain/permissions/query/7_RoleManager/example.go new file mode 100644 index 00000000..b61af27b --- /dev/null +++ b/examples/chain/permissions/query/7_RoleManager/example.go @@ -0,0 +1,70 @@ +package main + +import ( + "context" + "encoding/json" + "fmt" + "os" + + "github.com/InjectiveLabs/sdk-go/client" + chainclient "github.com/InjectiveLabs/sdk-go/client/chain" + "github.com/InjectiveLabs/sdk-go/client/common" + rpchttp "github.com/cometbft/cometbft/rpc/client/http" +) + +func main() { + network := common.LoadNetwork("devnet", "lb") + tmClient, err := rpchttp.New(network.TmEndpoint, "/websocket") + if err != nil { + panic(err) + } + + senderAddress, cosmosKeyring, err := chainclient.InitCosmosKeyring( + os.Getenv("HOME")+"/.injectived", + "injectived", + "file", + "inj-user", + "12345678", + "f9db9bf330e23cb7839039e944adef6e9df447b90b503d5b4464c90bea9022f3", // keyring will be used if pk not provided + false, + ) + + if err != nil { + panic(err) + } + + clientCtx, err := chainclient.NewClientContext( + network.ChainId, + senderAddress.String(), + cosmosKeyring, + ) + + if err != nil { + panic(err) + } + + clientCtx = clientCtx.WithNodeURI(network.TmEndpoint).WithClient(tmClient) + + chainClient, err := chainclient.NewChainClient( + clientCtx, + network, + common.OptionGasPrices(client.DefaultGasPriceWithDenom), + ) + + if err != nil { + panic(err) + } + + ctx := context.Background() + + denom := "factory/inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r/inj_test" + manager := "inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r" + + res, err := chainClient.FetchPermissionsRoleManager(ctx, denom, manager) + if err != nil { + fmt.Println(err) + } + + str, _ := json.MarshalIndent(res, "", " ") + fmt.Print(string(str)) +} diff --git a/examples/chain/permissions/query/8_PolicyStatuses/example.go b/examples/chain/permissions/query/8_PolicyStatuses/example.go new file mode 100644 index 00000000..64deff3e --- /dev/null +++ b/examples/chain/permissions/query/8_PolicyStatuses/example.go @@ -0,0 +1,69 @@ +package main + +import ( + "context" + "encoding/json" + "fmt" + "os" + + "github.com/InjectiveLabs/sdk-go/client" + chainclient "github.com/InjectiveLabs/sdk-go/client/chain" + "github.com/InjectiveLabs/sdk-go/client/common" + rpchttp "github.com/cometbft/cometbft/rpc/client/http" +) + +func main() { + network := common.LoadNetwork("devnet", "lb") + tmClient, err := rpchttp.New(network.TmEndpoint, "/websocket") + if err != nil { + panic(err) + } + + senderAddress, cosmosKeyring, err := chainclient.InitCosmosKeyring( + os.Getenv("HOME")+"/.injectived", + "injectived", + "file", + "inj-user", + "12345678", + "f9db9bf330e23cb7839039e944adef6e9df447b90b503d5b4464c90bea9022f3", // keyring will be used if pk not provided + false, + ) + + if err != nil { + panic(err) + } + + clientCtx, err := chainclient.NewClientContext( + network.ChainId, + senderAddress.String(), + cosmosKeyring, + ) + + if err != nil { + panic(err) + } + + clientCtx = clientCtx.WithNodeURI(network.TmEndpoint).WithClient(tmClient) + + chainClient, err := chainclient.NewChainClient( + clientCtx, + network, + common.OptionGasPrices(client.DefaultGasPriceWithDenom), + ) + + if err != nil { + panic(err) + } + + ctx := context.Background() + + denom := "factory/inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r/inj_test" + + res, err := chainClient.FetchPermissionsPolicyStatuses(ctx, denom) + if err != nil { + fmt.Println(err) + } + + str, _ := json.MarshalIndent(res, "", " ") + fmt.Print(string(str)) +} diff --git a/examples/chain/permissions/query/9_PolicyManagerCapabilities/example.go b/examples/chain/permissions/query/9_PolicyManagerCapabilities/example.go new file mode 100644 index 00000000..64deff3e --- /dev/null +++ b/examples/chain/permissions/query/9_PolicyManagerCapabilities/example.go @@ -0,0 +1,69 @@ +package main + +import ( + "context" + "encoding/json" + "fmt" + "os" + + "github.com/InjectiveLabs/sdk-go/client" + chainclient "github.com/InjectiveLabs/sdk-go/client/chain" + "github.com/InjectiveLabs/sdk-go/client/common" + rpchttp "github.com/cometbft/cometbft/rpc/client/http" +) + +func main() { + network := common.LoadNetwork("devnet", "lb") + tmClient, err := rpchttp.New(network.TmEndpoint, "/websocket") + if err != nil { + panic(err) + } + + senderAddress, cosmosKeyring, err := chainclient.InitCosmosKeyring( + os.Getenv("HOME")+"/.injectived", + "injectived", + "file", + "inj-user", + "12345678", + "f9db9bf330e23cb7839039e944adef6e9df447b90b503d5b4464c90bea9022f3", // keyring will be used if pk not provided + false, + ) + + if err != nil { + panic(err) + } + + clientCtx, err := chainclient.NewClientContext( + network.ChainId, + senderAddress.String(), + cosmosKeyring, + ) + + if err != nil { + panic(err) + } + + clientCtx = clientCtx.WithNodeURI(network.TmEndpoint).WithClient(tmClient) + + chainClient, err := chainclient.NewChainClient( + clientCtx, + network, + common.OptionGasPrices(client.DefaultGasPriceWithDenom), + ) + + if err != nil { + panic(err) + } + + ctx := context.Background() + + denom := "factory/inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r/inj_test" + + res, err := chainClient.FetchPermissionsPolicyStatuses(ctx, denom) + if err != nil { + fmt.Println(err) + } + + str, _ := json.MarshalIndent(res, "", " ") + fmt.Print(string(str)) +} diff --git a/exchange/accounts_rpc/pb/goadesign_goagen_injective_accounts_rpc.pb.go b/exchange/accounts_rpc/pb/goadesign_goagen_injective_accounts_rpc.pb.go index b118a8a5..6e44ae07 100644 --- a/exchange/accounts_rpc/pb/goadesign_goagen_injective_accounts_rpc.pb.go +++ b/exchange/accounts_rpc/pb/goadesign_goagen_injective_accounts_rpc.pb.go @@ -8,7 +8,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.30.0 -// protoc v3.19.4 +// protoc v3.21.12 // source: goadesign_goagen_injective_accounts_rpc.proto package injective_accounts_rpcpb diff --git a/exchange/accounts_rpc/pb/goadesign_goagen_injective_accounts_rpc_grpc.pb.go b/exchange/accounts_rpc/pb/goadesign_goagen_injective_accounts_rpc_grpc.pb.go index ceb634f9..57dec967 100644 --- a/exchange/accounts_rpc/pb/goadesign_goagen_injective_accounts_rpc_grpc.pb.go +++ b/exchange/accounts_rpc/pb/goadesign_goagen_injective_accounts_rpc_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.2.0 -// - protoc v3.19.4 +// - protoc v3.21.12 // source: goadesign_goagen_injective_accounts_rpc.proto package injective_accounts_rpcpb diff --git a/exchange/accounts_rpc/pb/pb/goadesign_goagen_injective_accounts_rpc.pb.go b/exchange/accounts_rpc/pb/pb/goadesign_goagen_injective_accounts_rpc.pb.go deleted file mode 100644 index b118a8a5..00000000 --- a/exchange/accounts_rpc/pb/pb/goadesign_goagen_injective_accounts_rpc.pb.go +++ /dev/null @@ -1,5333 +0,0 @@ -// Code generated with goa v3.7.0, DO NOT EDIT. -// -// InjectiveAccountsRPC protocol buffer definition -// -// Command: -// $ goa gen github.com/InjectiveLabs/injective-indexer/api/design -o ../ - -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.30.0 -// protoc v3.19.4 -// source: goadesign_goagen_injective_accounts_rpc.proto - -package injective_accounts_rpcpb - -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - reflect "reflect" - sync "sync" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -type PortfolioRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Account address - AccountAddress string `protobuf:"bytes,1,opt,name=account_address,json=accountAddress,proto3" json:"account_address,omitempty"` -} - -func (x *PortfolioRequest) Reset() { - *x = PortfolioRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *PortfolioRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PortfolioRequest) ProtoMessage() {} - -func (x *PortfolioRequest) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use PortfolioRequest.ProtoReflect.Descriptor instead. -func (*PortfolioRequest) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{0} -} - -func (x *PortfolioRequest) GetAccountAddress() string { - if x != nil { - return x.AccountAddress - } - return "" -} - -type PortfolioResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The portfolio of this account - Portfolio *AccountPortfolio `protobuf:"bytes,1,opt,name=portfolio,proto3" json:"portfolio,omitempty"` -} - -func (x *PortfolioResponse) Reset() { - *x = PortfolioResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *PortfolioResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PortfolioResponse) ProtoMessage() {} - -func (x *PortfolioResponse) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use PortfolioResponse.ProtoReflect.Descriptor instead. -func (*PortfolioResponse) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{1} -} - -func (x *PortfolioResponse) GetPortfolio() *AccountPortfolio { - if x != nil { - return x.Portfolio - } - return nil -} - -type AccountPortfolio struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The account's portfolio value in USD. - PortfolioValue string `protobuf:"bytes,1,opt,name=portfolio_value,json=portfolioValue,proto3" json:"portfolio_value,omitempty"` - // The account's available balance value in USD. - AvailableBalance string `protobuf:"bytes,2,opt,name=available_balance,json=availableBalance,proto3" json:"available_balance,omitempty"` - // The account's locked balance value in USD. - LockedBalance string `protobuf:"bytes,3,opt,name=locked_balance,json=lockedBalance,proto3" json:"locked_balance,omitempty"` - // The account's total unrealized PnL value in USD. - UnrealizedPnl string `protobuf:"bytes,4,opt,name=unrealized_pnl,json=unrealizedPnl,proto3" json:"unrealized_pnl,omitempty"` - // List of all subaccounts' portfolio - Subaccounts []*SubaccountPortfolio `protobuf:"bytes,5,rep,name=subaccounts,proto3" json:"subaccounts,omitempty"` -} - -func (x *AccountPortfolio) Reset() { - *x = AccountPortfolio{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *AccountPortfolio) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AccountPortfolio) ProtoMessage() {} - -func (x *AccountPortfolio) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use AccountPortfolio.ProtoReflect.Descriptor instead. -func (*AccountPortfolio) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{2} -} - -func (x *AccountPortfolio) GetPortfolioValue() string { - if x != nil { - return x.PortfolioValue - } - return "" -} - -func (x *AccountPortfolio) GetAvailableBalance() string { - if x != nil { - return x.AvailableBalance - } - return "" -} - -func (x *AccountPortfolio) GetLockedBalance() string { - if x != nil { - return x.LockedBalance - } - return "" -} - -func (x *AccountPortfolio) GetUnrealizedPnl() string { - if x != nil { - return x.UnrealizedPnl - } - return "" -} - -func (x *AccountPortfolio) GetSubaccounts() []*SubaccountPortfolio { - if x != nil { - return x.Subaccounts - } - return nil -} - -type SubaccountPortfolio struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The ID of this subaccount - SubaccountId string `protobuf:"bytes,1,opt,name=subaccount_id,json=subaccountId,proto3" json:"subaccount_id,omitempty"` - // The subaccount's available balance value in USD. - AvailableBalance string `protobuf:"bytes,2,opt,name=available_balance,json=availableBalance,proto3" json:"available_balance,omitempty"` - // The subaccount's locked balance value in USD. - LockedBalance string `protobuf:"bytes,3,opt,name=locked_balance,json=lockedBalance,proto3" json:"locked_balance,omitempty"` - // The subaccount's total unrealized PnL value in USD. - UnrealizedPnl string `protobuf:"bytes,4,opt,name=unrealized_pnl,json=unrealizedPnl,proto3" json:"unrealized_pnl,omitempty"` -} - -func (x *SubaccountPortfolio) Reset() { - *x = SubaccountPortfolio{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SubaccountPortfolio) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SubaccountPortfolio) ProtoMessage() {} - -func (x *SubaccountPortfolio) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SubaccountPortfolio.ProtoReflect.Descriptor instead. -func (*SubaccountPortfolio) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{3} -} - -func (x *SubaccountPortfolio) GetSubaccountId() string { - if x != nil { - return x.SubaccountId - } - return "" -} - -func (x *SubaccountPortfolio) GetAvailableBalance() string { - if x != nil { - return x.AvailableBalance - } - return "" -} - -func (x *SubaccountPortfolio) GetLockedBalance() string { - if x != nil { - return x.LockedBalance - } - return "" -} - -func (x *SubaccountPortfolio) GetUnrealizedPnl() string { - if x != nil { - return x.UnrealizedPnl - } - return "" -} - -type OrderStatesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - SpotOrderHashes []string `protobuf:"bytes,1,rep,name=spot_order_hashes,json=spotOrderHashes,proto3" json:"spot_order_hashes,omitempty"` - DerivativeOrderHashes []string `protobuf:"bytes,2,rep,name=derivative_order_hashes,json=derivativeOrderHashes,proto3" json:"derivative_order_hashes,omitempty"` -} - -func (x *OrderStatesRequest) Reset() { - *x = OrderStatesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *OrderStatesRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*OrderStatesRequest) ProtoMessage() {} - -func (x *OrderStatesRequest) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use OrderStatesRequest.ProtoReflect.Descriptor instead. -func (*OrderStatesRequest) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{4} -} - -func (x *OrderStatesRequest) GetSpotOrderHashes() []string { - if x != nil { - return x.SpotOrderHashes - } - return nil -} - -func (x *OrderStatesRequest) GetDerivativeOrderHashes() []string { - if x != nil { - return x.DerivativeOrderHashes - } - return nil -} - -type OrderStatesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // List of the spot order state records - SpotOrderStates []*OrderStateRecord `protobuf:"bytes,1,rep,name=spot_order_states,json=spotOrderStates,proto3" json:"spot_order_states,omitempty"` - // List of the derivative order state records - DerivativeOrderStates []*OrderStateRecord `protobuf:"bytes,2,rep,name=derivative_order_states,json=derivativeOrderStates,proto3" json:"derivative_order_states,omitempty"` -} - -func (x *OrderStatesResponse) Reset() { - *x = OrderStatesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *OrderStatesResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*OrderStatesResponse) ProtoMessage() {} - -func (x *OrderStatesResponse) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use OrderStatesResponse.ProtoReflect.Descriptor instead. -func (*OrderStatesResponse) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{5} -} - -func (x *OrderStatesResponse) GetSpotOrderStates() []*OrderStateRecord { - if x != nil { - return x.SpotOrderStates - } - return nil -} - -func (x *OrderStatesResponse) GetDerivativeOrderStates() []*OrderStateRecord { - if x != nil { - return x.DerivativeOrderStates - } - return nil -} - -type OrderStateRecord struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Hash of the order - OrderHash string `protobuf:"bytes,1,opt,name=order_hash,json=orderHash,proto3" json:"order_hash,omitempty"` - // The subaccountId that this order belongs to - SubaccountId string `protobuf:"bytes,2,opt,name=subaccount_id,json=subaccountId,proto3" json:"subaccount_id,omitempty"` - // The Market ID of the order - MarketId string `protobuf:"bytes,3,opt,name=market_id,json=marketId,proto3" json:"market_id,omitempty"` - // The type of the order - OrderType string `protobuf:"bytes,4,opt,name=order_type,json=orderType,proto3" json:"order_type,omitempty"` - // The side of the order - OrderSide string `protobuf:"bytes,5,opt,name=order_side,json=orderSide,proto3" json:"order_side,omitempty"` - // The state (status) of the order - State string `protobuf:"bytes,6,opt,name=state,proto3" json:"state,omitempty"` - // The filled quantity of the order - QuantityFilled string `protobuf:"bytes,7,opt,name=quantity_filled,json=quantityFilled,proto3" json:"quantity_filled,omitempty"` - // The filled quantity of the order - QuantityRemaining string `protobuf:"bytes,8,opt,name=quantity_remaining,json=quantityRemaining,proto3" json:"quantity_remaining,omitempty"` - // Order committed timestamp in UNIX millis. - CreatedAt int64 `protobuf:"zigzag64,9,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - // Order updated timestamp in UNIX millis. - UpdatedAt int64 `protobuf:"zigzag64,10,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - // Order prices - Price string `protobuf:"bytes,11,opt,name=price,proto3" json:"price,omitempty"` - // Margin for derivative order - Margin string `protobuf:"bytes,12,opt,name=margin,proto3" json:"margin,omitempty"` -} - -func (x *OrderStateRecord) Reset() { - *x = OrderStateRecord{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *OrderStateRecord) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*OrderStateRecord) ProtoMessage() {} - -func (x *OrderStateRecord) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use OrderStateRecord.ProtoReflect.Descriptor instead. -func (*OrderStateRecord) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{6} -} - -func (x *OrderStateRecord) GetOrderHash() string { - if x != nil { - return x.OrderHash - } - return "" -} - -func (x *OrderStateRecord) GetSubaccountId() string { - if x != nil { - return x.SubaccountId - } - return "" -} - -func (x *OrderStateRecord) GetMarketId() string { - if x != nil { - return x.MarketId - } - return "" -} - -func (x *OrderStateRecord) GetOrderType() string { - if x != nil { - return x.OrderType - } - return "" -} - -func (x *OrderStateRecord) GetOrderSide() string { - if x != nil { - return x.OrderSide - } - return "" -} - -func (x *OrderStateRecord) GetState() string { - if x != nil { - return x.State - } - return "" -} - -func (x *OrderStateRecord) GetQuantityFilled() string { - if x != nil { - return x.QuantityFilled - } - return "" -} - -func (x *OrderStateRecord) GetQuantityRemaining() string { - if x != nil { - return x.QuantityRemaining - } - return "" -} - -func (x *OrderStateRecord) GetCreatedAt() int64 { - if x != nil { - return x.CreatedAt - } - return 0 -} - -func (x *OrderStateRecord) GetUpdatedAt() int64 { - if x != nil { - return x.UpdatedAt - } - return 0 -} - -func (x *OrderStateRecord) GetPrice() string { - if x != nil { - return x.Price - } - return "" -} - -func (x *OrderStateRecord) GetMargin() string { - if x != nil { - return x.Margin - } - return "" -} - -type SubaccountsListRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Account address, the subaccounts owner - AccountAddress string `protobuf:"bytes,1,opt,name=account_address,json=accountAddress,proto3" json:"account_address,omitempty"` -} - -func (x *SubaccountsListRequest) Reset() { - *x = SubaccountsListRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SubaccountsListRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SubaccountsListRequest) ProtoMessage() {} - -func (x *SubaccountsListRequest) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SubaccountsListRequest.ProtoReflect.Descriptor instead. -func (*SubaccountsListRequest) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{7} -} - -func (x *SubaccountsListRequest) GetAccountAddress() string { - if x != nil { - return x.AccountAddress - } - return "" -} - -type SubaccountsListResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Subaccounts []string `protobuf:"bytes,1,rep,name=subaccounts,proto3" json:"subaccounts,omitempty"` -} - -func (x *SubaccountsListResponse) Reset() { - *x = SubaccountsListResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SubaccountsListResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SubaccountsListResponse) ProtoMessage() {} - -func (x *SubaccountsListResponse) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SubaccountsListResponse.ProtoReflect.Descriptor instead. -func (*SubaccountsListResponse) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{8} -} - -func (x *SubaccountsListResponse) GetSubaccounts() []string { - if x != nil { - return x.Subaccounts - } - return nil -} - -type SubaccountBalancesListRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // SubaccountId of the trader we want to get the trades from - SubaccountId string `protobuf:"bytes,1,opt,name=subaccount_id,json=subaccountId,proto3" json:"subaccount_id,omitempty"` - // Filter balances by denoms. If not set, the balances of all the denoms for - // the subaccount are provided. - Denoms []string `protobuf:"bytes,2,rep,name=denoms,proto3" json:"denoms,omitempty"` -} - -func (x *SubaccountBalancesListRequest) Reset() { - *x = SubaccountBalancesListRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SubaccountBalancesListRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SubaccountBalancesListRequest) ProtoMessage() {} - -func (x *SubaccountBalancesListRequest) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SubaccountBalancesListRequest.ProtoReflect.Descriptor instead. -func (*SubaccountBalancesListRequest) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{9} -} - -func (x *SubaccountBalancesListRequest) GetSubaccountId() string { - if x != nil { - return x.SubaccountId - } - return "" -} - -func (x *SubaccountBalancesListRequest) GetDenoms() []string { - if x != nil { - return x.Denoms - } - return nil -} - -type SubaccountBalancesListResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // List of subaccount balances - Balances []*SubaccountBalance `protobuf:"bytes,1,rep,name=balances,proto3" json:"balances,omitempty"` -} - -func (x *SubaccountBalancesListResponse) Reset() { - *x = SubaccountBalancesListResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SubaccountBalancesListResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SubaccountBalancesListResponse) ProtoMessage() {} - -func (x *SubaccountBalancesListResponse) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[10] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SubaccountBalancesListResponse.ProtoReflect.Descriptor instead. -func (*SubaccountBalancesListResponse) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{10} -} - -func (x *SubaccountBalancesListResponse) GetBalances() []*SubaccountBalance { - if x != nil { - return x.Balances - } - return nil -} - -type SubaccountBalance struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Related subaccount ID - SubaccountId string `protobuf:"bytes,1,opt,name=subaccount_id,json=subaccountId,proto3" json:"subaccount_id,omitempty"` - // Account address, owner of this subaccount - AccountAddress string `protobuf:"bytes,2,opt,name=account_address,json=accountAddress,proto3" json:"account_address,omitempty"` - // Coin denom on the chain. - Denom string `protobuf:"bytes,3,opt,name=denom,proto3" json:"denom,omitempty"` - Deposit *SubaccountDeposit `protobuf:"bytes,4,opt,name=deposit,proto3" json:"deposit,omitempty"` -} - -func (x *SubaccountBalance) Reset() { - *x = SubaccountBalance{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SubaccountBalance) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SubaccountBalance) ProtoMessage() {} - -func (x *SubaccountBalance) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[11] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SubaccountBalance.ProtoReflect.Descriptor instead. -func (*SubaccountBalance) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{11} -} - -func (x *SubaccountBalance) GetSubaccountId() string { - if x != nil { - return x.SubaccountId - } - return "" -} - -func (x *SubaccountBalance) GetAccountAddress() string { - if x != nil { - return x.AccountAddress - } - return "" -} - -func (x *SubaccountBalance) GetDenom() string { - if x != nil { - return x.Denom - } - return "" -} - -func (x *SubaccountBalance) GetDeposit() *SubaccountDeposit { - if x != nil { - return x.Deposit - } - return nil -} - -type SubaccountDeposit struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - TotalBalance string `protobuf:"bytes,1,opt,name=total_balance,json=totalBalance,proto3" json:"total_balance,omitempty"` - AvailableBalance string `protobuf:"bytes,2,opt,name=available_balance,json=availableBalance,proto3" json:"available_balance,omitempty"` -} - -func (x *SubaccountDeposit) Reset() { - *x = SubaccountDeposit{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SubaccountDeposit) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SubaccountDeposit) ProtoMessage() {} - -func (x *SubaccountDeposit) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[12] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SubaccountDeposit.ProtoReflect.Descriptor instead. -func (*SubaccountDeposit) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{12} -} - -func (x *SubaccountDeposit) GetTotalBalance() string { - if x != nil { - return x.TotalBalance - } - return "" -} - -func (x *SubaccountDeposit) GetAvailableBalance() string { - if x != nil { - return x.AvailableBalance - } - return "" -} - -type SubaccountBalanceEndpointRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // SubaccountId of the trader we want to get the trades from - SubaccountId string `protobuf:"bytes,1,opt,name=subaccount_id,json=subaccountId,proto3" json:"subaccount_id,omitempty"` - // Specify denom to get balance - Denom string `protobuf:"bytes,2,opt,name=denom,proto3" json:"denom,omitempty"` -} - -func (x *SubaccountBalanceEndpointRequest) Reset() { - *x = SubaccountBalanceEndpointRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SubaccountBalanceEndpointRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SubaccountBalanceEndpointRequest) ProtoMessage() {} - -func (x *SubaccountBalanceEndpointRequest) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[13] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SubaccountBalanceEndpointRequest.ProtoReflect.Descriptor instead. -func (*SubaccountBalanceEndpointRequest) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{13} -} - -func (x *SubaccountBalanceEndpointRequest) GetSubaccountId() string { - if x != nil { - return x.SubaccountId - } - return "" -} - -func (x *SubaccountBalanceEndpointRequest) GetDenom() string { - if x != nil { - return x.Denom - } - return "" -} - -type SubaccountBalanceEndpointResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Subaccount balance - Balance *SubaccountBalance `protobuf:"bytes,1,opt,name=balance,proto3" json:"balance,omitempty"` -} - -func (x *SubaccountBalanceEndpointResponse) Reset() { - *x = SubaccountBalanceEndpointResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SubaccountBalanceEndpointResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SubaccountBalanceEndpointResponse) ProtoMessage() {} - -func (x *SubaccountBalanceEndpointResponse) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[14] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SubaccountBalanceEndpointResponse.ProtoReflect.Descriptor instead. -func (*SubaccountBalanceEndpointResponse) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{14} -} - -func (x *SubaccountBalanceEndpointResponse) GetBalance() *SubaccountBalance { - if x != nil { - return x.Balance - } - return nil -} - -type StreamSubaccountBalanceRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // SubaccountId of the trader we want to get the trades from - SubaccountId string `protobuf:"bytes,1,opt,name=subaccount_id,json=subaccountId,proto3" json:"subaccount_id,omitempty"` - // Filter balances by denoms. If not set, the balances of all the denoms for - // the subaccount are provided. - Denoms []string `protobuf:"bytes,2,rep,name=denoms,proto3" json:"denoms,omitempty"` -} - -func (x *StreamSubaccountBalanceRequest) Reset() { - *x = StreamSubaccountBalanceRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *StreamSubaccountBalanceRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*StreamSubaccountBalanceRequest) ProtoMessage() {} - -func (x *StreamSubaccountBalanceRequest) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[15] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use StreamSubaccountBalanceRequest.ProtoReflect.Descriptor instead. -func (*StreamSubaccountBalanceRequest) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{15} -} - -func (x *StreamSubaccountBalanceRequest) GetSubaccountId() string { - if x != nil { - return x.SubaccountId - } - return "" -} - -func (x *StreamSubaccountBalanceRequest) GetDenoms() []string { - if x != nil { - return x.Denoms - } - return nil -} - -type StreamSubaccountBalanceResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Subaccount balance - Balance *SubaccountBalance `protobuf:"bytes,1,opt,name=balance,proto3" json:"balance,omitempty"` - // Operation timestamp in UNIX millis. - Timestamp int64 `protobuf:"zigzag64,2,opt,name=timestamp,proto3" json:"timestamp,omitempty"` -} - -func (x *StreamSubaccountBalanceResponse) Reset() { - *x = StreamSubaccountBalanceResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[16] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *StreamSubaccountBalanceResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*StreamSubaccountBalanceResponse) ProtoMessage() {} - -func (x *StreamSubaccountBalanceResponse) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[16] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use StreamSubaccountBalanceResponse.ProtoReflect.Descriptor instead. -func (*StreamSubaccountBalanceResponse) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{16} -} - -func (x *StreamSubaccountBalanceResponse) GetBalance() *SubaccountBalance { - if x != nil { - return x.Balance - } - return nil -} - -func (x *StreamSubaccountBalanceResponse) GetTimestamp() int64 { - if x != nil { - return x.Timestamp - } - return 0 -} - -type SubaccountHistoryRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // SubaccountId of the trader we want to get the history from - SubaccountId string `protobuf:"bytes,1,opt,name=subaccount_id,json=subaccountId,proto3" json:"subaccount_id,omitempty"` - // Filter history by denom - Denom string `protobuf:"bytes,2,opt,name=denom,proto3" json:"denom,omitempty"` - // Filter history by transfer type - TransferTypes []string `protobuf:"bytes,3,rep,name=transfer_types,json=transferTypes,proto3" json:"transfer_types,omitempty"` - // Skip will skip the first n item from the result - Skip uint64 `protobuf:"varint,4,opt,name=skip,proto3" json:"skip,omitempty"` - // Limit is used to specify the maximum number of items to be returned - Limit int32 `protobuf:"zigzag32,5,opt,name=limit,proto3" json:"limit,omitempty"` - // Upper bound of account transfer history's executedAt - EndTime int64 `protobuf:"zigzag64,6,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` -} - -func (x *SubaccountHistoryRequest) Reset() { - *x = SubaccountHistoryRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[17] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SubaccountHistoryRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SubaccountHistoryRequest) ProtoMessage() {} - -func (x *SubaccountHistoryRequest) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[17] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SubaccountHistoryRequest.ProtoReflect.Descriptor instead. -func (*SubaccountHistoryRequest) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{17} -} - -func (x *SubaccountHistoryRequest) GetSubaccountId() string { - if x != nil { - return x.SubaccountId - } - return "" -} - -func (x *SubaccountHistoryRequest) GetDenom() string { - if x != nil { - return x.Denom - } - return "" -} - -func (x *SubaccountHistoryRequest) GetTransferTypes() []string { - if x != nil { - return x.TransferTypes - } - return nil -} - -func (x *SubaccountHistoryRequest) GetSkip() uint64 { - if x != nil { - return x.Skip - } - return 0 -} - -func (x *SubaccountHistoryRequest) GetLimit() int32 { - if x != nil { - return x.Limit - } - return 0 -} - -func (x *SubaccountHistoryRequest) GetEndTime() int64 { - if x != nil { - return x.EndTime - } - return 0 -} - -type SubaccountHistoryResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // List of subaccount transfers - Transfers []*SubaccountBalanceTransfer `protobuf:"bytes,1,rep,name=transfers,proto3" json:"transfers,omitempty"` - Paging *Paging `protobuf:"bytes,2,opt,name=paging,proto3" json:"paging,omitempty"` -} - -func (x *SubaccountHistoryResponse) Reset() { - *x = SubaccountHistoryResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[18] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SubaccountHistoryResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SubaccountHistoryResponse) ProtoMessage() {} - -func (x *SubaccountHistoryResponse) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[18] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SubaccountHistoryResponse.ProtoReflect.Descriptor instead. -func (*SubaccountHistoryResponse) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{18} -} - -func (x *SubaccountHistoryResponse) GetTransfers() []*SubaccountBalanceTransfer { - if x != nil { - return x.Transfers - } - return nil -} - -func (x *SubaccountHistoryResponse) GetPaging() *Paging { - if x != nil { - return x.Paging - } - return nil -} - -type SubaccountBalanceTransfer struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Type of the subaccount balance transfer - TransferType string `protobuf:"bytes,1,opt,name=transfer_type,json=transferType,proto3" json:"transfer_type,omitempty"` - // Subaccount ID of the sending side - SrcSubaccountId string `protobuf:"bytes,2,opt,name=src_subaccount_id,json=srcSubaccountId,proto3" json:"src_subaccount_id,omitempty"` - // Account address of the sending side - SrcAccountAddress string `protobuf:"bytes,3,opt,name=src_account_address,json=srcAccountAddress,proto3" json:"src_account_address,omitempty"` - // Subaccount ID of the receiving side - DstSubaccountId string `protobuf:"bytes,4,opt,name=dst_subaccount_id,json=dstSubaccountId,proto3" json:"dst_subaccount_id,omitempty"` - // Account address of the receiving side - DstAccountAddress string `protobuf:"bytes,5,opt,name=dst_account_address,json=dstAccountAddress,proto3" json:"dst_account_address,omitempty"` - // Coin amount of the transfer - Amount *CosmosCoin `protobuf:"bytes,6,opt,name=amount,proto3" json:"amount,omitempty"` - // Timestamp of the transfer in UNIX millis - ExecutedAt int64 `protobuf:"zigzag64,7,opt,name=executed_at,json=executedAt,proto3" json:"executed_at,omitempty"` -} - -func (x *SubaccountBalanceTransfer) Reset() { - *x = SubaccountBalanceTransfer{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[19] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SubaccountBalanceTransfer) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SubaccountBalanceTransfer) ProtoMessage() {} - -func (x *SubaccountBalanceTransfer) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[19] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SubaccountBalanceTransfer.ProtoReflect.Descriptor instead. -func (*SubaccountBalanceTransfer) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{19} -} - -func (x *SubaccountBalanceTransfer) GetTransferType() string { - if x != nil { - return x.TransferType - } - return "" -} - -func (x *SubaccountBalanceTransfer) GetSrcSubaccountId() string { - if x != nil { - return x.SrcSubaccountId - } - return "" -} - -func (x *SubaccountBalanceTransfer) GetSrcAccountAddress() string { - if x != nil { - return x.SrcAccountAddress - } - return "" -} - -func (x *SubaccountBalanceTransfer) GetDstSubaccountId() string { - if x != nil { - return x.DstSubaccountId - } - return "" -} - -func (x *SubaccountBalanceTransfer) GetDstAccountAddress() string { - if x != nil { - return x.DstAccountAddress - } - return "" -} - -func (x *SubaccountBalanceTransfer) GetAmount() *CosmosCoin { - if x != nil { - return x.Amount - } - return nil -} - -func (x *SubaccountBalanceTransfer) GetExecutedAt() int64 { - if x != nil { - return x.ExecutedAt - } - return 0 -} - -type CosmosCoin struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Coin denominator - Denom string `protobuf:"bytes,1,opt,name=denom,proto3" json:"denom,omitempty"` - // Coin amount (big int) - Amount string `protobuf:"bytes,2,opt,name=amount,proto3" json:"amount,omitempty"` -} - -func (x *CosmosCoin) Reset() { - *x = CosmosCoin{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[20] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *CosmosCoin) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CosmosCoin) ProtoMessage() {} - -func (x *CosmosCoin) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[20] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use CosmosCoin.ProtoReflect.Descriptor instead. -func (*CosmosCoin) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{20} -} - -func (x *CosmosCoin) GetDenom() string { - if x != nil { - return x.Denom - } - return "" -} - -func (x *CosmosCoin) GetAmount() string { - if x != nil { - return x.Amount - } - return "" -} - -// Paging defines the structure for required params for handling pagination -type Paging struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // total number of txs saved in database - Total int64 `protobuf:"zigzag64,1,opt,name=total,proto3" json:"total,omitempty"` - // can be either block height or index num - From int32 `protobuf:"zigzag32,2,opt,name=from,proto3" json:"from,omitempty"` - // can be either block height or index num - To int32 `protobuf:"zigzag32,3,opt,name=to,proto3" json:"to,omitempty"` - // count entries by subaccount, serving some places on helix - CountBySubaccount int64 `protobuf:"zigzag64,4,opt,name=count_by_subaccount,json=countBySubaccount,proto3" json:"count_by_subaccount,omitempty"` - // array of tokens to navigate to the next pages - Next []string `protobuf:"bytes,5,rep,name=next,proto3" json:"next,omitempty"` -} - -func (x *Paging) Reset() { - *x = Paging{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[21] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Paging) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Paging) ProtoMessage() {} - -func (x *Paging) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[21] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Paging.ProtoReflect.Descriptor instead. -func (*Paging) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{21} -} - -func (x *Paging) GetTotal() int64 { - if x != nil { - return x.Total - } - return 0 -} - -func (x *Paging) GetFrom() int32 { - if x != nil { - return x.From - } - return 0 -} - -func (x *Paging) GetTo() int32 { - if x != nil { - return x.To - } - return 0 -} - -func (x *Paging) GetCountBySubaccount() int64 { - if x != nil { - return x.CountBySubaccount - } - return 0 -} - -func (x *Paging) GetNext() []string { - if x != nil { - return x.Next - } - return nil -} - -type SubaccountOrderSummaryRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // SubaccountId of the trader we want to get the summary from - SubaccountId string `protobuf:"bytes,1,opt,name=subaccount_id,json=subaccountId,proto3" json:"subaccount_id,omitempty"` - // MarketId is limiting order summary to specific market only - MarketId string `protobuf:"bytes,2,opt,name=market_id,json=marketId,proto3" json:"market_id,omitempty"` - // Filter by direction of the orders - OrderDirection string `protobuf:"bytes,3,opt,name=order_direction,json=orderDirection,proto3" json:"order_direction,omitempty"` -} - -func (x *SubaccountOrderSummaryRequest) Reset() { - *x = SubaccountOrderSummaryRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[22] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SubaccountOrderSummaryRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SubaccountOrderSummaryRequest) ProtoMessage() {} - -func (x *SubaccountOrderSummaryRequest) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[22] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SubaccountOrderSummaryRequest.ProtoReflect.Descriptor instead. -func (*SubaccountOrderSummaryRequest) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{22} -} - -func (x *SubaccountOrderSummaryRequest) GetSubaccountId() string { - if x != nil { - return x.SubaccountId - } - return "" -} - -func (x *SubaccountOrderSummaryRequest) GetMarketId() string { - if x != nil { - return x.MarketId - } - return "" -} - -func (x *SubaccountOrderSummaryRequest) GetOrderDirection() string { - if x != nil { - return x.OrderDirection - } - return "" -} - -type SubaccountOrderSummaryResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Total count of subaccount's spot orders in given market and direction - SpotOrdersTotal int64 `protobuf:"zigzag64,1,opt,name=spot_orders_total,json=spotOrdersTotal,proto3" json:"spot_orders_total,omitempty"` - // Total count of subaccount's derivative orders in given market and direction - DerivativeOrdersTotal int64 `protobuf:"zigzag64,2,opt,name=derivative_orders_total,json=derivativeOrdersTotal,proto3" json:"derivative_orders_total,omitempty"` -} - -func (x *SubaccountOrderSummaryResponse) Reset() { - *x = SubaccountOrderSummaryResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[23] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SubaccountOrderSummaryResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SubaccountOrderSummaryResponse) ProtoMessage() {} - -func (x *SubaccountOrderSummaryResponse) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[23] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SubaccountOrderSummaryResponse.ProtoReflect.Descriptor instead. -func (*SubaccountOrderSummaryResponse) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{23} -} - -func (x *SubaccountOrderSummaryResponse) GetSpotOrdersTotal() int64 { - if x != nil { - return x.SpotOrdersTotal - } - return 0 -} - -func (x *SubaccountOrderSummaryResponse) GetDerivativeOrdersTotal() int64 { - if x != nil { - return x.DerivativeOrdersTotal - } - return 0 -} - -type RewardsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The distribution epoch sequence number. -1 for latest. - Epoch int64 `protobuf:"zigzag64,1,opt,name=epoch,proto3" json:"epoch,omitempty"` - // Account address for the rewards distribution - AccountAddress string `protobuf:"bytes,2,opt,name=account_address,json=accountAddress,proto3" json:"account_address,omitempty"` -} - -func (x *RewardsRequest) Reset() { - *x = RewardsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[24] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *RewardsRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RewardsRequest) ProtoMessage() {} - -func (x *RewardsRequest) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[24] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use RewardsRequest.ProtoReflect.Descriptor instead. -func (*RewardsRequest) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{24} -} - -func (x *RewardsRequest) GetEpoch() int64 { - if x != nil { - return x.Epoch - } - return 0 -} - -func (x *RewardsRequest) GetAccountAddress() string { - if x != nil { - return x.AccountAddress - } - return "" -} - -type RewardsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The trading rewards distributed - Rewards []*Reward `protobuf:"bytes,1,rep,name=rewards,proto3" json:"rewards,omitempty"` -} - -func (x *RewardsResponse) Reset() { - *x = RewardsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[25] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *RewardsResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RewardsResponse) ProtoMessage() {} - -func (x *RewardsResponse) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[25] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use RewardsResponse.ProtoReflect.Descriptor instead. -func (*RewardsResponse) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{25} -} - -func (x *RewardsResponse) GetRewards() []*Reward { - if x != nil { - return x.Rewards - } - return nil -} - -type Reward struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Account address - AccountAddress string `protobuf:"bytes,1,opt,name=account_address,json=accountAddress,proto3" json:"account_address,omitempty"` - // Reward coins distributed - Rewards []*Coin `protobuf:"bytes,2,rep,name=rewards,proto3" json:"rewards,omitempty"` - // Rewards distribution timestamp in UNIX millis. - DistributedAt int64 `protobuf:"zigzag64,3,opt,name=distributed_at,json=distributedAt,proto3" json:"distributed_at,omitempty"` -} - -func (x *Reward) Reset() { - *x = Reward{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[26] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Reward) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Reward) ProtoMessage() {} - -func (x *Reward) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[26] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Reward.ProtoReflect.Descriptor instead. -func (*Reward) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{26} -} - -func (x *Reward) GetAccountAddress() string { - if x != nil { - return x.AccountAddress - } - return "" -} - -func (x *Reward) GetRewards() []*Coin { - if x != nil { - return x.Rewards - } - return nil -} - -func (x *Reward) GetDistributedAt() int64 { - if x != nil { - return x.DistributedAt - } - return 0 -} - -type Coin struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Denom of the coin - Denom string `protobuf:"bytes,1,opt,name=denom,proto3" json:"denom,omitempty"` - Amount string `protobuf:"bytes,2,opt,name=amount,proto3" json:"amount,omitempty"` -} - -func (x *Coin) Reset() { - *x = Coin{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[27] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Coin) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Coin) ProtoMessage() {} - -func (x *Coin) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[27] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Coin.ProtoReflect.Descriptor instead. -func (*Coin) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{27} -} - -func (x *Coin) GetDenom() string { - if x != nil { - return x.Denom - } - return "" -} - -func (x *Coin) GetAmount() string { - if x != nil { - return x.Amount - } - return "" -} - -type StreamAccountDataRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // account address - AccountAddress string `protobuf:"bytes,1,opt,name=account_address,json=accountAddress,proto3" json:"account_address,omitempty"` -} - -func (x *StreamAccountDataRequest) Reset() { - *x = StreamAccountDataRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[28] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *StreamAccountDataRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*StreamAccountDataRequest) ProtoMessage() {} - -func (x *StreamAccountDataRequest) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[28] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use StreamAccountDataRequest.ProtoReflect.Descriptor instead. -func (*StreamAccountDataRequest) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{28} -} - -func (x *StreamAccountDataRequest) GetAccountAddress() string { - if x != nil { - return x.AccountAddress - } - return "" -} - -type StreamAccountDataResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - SubaccountBalance *SubaccountBalanceResult `protobuf:"bytes,1,opt,name=subaccount_balance,json=subaccountBalance,proto3" json:"subaccount_balance,omitempty"` - Position *PositionsResult `protobuf:"bytes,2,opt,name=position,proto3" json:"position,omitempty"` - Trade *TradeResult `protobuf:"bytes,3,opt,name=trade,proto3" json:"trade,omitempty"` - Order *OrderResult `protobuf:"bytes,4,opt,name=order,proto3" json:"order,omitempty"` - OrderHistory *OrderHistoryResult `protobuf:"bytes,5,opt,name=order_history,json=orderHistory,proto3" json:"order_history,omitempty"` - FundingPayment *FundingPaymentResult `protobuf:"bytes,6,opt,name=funding_payment,json=fundingPayment,proto3" json:"funding_payment,omitempty"` -} - -func (x *StreamAccountDataResponse) Reset() { - *x = StreamAccountDataResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[29] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *StreamAccountDataResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*StreamAccountDataResponse) ProtoMessage() {} - -func (x *StreamAccountDataResponse) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[29] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use StreamAccountDataResponse.ProtoReflect.Descriptor instead. -func (*StreamAccountDataResponse) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{29} -} - -func (x *StreamAccountDataResponse) GetSubaccountBalance() *SubaccountBalanceResult { - if x != nil { - return x.SubaccountBalance - } - return nil -} - -func (x *StreamAccountDataResponse) GetPosition() *PositionsResult { - if x != nil { - return x.Position - } - return nil -} - -func (x *StreamAccountDataResponse) GetTrade() *TradeResult { - if x != nil { - return x.Trade - } - return nil -} - -func (x *StreamAccountDataResponse) GetOrder() *OrderResult { - if x != nil { - return x.Order - } - return nil -} - -func (x *StreamAccountDataResponse) GetOrderHistory() *OrderHistoryResult { - if x != nil { - return x.OrderHistory - } - return nil -} - -func (x *StreamAccountDataResponse) GetFundingPayment() *FundingPaymentResult { - if x != nil { - return x.FundingPayment - } - return nil -} - -type SubaccountBalanceResult struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Subaccount balance - Balance *SubaccountBalance `protobuf:"bytes,1,opt,name=balance,proto3" json:"balance,omitempty"` - // Operation timestamp in UNIX millis. - Timestamp int64 `protobuf:"zigzag64,2,opt,name=timestamp,proto3" json:"timestamp,omitempty"` -} - -func (x *SubaccountBalanceResult) Reset() { - *x = SubaccountBalanceResult{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[30] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SubaccountBalanceResult) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SubaccountBalanceResult) ProtoMessage() {} - -func (x *SubaccountBalanceResult) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[30] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SubaccountBalanceResult.ProtoReflect.Descriptor instead. -func (*SubaccountBalanceResult) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{30} -} - -func (x *SubaccountBalanceResult) GetBalance() *SubaccountBalance { - if x != nil { - return x.Balance - } - return nil -} - -func (x *SubaccountBalanceResult) GetTimestamp() int64 { - if x != nil { - return x.Timestamp - } - return 0 -} - -type PositionsResult struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Updated derivative Position - Position *Position `protobuf:"bytes,1,opt,name=position,proto3" json:"position,omitempty"` - // Operation timestamp in UNIX millis. - Timestamp int64 `protobuf:"zigzag64,2,opt,name=timestamp,proto3" json:"timestamp,omitempty"` -} - -func (x *PositionsResult) Reset() { - *x = PositionsResult{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[31] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *PositionsResult) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PositionsResult) ProtoMessage() {} - -func (x *PositionsResult) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[31] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use PositionsResult.ProtoReflect.Descriptor instead. -func (*PositionsResult) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{31} -} - -func (x *PositionsResult) GetPosition() *Position { - if x != nil { - return x.Position - } - return nil -} - -func (x *PositionsResult) GetTimestamp() int64 { - if x != nil { - return x.Timestamp - } - return 0 -} - -type Position struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Ticker of the derivative market - Ticker string `protobuf:"bytes,1,opt,name=ticker,proto3" json:"ticker,omitempty"` - // Derivative Market ID - MarketId string `protobuf:"bytes,2,opt,name=market_id,json=marketId,proto3" json:"market_id,omitempty"` - // The subaccountId that the position belongs to - SubaccountId string `protobuf:"bytes,3,opt,name=subaccount_id,json=subaccountId,proto3" json:"subaccount_id,omitempty"` - // Direction of the position - Direction string `protobuf:"bytes,4,opt,name=direction,proto3" json:"direction,omitempty"` - // Quantity of the position - Quantity string `protobuf:"bytes,5,opt,name=quantity,proto3" json:"quantity,omitempty"` - // Price of the position - EntryPrice string `protobuf:"bytes,6,opt,name=entry_price,json=entryPrice,proto3" json:"entry_price,omitempty"` - // Margin of the position - Margin string `protobuf:"bytes,7,opt,name=margin,proto3" json:"margin,omitempty"` - // LiquidationPrice of the position - LiquidationPrice string `protobuf:"bytes,8,opt,name=liquidation_price,json=liquidationPrice,proto3" json:"liquidation_price,omitempty"` - // MarkPrice of the position - MarkPrice string `protobuf:"bytes,9,opt,name=mark_price,json=markPrice,proto3" json:"mark_price,omitempty"` - // Position updated timestamp in UNIX millis. - UpdatedAt int64 `protobuf:"zigzag64,10,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - // Position created timestamp in UNIX millis. - CreatedAt int64 `protobuf:"zigzag64,11,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` -} - -func (x *Position) Reset() { - *x = Position{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[32] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Position) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Position) ProtoMessage() {} - -func (x *Position) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[32] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Position.ProtoReflect.Descriptor instead. -func (*Position) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{32} -} - -func (x *Position) GetTicker() string { - if x != nil { - return x.Ticker - } - return "" -} - -func (x *Position) GetMarketId() string { - if x != nil { - return x.MarketId - } - return "" -} - -func (x *Position) GetSubaccountId() string { - if x != nil { - return x.SubaccountId - } - return "" -} - -func (x *Position) GetDirection() string { - if x != nil { - return x.Direction - } - return "" -} - -func (x *Position) GetQuantity() string { - if x != nil { - return x.Quantity - } - return "" -} - -func (x *Position) GetEntryPrice() string { - if x != nil { - return x.EntryPrice - } - return "" -} - -func (x *Position) GetMargin() string { - if x != nil { - return x.Margin - } - return "" -} - -func (x *Position) GetLiquidationPrice() string { - if x != nil { - return x.LiquidationPrice - } - return "" -} - -func (x *Position) GetMarkPrice() string { - if x != nil { - return x.MarkPrice - } - return "" -} - -func (x *Position) GetUpdatedAt() int64 { - if x != nil { - return x.UpdatedAt - } - return 0 -} - -func (x *Position) GetCreatedAt() int64 { - if x != nil { - return x.CreatedAt - } - return 0 -} - -type TradeResult struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to Trade: - // - // *TradeResult_SpotTrade - // *TradeResult_DerivativeTrade - Trade isTradeResult_Trade `protobuf_oneof:"trade"` - // Executed trades update type - OperationType string `protobuf:"bytes,3,opt,name=operation_type,json=operationType,proto3" json:"operation_type,omitempty"` - // Operation timestamp in UNIX millis. - Timestamp int64 `protobuf:"zigzag64,4,opt,name=timestamp,proto3" json:"timestamp,omitempty"` -} - -func (x *TradeResult) Reset() { - *x = TradeResult{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[33] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *TradeResult) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*TradeResult) ProtoMessage() {} - -func (x *TradeResult) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[33] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use TradeResult.ProtoReflect.Descriptor instead. -func (*TradeResult) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{33} -} - -func (m *TradeResult) GetTrade() isTradeResult_Trade { - if m != nil { - return m.Trade - } - return nil -} - -func (x *TradeResult) GetSpotTrade() *SpotTrade { - if x, ok := x.GetTrade().(*TradeResult_SpotTrade); ok { - return x.SpotTrade - } - return nil -} - -func (x *TradeResult) GetDerivativeTrade() *DerivativeTrade { - if x, ok := x.GetTrade().(*TradeResult_DerivativeTrade); ok { - return x.DerivativeTrade - } - return nil -} - -func (x *TradeResult) GetOperationType() string { - if x != nil { - return x.OperationType - } - return "" -} - -func (x *TradeResult) GetTimestamp() int64 { - if x != nil { - return x.Timestamp - } - return 0 -} - -type isTradeResult_Trade interface { - isTradeResult_Trade() -} - -type TradeResult_SpotTrade struct { - // New spot market trade - SpotTrade *SpotTrade `protobuf:"bytes,1,opt,name=spot_trade,json=spotTrade,proto3,oneof"` -} - -type TradeResult_DerivativeTrade struct { - // New derivative market trade - DerivativeTrade *DerivativeTrade `protobuf:"bytes,2,opt,name=derivative_trade,json=derivativeTrade,proto3,oneof"` -} - -func (*TradeResult_SpotTrade) isTradeResult_Trade() {} - -func (*TradeResult_DerivativeTrade) isTradeResult_Trade() {} - -type SpotTrade struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Maker order hash. - OrderHash string `protobuf:"bytes,1,opt,name=order_hash,json=orderHash,proto3" json:"order_hash,omitempty"` - // The subaccountId that executed the trade - SubaccountId string `protobuf:"bytes,2,opt,name=subaccount_id,json=subaccountId,proto3" json:"subaccount_id,omitempty"` - // The ID of the market that this trade is in - MarketId string `protobuf:"bytes,3,opt,name=market_id,json=marketId,proto3" json:"market_id,omitempty"` - // The execution type of the trade - TradeExecutionType string `protobuf:"bytes,4,opt,name=trade_execution_type,json=tradeExecutionType,proto3" json:"trade_execution_type,omitempty"` - // The direction the trade - TradeDirection string `protobuf:"bytes,5,opt,name=trade_direction,json=tradeDirection,proto3" json:"trade_direction,omitempty"` - // Price level at which trade has been executed - Price *PriceLevel `protobuf:"bytes,6,opt,name=price,proto3" json:"price,omitempty"` - // The fee associated with the trade (quote asset denom) - Fee string `protobuf:"bytes,7,opt,name=fee,proto3" json:"fee,omitempty"` - // Timestamp of trade execution in UNIX millis - ExecutedAt int64 `protobuf:"zigzag64,8,opt,name=executed_at,json=executedAt,proto3" json:"executed_at,omitempty"` - // Fee recipient address - FeeRecipient string `protobuf:"bytes,9,opt,name=fee_recipient,json=feeRecipient,proto3" json:"fee_recipient,omitempty"` - // A unique string that helps differentiate between trades - TradeId string `protobuf:"bytes,10,opt,name=trade_id,json=tradeId,proto3" json:"trade_id,omitempty"` - // Trade's execution side, marker/taker - ExecutionSide string `protobuf:"bytes,11,opt,name=execution_side,json=executionSide,proto3" json:"execution_side,omitempty"` - // Custom client order ID - Cid string `protobuf:"bytes,12,opt,name=cid,proto3" json:"cid,omitempty"` -} - -func (x *SpotTrade) Reset() { - *x = SpotTrade{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[34] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SpotTrade) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SpotTrade) ProtoMessage() {} - -func (x *SpotTrade) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[34] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SpotTrade.ProtoReflect.Descriptor instead. -func (*SpotTrade) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{34} -} - -func (x *SpotTrade) GetOrderHash() string { - if x != nil { - return x.OrderHash - } - return "" -} - -func (x *SpotTrade) GetSubaccountId() string { - if x != nil { - return x.SubaccountId - } - return "" -} - -func (x *SpotTrade) GetMarketId() string { - if x != nil { - return x.MarketId - } - return "" -} - -func (x *SpotTrade) GetTradeExecutionType() string { - if x != nil { - return x.TradeExecutionType - } - return "" -} - -func (x *SpotTrade) GetTradeDirection() string { - if x != nil { - return x.TradeDirection - } - return "" -} - -func (x *SpotTrade) GetPrice() *PriceLevel { - if x != nil { - return x.Price - } - return nil -} - -func (x *SpotTrade) GetFee() string { - if x != nil { - return x.Fee - } - return "" -} - -func (x *SpotTrade) GetExecutedAt() int64 { - if x != nil { - return x.ExecutedAt - } - return 0 -} - -func (x *SpotTrade) GetFeeRecipient() string { - if x != nil { - return x.FeeRecipient - } - return "" -} - -func (x *SpotTrade) GetTradeId() string { - if x != nil { - return x.TradeId - } - return "" -} - -func (x *SpotTrade) GetExecutionSide() string { - if x != nil { - return x.ExecutionSide - } - return "" -} - -func (x *SpotTrade) GetCid() string { - if x != nil { - return x.Cid - } - return "" -} - -type PriceLevel struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Price number of the price level. - Price string `protobuf:"bytes,1,opt,name=price,proto3" json:"price,omitempty"` - // Quantity of the price level. - Quantity string `protobuf:"bytes,2,opt,name=quantity,proto3" json:"quantity,omitempty"` - // Price level last updated timestamp in UNIX millis. - Timestamp int64 `protobuf:"zigzag64,3,opt,name=timestamp,proto3" json:"timestamp,omitempty"` -} - -func (x *PriceLevel) Reset() { - *x = PriceLevel{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[35] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *PriceLevel) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PriceLevel) ProtoMessage() {} - -func (x *PriceLevel) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[35] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use PriceLevel.ProtoReflect.Descriptor instead. -func (*PriceLevel) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{35} -} - -func (x *PriceLevel) GetPrice() string { - if x != nil { - return x.Price - } - return "" -} - -func (x *PriceLevel) GetQuantity() string { - if x != nil { - return x.Quantity - } - return "" -} - -func (x *PriceLevel) GetTimestamp() int64 { - if x != nil { - return x.Timestamp - } - return 0 -} - -type DerivativeTrade struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Order hash. - OrderHash string `protobuf:"bytes,1,opt,name=order_hash,json=orderHash,proto3" json:"order_hash,omitempty"` - // The subaccountId that executed the trade - SubaccountId string `protobuf:"bytes,2,opt,name=subaccount_id,json=subaccountId,proto3" json:"subaccount_id,omitempty"` - // The ID of the market that this trade is in - MarketId string `protobuf:"bytes,3,opt,name=market_id,json=marketId,proto3" json:"market_id,omitempty"` - // The execution type of the trade - TradeExecutionType string `protobuf:"bytes,4,opt,name=trade_execution_type,json=tradeExecutionType,proto3" json:"trade_execution_type,omitempty"` - // True if the trade is a liquidation - IsLiquidation bool `protobuf:"varint,5,opt,name=is_liquidation,json=isLiquidation,proto3" json:"is_liquidation,omitempty"` - // Position Delta from the trade - PositionDelta *PositionDelta `protobuf:"bytes,6,opt,name=position_delta,json=positionDelta,proto3" json:"position_delta,omitempty"` - // The payout associated with the trade - Payout string `protobuf:"bytes,7,opt,name=payout,proto3" json:"payout,omitempty"` - // The fee associated with the trade - Fee string `protobuf:"bytes,8,opt,name=fee,proto3" json:"fee,omitempty"` - // Timestamp of trade execution in UNIX millis - ExecutedAt int64 `protobuf:"zigzag64,9,opt,name=executed_at,json=executedAt,proto3" json:"executed_at,omitempty"` - // Fee recipient address - FeeRecipient string `protobuf:"bytes,10,opt,name=fee_recipient,json=feeRecipient,proto3" json:"fee_recipient,omitempty"` - // A unique string that helps differentiate between trades - TradeId string `protobuf:"bytes,11,opt,name=trade_id,json=tradeId,proto3" json:"trade_id,omitempty"` - // Trade's execution side, marker/taker - ExecutionSide string `protobuf:"bytes,12,opt,name=execution_side,json=executionSide,proto3" json:"execution_side,omitempty"` - // Custom client order ID - Cid string `protobuf:"bytes,13,opt,name=cid,proto3" json:"cid,omitempty"` -} - -func (x *DerivativeTrade) Reset() { - *x = DerivativeTrade{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[36] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *DerivativeTrade) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DerivativeTrade) ProtoMessage() {} - -func (x *DerivativeTrade) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[36] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DerivativeTrade.ProtoReflect.Descriptor instead. -func (*DerivativeTrade) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{36} -} - -func (x *DerivativeTrade) GetOrderHash() string { - if x != nil { - return x.OrderHash - } - return "" -} - -func (x *DerivativeTrade) GetSubaccountId() string { - if x != nil { - return x.SubaccountId - } - return "" -} - -func (x *DerivativeTrade) GetMarketId() string { - if x != nil { - return x.MarketId - } - return "" -} - -func (x *DerivativeTrade) GetTradeExecutionType() string { - if x != nil { - return x.TradeExecutionType - } - return "" -} - -func (x *DerivativeTrade) GetIsLiquidation() bool { - if x != nil { - return x.IsLiquidation - } - return false -} - -func (x *DerivativeTrade) GetPositionDelta() *PositionDelta { - if x != nil { - return x.PositionDelta - } - return nil -} - -func (x *DerivativeTrade) GetPayout() string { - if x != nil { - return x.Payout - } - return "" -} - -func (x *DerivativeTrade) GetFee() string { - if x != nil { - return x.Fee - } - return "" -} - -func (x *DerivativeTrade) GetExecutedAt() int64 { - if x != nil { - return x.ExecutedAt - } - return 0 -} - -func (x *DerivativeTrade) GetFeeRecipient() string { - if x != nil { - return x.FeeRecipient - } - return "" -} - -func (x *DerivativeTrade) GetTradeId() string { - if x != nil { - return x.TradeId - } - return "" -} - -func (x *DerivativeTrade) GetExecutionSide() string { - if x != nil { - return x.ExecutionSide - } - return "" -} - -func (x *DerivativeTrade) GetCid() string { - if x != nil { - return x.Cid - } - return "" -} - -type PositionDelta struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The direction the trade - TradeDirection string `protobuf:"bytes,1,opt,name=trade_direction,json=tradeDirection,proto3" json:"trade_direction,omitempty"` - // Execution Price of the trade. - ExecutionPrice string `protobuf:"bytes,2,opt,name=execution_price,json=executionPrice,proto3" json:"execution_price,omitempty"` - // Execution Quantity of the trade. - ExecutionQuantity string `protobuf:"bytes,3,opt,name=execution_quantity,json=executionQuantity,proto3" json:"execution_quantity,omitempty"` - // Execution Margin of the trade. - ExecutionMargin string `protobuf:"bytes,4,opt,name=execution_margin,json=executionMargin,proto3" json:"execution_margin,omitempty"` -} - -func (x *PositionDelta) Reset() { - *x = PositionDelta{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[37] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *PositionDelta) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PositionDelta) ProtoMessage() {} - -func (x *PositionDelta) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[37] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use PositionDelta.ProtoReflect.Descriptor instead. -func (*PositionDelta) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{37} -} - -func (x *PositionDelta) GetTradeDirection() string { - if x != nil { - return x.TradeDirection - } - return "" -} - -func (x *PositionDelta) GetExecutionPrice() string { - if x != nil { - return x.ExecutionPrice - } - return "" -} - -func (x *PositionDelta) GetExecutionQuantity() string { - if x != nil { - return x.ExecutionQuantity - } - return "" -} - -func (x *PositionDelta) GetExecutionMargin() string { - if x != nil { - return x.ExecutionMargin - } - return "" -} - -type OrderResult struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to Order: - // - // *OrderResult_SpotOrder - // *OrderResult_DerivativeOrder - Order isOrderResult_Order `protobuf_oneof:"order"` - // Executed orders update type - OperationType string `protobuf:"bytes,3,opt,name=operation_type,json=operationType,proto3" json:"operation_type,omitempty"` - // Operation timestamp in UNIX millis. - Timestamp int64 `protobuf:"zigzag64,4,opt,name=timestamp,proto3" json:"timestamp,omitempty"` -} - -func (x *OrderResult) Reset() { - *x = OrderResult{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[38] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *OrderResult) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*OrderResult) ProtoMessage() {} - -func (x *OrderResult) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[38] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use OrderResult.ProtoReflect.Descriptor instead. -func (*OrderResult) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{38} -} - -func (m *OrderResult) GetOrder() isOrderResult_Order { - if m != nil { - return m.Order - } - return nil -} - -func (x *OrderResult) GetSpotOrder() *SpotLimitOrder { - if x, ok := x.GetOrder().(*OrderResult_SpotOrder); ok { - return x.SpotOrder - } - return nil -} - -func (x *OrderResult) GetDerivativeOrder() *DerivativeLimitOrder { - if x, ok := x.GetOrder().(*OrderResult_DerivativeOrder); ok { - return x.DerivativeOrder - } - return nil -} - -func (x *OrderResult) GetOperationType() string { - if x != nil { - return x.OperationType - } - return "" -} - -func (x *OrderResult) GetTimestamp() int64 { - if x != nil { - return x.Timestamp - } - return 0 -} - -type isOrderResult_Order interface { - isOrderResult_Order() -} - -type OrderResult_SpotOrder struct { - // Updated spot market order - SpotOrder *SpotLimitOrder `protobuf:"bytes,1,opt,name=spot_order,json=spotOrder,proto3,oneof"` -} - -type OrderResult_DerivativeOrder struct { - // Updated derivative market order - DerivativeOrder *DerivativeLimitOrder `protobuf:"bytes,2,opt,name=derivative_order,json=derivativeOrder,proto3,oneof"` -} - -func (*OrderResult_SpotOrder) isOrderResult_Order() {} - -func (*OrderResult_DerivativeOrder) isOrderResult_Order() {} - -type SpotLimitOrder struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Hash of the order - OrderHash string `protobuf:"bytes,1,opt,name=order_hash,json=orderHash,proto3" json:"order_hash,omitempty"` - // The side of the order - OrderSide string `protobuf:"bytes,2,opt,name=order_side,json=orderSide,proto3" json:"order_side,omitempty"` - // Spot Market ID is keccak265(baseDenom + quoteDenom) - MarketId string `protobuf:"bytes,3,opt,name=market_id,json=marketId,proto3" json:"market_id,omitempty"` - // The subaccountId that this order belongs to - SubaccountId string `protobuf:"bytes,4,opt,name=subaccount_id,json=subaccountId,proto3" json:"subaccount_id,omitempty"` - // Price of the order - Price string `protobuf:"bytes,5,opt,name=price,proto3" json:"price,omitempty"` - // Quantity of the order - Quantity string `protobuf:"bytes,6,opt,name=quantity,proto3" json:"quantity,omitempty"` - // The amount of the quantity remaining unfilled - UnfilledQuantity string `protobuf:"bytes,7,opt,name=unfilled_quantity,json=unfilledQuantity,proto3" json:"unfilled_quantity,omitempty"` - // Trigger price is the trigger price used by stop/take orders. 0 if the - // trigger price is not set. - TriggerPrice string `protobuf:"bytes,8,opt,name=trigger_price,json=triggerPrice,proto3" json:"trigger_price,omitempty"` - // Fee recipient address - FeeRecipient string `protobuf:"bytes,9,opt,name=fee_recipient,json=feeRecipient,proto3" json:"fee_recipient,omitempty"` - // Order state - State string `protobuf:"bytes,10,opt,name=state,proto3" json:"state,omitempty"` - // Order committed timestamp in UNIX millis. - CreatedAt int64 `protobuf:"zigzag64,11,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - // Order updated timestamp in UNIX millis. - UpdatedAt int64 `protobuf:"zigzag64,12,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - // Transaction Hash where order is created. Not all orders have this field - TxHash string `protobuf:"bytes,13,opt,name=tx_hash,json=txHash,proto3" json:"tx_hash,omitempty"` - // Custom client order ID - Cid string `protobuf:"bytes,14,opt,name=cid,proto3" json:"cid,omitempty"` -} - -func (x *SpotLimitOrder) Reset() { - *x = SpotLimitOrder{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[39] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SpotLimitOrder) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SpotLimitOrder) ProtoMessage() {} - -func (x *SpotLimitOrder) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[39] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SpotLimitOrder.ProtoReflect.Descriptor instead. -func (*SpotLimitOrder) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{39} -} - -func (x *SpotLimitOrder) GetOrderHash() string { - if x != nil { - return x.OrderHash - } - return "" -} - -func (x *SpotLimitOrder) GetOrderSide() string { - if x != nil { - return x.OrderSide - } - return "" -} - -func (x *SpotLimitOrder) GetMarketId() string { - if x != nil { - return x.MarketId - } - return "" -} - -func (x *SpotLimitOrder) GetSubaccountId() string { - if x != nil { - return x.SubaccountId - } - return "" -} - -func (x *SpotLimitOrder) GetPrice() string { - if x != nil { - return x.Price - } - return "" -} - -func (x *SpotLimitOrder) GetQuantity() string { - if x != nil { - return x.Quantity - } - return "" -} - -func (x *SpotLimitOrder) GetUnfilledQuantity() string { - if x != nil { - return x.UnfilledQuantity - } - return "" -} - -func (x *SpotLimitOrder) GetTriggerPrice() string { - if x != nil { - return x.TriggerPrice - } - return "" -} - -func (x *SpotLimitOrder) GetFeeRecipient() string { - if x != nil { - return x.FeeRecipient - } - return "" -} - -func (x *SpotLimitOrder) GetState() string { - if x != nil { - return x.State - } - return "" -} - -func (x *SpotLimitOrder) GetCreatedAt() int64 { - if x != nil { - return x.CreatedAt - } - return 0 -} - -func (x *SpotLimitOrder) GetUpdatedAt() int64 { - if x != nil { - return x.UpdatedAt - } - return 0 -} - -func (x *SpotLimitOrder) GetTxHash() string { - if x != nil { - return x.TxHash - } - return "" -} - -func (x *SpotLimitOrder) GetCid() string { - if x != nil { - return x.Cid - } - return "" -} - -type DerivativeLimitOrder struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Hash of the order - OrderHash string `protobuf:"bytes,1,opt,name=order_hash,json=orderHash,proto3" json:"order_hash,omitempty"` - // The side of the order - OrderSide string `protobuf:"bytes,2,opt,name=order_side,json=orderSide,proto3" json:"order_side,omitempty"` - // Derivative Market ID - MarketId string `protobuf:"bytes,3,opt,name=market_id,json=marketId,proto3" json:"market_id,omitempty"` - // The subaccountId that this order belongs to - SubaccountId string `protobuf:"bytes,4,opt,name=subaccount_id,json=subaccountId,proto3" json:"subaccount_id,omitempty"` - // True if the order is a reduce-only order - IsReduceOnly bool `protobuf:"varint,5,opt,name=is_reduce_only,json=isReduceOnly,proto3" json:"is_reduce_only,omitempty"` - // Margin of the order - Margin string `protobuf:"bytes,6,opt,name=margin,proto3" json:"margin,omitempty"` - // Price of the order - Price string `protobuf:"bytes,7,opt,name=price,proto3" json:"price,omitempty"` - // Quantity of the order - Quantity string `protobuf:"bytes,8,opt,name=quantity,proto3" json:"quantity,omitempty"` - // The amount of the quantity remaining unfilled - UnfilledQuantity string `protobuf:"bytes,9,opt,name=unfilled_quantity,json=unfilledQuantity,proto3" json:"unfilled_quantity,omitempty"` - // Trigger price is the trigger price used by stop/take orders - TriggerPrice string `protobuf:"bytes,10,opt,name=trigger_price,json=triggerPrice,proto3" json:"trigger_price,omitempty"` - // Fee recipient address - FeeRecipient string `protobuf:"bytes,11,opt,name=fee_recipient,json=feeRecipient,proto3" json:"fee_recipient,omitempty"` - // Order state - State string `protobuf:"bytes,12,opt,name=state,proto3" json:"state,omitempty"` - // Order committed timestamp in UNIX millis. - CreatedAt int64 `protobuf:"zigzag64,13,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - // Order updated timestamp in UNIX millis. - UpdatedAt int64 `protobuf:"zigzag64,14,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - // Order number of subaccount - OrderNumber int64 `protobuf:"zigzag64,15,opt,name=order_number,json=orderNumber,proto3" json:"order_number,omitempty"` - // Order type - OrderType string `protobuf:"bytes,16,opt,name=order_type,json=orderType,proto3" json:"order_type,omitempty"` - // Order type - IsConditional bool `protobuf:"varint,17,opt,name=is_conditional,json=isConditional,proto3" json:"is_conditional,omitempty"` - // Trigger timestamp, only exists for conditional orders - TriggerAt uint64 `protobuf:"varint,18,opt,name=trigger_at,json=triggerAt,proto3" json:"trigger_at,omitempty"` - // OrderHash of order that is triggered by this conditional order - PlacedOrderHash string `protobuf:"bytes,19,opt,name=placed_order_hash,json=placedOrderHash,proto3" json:"placed_order_hash,omitempty"` - // Execution type of conditional order - ExecutionType string `protobuf:"bytes,20,opt,name=execution_type,json=executionType,proto3" json:"execution_type,omitempty"` - // Transaction Hash where order is created. Not all orders have this field - TxHash string `protobuf:"bytes,21,opt,name=tx_hash,json=txHash,proto3" json:"tx_hash,omitempty"` - // Custom client order ID - Cid string `protobuf:"bytes,22,opt,name=cid,proto3" json:"cid,omitempty"` -} - -func (x *DerivativeLimitOrder) Reset() { - *x = DerivativeLimitOrder{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[40] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *DerivativeLimitOrder) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DerivativeLimitOrder) ProtoMessage() {} - -func (x *DerivativeLimitOrder) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[40] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DerivativeLimitOrder.ProtoReflect.Descriptor instead. -func (*DerivativeLimitOrder) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{40} -} - -func (x *DerivativeLimitOrder) GetOrderHash() string { - if x != nil { - return x.OrderHash - } - return "" -} - -func (x *DerivativeLimitOrder) GetOrderSide() string { - if x != nil { - return x.OrderSide - } - return "" -} - -func (x *DerivativeLimitOrder) GetMarketId() string { - if x != nil { - return x.MarketId - } - return "" -} - -func (x *DerivativeLimitOrder) GetSubaccountId() string { - if x != nil { - return x.SubaccountId - } - return "" -} - -func (x *DerivativeLimitOrder) GetIsReduceOnly() bool { - if x != nil { - return x.IsReduceOnly - } - return false -} - -func (x *DerivativeLimitOrder) GetMargin() string { - if x != nil { - return x.Margin - } - return "" -} - -func (x *DerivativeLimitOrder) GetPrice() string { - if x != nil { - return x.Price - } - return "" -} - -func (x *DerivativeLimitOrder) GetQuantity() string { - if x != nil { - return x.Quantity - } - return "" -} - -func (x *DerivativeLimitOrder) GetUnfilledQuantity() string { - if x != nil { - return x.UnfilledQuantity - } - return "" -} - -func (x *DerivativeLimitOrder) GetTriggerPrice() string { - if x != nil { - return x.TriggerPrice - } - return "" -} - -func (x *DerivativeLimitOrder) GetFeeRecipient() string { - if x != nil { - return x.FeeRecipient - } - return "" -} - -func (x *DerivativeLimitOrder) GetState() string { - if x != nil { - return x.State - } - return "" -} - -func (x *DerivativeLimitOrder) GetCreatedAt() int64 { - if x != nil { - return x.CreatedAt - } - return 0 -} - -func (x *DerivativeLimitOrder) GetUpdatedAt() int64 { - if x != nil { - return x.UpdatedAt - } - return 0 -} - -func (x *DerivativeLimitOrder) GetOrderNumber() int64 { - if x != nil { - return x.OrderNumber - } - return 0 -} - -func (x *DerivativeLimitOrder) GetOrderType() string { - if x != nil { - return x.OrderType - } - return "" -} - -func (x *DerivativeLimitOrder) GetIsConditional() bool { - if x != nil { - return x.IsConditional - } - return false -} - -func (x *DerivativeLimitOrder) GetTriggerAt() uint64 { - if x != nil { - return x.TriggerAt - } - return 0 -} - -func (x *DerivativeLimitOrder) GetPlacedOrderHash() string { - if x != nil { - return x.PlacedOrderHash - } - return "" -} - -func (x *DerivativeLimitOrder) GetExecutionType() string { - if x != nil { - return x.ExecutionType - } - return "" -} - -func (x *DerivativeLimitOrder) GetTxHash() string { - if x != nil { - return x.TxHash - } - return "" -} - -func (x *DerivativeLimitOrder) GetCid() string { - if x != nil { - return x.Cid - } - return "" -} - -type OrderHistoryResult struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to OrderHistory: - // - // *OrderHistoryResult_SpotOrderHistory - // *OrderHistoryResult_DerivativeOrderHistory - OrderHistory isOrderHistoryResult_OrderHistory `protobuf_oneof:"order_history"` - // Order update type - OperationType string `protobuf:"bytes,3,opt,name=operation_type,json=operationType,proto3" json:"operation_type,omitempty"` - // Operation timestamp in UNIX millis. - Timestamp int64 `protobuf:"zigzag64,4,opt,name=timestamp,proto3" json:"timestamp,omitempty"` -} - -func (x *OrderHistoryResult) Reset() { - *x = OrderHistoryResult{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[41] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *OrderHistoryResult) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*OrderHistoryResult) ProtoMessage() {} - -func (x *OrderHistoryResult) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[41] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use OrderHistoryResult.ProtoReflect.Descriptor instead. -func (*OrderHistoryResult) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{41} -} - -func (m *OrderHistoryResult) GetOrderHistory() isOrderHistoryResult_OrderHistory { - if m != nil { - return m.OrderHistory - } - return nil -} - -func (x *OrderHistoryResult) GetSpotOrderHistory() *SpotOrderHistory { - if x, ok := x.GetOrderHistory().(*OrderHistoryResult_SpotOrderHistory); ok { - return x.SpotOrderHistory - } - return nil -} - -func (x *OrderHistoryResult) GetDerivativeOrderHistory() *DerivativeOrderHistory { - if x, ok := x.GetOrderHistory().(*OrderHistoryResult_DerivativeOrderHistory); ok { - return x.DerivativeOrderHistory - } - return nil -} - -func (x *OrderHistoryResult) GetOperationType() string { - if x != nil { - return x.OperationType - } - return "" -} - -func (x *OrderHistoryResult) GetTimestamp() int64 { - if x != nil { - return x.Timestamp - } - return 0 -} - -type isOrderHistoryResult_OrderHistory interface { - isOrderHistoryResult_OrderHistory() -} - -type OrderHistoryResult_SpotOrderHistory struct { - // Spot order history - SpotOrderHistory *SpotOrderHistory `protobuf:"bytes,1,opt,name=spot_order_history,json=spotOrderHistory,proto3,oneof"` -} - -type OrderHistoryResult_DerivativeOrderHistory struct { - // Derivative order history - DerivativeOrderHistory *DerivativeOrderHistory `protobuf:"bytes,2,opt,name=derivative_order_history,json=derivativeOrderHistory,proto3,oneof"` -} - -func (*OrderHistoryResult_SpotOrderHistory) isOrderHistoryResult_OrderHistory() {} - -func (*OrderHistoryResult_DerivativeOrderHistory) isOrderHistoryResult_OrderHistory() {} - -type SpotOrderHistory struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Hash of the order - OrderHash string `protobuf:"bytes,1,opt,name=order_hash,json=orderHash,proto3" json:"order_hash,omitempty"` - // Spot Market ID is keccak265(baseDenom + quoteDenom) - MarketId string `protobuf:"bytes,2,opt,name=market_id,json=marketId,proto3" json:"market_id,omitempty"` - // active state of the order - IsActive bool `protobuf:"varint,3,opt,name=is_active,json=isActive,proto3" json:"is_active,omitempty"` - // The subaccountId that this order belongs to - SubaccountId string `protobuf:"bytes,4,opt,name=subaccount_id,json=subaccountId,proto3" json:"subaccount_id,omitempty"` - // The execution type - ExecutionType string `protobuf:"bytes,5,opt,name=execution_type,json=executionType,proto3" json:"execution_type,omitempty"` - // The side of the order - OrderType string `protobuf:"bytes,6,opt,name=order_type,json=orderType,proto3" json:"order_type,omitempty"` - // Price of the order - Price string `protobuf:"bytes,7,opt,name=price,proto3" json:"price,omitempty"` - // Trigger price - TriggerPrice string `protobuf:"bytes,8,opt,name=trigger_price,json=triggerPrice,proto3" json:"trigger_price,omitempty"` - // Quantity of the order - Quantity string `protobuf:"bytes,9,opt,name=quantity,proto3" json:"quantity,omitempty"` - // Filled amount - FilledQuantity string `protobuf:"bytes,10,opt,name=filled_quantity,json=filledQuantity,proto3" json:"filled_quantity,omitempty"` - // Order state - State string `protobuf:"bytes,11,opt,name=state,proto3" json:"state,omitempty"` - // Order committed timestamp in UNIX millis. - CreatedAt int64 `protobuf:"zigzag64,12,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - // Order updated timestamp in UNIX millis. - UpdatedAt int64 `protobuf:"zigzag64,13,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - // Order direction (order side) - Direction string `protobuf:"bytes,14,opt,name=direction,proto3" json:"direction,omitempty"` - // Transaction Hash where order is created. Not all orders have this field - TxHash string `protobuf:"bytes,15,opt,name=tx_hash,json=txHash,proto3" json:"tx_hash,omitempty"` - // Custom client order ID - Cid string `protobuf:"bytes,16,opt,name=cid,proto3" json:"cid,omitempty"` -} - -func (x *SpotOrderHistory) Reset() { - *x = SpotOrderHistory{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[42] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SpotOrderHistory) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SpotOrderHistory) ProtoMessage() {} - -func (x *SpotOrderHistory) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[42] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SpotOrderHistory.ProtoReflect.Descriptor instead. -func (*SpotOrderHistory) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{42} -} - -func (x *SpotOrderHistory) GetOrderHash() string { - if x != nil { - return x.OrderHash - } - return "" -} - -func (x *SpotOrderHistory) GetMarketId() string { - if x != nil { - return x.MarketId - } - return "" -} - -func (x *SpotOrderHistory) GetIsActive() bool { - if x != nil { - return x.IsActive - } - return false -} - -func (x *SpotOrderHistory) GetSubaccountId() string { - if x != nil { - return x.SubaccountId - } - return "" -} - -func (x *SpotOrderHistory) GetExecutionType() string { - if x != nil { - return x.ExecutionType - } - return "" -} - -func (x *SpotOrderHistory) GetOrderType() string { - if x != nil { - return x.OrderType - } - return "" -} - -func (x *SpotOrderHistory) GetPrice() string { - if x != nil { - return x.Price - } - return "" -} - -func (x *SpotOrderHistory) GetTriggerPrice() string { - if x != nil { - return x.TriggerPrice - } - return "" -} - -func (x *SpotOrderHistory) GetQuantity() string { - if x != nil { - return x.Quantity - } - return "" -} - -func (x *SpotOrderHistory) GetFilledQuantity() string { - if x != nil { - return x.FilledQuantity - } - return "" -} - -func (x *SpotOrderHistory) GetState() string { - if x != nil { - return x.State - } - return "" -} - -func (x *SpotOrderHistory) GetCreatedAt() int64 { - if x != nil { - return x.CreatedAt - } - return 0 -} - -func (x *SpotOrderHistory) GetUpdatedAt() int64 { - if x != nil { - return x.UpdatedAt - } - return 0 -} - -func (x *SpotOrderHistory) GetDirection() string { - if x != nil { - return x.Direction - } - return "" -} - -func (x *SpotOrderHistory) GetTxHash() string { - if x != nil { - return x.TxHash - } - return "" -} - -func (x *SpotOrderHistory) GetCid() string { - if x != nil { - return x.Cid - } - return "" -} - -type DerivativeOrderHistory struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Hash of the order - OrderHash string `protobuf:"bytes,1,opt,name=order_hash,json=orderHash,proto3" json:"order_hash,omitempty"` - // Spot Market ID is keccak265(baseDenom + quoteDenom) - MarketId string `protobuf:"bytes,2,opt,name=market_id,json=marketId,proto3" json:"market_id,omitempty"` - // active state of the order - IsActive bool `protobuf:"varint,3,opt,name=is_active,json=isActive,proto3" json:"is_active,omitempty"` - // The subaccountId that this order belongs to - SubaccountId string `protobuf:"bytes,4,opt,name=subaccount_id,json=subaccountId,proto3" json:"subaccount_id,omitempty"` - // The execution type - ExecutionType string `protobuf:"bytes,5,opt,name=execution_type,json=executionType,proto3" json:"execution_type,omitempty"` - // The side of the order - OrderType string `protobuf:"bytes,6,opt,name=order_type,json=orderType,proto3" json:"order_type,omitempty"` - // Price of the order - Price string `protobuf:"bytes,7,opt,name=price,proto3" json:"price,omitempty"` - // Trigger price - TriggerPrice string `protobuf:"bytes,8,opt,name=trigger_price,json=triggerPrice,proto3" json:"trigger_price,omitempty"` - // Quantity of the order - Quantity string `protobuf:"bytes,9,opt,name=quantity,proto3" json:"quantity,omitempty"` - // Filled amount - FilledQuantity string `protobuf:"bytes,10,opt,name=filled_quantity,json=filledQuantity,proto3" json:"filled_quantity,omitempty"` - // Order state - State string `protobuf:"bytes,11,opt,name=state,proto3" json:"state,omitempty"` - // Order committed timestamp in UNIX millis. - CreatedAt int64 `protobuf:"zigzag64,12,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - // Order updated timestamp in UNIX millis. - UpdatedAt int64 `protobuf:"zigzag64,13,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - // True if an order is reduce only - IsReduceOnly bool `protobuf:"varint,14,opt,name=is_reduce_only,json=isReduceOnly,proto3" json:"is_reduce_only,omitempty"` - // Order direction (order side) - Direction string `protobuf:"bytes,15,opt,name=direction,proto3" json:"direction,omitempty"` - // True if this is conditional order, otherwise false - IsConditional bool `protobuf:"varint,16,opt,name=is_conditional,json=isConditional,proto3" json:"is_conditional,omitempty"` - // Trigger timestamp in unix milli - TriggerAt uint64 `protobuf:"varint,17,opt,name=trigger_at,json=triggerAt,proto3" json:"trigger_at,omitempty"` - // Order hash placed when this triggers - PlacedOrderHash string `protobuf:"bytes,18,opt,name=placed_order_hash,json=placedOrderHash,proto3" json:"placed_order_hash,omitempty"` - // Order's margin - Margin string `protobuf:"bytes,19,opt,name=margin,proto3" json:"margin,omitempty"` - // Transaction Hash where order is created. Not all orders have this field - TxHash string `protobuf:"bytes,20,opt,name=tx_hash,json=txHash,proto3" json:"tx_hash,omitempty"` - // Custom client order ID - Cid string `protobuf:"bytes,21,opt,name=cid,proto3" json:"cid,omitempty"` -} - -func (x *DerivativeOrderHistory) Reset() { - *x = DerivativeOrderHistory{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[43] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *DerivativeOrderHistory) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DerivativeOrderHistory) ProtoMessage() {} - -func (x *DerivativeOrderHistory) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[43] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DerivativeOrderHistory.ProtoReflect.Descriptor instead. -func (*DerivativeOrderHistory) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{43} -} - -func (x *DerivativeOrderHistory) GetOrderHash() string { - if x != nil { - return x.OrderHash - } - return "" -} - -func (x *DerivativeOrderHistory) GetMarketId() string { - if x != nil { - return x.MarketId - } - return "" -} - -func (x *DerivativeOrderHistory) GetIsActive() bool { - if x != nil { - return x.IsActive - } - return false -} - -func (x *DerivativeOrderHistory) GetSubaccountId() string { - if x != nil { - return x.SubaccountId - } - return "" -} - -func (x *DerivativeOrderHistory) GetExecutionType() string { - if x != nil { - return x.ExecutionType - } - return "" -} - -func (x *DerivativeOrderHistory) GetOrderType() string { - if x != nil { - return x.OrderType - } - return "" -} - -func (x *DerivativeOrderHistory) GetPrice() string { - if x != nil { - return x.Price - } - return "" -} - -func (x *DerivativeOrderHistory) GetTriggerPrice() string { - if x != nil { - return x.TriggerPrice - } - return "" -} - -func (x *DerivativeOrderHistory) GetQuantity() string { - if x != nil { - return x.Quantity - } - return "" -} - -func (x *DerivativeOrderHistory) GetFilledQuantity() string { - if x != nil { - return x.FilledQuantity - } - return "" -} - -func (x *DerivativeOrderHistory) GetState() string { - if x != nil { - return x.State - } - return "" -} - -func (x *DerivativeOrderHistory) GetCreatedAt() int64 { - if x != nil { - return x.CreatedAt - } - return 0 -} - -func (x *DerivativeOrderHistory) GetUpdatedAt() int64 { - if x != nil { - return x.UpdatedAt - } - return 0 -} - -func (x *DerivativeOrderHistory) GetIsReduceOnly() bool { - if x != nil { - return x.IsReduceOnly - } - return false -} - -func (x *DerivativeOrderHistory) GetDirection() string { - if x != nil { - return x.Direction - } - return "" -} - -func (x *DerivativeOrderHistory) GetIsConditional() bool { - if x != nil { - return x.IsConditional - } - return false -} - -func (x *DerivativeOrderHistory) GetTriggerAt() uint64 { - if x != nil { - return x.TriggerAt - } - return 0 -} - -func (x *DerivativeOrderHistory) GetPlacedOrderHash() string { - if x != nil { - return x.PlacedOrderHash - } - return "" -} - -func (x *DerivativeOrderHistory) GetMargin() string { - if x != nil { - return x.Margin - } - return "" -} - -func (x *DerivativeOrderHistory) GetTxHash() string { - if x != nil { - return x.TxHash - } - return "" -} - -func (x *DerivativeOrderHistory) GetCid() string { - if x != nil { - return x.Cid - } - return "" -} - -type FundingPaymentResult struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Funding payments of the account - FundingPayments *FundingPayment `protobuf:"bytes,1,opt,name=funding_payments,json=fundingPayments,proto3" json:"funding_payments,omitempty"` - // Funding payments type - OperationType string `protobuf:"bytes,2,opt,name=operation_type,json=operationType,proto3" json:"operation_type,omitempty"` - // Operation timestamp in UNIX millis. - Timestamp int64 `protobuf:"zigzag64,4,opt,name=timestamp,proto3" json:"timestamp,omitempty"` -} - -func (x *FundingPaymentResult) Reset() { - *x = FundingPaymentResult{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[44] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *FundingPaymentResult) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*FundingPaymentResult) ProtoMessage() {} - -func (x *FundingPaymentResult) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[44] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use FundingPaymentResult.ProtoReflect.Descriptor instead. -func (*FundingPaymentResult) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{44} -} - -func (x *FundingPaymentResult) GetFundingPayments() *FundingPayment { - if x != nil { - return x.FundingPayments - } - return nil -} - -func (x *FundingPaymentResult) GetOperationType() string { - if x != nil { - return x.OperationType - } - return "" -} - -func (x *FundingPaymentResult) GetTimestamp() int64 { - if x != nil { - return x.Timestamp - } - return 0 -} - -type FundingPayment struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Derivative Market ID - MarketId string `protobuf:"bytes,1,opt,name=market_id,json=marketId,proto3" json:"market_id,omitempty"` - // The subaccountId that the position belongs to - SubaccountId string `protobuf:"bytes,2,opt,name=subaccount_id,json=subaccountId,proto3" json:"subaccount_id,omitempty"` - // Amount of the funding payment - Amount string `protobuf:"bytes,3,opt,name=amount,proto3" json:"amount,omitempty"` - // Timestamp of funding payment in UNIX millis - Timestamp int64 `protobuf:"zigzag64,4,opt,name=timestamp,proto3" json:"timestamp,omitempty"` -} - -func (x *FundingPayment) Reset() { - *x = FundingPayment{} - if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[45] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *FundingPayment) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*FundingPayment) ProtoMessage() {} - -func (x *FundingPayment) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[45] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use FundingPayment.ProtoReflect.Descriptor instead. -func (*FundingPayment) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP(), []int{45} -} - -func (x *FundingPayment) GetMarketId() string { - if x != nil { - return x.MarketId - } - return "" -} - -func (x *FundingPayment) GetSubaccountId() string { - if x != nil { - return x.SubaccountId - } - return "" -} - -func (x *FundingPayment) GetAmount() string { - if x != nil { - return x.Amount - } - return "" -} - -func (x *FundingPayment) GetTimestamp() int64 { - if x != nil { - return x.Timestamp - } - return 0 -} - -var File_goadesign_goagen_injective_accounts_rpc_proto protoreflect.FileDescriptor - -var file_goadesign_goagen_injective_accounts_rpc_proto_rawDesc = []byte{ - 0x0a, 0x2d, 0x67, 0x6f, 0x61, 0x64, 0x65, 0x73, 0x69, 0x67, 0x6e, 0x5f, 0x67, 0x6f, 0x61, 0x67, - 0x65, 0x6e, 0x5f, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, - 0x16, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x73, 0x5f, 0x72, 0x70, 0x63, 0x22, 0x3b, 0x0a, 0x10, 0x50, 0x6f, 0x72, 0x74, 0x66, - 0x6f, 0x6c, 0x69, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x61, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x22, 0x5b, 0x0a, 0x11, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, - 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x09, 0x70, 0x6f, 0x72, - 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x69, - 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x73, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x6f, 0x72, - 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x52, 0x09, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, - 0x6f, 0x22, 0x85, 0x02, 0x0a, 0x10, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x6f, 0x72, - 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, - 0x6c, 0x69, 0x6f, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0e, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, - 0x2b, 0x0a, 0x11, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x62, 0x61, 0x6c, - 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x61, 0x76, 0x61, 0x69, - 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x25, 0x0a, 0x0e, - 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x42, 0x61, 0x6c, 0x61, - 0x6e, 0x63, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x75, 0x6e, 0x72, 0x65, 0x61, 0x6c, 0x69, 0x7a, 0x65, - 0x64, 0x5f, 0x70, 0x6e, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x75, 0x6e, 0x72, - 0x65, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x50, 0x6e, 0x6c, 0x12, 0x4d, 0x0a, 0x0b, 0x73, 0x75, - 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x2b, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x73, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x52, 0x0b, 0x73, 0x75, - 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x22, 0xb5, 0x01, 0x0a, 0x13, 0x53, 0x75, - 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, - 0x6f, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x11, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, - 0x62, 0x6c, 0x65, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x10, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x61, 0x6c, 0x61, - 0x6e, 0x63, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x62, 0x61, - 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6c, 0x6f, 0x63, - 0x6b, 0x65, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x75, 0x6e, - 0x72, 0x65, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x70, 0x6e, 0x6c, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0d, 0x75, 0x6e, 0x72, 0x65, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x50, 0x6e, - 0x6c, 0x22, 0x78, 0x0a, 0x12, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x11, 0x73, 0x70, 0x6f, 0x74, 0x5f, - 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x0f, 0x73, 0x70, 0x6f, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x48, 0x61, 0x73, - 0x68, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x17, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, - 0x65, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x65, 0x73, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x15, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, - 0x4f, 0x72, 0x64, 0x65, 0x72, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x22, 0xcd, 0x01, 0x0a, 0x13, - 0x4f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x54, 0x0a, 0x11, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x6f, 0x72, 0x64, 0x65, - 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, - 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x73, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x74, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x0f, 0x73, 0x70, 0x6f, 0x74, 0x4f, 0x72, - 0x64, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x12, 0x60, 0x0a, 0x17, 0x64, 0x65, 0x72, - 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x73, 0x74, - 0x61, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x69, 0x6e, 0x6a, - 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5f, - 0x72, 0x70, 0x63, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, - 0x63, 0x6f, 0x72, 0x64, 0x52, 0x15, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, - 0x4f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x22, 0x8b, 0x03, 0x0a, 0x10, - 0x4f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, - 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x48, 0x61, 0x73, 0x68, 0x12, - 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, - 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, - 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x69, 0x64, 0x65, 0x12, - 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, - 0x79, 0x5f, 0x66, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, - 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x46, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x12, 0x2d, - 0x0a, 0x12, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x72, 0x65, 0x6d, 0x61, 0x69, - 0x6e, 0x69, 0x6e, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x71, 0x75, 0x61, 0x6e, - 0x74, 0x69, 0x74, 0x79, 0x52, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x12, 0x1d, 0x0a, - 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x12, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, - 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x12, - 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x70, - 0x72, 0x69, 0x63, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, - 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x22, 0x41, 0x0a, 0x16, 0x53, 0x75, 0x62, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x3b, 0x0a, 0x17, - 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x75, 0x62, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x75, - 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x22, 0x5c, 0x0a, 0x1d, 0x53, 0x75, 0x62, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x4c, - 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, - 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, - 0x16, 0x0a, 0x06, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x06, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x73, 0x22, 0x67, 0x0a, 0x1e, 0x53, 0x75, 0x62, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x4c, 0x69, 0x73, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, 0x08, 0x62, 0x61, 0x6c, - 0x61, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x69, 0x6e, - 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, - 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, - 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x08, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, - 0x22, 0xbc, 0x01, 0x0a, 0x11, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, - 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, - 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x61, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x12, 0x43, 0x0a, 0x07, 0x64, 0x65, - 0x70, 0x6f, 0x73, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x69, 0x6e, - 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, - 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x44, - 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x52, 0x07, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x22, - 0x65, 0x0a, 0x11, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x44, 0x65, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x62, 0x61, - 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x74, 0x6f, 0x74, - 0x61, 0x6c, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x61, 0x76, 0x61, - 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x42, - 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x5d, 0x0a, 0x20, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x45, 0x6e, 0x64, 0x70, 0x6f, - 0x69, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, - 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, - 0x14, 0x0a, 0x05, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x22, 0x68, 0x0a, 0x21, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, - 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x07, 0x62, 0x61, - 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x69, 0x6e, - 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, - 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, - 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x22, - 0x5d, 0x0a, 0x1e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x73, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x73, 0x22, 0x84, - 0x01, 0x0a, 0x1f, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x43, 0x0a, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x75, 0x62, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x07, - 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0xc1, 0x01, 0x0a, 0x18, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x65, 0x6e, 0x6f, 0x6d, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x12, 0x25, 0x0a, - 0x0e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, - 0x79, 0x70, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, - 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x19, - 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x12, - 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xa4, 0x01, 0x0a, 0x19, 0x53, 0x75, - 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, - 0x66, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x69, 0x6e, 0x6a, - 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5f, - 0x72, 0x70, 0x63, 0x2e, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x61, - 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x52, 0x09, 0x74, - 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x12, 0x36, 0x0a, 0x06, 0x70, 0x61, 0x67, 0x69, - 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, - 0x74, 0x69, 0x76, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5f, 0x72, 0x70, - 0x63, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, - 0x22, 0xd5, 0x02, 0x0a, 0x19, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, - 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x12, 0x23, - 0x0a, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x75, 0x62, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, - 0x73, 0x72, 0x63, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, - 0x2e, 0x0a, 0x13, 0x73, 0x72, 0x63, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x73, 0x72, - 0x63, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, - 0x2a, 0x0a, 0x11, 0x64, 0x73, 0x74, 0x5f, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x73, 0x74, 0x53, - 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x13, 0x64, - 0x73, 0x74, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, - 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x64, 0x73, 0x74, 0x41, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x3a, 0x0a, 0x06, 0x61, - 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x69, 0x6e, - 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, - 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x43, 0x6f, 0x69, 0x6e, 0x52, - 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0a, 0x65, 0x78, - 0x65, 0x63, 0x75, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x3a, 0x0a, 0x0a, 0x43, 0x6f, 0x73, 0x6d, - 0x6f, 0x73, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x12, 0x16, 0x0a, 0x06, - 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, - 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x86, 0x01, 0x0a, 0x06, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x12, - 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x12, 0x52, 0x05, - 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x11, 0x52, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x6f, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x11, 0x52, 0x02, 0x74, 0x6f, 0x12, 0x2e, 0x0a, 0x13, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x5f, 0x62, 0x79, 0x5f, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x12, 0x52, 0x11, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x79, 0x53, - 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x65, 0x78, - 0x74, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x65, 0x78, 0x74, 0x22, 0x8a, 0x01, - 0x0a, 0x1d, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4f, 0x72, 0x64, 0x65, - 0x72, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, - 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x64, 0x65, - 0x72, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x84, 0x01, 0x0a, 0x1e, 0x53, - 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x75, - 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2a, 0x0a, - 0x11, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x74, 0x6f, 0x74, - 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0f, 0x73, 0x70, 0x6f, 0x74, 0x4f, 0x72, - 0x64, 0x65, 0x72, 0x73, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x36, 0x0a, 0x17, 0x64, 0x65, 0x72, - 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x74, - 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x12, 0x52, 0x15, 0x64, 0x65, 0x72, 0x69, - 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x54, 0x6f, 0x74, 0x61, - 0x6c, 0x22, 0x4f, 0x0a, 0x0e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x12, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, - 0x73, 0x73, 0x22, 0x4b, 0x0a, 0x0f, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, - 0x76, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5f, 0x72, 0x70, 0x63, 0x2e, - 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x22, - 0x90, 0x01, 0x0a, 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x72, - 0x65, 0x73, 0x73, 0x12, 0x36, 0x0a, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, - 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, - 0x69, 0x6e, 0x52, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x64, - 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x12, 0x52, 0x0d, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x64, - 0x41, 0x74, 0x22, 0x34, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x65, - 0x6e, 0x6f, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x64, 0x65, 0x6e, 0x6f, 0x6d, - 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x43, 0x0a, 0x18, 0x53, 0x74, 0x72, 0x65, - 0x61, 0x6d, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, - 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0xde, 0x03, - 0x0a, 0x19, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x44, - 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5e, 0x0a, 0x12, 0x73, - 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, - 0x69, 0x76, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5f, 0x72, 0x70, 0x63, - 0x2e, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, - 0x63, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x11, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x43, 0x0a, 0x08, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, - 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x73, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x39, 0x0a, 0x05, 0x74, 0x72, 0x61, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x23, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x73, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x72, 0x61, 0x64, 0x65, 0x52, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x52, 0x05, 0x74, 0x72, 0x61, 0x64, 0x65, 0x12, 0x39, 0x0a, 0x05, 0x6f, - 0x72, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x69, 0x6e, 0x6a, - 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5f, - 0x72, 0x70, 0x63, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, - 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x4f, 0x0a, 0x0d, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, - 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, - 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x73, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x48, 0x69, 0x73, 0x74, - 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x0c, 0x6f, 0x72, 0x64, 0x65, 0x72, - 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x55, 0x0a, 0x0f, 0x66, 0x75, 0x6e, 0x64, 0x69, - 0x6e, 0x67, 0x5f, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x2c, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, - 0x67, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x0e, - 0x66, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x7c, - 0x0a, 0x17, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x61, 0x6c, 0x61, - 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x43, 0x0a, 0x07, 0x62, 0x61, 0x6c, - 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x69, 0x6e, 0x6a, - 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5f, - 0x72, 0x70, 0x63, 0x2e, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x61, - 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1c, - 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x12, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0x6d, 0x0a, 0x0f, - 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, - 0x3c, 0x0a, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x20, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, - 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x12, - 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0xe1, 0x02, 0x0a, 0x08, - 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x69, 0x63, 0x6b, - 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x72, - 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x23, 0x0a, - 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x1a, 0x0a, 0x08, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x1f, 0x0a, 0x0b, - 0x65, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0a, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x16, 0x0a, - 0x06, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, - 0x61, 0x72, 0x67, 0x69, 0x6e, 0x12, 0x2b, 0x0a, 0x11, 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x10, 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x69, - 0x63, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x50, 0x72, 0x69, 0x63, - 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, - 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0b, - 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, - 0xf5, 0x01, 0x0a, 0x0b, 0x54, 0x72, 0x61, 0x64, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, - 0x42, 0x0a, 0x0a, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x74, 0x72, 0x61, 0x64, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x70, 0x6f, - 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x48, 0x00, 0x52, 0x09, 0x73, 0x70, 0x6f, 0x74, 0x54, 0x72, - 0x61, 0x64, 0x65, 0x12, 0x54, 0x0a, 0x10, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, - 0x65, 0x5f, 0x74, 0x72, 0x61, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, - 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x73, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, - 0x65, 0x54, 0x72, 0x61, 0x64, 0x65, 0x48, 0x00, 0x52, 0x0f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, - 0x74, 0x69, 0x76, 0x65, 0x54, 0x72, 0x61, 0x64, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x12, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x07, - 0x0a, 0x05, 0x74, 0x72, 0x61, 0x64, 0x65, 0x22, 0xad, 0x03, 0x0a, 0x09, 0x53, 0x70, 0x6f, 0x74, - 0x54, 0x72, 0x61, 0x64, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x68, - 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x72, 0x64, 0x65, 0x72, - 0x48, 0x61, 0x73, 0x68, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, - 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, - 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x74, 0x72, 0x61, 0x64, 0x65, 0x5f, - 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x74, 0x72, 0x61, 0x64, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x74, 0x72, 0x61, 0x64, - 0x65, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0e, 0x74, 0x72, 0x61, 0x64, 0x65, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x38, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x22, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x72, 0x69, 0x63, 0x65, 0x4c, - 0x65, 0x76, 0x65, 0x6c, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x66, - 0x65, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x66, 0x65, 0x65, 0x12, 0x1f, 0x0a, - 0x0b, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x12, 0x52, 0x0a, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x23, - 0x0a, 0x0d, 0x66, 0x65, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x66, 0x65, 0x65, 0x52, 0x65, 0x63, 0x69, 0x70, 0x69, - 0x65, 0x6e, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x72, 0x61, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x72, 0x61, 0x64, 0x65, 0x49, 0x64, 0x12, 0x25, - 0x0a, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x69, 0x64, 0x65, - 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x53, 0x69, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x63, 0x69, 0x64, 0x22, 0x5c, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x63, 0x65, - 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x71, - 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x71, - 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0xdd, 0x03, 0x0a, 0x0f, 0x44, 0x65, 0x72, 0x69, 0x76, 0x61, - 0x74, 0x69, 0x76, 0x65, 0x54, 0x72, 0x61, 0x64, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x72, 0x64, - 0x65, 0x72, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, - 0x72, 0x64, 0x65, 0x72, 0x48, 0x61, 0x73, 0x68, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x61, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0c, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, - 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x74, 0x72, - 0x61, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x74, 0x72, 0x61, 0x64, 0x65, 0x45, - 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x25, 0x0a, 0x0e, - 0x69, 0x73, 0x5f, 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x69, 0x73, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x4c, 0x0a, 0x0e, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x64, 0x65, 0x6c, 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x69, 0x6e, - 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, - 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x6c, - 0x74, 0x61, 0x52, 0x0d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x6c, 0x74, - 0x61, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x70, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x65, 0x65, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x66, 0x65, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x65, - 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x12, - 0x52, 0x0a, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x23, 0x0a, 0x0d, - 0x66, 0x65, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x0a, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0c, 0x66, 0x65, 0x65, 0x52, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, - 0x74, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x72, 0x61, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x0b, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x72, 0x61, 0x64, 0x65, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, - 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x18, 0x0c, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, - 0x69, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x69, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x63, 0x69, 0x64, 0x22, 0xbb, 0x01, 0x0a, 0x0d, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x12, 0x27, 0x0a, 0x0f, 0x74, 0x72, 0x61, 0x64, 0x65, - 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0e, 0x74, 0x72, 0x61, 0x64, 0x65, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x27, 0x0a, 0x0f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, - 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x65, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x29, 0x0a, 0x10, 0x65, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x72, - 0x67, 0x69, 0x6e, 0x22, 0xff, 0x01, 0x0a, 0x0b, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x12, 0x47, 0x0a, 0x0a, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x6f, 0x72, 0x64, 0x65, - 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, - 0x69, 0x76, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5f, 0x72, 0x70, 0x63, - 0x2e, 0x53, 0x70, 0x6f, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x48, - 0x00, 0x52, 0x09, 0x73, 0x70, 0x6f, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x59, 0x0a, 0x10, - 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, - 0x76, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5f, 0x72, 0x70, 0x63, 0x2e, - 0x44, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4f, - 0x72, 0x64, 0x65, 0x72, 0x48, 0x00, 0x52, 0x0f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, - 0x76, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x70, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, - 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x12, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x07, 0x0a, 0x05, - 0x6f, 0x72, 0x64, 0x65, 0x72, 0x22, 0xb8, 0x03, 0x0a, 0x0e, 0x53, 0x70, 0x6f, 0x74, 0x4c, 0x69, - 0x6d, 0x69, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x72, 0x64, 0x65, - 0x72, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x72, - 0x64, 0x65, 0x72, 0x48, 0x61, 0x73, 0x68, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, - 0x5f, 0x73, 0x69, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x72, 0x64, - 0x65, 0x72, 0x53, 0x69, 0x64, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, - 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, - 0x74, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x61, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, - 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x1a, - 0x0a, 0x08, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x2b, 0x0a, 0x11, 0x75, 0x6e, - 0x66, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x5f, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x75, 0x6e, 0x66, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x51, - 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x74, 0x72, 0x69, 0x67, 0x67, - 0x65, 0x72, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, - 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x23, 0x0a, 0x0d, - 0x66, 0x65, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x09, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0c, 0x66, 0x65, 0x65, 0x52, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, - 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x78, 0x5f, 0x68, 0x61, 0x73, 0x68, - 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x12, 0x10, - 0x0a, 0x03, 0x63, 0x69, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, 0x69, 0x64, - 0x22, 0xd7, 0x05, 0x0a, 0x14, 0x44, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x4c, - 0x69, 0x6d, 0x69, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x72, 0x64, - 0x65, 0x72, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, - 0x72, 0x64, 0x65, 0x72, 0x48, 0x61, 0x73, 0x68, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x72, 0x64, 0x65, - 0x72, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x72, - 0x64, 0x65, 0x72, 0x53, 0x69, 0x64, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, - 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, - 0x65, 0x74, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0e, 0x69, 0x73, 0x5f, - 0x72, 0x65, 0x64, 0x75, 0x63, 0x65, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x0c, 0x69, 0x73, 0x52, 0x65, 0x64, 0x75, 0x63, 0x65, 0x4f, 0x6e, 0x6c, 0x79, 0x12, - 0x16, 0x0a, 0x06, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x1a, 0x0a, - 0x08, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x2b, 0x0a, 0x11, 0x75, 0x6e, 0x66, - 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x5f, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x75, 0x6e, 0x66, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x51, 0x75, - 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, - 0x72, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x74, - 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x66, - 0x65, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0c, 0x66, 0x65, 0x65, 0x52, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, - 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, - 0x5f, 0x61, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x64, 0x41, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x6e, 0x75, - 0x6d, 0x62, 0x65, 0x72, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0b, 0x6f, 0x72, 0x64, 0x65, - 0x72, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, - 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x72, 0x64, - 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6e, - 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, - 0x69, 0x73, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x12, 0x1d, 0x0a, - 0x0a, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x5f, 0x61, 0x74, 0x18, 0x12, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x09, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x41, 0x74, 0x12, 0x2a, 0x0a, 0x11, - 0x70, 0x6c, 0x61, 0x63, 0x65, 0x64, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x68, 0x61, 0x73, - 0x68, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x64, 0x4f, - 0x72, 0x64, 0x65, 0x72, 0x48, 0x61, 0x73, 0x68, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0d, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x17, 0x0a, 0x07, 0x74, 0x78, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x69, 0x64, 0x18, - 0x16, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, 0x69, 0x64, 0x22, 0xb0, 0x02, 0x0a, 0x12, 0x4f, - 0x72, 0x64, 0x65, 0x72, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x12, 0x58, 0x0a, 0x12, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, - 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, - 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x73, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x70, 0x6f, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, - 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x48, 0x00, 0x52, 0x10, 0x73, 0x70, 0x6f, 0x74, 0x4f, - 0x72, 0x64, 0x65, 0x72, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x6a, 0x0a, 0x18, 0x64, - 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, - 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, - 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x73, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, - 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x48, 0x00, 0x52, - 0x16, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, - 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x70, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, - 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x12, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x0f, 0x0a, 0x0d, - 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x22, 0xf3, 0x03, - 0x0a, 0x10, 0x53, 0x70, 0x6f, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x48, 0x69, 0x73, 0x74, 0x6f, - 0x72, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x68, 0x61, 0x73, 0x68, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x48, 0x61, 0x73, - 0x68, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x1b, - 0x0a, 0x09, 0x69, 0x73, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x08, 0x69, 0x73, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x73, - 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, - 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, - 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x72, 0x64, - 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x23, 0x0a, 0x0d, - 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0c, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x50, 0x72, 0x69, 0x63, - 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x09, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x27, 0x0a, - 0x0f, 0x66, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x5f, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, - 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x66, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x51, 0x75, - 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, - 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x0a, 0x0a, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x12, - 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x75, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x12, 0x52, - 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x69, - 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, - 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x78, 0x5f, 0x68, - 0x61, 0x73, 0x68, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x78, 0x48, 0x61, 0x73, - 0x68, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x69, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x63, 0x69, 0x64, 0x22, 0xa9, 0x05, 0x0a, 0x16, 0x44, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, - 0x76, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x1d, - 0x0a, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x48, 0x61, 0x73, 0x68, 0x12, 0x1b, 0x0a, - 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x73, - 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, - 0x73, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, - 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, - 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x74, 0x72, 0x69, 0x67, - 0x67, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0c, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x1a, 0x0a, - 0x08, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x66, 0x69, 0x6c, - 0x6c, 0x65, 0x64, 0x5f, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x0a, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0e, 0x66, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, - 0x74, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x24, 0x0a, 0x0e, 0x69, 0x73, 0x5f, 0x72, 0x65, 0x64, - 0x75, 0x63, 0x65, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, - 0x69, 0x73, 0x52, 0x65, 0x64, 0x75, 0x63, 0x65, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x1c, 0x0a, 0x09, - 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x0e, 0x69, 0x73, - 0x5f, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x18, 0x10, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x0d, 0x69, 0x73, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, - 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x5f, 0x61, 0x74, 0x18, - 0x11, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x41, 0x74, - 0x12, 0x2a, 0x0a, 0x11, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x64, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, - 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x6c, 0x61, - 0x63, 0x65, 0x64, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x48, 0x61, 0x73, 0x68, 0x12, 0x16, 0x0a, 0x06, - 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x61, - 0x72, 0x67, 0x69, 0x6e, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x78, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, - 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x12, 0x10, 0x0a, - 0x03, 0x63, 0x69, 0x64, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, 0x69, 0x64, 0x22, - 0xae, 0x01, 0x0a, 0x14, 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x79, 0x6d, 0x65, - 0x6e, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x51, 0x0a, 0x10, 0x66, 0x75, 0x6e, 0x64, - 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x61, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x46, 0x75, 0x6e, 0x64, - 0x69, 0x6e, 0x67, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0f, 0x66, 0x75, 0x6e, 0x64, - 0x69, 0x6e, 0x67, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x6f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x22, 0x88, 0x01, 0x0a, 0x0e, 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x79, 0x6d, - 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, - 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x0a, - 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x12, - 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x32, 0xdc, 0x09, 0x0a, 0x14, - 0x49, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x73, 0x52, 0x50, 0x43, 0x12, 0x60, 0x0a, 0x09, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, - 0x6f, 0x12, 0x28, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x66, - 0x6f, 0x6c, 0x69, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x69, 0x6e, - 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, - 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x66, 0x0a, 0x0b, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x73, 0x12, 0x2a, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, - 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4f, - 0x72, 0x64, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x2b, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x72, - 0x0a, 0x0f, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x4c, 0x69, 0x73, - 0x74, 0x12, 0x2e, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x75, 0x62, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x2f, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x75, 0x62, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x87, 0x01, 0x0a, 0x16, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x35, 0x2e, - 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x73, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, - 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x75, - 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, - 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x90, 0x01, 0x0a, - 0x19, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, - 0x63, 0x65, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x38, 0x2e, 0x69, 0x6e, 0x6a, - 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5f, - 0x72, 0x70, 0x63, 0x2e, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x61, - 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, - 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x75, - 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x45, - 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x8c, 0x01, 0x0a, 0x17, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x36, 0x2e, 0x69, 0x6e, - 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, - 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x75, 0x62, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x61, 0x6c, - 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x78, - 0x0a, 0x11, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x48, 0x69, 0x73, 0x74, - 0x6f, 0x72, 0x79, 0x12, 0x30, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x75, 0x62, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, - 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, - 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x87, 0x01, 0x0a, 0x16, 0x53, 0x75, 0x62, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x75, 0x6d, 0x6d, - 0x61, 0x72, 0x79, 0x12, 0x35, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x75, 0x62, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x75, 0x6d, 0x6d, - 0x61, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x69, 0x6e, 0x6a, - 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5f, - 0x72, 0x70, 0x63, 0x2e, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4f, 0x72, - 0x64, 0x65, 0x72, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x5a, 0x0a, 0x07, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0x26, 0x2e, - 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x73, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, - 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x52, - 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7a, - 0x0a, 0x11, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x44, - 0x61, 0x74, 0x61, 0x12, 0x30, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, - 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, - 0x74, 0x72, 0x65, 0x61, 0x6d, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x44, 0x61, 0x74, 0x61, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x42, 0x1b, 0x5a, 0x19, 0x2f, 0x69, - 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x73, 0x5f, 0x72, 0x70, 0x63, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_goadesign_goagen_injective_accounts_rpc_proto_rawDescOnce sync.Once - file_goadesign_goagen_injective_accounts_rpc_proto_rawDescData = file_goadesign_goagen_injective_accounts_rpc_proto_rawDesc -) - -func file_goadesign_goagen_injective_accounts_rpc_proto_rawDescGZIP() []byte { - file_goadesign_goagen_injective_accounts_rpc_proto_rawDescOnce.Do(func() { - file_goadesign_goagen_injective_accounts_rpc_proto_rawDescData = protoimpl.X.CompressGZIP(file_goadesign_goagen_injective_accounts_rpc_proto_rawDescData) - }) - return file_goadesign_goagen_injective_accounts_rpc_proto_rawDescData -} - -var file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes = make([]protoimpl.MessageInfo, 46) -var file_goadesign_goagen_injective_accounts_rpc_proto_goTypes = []interface{}{ - (*PortfolioRequest)(nil), // 0: injective_accounts_rpc.PortfolioRequest - (*PortfolioResponse)(nil), // 1: injective_accounts_rpc.PortfolioResponse - (*AccountPortfolio)(nil), // 2: injective_accounts_rpc.AccountPortfolio - (*SubaccountPortfolio)(nil), // 3: injective_accounts_rpc.SubaccountPortfolio - (*OrderStatesRequest)(nil), // 4: injective_accounts_rpc.OrderStatesRequest - (*OrderStatesResponse)(nil), // 5: injective_accounts_rpc.OrderStatesResponse - (*OrderStateRecord)(nil), // 6: injective_accounts_rpc.OrderStateRecord - (*SubaccountsListRequest)(nil), // 7: injective_accounts_rpc.SubaccountsListRequest - (*SubaccountsListResponse)(nil), // 8: injective_accounts_rpc.SubaccountsListResponse - (*SubaccountBalancesListRequest)(nil), // 9: injective_accounts_rpc.SubaccountBalancesListRequest - (*SubaccountBalancesListResponse)(nil), // 10: injective_accounts_rpc.SubaccountBalancesListResponse - (*SubaccountBalance)(nil), // 11: injective_accounts_rpc.SubaccountBalance - (*SubaccountDeposit)(nil), // 12: injective_accounts_rpc.SubaccountDeposit - (*SubaccountBalanceEndpointRequest)(nil), // 13: injective_accounts_rpc.SubaccountBalanceEndpointRequest - (*SubaccountBalanceEndpointResponse)(nil), // 14: injective_accounts_rpc.SubaccountBalanceEndpointResponse - (*StreamSubaccountBalanceRequest)(nil), // 15: injective_accounts_rpc.StreamSubaccountBalanceRequest - (*StreamSubaccountBalanceResponse)(nil), // 16: injective_accounts_rpc.StreamSubaccountBalanceResponse - (*SubaccountHistoryRequest)(nil), // 17: injective_accounts_rpc.SubaccountHistoryRequest - (*SubaccountHistoryResponse)(nil), // 18: injective_accounts_rpc.SubaccountHistoryResponse - (*SubaccountBalanceTransfer)(nil), // 19: injective_accounts_rpc.SubaccountBalanceTransfer - (*CosmosCoin)(nil), // 20: injective_accounts_rpc.CosmosCoin - (*Paging)(nil), // 21: injective_accounts_rpc.Paging - (*SubaccountOrderSummaryRequest)(nil), // 22: injective_accounts_rpc.SubaccountOrderSummaryRequest - (*SubaccountOrderSummaryResponse)(nil), // 23: injective_accounts_rpc.SubaccountOrderSummaryResponse - (*RewardsRequest)(nil), // 24: injective_accounts_rpc.RewardsRequest - (*RewardsResponse)(nil), // 25: injective_accounts_rpc.RewardsResponse - (*Reward)(nil), // 26: injective_accounts_rpc.Reward - (*Coin)(nil), // 27: injective_accounts_rpc.Coin - (*StreamAccountDataRequest)(nil), // 28: injective_accounts_rpc.StreamAccountDataRequest - (*StreamAccountDataResponse)(nil), // 29: injective_accounts_rpc.StreamAccountDataResponse - (*SubaccountBalanceResult)(nil), // 30: injective_accounts_rpc.SubaccountBalanceResult - (*PositionsResult)(nil), // 31: injective_accounts_rpc.PositionsResult - (*Position)(nil), // 32: injective_accounts_rpc.Position - (*TradeResult)(nil), // 33: injective_accounts_rpc.TradeResult - (*SpotTrade)(nil), // 34: injective_accounts_rpc.SpotTrade - (*PriceLevel)(nil), // 35: injective_accounts_rpc.PriceLevel - (*DerivativeTrade)(nil), // 36: injective_accounts_rpc.DerivativeTrade - (*PositionDelta)(nil), // 37: injective_accounts_rpc.PositionDelta - (*OrderResult)(nil), // 38: injective_accounts_rpc.OrderResult - (*SpotLimitOrder)(nil), // 39: injective_accounts_rpc.SpotLimitOrder - (*DerivativeLimitOrder)(nil), // 40: injective_accounts_rpc.DerivativeLimitOrder - (*OrderHistoryResult)(nil), // 41: injective_accounts_rpc.OrderHistoryResult - (*SpotOrderHistory)(nil), // 42: injective_accounts_rpc.SpotOrderHistory - (*DerivativeOrderHistory)(nil), // 43: injective_accounts_rpc.DerivativeOrderHistory - (*FundingPaymentResult)(nil), // 44: injective_accounts_rpc.FundingPaymentResult - (*FundingPayment)(nil), // 45: injective_accounts_rpc.FundingPayment -} -var file_goadesign_goagen_injective_accounts_rpc_proto_depIdxs = []int32{ - 2, // 0: injective_accounts_rpc.PortfolioResponse.portfolio:type_name -> injective_accounts_rpc.AccountPortfolio - 3, // 1: injective_accounts_rpc.AccountPortfolio.subaccounts:type_name -> injective_accounts_rpc.SubaccountPortfolio - 6, // 2: injective_accounts_rpc.OrderStatesResponse.spot_order_states:type_name -> injective_accounts_rpc.OrderStateRecord - 6, // 3: injective_accounts_rpc.OrderStatesResponse.derivative_order_states:type_name -> injective_accounts_rpc.OrderStateRecord - 11, // 4: injective_accounts_rpc.SubaccountBalancesListResponse.balances:type_name -> injective_accounts_rpc.SubaccountBalance - 12, // 5: injective_accounts_rpc.SubaccountBalance.deposit:type_name -> injective_accounts_rpc.SubaccountDeposit - 11, // 6: injective_accounts_rpc.SubaccountBalanceEndpointResponse.balance:type_name -> injective_accounts_rpc.SubaccountBalance - 11, // 7: injective_accounts_rpc.StreamSubaccountBalanceResponse.balance:type_name -> injective_accounts_rpc.SubaccountBalance - 19, // 8: injective_accounts_rpc.SubaccountHistoryResponse.transfers:type_name -> injective_accounts_rpc.SubaccountBalanceTransfer - 21, // 9: injective_accounts_rpc.SubaccountHistoryResponse.paging:type_name -> injective_accounts_rpc.Paging - 20, // 10: injective_accounts_rpc.SubaccountBalanceTransfer.amount:type_name -> injective_accounts_rpc.CosmosCoin - 26, // 11: injective_accounts_rpc.RewardsResponse.rewards:type_name -> injective_accounts_rpc.Reward - 27, // 12: injective_accounts_rpc.Reward.rewards:type_name -> injective_accounts_rpc.Coin - 30, // 13: injective_accounts_rpc.StreamAccountDataResponse.subaccount_balance:type_name -> injective_accounts_rpc.SubaccountBalanceResult - 31, // 14: injective_accounts_rpc.StreamAccountDataResponse.position:type_name -> injective_accounts_rpc.PositionsResult - 33, // 15: injective_accounts_rpc.StreamAccountDataResponse.trade:type_name -> injective_accounts_rpc.TradeResult - 38, // 16: injective_accounts_rpc.StreamAccountDataResponse.order:type_name -> injective_accounts_rpc.OrderResult - 41, // 17: injective_accounts_rpc.StreamAccountDataResponse.order_history:type_name -> injective_accounts_rpc.OrderHistoryResult - 44, // 18: injective_accounts_rpc.StreamAccountDataResponse.funding_payment:type_name -> injective_accounts_rpc.FundingPaymentResult - 11, // 19: injective_accounts_rpc.SubaccountBalanceResult.balance:type_name -> injective_accounts_rpc.SubaccountBalance - 32, // 20: injective_accounts_rpc.PositionsResult.position:type_name -> injective_accounts_rpc.Position - 34, // 21: injective_accounts_rpc.TradeResult.spot_trade:type_name -> injective_accounts_rpc.SpotTrade - 36, // 22: injective_accounts_rpc.TradeResult.derivative_trade:type_name -> injective_accounts_rpc.DerivativeTrade - 35, // 23: injective_accounts_rpc.SpotTrade.price:type_name -> injective_accounts_rpc.PriceLevel - 37, // 24: injective_accounts_rpc.DerivativeTrade.position_delta:type_name -> injective_accounts_rpc.PositionDelta - 39, // 25: injective_accounts_rpc.OrderResult.spot_order:type_name -> injective_accounts_rpc.SpotLimitOrder - 40, // 26: injective_accounts_rpc.OrderResult.derivative_order:type_name -> injective_accounts_rpc.DerivativeLimitOrder - 42, // 27: injective_accounts_rpc.OrderHistoryResult.spot_order_history:type_name -> injective_accounts_rpc.SpotOrderHistory - 43, // 28: injective_accounts_rpc.OrderHistoryResult.derivative_order_history:type_name -> injective_accounts_rpc.DerivativeOrderHistory - 45, // 29: injective_accounts_rpc.FundingPaymentResult.funding_payments:type_name -> injective_accounts_rpc.FundingPayment - 0, // 30: injective_accounts_rpc.InjectiveAccountsRPC.Portfolio:input_type -> injective_accounts_rpc.PortfolioRequest - 4, // 31: injective_accounts_rpc.InjectiveAccountsRPC.OrderStates:input_type -> injective_accounts_rpc.OrderStatesRequest - 7, // 32: injective_accounts_rpc.InjectiveAccountsRPC.SubaccountsList:input_type -> injective_accounts_rpc.SubaccountsListRequest - 9, // 33: injective_accounts_rpc.InjectiveAccountsRPC.SubaccountBalancesList:input_type -> injective_accounts_rpc.SubaccountBalancesListRequest - 13, // 34: injective_accounts_rpc.InjectiveAccountsRPC.SubaccountBalanceEndpoint:input_type -> injective_accounts_rpc.SubaccountBalanceEndpointRequest - 15, // 35: injective_accounts_rpc.InjectiveAccountsRPC.StreamSubaccountBalance:input_type -> injective_accounts_rpc.StreamSubaccountBalanceRequest - 17, // 36: injective_accounts_rpc.InjectiveAccountsRPC.SubaccountHistory:input_type -> injective_accounts_rpc.SubaccountHistoryRequest - 22, // 37: injective_accounts_rpc.InjectiveAccountsRPC.SubaccountOrderSummary:input_type -> injective_accounts_rpc.SubaccountOrderSummaryRequest - 24, // 38: injective_accounts_rpc.InjectiveAccountsRPC.Rewards:input_type -> injective_accounts_rpc.RewardsRequest - 28, // 39: injective_accounts_rpc.InjectiveAccountsRPC.StreamAccountData:input_type -> injective_accounts_rpc.StreamAccountDataRequest - 1, // 40: injective_accounts_rpc.InjectiveAccountsRPC.Portfolio:output_type -> injective_accounts_rpc.PortfolioResponse - 5, // 41: injective_accounts_rpc.InjectiveAccountsRPC.OrderStates:output_type -> injective_accounts_rpc.OrderStatesResponse - 8, // 42: injective_accounts_rpc.InjectiveAccountsRPC.SubaccountsList:output_type -> injective_accounts_rpc.SubaccountsListResponse - 10, // 43: injective_accounts_rpc.InjectiveAccountsRPC.SubaccountBalancesList:output_type -> injective_accounts_rpc.SubaccountBalancesListResponse - 14, // 44: injective_accounts_rpc.InjectiveAccountsRPC.SubaccountBalanceEndpoint:output_type -> injective_accounts_rpc.SubaccountBalanceEndpointResponse - 16, // 45: injective_accounts_rpc.InjectiveAccountsRPC.StreamSubaccountBalance:output_type -> injective_accounts_rpc.StreamSubaccountBalanceResponse - 18, // 46: injective_accounts_rpc.InjectiveAccountsRPC.SubaccountHistory:output_type -> injective_accounts_rpc.SubaccountHistoryResponse - 23, // 47: injective_accounts_rpc.InjectiveAccountsRPC.SubaccountOrderSummary:output_type -> injective_accounts_rpc.SubaccountOrderSummaryResponse - 25, // 48: injective_accounts_rpc.InjectiveAccountsRPC.Rewards:output_type -> injective_accounts_rpc.RewardsResponse - 29, // 49: injective_accounts_rpc.InjectiveAccountsRPC.StreamAccountData:output_type -> injective_accounts_rpc.StreamAccountDataResponse - 40, // [40:50] is the sub-list for method output_type - 30, // [30:40] is the sub-list for method input_type - 30, // [30:30] is the sub-list for extension type_name - 30, // [30:30] is the sub-list for extension extendee - 0, // [0:30] is the sub-list for field type_name -} - -func init() { file_goadesign_goagen_injective_accounts_rpc_proto_init() } -func file_goadesign_goagen_injective_accounts_rpc_proto_init() { - if File_goadesign_goagen_injective_accounts_rpc_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PortfolioRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PortfolioResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AccountPortfolio); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubaccountPortfolio); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OrderStatesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OrderStatesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OrderStateRecord); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubaccountsListRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubaccountsListResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubaccountBalancesListRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubaccountBalancesListResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubaccountBalance); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubaccountDeposit); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubaccountBalanceEndpointRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubaccountBalanceEndpointResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StreamSubaccountBalanceRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StreamSubaccountBalanceResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubaccountHistoryRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubaccountHistoryResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubaccountBalanceTransfer); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CosmosCoin); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Paging); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubaccountOrderSummaryRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubaccountOrderSummaryResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RewardsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RewardsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Reward); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Coin); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StreamAccountDataRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StreamAccountDataResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubaccountBalanceResult); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PositionsResult); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Position); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TradeResult); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SpotTrade); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PriceLevel); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DerivativeTrade); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PositionDelta); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OrderResult); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SpotLimitOrder); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DerivativeLimitOrder); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OrderHistoryResult); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SpotOrderHistory); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DerivativeOrderHistory); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FundingPaymentResult); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FundingPayment); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[33].OneofWrappers = []interface{}{ - (*TradeResult_SpotTrade)(nil), - (*TradeResult_DerivativeTrade)(nil), - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[38].OneofWrappers = []interface{}{ - (*OrderResult_SpotOrder)(nil), - (*OrderResult_DerivativeOrder)(nil), - } - file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes[41].OneofWrappers = []interface{}{ - (*OrderHistoryResult_SpotOrderHistory)(nil), - (*OrderHistoryResult_DerivativeOrderHistory)(nil), - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_goadesign_goagen_injective_accounts_rpc_proto_rawDesc, - NumEnums: 0, - NumMessages: 46, - NumExtensions: 0, - NumServices: 1, - }, - GoTypes: file_goadesign_goagen_injective_accounts_rpc_proto_goTypes, - DependencyIndexes: file_goadesign_goagen_injective_accounts_rpc_proto_depIdxs, - MessageInfos: file_goadesign_goagen_injective_accounts_rpc_proto_msgTypes, - }.Build() - File_goadesign_goagen_injective_accounts_rpc_proto = out.File - file_goadesign_goagen_injective_accounts_rpc_proto_rawDesc = nil - file_goadesign_goagen_injective_accounts_rpc_proto_goTypes = nil - file_goadesign_goagen_injective_accounts_rpc_proto_depIdxs = nil -} diff --git a/exchange/accounts_rpc/pb/pb/goadesign_goagen_injective_accounts_rpc_grpc.pb.go b/exchange/accounts_rpc/pb/pb/goadesign_goagen_injective_accounts_rpc_grpc.pb.go deleted file mode 100644 index ceb634f9..00000000 --- a/exchange/accounts_rpc/pb/pb/goadesign_goagen_injective_accounts_rpc_grpc.pb.go +++ /dev/null @@ -1,508 +0,0 @@ -// Code generated by protoc-gen-go-grpc. DO NOT EDIT. -// versions: -// - protoc-gen-go-grpc v1.2.0 -// - protoc v3.19.4 -// source: goadesign_goagen_injective_accounts_rpc.proto - -package injective_accounts_rpcpb - -import ( - context "context" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" -) - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 - -// InjectiveAccountsRPCClient is the client API for InjectiveAccountsRPC service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. -type InjectiveAccountsRPCClient interface { - // Provide the account's portfolio value in USD. - Portfolio(ctx context.Context, in *PortfolioRequest, opts ...grpc.CallOption) (*PortfolioResponse, error) - // List order states by order hashes - OrderStates(ctx context.Context, in *OrderStatesRequest, opts ...grpc.CallOption) (*OrderStatesResponse, error) - // List all subaccounts IDs of an account address - SubaccountsList(ctx context.Context, in *SubaccountsListRequest, opts ...grpc.CallOption) (*SubaccountsListResponse, error) - // List subaccount balances for the provided denoms. - SubaccountBalancesList(ctx context.Context, in *SubaccountBalancesListRequest, opts ...grpc.CallOption) (*SubaccountBalancesListResponse, error) - // Gets a balance for specific coin denom - SubaccountBalanceEndpoint(ctx context.Context, in *SubaccountBalanceEndpointRequest, opts ...grpc.CallOption) (*SubaccountBalanceEndpointResponse, error) - // StreamSubaccountBalance streams new balance changes for a specified - // subaccount and denoms. If no denoms are provided, all denom changes are - // streamed. - StreamSubaccountBalance(ctx context.Context, in *StreamSubaccountBalanceRequest, opts ...grpc.CallOption) (InjectiveAccountsRPC_StreamSubaccountBalanceClient, error) - // Get subaccount's deposits and withdrawals history - SubaccountHistory(ctx context.Context, in *SubaccountHistoryRequest, opts ...grpc.CallOption) (*SubaccountHistoryResponse, error) - // Get subaccount's orders summary - SubaccountOrderSummary(ctx context.Context, in *SubaccountOrderSummaryRequest, opts ...grpc.CallOption) (*SubaccountOrderSummaryResponse, error) - // Provide historical trading rewards - Rewards(ctx context.Context, in *RewardsRequest, opts ...grpc.CallOption) (*RewardsResponse, error) - // Stream live data for an account and respective data - StreamAccountData(ctx context.Context, in *StreamAccountDataRequest, opts ...grpc.CallOption) (InjectiveAccountsRPC_StreamAccountDataClient, error) -} - -type injectiveAccountsRPCClient struct { - cc grpc.ClientConnInterface -} - -func NewInjectiveAccountsRPCClient(cc grpc.ClientConnInterface) InjectiveAccountsRPCClient { - return &injectiveAccountsRPCClient{cc} -} - -func (c *injectiveAccountsRPCClient) Portfolio(ctx context.Context, in *PortfolioRequest, opts ...grpc.CallOption) (*PortfolioResponse, error) { - out := new(PortfolioResponse) - err := c.cc.Invoke(ctx, "/injective_accounts_rpc.InjectiveAccountsRPC/Portfolio", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *injectiveAccountsRPCClient) OrderStates(ctx context.Context, in *OrderStatesRequest, opts ...grpc.CallOption) (*OrderStatesResponse, error) { - out := new(OrderStatesResponse) - err := c.cc.Invoke(ctx, "/injective_accounts_rpc.InjectiveAccountsRPC/OrderStates", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *injectiveAccountsRPCClient) SubaccountsList(ctx context.Context, in *SubaccountsListRequest, opts ...grpc.CallOption) (*SubaccountsListResponse, error) { - out := new(SubaccountsListResponse) - err := c.cc.Invoke(ctx, "/injective_accounts_rpc.InjectiveAccountsRPC/SubaccountsList", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *injectiveAccountsRPCClient) SubaccountBalancesList(ctx context.Context, in *SubaccountBalancesListRequest, opts ...grpc.CallOption) (*SubaccountBalancesListResponse, error) { - out := new(SubaccountBalancesListResponse) - err := c.cc.Invoke(ctx, "/injective_accounts_rpc.InjectiveAccountsRPC/SubaccountBalancesList", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *injectiveAccountsRPCClient) SubaccountBalanceEndpoint(ctx context.Context, in *SubaccountBalanceEndpointRequest, opts ...grpc.CallOption) (*SubaccountBalanceEndpointResponse, error) { - out := new(SubaccountBalanceEndpointResponse) - err := c.cc.Invoke(ctx, "/injective_accounts_rpc.InjectiveAccountsRPC/SubaccountBalanceEndpoint", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *injectiveAccountsRPCClient) StreamSubaccountBalance(ctx context.Context, in *StreamSubaccountBalanceRequest, opts ...grpc.CallOption) (InjectiveAccountsRPC_StreamSubaccountBalanceClient, error) { - stream, err := c.cc.NewStream(ctx, &InjectiveAccountsRPC_ServiceDesc.Streams[0], "/injective_accounts_rpc.InjectiveAccountsRPC/StreamSubaccountBalance", opts...) - if err != nil { - return nil, err - } - x := &injectiveAccountsRPCStreamSubaccountBalanceClient{stream} - if err := x.ClientStream.SendMsg(in); err != nil { - return nil, err - } - if err := x.ClientStream.CloseSend(); err != nil { - return nil, err - } - return x, nil -} - -type InjectiveAccountsRPC_StreamSubaccountBalanceClient interface { - Recv() (*StreamSubaccountBalanceResponse, error) - grpc.ClientStream -} - -type injectiveAccountsRPCStreamSubaccountBalanceClient struct { - grpc.ClientStream -} - -func (x *injectiveAccountsRPCStreamSubaccountBalanceClient) Recv() (*StreamSubaccountBalanceResponse, error) { - m := new(StreamSubaccountBalanceResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func (c *injectiveAccountsRPCClient) SubaccountHistory(ctx context.Context, in *SubaccountHistoryRequest, opts ...grpc.CallOption) (*SubaccountHistoryResponse, error) { - out := new(SubaccountHistoryResponse) - err := c.cc.Invoke(ctx, "/injective_accounts_rpc.InjectiveAccountsRPC/SubaccountHistory", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *injectiveAccountsRPCClient) SubaccountOrderSummary(ctx context.Context, in *SubaccountOrderSummaryRequest, opts ...grpc.CallOption) (*SubaccountOrderSummaryResponse, error) { - out := new(SubaccountOrderSummaryResponse) - err := c.cc.Invoke(ctx, "/injective_accounts_rpc.InjectiveAccountsRPC/SubaccountOrderSummary", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *injectiveAccountsRPCClient) Rewards(ctx context.Context, in *RewardsRequest, opts ...grpc.CallOption) (*RewardsResponse, error) { - out := new(RewardsResponse) - err := c.cc.Invoke(ctx, "/injective_accounts_rpc.InjectiveAccountsRPC/Rewards", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *injectiveAccountsRPCClient) StreamAccountData(ctx context.Context, in *StreamAccountDataRequest, opts ...grpc.CallOption) (InjectiveAccountsRPC_StreamAccountDataClient, error) { - stream, err := c.cc.NewStream(ctx, &InjectiveAccountsRPC_ServiceDesc.Streams[1], "/injective_accounts_rpc.InjectiveAccountsRPC/StreamAccountData", opts...) - if err != nil { - return nil, err - } - x := &injectiveAccountsRPCStreamAccountDataClient{stream} - if err := x.ClientStream.SendMsg(in); err != nil { - return nil, err - } - if err := x.ClientStream.CloseSend(); err != nil { - return nil, err - } - return x, nil -} - -type InjectiveAccountsRPC_StreamAccountDataClient interface { - Recv() (*StreamAccountDataResponse, error) - grpc.ClientStream -} - -type injectiveAccountsRPCStreamAccountDataClient struct { - grpc.ClientStream -} - -func (x *injectiveAccountsRPCStreamAccountDataClient) Recv() (*StreamAccountDataResponse, error) { - m := new(StreamAccountDataResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -// InjectiveAccountsRPCServer is the server API for InjectiveAccountsRPC service. -// All implementations must embed UnimplementedInjectiveAccountsRPCServer -// for forward compatibility -type InjectiveAccountsRPCServer interface { - // Provide the account's portfolio value in USD. - Portfolio(context.Context, *PortfolioRequest) (*PortfolioResponse, error) - // List order states by order hashes - OrderStates(context.Context, *OrderStatesRequest) (*OrderStatesResponse, error) - // List all subaccounts IDs of an account address - SubaccountsList(context.Context, *SubaccountsListRequest) (*SubaccountsListResponse, error) - // List subaccount balances for the provided denoms. - SubaccountBalancesList(context.Context, *SubaccountBalancesListRequest) (*SubaccountBalancesListResponse, error) - // Gets a balance for specific coin denom - SubaccountBalanceEndpoint(context.Context, *SubaccountBalanceEndpointRequest) (*SubaccountBalanceEndpointResponse, error) - // StreamSubaccountBalance streams new balance changes for a specified - // subaccount and denoms. If no denoms are provided, all denom changes are - // streamed. - StreamSubaccountBalance(*StreamSubaccountBalanceRequest, InjectiveAccountsRPC_StreamSubaccountBalanceServer) error - // Get subaccount's deposits and withdrawals history - SubaccountHistory(context.Context, *SubaccountHistoryRequest) (*SubaccountHistoryResponse, error) - // Get subaccount's orders summary - SubaccountOrderSummary(context.Context, *SubaccountOrderSummaryRequest) (*SubaccountOrderSummaryResponse, error) - // Provide historical trading rewards - Rewards(context.Context, *RewardsRequest) (*RewardsResponse, error) - // Stream live data for an account and respective data - StreamAccountData(*StreamAccountDataRequest, InjectiveAccountsRPC_StreamAccountDataServer) error - mustEmbedUnimplementedInjectiveAccountsRPCServer() -} - -// UnimplementedInjectiveAccountsRPCServer must be embedded to have forward compatible implementations. -type UnimplementedInjectiveAccountsRPCServer struct { -} - -func (UnimplementedInjectiveAccountsRPCServer) Portfolio(context.Context, *PortfolioRequest) (*PortfolioResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Portfolio not implemented") -} -func (UnimplementedInjectiveAccountsRPCServer) OrderStates(context.Context, *OrderStatesRequest) (*OrderStatesResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method OrderStates not implemented") -} -func (UnimplementedInjectiveAccountsRPCServer) SubaccountsList(context.Context, *SubaccountsListRequest) (*SubaccountsListResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method SubaccountsList not implemented") -} -func (UnimplementedInjectiveAccountsRPCServer) SubaccountBalancesList(context.Context, *SubaccountBalancesListRequest) (*SubaccountBalancesListResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method SubaccountBalancesList not implemented") -} -func (UnimplementedInjectiveAccountsRPCServer) SubaccountBalanceEndpoint(context.Context, *SubaccountBalanceEndpointRequest) (*SubaccountBalanceEndpointResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method SubaccountBalanceEndpoint not implemented") -} -func (UnimplementedInjectiveAccountsRPCServer) StreamSubaccountBalance(*StreamSubaccountBalanceRequest, InjectiveAccountsRPC_StreamSubaccountBalanceServer) error { - return status.Errorf(codes.Unimplemented, "method StreamSubaccountBalance not implemented") -} -func (UnimplementedInjectiveAccountsRPCServer) SubaccountHistory(context.Context, *SubaccountHistoryRequest) (*SubaccountHistoryResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method SubaccountHistory not implemented") -} -func (UnimplementedInjectiveAccountsRPCServer) SubaccountOrderSummary(context.Context, *SubaccountOrderSummaryRequest) (*SubaccountOrderSummaryResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method SubaccountOrderSummary not implemented") -} -func (UnimplementedInjectiveAccountsRPCServer) Rewards(context.Context, *RewardsRequest) (*RewardsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Rewards not implemented") -} -func (UnimplementedInjectiveAccountsRPCServer) StreamAccountData(*StreamAccountDataRequest, InjectiveAccountsRPC_StreamAccountDataServer) error { - return status.Errorf(codes.Unimplemented, "method StreamAccountData not implemented") -} -func (UnimplementedInjectiveAccountsRPCServer) mustEmbedUnimplementedInjectiveAccountsRPCServer() {} - -// UnsafeInjectiveAccountsRPCServer may be embedded to opt out of forward compatibility for this service. -// Use of this interface is not recommended, as added methods to InjectiveAccountsRPCServer will -// result in compilation errors. -type UnsafeInjectiveAccountsRPCServer interface { - mustEmbedUnimplementedInjectiveAccountsRPCServer() -} - -func RegisterInjectiveAccountsRPCServer(s grpc.ServiceRegistrar, srv InjectiveAccountsRPCServer) { - s.RegisterService(&InjectiveAccountsRPC_ServiceDesc, srv) -} - -func _InjectiveAccountsRPC_Portfolio_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(PortfolioRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(InjectiveAccountsRPCServer).Portfolio(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/injective_accounts_rpc.InjectiveAccountsRPC/Portfolio", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(InjectiveAccountsRPCServer).Portfolio(ctx, req.(*PortfolioRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _InjectiveAccountsRPC_OrderStates_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(OrderStatesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(InjectiveAccountsRPCServer).OrderStates(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/injective_accounts_rpc.InjectiveAccountsRPC/OrderStates", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(InjectiveAccountsRPCServer).OrderStates(ctx, req.(*OrderStatesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _InjectiveAccountsRPC_SubaccountsList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SubaccountsListRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(InjectiveAccountsRPCServer).SubaccountsList(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/injective_accounts_rpc.InjectiveAccountsRPC/SubaccountsList", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(InjectiveAccountsRPCServer).SubaccountsList(ctx, req.(*SubaccountsListRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _InjectiveAccountsRPC_SubaccountBalancesList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SubaccountBalancesListRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(InjectiveAccountsRPCServer).SubaccountBalancesList(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/injective_accounts_rpc.InjectiveAccountsRPC/SubaccountBalancesList", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(InjectiveAccountsRPCServer).SubaccountBalancesList(ctx, req.(*SubaccountBalancesListRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _InjectiveAccountsRPC_SubaccountBalanceEndpoint_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SubaccountBalanceEndpointRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(InjectiveAccountsRPCServer).SubaccountBalanceEndpoint(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/injective_accounts_rpc.InjectiveAccountsRPC/SubaccountBalanceEndpoint", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(InjectiveAccountsRPCServer).SubaccountBalanceEndpoint(ctx, req.(*SubaccountBalanceEndpointRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _InjectiveAccountsRPC_StreamSubaccountBalance_Handler(srv interface{}, stream grpc.ServerStream) error { - m := new(StreamSubaccountBalanceRequest) - if err := stream.RecvMsg(m); err != nil { - return err - } - return srv.(InjectiveAccountsRPCServer).StreamSubaccountBalance(m, &injectiveAccountsRPCStreamSubaccountBalanceServer{stream}) -} - -type InjectiveAccountsRPC_StreamSubaccountBalanceServer interface { - Send(*StreamSubaccountBalanceResponse) error - grpc.ServerStream -} - -type injectiveAccountsRPCStreamSubaccountBalanceServer struct { - grpc.ServerStream -} - -func (x *injectiveAccountsRPCStreamSubaccountBalanceServer) Send(m *StreamSubaccountBalanceResponse) error { - return x.ServerStream.SendMsg(m) -} - -func _InjectiveAccountsRPC_SubaccountHistory_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SubaccountHistoryRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(InjectiveAccountsRPCServer).SubaccountHistory(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/injective_accounts_rpc.InjectiveAccountsRPC/SubaccountHistory", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(InjectiveAccountsRPCServer).SubaccountHistory(ctx, req.(*SubaccountHistoryRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _InjectiveAccountsRPC_SubaccountOrderSummary_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SubaccountOrderSummaryRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(InjectiveAccountsRPCServer).SubaccountOrderSummary(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/injective_accounts_rpc.InjectiveAccountsRPC/SubaccountOrderSummary", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(InjectiveAccountsRPCServer).SubaccountOrderSummary(ctx, req.(*SubaccountOrderSummaryRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _InjectiveAccountsRPC_Rewards_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(RewardsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(InjectiveAccountsRPCServer).Rewards(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/injective_accounts_rpc.InjectiveAccountsRPC/Rewards", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(InjectiveAccountsRPCServer).Rewards(ctx, req.(*RewardsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _InjectiveAccountsRPC_StreamAccountData_Handler(srv interface{}, stream grpc.ServerStream) error { - m := new(StreamAccountDataRequest) - if err := stream.RecvMsg(m); err != nil { - return err - } - return srv.(InjectiveAccountsRPCServer).StreamAccountData(m, &injectiveAccountsRPCStreamAccountDataServer{stream}) -} - -type InjectiveAccountsRPC_StreamAccountDataServer interface { - Send(*StreamAccountDataResponse) error - grpc.ServerStream -} - -type injectiveAccountsRPCStreamAccountDataServer struct { - grpc.ServerStream -} - -func (x *injectiveAccountsRPCStreamAccountDataServer) Send(m *StreamAccountDataResponse) error { - return x.ServerStream.SendMsg(m) -} - -// InjectiveAccountsRPC_ServiceDesc is the grpc.ServiceDesc for InjectiveAccountsRPC service. -// It's only intended for direct use with grpc.RegisterService, -// and not to be introspected or modified (even as a copy) -var InjectiveAccountsRPC_ServiceDesc = grpc.ServiceDesc{ - ServiceName: "injective_accounts_rpc.InjectiveAccountsRPC", - HandlerType: (*InjectiveAccountsRPCServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "Portfolio", - Handler: _InjectiveAccountsRPC_Portfolio_Handler, - }, - { - MethodName: "OrderStates", - Handler: _InjectiveAccountsRPC_OrderStates_Handler, - }, - { - MethodName: "SubaccountsList", - Handler: _InjectiveAccountsRPC_SubaccountsList_Handler, - }, - { - MethodName: "SubaccountBalancesList", - Handler: _InjectiveAccountsRPC_SubaccountBalancesList_Handler, - }, - { - MethodName: "SubaccountBalanceEndpoint", - Handler: _InjectiveAccountsRPC_SubaccountBalanceEndpoint_Handler, - }, - { - MethodName: "SubaccountHistory", - Handler: _InjectiveAccountsRPC_SubaccountHistory_Handler, - }, - { - MethodName: "SubaccountOrderSummary", - Handler: _InjectiveAccountsRPC_SubaccountOrderSummary_Handler, - }, - { - MethodName: "Rewards", - Handler: _InjectiveAccountsRPC_Rewards_Handler, - }, - }, - Streams: []grpc.StreamDesc{ - { - StreamName: "StreamSubaccountBalance", - Handler: _InjectiveAccountsRPC_StreamSubaccountBalance_Handler, - ServerStreams: true, - }, - { - StreamName: "StreamAccountData", - Handler: _InjectiveAccountsRPC_StreamAccountData_Handler, - ServerStreams: true, - }, - }, - Metadata: "goadesign_goagen_injective_accounts_rpc.proto", -} diff --git a/exchange/accounts_rpc/pb/pb/injective_accounts_rpc.pb.gw.go b/exchange/accounts_rpc/pb/pb/injective_accounts_rpc.pb.gw.go deleted file mode 100644 index 4ceab949..00000000 --- a/exchange/accounts_rpc/pb/pb/injective_accounts_rpc.pb.gw.go +++ /dev/null @@ -1,882 +0,0 @@ -// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT. -// source: injective_accounts_rpc.proto - -/* -Package injective_accounts_rpcpb is a reverse proxy. - -It translates gRPC into RESTful JSON APIs. -*/ -package injective_accounts_rpcpb - -import ( - "context" - "io" - "net/http" - - "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" - "github.com/grpc-ecosystem/grpc-gateway/v2/utilities" - "google.golang.org/grpc" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/grpclog" - "google.golang.org/grpc/metadata" - "google.golang.org/grpc/status" - "google.golang.org/protobuf/proto" -) - -// Suppress "imported and not used" errors -var _ codes.Code -var _ io.Reader -var _ status.Status -var _ = runtime.String -var _ = utilities.NewDoubleArray -var _ = metadata.Join - -func request_InjectiveAccountsRPC_Portfolio_0(ctx context.Context, marshaler runtime.Marshaler, client InjectiveAccountsRPCClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq PortfolioRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.Portfolio(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_InjectiveAccountsRPC_Portfolio_0(ctx context.Context, marshaler runtime.Marshaler, server InjectiveAccountsRPCServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq PortfolioRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.Portfolio(ctx, &protoReq) - return msg, metadata, err - -} - -func request_InjectiveAccountsRPC_OrderStates_0(ctx context.Context, marshaler runtime.Marshaler, client InjectiveAccountsRPCClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq OrderStatesRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.OrderStates(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_InjectiveAccountsRPC_OrderStates_0(ctx context.Context, marshaler runtime.Marshaler, server InjectiveAccountsRPCServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq OrderStatesRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.OrderStates(ctx, &protoReq) - return msg, metadata, err - -} - -func request_InjectiveAccountsRPC_SubaccountsList_0(ctx context.Context, marshaler runtime.Marshaler, client InjectiveAccountsRPCClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SubaccountsListRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.SubaccountsList(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_InjectiveAccountsRPC_SubaccountsList_0(ctx context.Context, marshaler runtime.Marshaler, server InjectiveAccountsRPCServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SubaccountsListRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.SubaccountsList(ctx, &protoReq) - return msg, metadata, err - -} - -func request_InjectiveAccountsRPC_SubaccountBalancesList_0(ctx context.Context, marshaler runtime.Marshaler, client InjectiveAccountsRPCClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SubaccountBalancesListRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.SubaccountBalancesList(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_InjectiveAccountsRPC_SubaccountBalancesList_0(ctx context.Context, marshaler runtime.Marshaler, server InjectiveAccountsRPCServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SubaccountBalancesListRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.SubaccountBalancesList(ctx, &protoReq) - return msg, metadata, err - -} - -func request_InjectiveAccountsRPC_SubaccountBalanceEndpoint_0(ctx context.Context, marshaler runtime.Marshaler, client InjectiveAccountsRPCClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SubaccountBalanceEndpointRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.SubaccountBalanceEndpoint(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_InjectiveAccountsRPC_SubaccountBalanceEndpoint_0(ctx context.Context, marshaler runtime.Marshaler, server InjectiveAccountsRPCServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SubaccountBalanceEndpointRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.SubaccountBalanceEndpoint(ctx, &protoReq) - return msg, metadata, err - -} - -func request_InjectiveAccountsRPC_StreamSubaccountBalance_0(ctx context.Context, marshaler runtime.Marshaler, client InjectiveAccountsRPCClient, req *http.Request, pathParams map[string]string) (InjectiveAccountsRPC_StreamSubaccountBalanceClient, runtime.ServerMetadata, error) { - var protoReq StreamSubaccountBalanceRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - stream, err := client.StreamSubaccountBalance(ctx, &protoReq) - if err != nil { - return nil, metadata, err - } - header, err := stream.Header() - if err != nil { - return nil, metadata, err - } - metadata.HeaderMD = header - return stream, metadata, nil - -} - -func request_InjectiveAccountsRPC_SubaccountHistory_0(ctx context.Context, marshaler runtime.Marshaler, client InjectiveAccountsRPCClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SubaccountHistoryRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.SubaccountHistory(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_InjectiveAccountsRPC_SubaccountHistory_0(ctx context.Context, marshaler runtime.Marshaler, server InjectiveAccountsRPCServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SubaccountHistoryRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.SubaccountHistory(ctx, &protoReq) - return msg, metadata, err - -} - -func request_InjectiveAccountsRPC_SubaccountOrderSummary_0(ctx context.Context, marshaler runtime.Marshaler, client InjectiveAccountsRPCClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SubaccountOrderSummaryRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.SubaccountOrderSummary(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_InjectiveAccountsRPC_SubaccountOrderSummary_0(ctx context.Context, marshaler runtime.Marshaler, server InjectiveAccountsRPCServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SubaccountOrderSummaryRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.SubaccountOrderSummary(ctx, &protoReq) - return msg, metadata, err - -} - -func request_InjectiveAccountsRPC_Rewards_0(ctx context.Context, marshaler runtime.Marshaler, client InjectiveAccountsRPCClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq RewardsRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.Rewards(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_InjectiveAccountsRPC_Rewards_0(ctx context.Context, marshaler runtime.Marshaler, server InjectiveAccountsRPCServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq RewardsRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.Rewards(ctx, &protoReq) - return msg, metadata, err - -} - -func request_InjectiveAccountsRPC_StreamAccountData_0(ctx context.Context, marshaler runtime.Marshaler, client InjectiveAccountsRPCClient, req *http.Request, pathParams map[string]string) (InjectiveAccountsRPC_StreamAccountDataClient, runtime.ServerMetadata, error) { - var protoReq StreamAccountDataRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - stream, err := client.StreamAccountData(ctx, &protoReq) - if err != nil { - return nil, metadata, err - } - header, err := stream.Header() - if err != nil { - return nil, metadata, err - } - metadata.HeaderMD = header - return stream, metadata, nil - -} - -// RegisterInjectiveAccountsRPCHandlerServer registers the http handlers for service InjectiveAccountsRPC to "mux". -// UnaryRPC :call InjectiveAccountsRPCServer directly. -// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. -// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterInjectiveAccountsRPCHandlerFromEndpoint instead. -func RegisterInjectiveAccountsRPCHandlerServer(ctx context.Context, mux *runtime.ServeMux, server InjectiveAccountsRPCServer) error { - - mux.Handle("POST", pattern_InjectiveAccountsRPC_Portfolio_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/injective_accounts_rpc.InjectiveAccountsRPC/Portfolio", runtime.WithHTTPPathPattern("/injective_accounts_rpc.InjectiveAccountsRPC/Portfolio")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_InjectiveAccountsRPC_Portfolio_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_InjectiveAccountsRPC_Portfolio_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_InjectiveAccountsRPC_OrderStates_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/injective_accounts_rpc.InjectiveAccountsRPC/OrderStates", runtime.WithHTTPPathPattern("/injective_accounts_rpc.InjectiveAccountsRPC/OrderStates")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_InjectiveAccountsRPC_OrderStates_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_InjectiveAccountsRPC_OrderStates_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_InjectiveAccountsRPC_SubaccountsList_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/injective_accounts_rpc.InjectiveAccountsRPC/SubaccountsList", runtime.WithHTTPPathPattern("/injective_accounts_rpc.InjectiveAccountsRPC/SubaccountsList")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_InjectiveAccountsRPC_SubaccountsList_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_InjectiveAccountsRPC_SubaccountsList_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_InjectiveAccountsRPC_SubaccountBalancesList_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/injective_accounts_rpc.InjectiveAccountsRPC/SubaccountBalancesList", runtime.WithHTTPPathPattern("/injective_accounts_rpc.InjectiveAccountsRPC/SubaccountBalancesList")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_InjectiveAccountsRPC_SubaccountBalancesList_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_InjectiveAccountsRPC_SubaccountBalancesList_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_InjectiveAccountsRPC_SubaccountBalanceEndpoint_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/injective_accounts_rpc.InjectiveAccountsRPC/SubaccountBalanceEndpoint", runtime.WithHTTPPathPattern("/injective_accounts_rpc.InjectiveAccountsRPC/SubaccountBalanceEndpoint")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_InjectiveAccountsRPC_SubaccountBalanceEndpoint_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_InjectiveAccountsRPC_SubaccountBalanceEndpoint_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_InjectiveAccountsRPC_StreamSubaccountBalance_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - err := status.Error(codes.Unimplemented, "streaming calls are not yet supported in the in-process transport") - _, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - }) - - mux.Handle("POST", pattern_InjectiveAccountsRPC_SubaccountHistory_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/injective_accounts_rpc.InjectiveAccountsRPC/SubaccountHistory", runtime.WithHTTPPathPattern("/injective_accounts_rpc.InjectiveAccountsRPC/SubaccountHistory")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_InjectiveAccountsRPC_SubaccountHistory_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_InjectiveAccountsRPC_SubaccountHistory_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_InjectiveAccountsRPC_SubaccountOrderSummary_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/injective_accounts_rpc.InjectiveAccountsRPC/SubaccountOrderSummary", runtime.WithHTTPPathPattern("/injective_accounts_rpc.InjectiveAccountsRPC/SubaccountOrderSummary")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_InjectiveAccountsRPC_SubaccountOrderSummary_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_InjectiveAccountsRPC_SubaccountOrderSummary_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_InjectiveAccountsRPC_Rewards_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/injective_accounts_rpc.InjectiveAccountsRPC/Rewards", runtime.WithHTTPPathPattern("/injective_accounts_rpc.InjectiveAccountsRPC/Rewards")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_InjectiveAccountsRPC_Rewards_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_InjectiveAccountsRPC_Rewards_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_InjectiveAccountsRPC_StreamAccountData_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - err := status.Error(codes.Unimplemented, "streaming calls are not yet supported in the in-process transport") - _, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - }) - - return nil -} - -// RegisterInjectiveAccountsRPCHandlerFromEndpoint is same as RegisterInjectiveAccountsRPCHandler but -// automatically dials to "endpoint" and closes the connection when "ctx" gets done. -func RegisterInjectiveAccountsRPCHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { - conn, err := grpc.Dial(endpoint, opts...) - if err != nil { - return err - } - defer func() { - if err != nil { - if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) - } - return - } - go func() { - <-ctx.Done() - if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) - } - }() - }() - - return RegisterInjectiveAccountsRPCHandler(ctx, mux, conn) -} - -// RegisterInjectiveAccountsRPCHandler registers the http handlers for service InjectiveAccountsRPC to "mux". -// The handlers forward requests to the grpc endpoint over "conn". -func RegisterInjectiveAccountsRPCHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error { - return RegisterInjectiveAccountsRPCHandlerClient(ctx, mux, NewInjectiveAccountsRPCClient(conn)) -} - -// RegisterInjectiveAccountsRPCHandlerClient registers the http handlers for service InjectiveAccountsRPC -// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "InjectiveAccountsRPCClient". -// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "InjectiveAccountsRPCClient" -// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "InjectiveAccountsRPCClient" to call the correct interceptors. -func RegisterInjectiveAccountsRPCHandlerClient(ctx context.Context, mux *runtime.ServeMux, client InjectiveAccountsRPCClient) error { - - mux.Handle("POST", pattern_InjectiveAccountsRPC_Portfolio_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/injective_accounts_rpc.InjectiveAccountsRPC/Portfolio", runtime.WithHTTPPathPattern("/injective_accounts_rpc.InjectiveAccountsRPC/Portfolio")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_InjectiveAccountsRPC_Portfolio_0(annotatedContext, inboundMarshaler, client, req, pathParams) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_InjectiveAccountsRPC_Portfolio_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_InjectiveAccountsRPC_OrderStates_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/injective_accounts_rpc.InjectiveAccountsRPC/OrderStates", runtime.WithHTTPPathPattern("/injective_accounts_rpc.InjectiveAccountsRPC/OrderStates")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_InjectiveAccountsRPC_OrderStates_0(annotatedContext, inboundMarshaler, client, req, pathParams) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_InjectiveAccountsRPC_OrderStates_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_InjectiveAccountsRPC_SubaccountsList_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/injective_accounts_rpc.InjectiveAccountsRPC/SubaccountsList", runtime.WithHTTPPathPattern("/injective_accounts_rpc.InjectiveAccountsRPC/SubaccountsList")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_InjectiveAccountsRPC_SubaccountsList_0(annotatedContext, inboundMarshaler, client, req, pathParams) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_InjectiveAccountsRPC_SubaccountsList_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_InjectiveAccountsRPC_SubaccountBalancesList_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/injective_accounts_rpc.InjectiveAccountsRPC/SubaccountBalancesList", runtime.WithHTTPPathPattern("/injective_accounts_rpc.InjectiveAccountsRPC/SubaccountBalancesList")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_InjectiveAccountsRPC_SubaccountBalancesList_0(annotatedContext, inboundMarshaler, client, req, pathParams) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_InjectiveAccountsRPC_SubaccountBalancesList_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_InjectiveAccountsRPC_SubaccountBalanceEndpoint_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/injective_accounts_rpc.InjectiveAccountsRPC/SubaccountBalanceEndpoint", runtime.WithHTTPPathPattern("/injective_accounts_rpc.InjectiveAccountsRPC/SubaccountBalanceEndpoint")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_InjectiveAccountsRPC_SubaccountBalanceEndpoint_0(annotatedContext, inboundMarshaler, client, req, pathParams) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_InjectiveAccountsRPC_SubaccountBalanceEndpoint_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_InjectiveAccountsRPC_StreamSubaccountBalance_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/injective_accounts_rpc.InjectiveAccountsRPC/StreamSubaccountBalance", runtime.WithHTTPPathPattern("/injective_accounts_rpc.InjectiveAccountsRPC/StreamSubaccountBalance")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_InjectiveAccountsRPC_StreamSubaccountBalance_0(annotatedContext, inboundMarshaler, client, req, pathParams) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_InjectiveAccountsRPC_StreamSubaccountBalance_0(annotatedContext, mux, outboundMarshaler, w, req, func() (proto.Message, error) { return resp.Recv() }, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_InjectiveAccountsRPC_SubaccountHistory_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/injective_accounts_rpc.InjectiveAccountsRPC/SubaccountHistory", runtime.WithHTTPPathPattern("/injective_accounts_rpc.InjectiveAccountsRPC/SubaccountHistory")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_InjectiveAccountsRPC_SubaccountHistory_0(annotatedContext, inboundMarshaler, client, req, pathParams) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_InjectiveAccountsRPC_SubaccountHistory_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_InjectiveAccountsRPC_SubaccountOrderSummary_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/injective_accounts_rpc.InjectiveAccountsRPC/SubaccountOrderSummary", runtime.WithHTTPPathPattern("/injective_accounts_rpc.InjectiveAccountsRPC/SubaccountOrderSummary")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_InjectiveAccountsRPC_SubaccountOrderSummary_0(annotatedContext, inboundMarshaler, client, req, pathParams) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_InjectiveAccountsRPC_SubaccountOrderSummary_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_InjectiveAccountsRPC_Rewards_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/injective_accounts_rpc.InjectiveAccountsRPC/Rewards", runtime.WithHTTPPathPattern("/injective_accounts_rpc.InjectiveAccountsRPC/Rewards")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_InjectiveAccountsRPC_Rewards_0(annotatedContext, inboundMarshaler, client, req, pathParams) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_InjectiveAccountsRPC_Rewards_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_InjectiveAccountsRPC_StreamAccountData_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/injective_accounts_rpc.InjectiveAccountsRPC/StreamAccountData", runtime.WithHTTPPathPattern("/injective_accounts_rpc.InjectiveAccountsRPC/StreamAccountData")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_InjectiveAccountsRPC_StreamAccountData_0(annotatedContext, inboundMarshaler, client, req, pathParams) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_InjectiveAccountsRPC_StreamAccountData_0(annotatedContext, mux, outboundMarshaler, w, req, func() (proto.Message, error) { return resp.Recv() }, mux.GetForwardResponseOptions()...) - - }) - - return nil -} - -var ( - pattern_InjectiveAccountsRPC_Portfolio_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"injective_accounts_rpc.InjectiveAccountsRPC", "Portfolio"}, "")) - - pattern_InjectiveAccountsRPC_OrderStates_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"injective_accounts_rpc.InjectiveAccountsRPC", "OrderStates"}, "")) - - pattern_InjectiveAccountsRPC_SubaccountsList_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"injective_accounts_rpc.InjectiveAccountsRPC", "SubaccountsList"}, "")) - - pattern_InjectiveAccountsRPC_SubaccountBalancesList_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"injective_accounts_rpc.InjectiveAccountsRPC", "SubaccountBalancesList"}, "")) - - pattern_InjectiveAccountsRPC_SubaccountBalanceEndpoint_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"injective_accounts_rpc.InjectiveAccountsRPC", "SubaccountBalanceEndpoint"}, "")) - - pattern_InjectiveAccountsRPC_StreamSubaccountBalance_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"injective_accounts_rpc.InjectiveAccountsRPC", "StreamSubaccountBalance"}, "")) - - pattern_InjectiveAccountsRPC_SubaccountHistory_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"injective_accounts_rpc.InjectiveAccountsRPC", "SubaccountHistory"}, "")) - - pattern_InjectiveAccountsRPC_SubaccountOrderSummary_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"injective_accounts_rpc.InjectiveAccountsRPC", "SubaccountOrderSummary"}, "")) - - pattern_InjectiveAccountsRPC_Rewards_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"injective_accounts_rpc.InjectiveAccountsRPC", "Rewards"}, "")) - - pattern_InjectiveAccountsRPC_StreamAccountData_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"injective_accounts_rpc.InjectiveAccountsRPC", "StreamAccountData"}, "")) -) - -var ( - forward_InjectiveAccountsRPC_Portfolio_0 = runtime.ForwardResponseMessage - - forward_InjectiveAccountsRPC_OrderStates_0 = runtime.ForwardResponseMessage - - forward_InjectiveAccountsRPC_SubaccountsList_0 = runtime.ForwardResponseMessage - - forward_InjectiveAccountsRPC_SubaccountBalancesList_0 = runtime.ForwardResponseMessage - - forward_InjectiveAccountsRPC_SubaccountBalanceEndpoint_0 = runtime.ForwardResponseMessage - - forward_InjectiveAccountsRPC_StreamSubaccountBalance_0 = runtime.ForwardResponseStream - - forward_InjectiveAccountsRPC_SubaccountHistory_0 = runtime.ForwardResponseMessage - - forward_InjectiveAccountsRPC_SubaccountOrderSummary_0 = runtime.ForwardResponseMessage - - forward_InjectiveAccountsRPC_Rewards_0 = runtime.ForwardResponseMessage - - forward_InjectiveAccountsRPC_StreamAccountData_0 = runtime.ForwardResponseStream -) diff --git a/exchange/accounts_rpc/pb/pb/injective_accounts_rpc.proto b/exchange/accounts_rpc/pb/pb/injective_accounts_rpc.proto deleted file mode 100644 index e28956da..00000000 --- a/exchange/accounts_rpc/pb/pb/injective_accounts_rpc.proto +++ /dev/null @@ -1,623 +0,0 @@ -// Code generated with goa v3.7.0, DO NOT EDIT. -// -// InjectiveAccountsRPC protocol buffer definition -// -// Command: -// $ goa gen github.com/InjectiveLabs/injective-indexer/api/design -o ../ - -syntax = "proto3"; - -package injective_accounts_rpc; - -option go_package = "/injective_accounts_rpcpb"; - -// InjectiveAccountsRPC defines API of Exchange Accounts provider. -service InjectiveAccountsRPC { - // Provide the account's portfolio value in USD. - rpc Portfolio (PortfolioRequest) returns (PortfolioResponse); - // List order states by order hashes - rpc OrderStates (OrderStatesRequest) returns (OrderStatesResponse); - // List all subaccounts IDs of an account address - rpc SubaccountsList (SubaccountsListRequest) returns (SubaccountsListResponse); - // List subaccount balances for the provided denoms. - rpc SubaccountBalancesList (SubaccountBalancesListRequest) returns (SubaccountBalancesListResponse); - // Gets a balance for specific coin denom - rpc SubaccountBalanceEndpoint (SubaccountBalanceEndpointRequest) returns (SubaccountBalanceEndpointResponse); - // StreamSubaccountBalance streams new balance changes for a specified -// subaccount and denoms. If no denoms are provided, all denom changes are -// streamed. - rpc StreamSubaccountBalance (StreamSubaccountBalanceRequest) returns (stream StreamSubaccountBalanceResponse); - // Get subaccount's deposits and withdrawals history - rpc SubaccountHistory (SubaccountHistoryRequest) returns (SubaccountHistoryResponse); - // Get subaccount's orders summary - rpc SubaccountOrderSummary (SubaccountOrderSummaryRequest) returns (SubaccountOrderSummaryResponse); - // Provide historical trading rewards - rpc Rewards (RewardsRequest) returns (RewardsResponse); - // Stream live data for an account and respective data - rpc StreamAccountData (StreamAccountDataRequest) returns (stream StreamAccountDataResponse); -} - -message PortfolioRequest { - // Account address - string account_address = 1; -} - -message PortfolioResponse { - // The portfolio of this account - AccountPortfolio portfolio = 1; -} - -message AccountPortfolio { - // The account's portfolio value in USD. - string portfolio_value = 1; - // The account's available balance value in USD. - string available_balance = 2; - // The account's locked balance value in USD. - string locked_balance = 3; - // The account's total unrealized PnL value in USD. - string unrealized_pnl = 4; - // List of all subaccounts' portfolio - repeated SubaccountPortfolio subaccounts = 5; -} - -message SubaccountPortfolio { - // The ID of this subaccount - string subaccount_id = 1; - // The subaccount's available balance value in USD. - string available_balance = 2; - // The subaccount's locked balance value in USD. - string locked_balance = 3; - // The subaccount's total unrealized PnL value in USD. - string unrealized_pnl = 4; -} - -message OrderStatesRequest { - repeated string spot_order_hashes = 1; - repeated string derivative_order_hashes = 2; -} - -message OrderStatesResponse { - // List of the spot order state records - repeated OrderStateRecord spot_order_states = 1; - // List of the derivative order state records - repeated OrderStateRecord derivative_order_states = 2; -} - -message OrderStateRecord { - // Hash of the order - string order_hash = 1; - // The subaccountId that this order belongs to - string subaccount_id = 2; - // The Market ID of the order - string market_id = 3; - // The type of the order - string order_type = 4; - // The side of the order - string order_side = 5; - // The state (status) of the order - string state = 6; - // The filled quantity of the order - string quantity_filled = 7; - // The filled quantity of the order - string quantity_remaining = 8; - // Order committed timestamp in UNIX millis. - sint64 created_at = 9; - // Order updated timestamp in UNIX millis. - sint64 updated_at = 10; - // Order prices - string price = 11; - // Margin for derivative order - string margin = 12; -} - -message SubaccountsListRequest { - // Account address, the subaccounts owner - string account_address = 1; -} - -message SubaccountsListResponse { - repeated string subaccounts = 1; -} - -message SubaccountBalancesListRequest { - // SubaccountId of the trader we want to get the trades from - string subaccount_id = 1; - // Filter balances by denoms. If not set, the balances of all the denoms for -// the subaccount are provided. - repeated string denoms = 2; -} - -message SubaccountBalancesListResponse { - // List of subaccount balances - repeated SubaccountBalance balances = 1; -} - -message SubaccountBalance { - // Related subaccount ID - string subaccount_id = 1; - // Account address, owner of this subaccount - string account_address = 2; - // Coin denom on the chain. - string denom = 3; - SubaccountDeposit deposit = 4; -} - -message SubaccountDeposit { - string total_balance = 1; - string available_balance = 2; -} - -message SubaccountBalanceEndpointRequest { - // SubaccountId of the trader we want to get the trades from - string subaccount_id = 1; - // Specify denom to get balance - string denom = 2; -} - -message SubaccountBalanceEndpointResponse { - // Subaccount balance - SubaccountBalance balance = 1; -} - -message StreamSubaccountBalanceRequest { - // SubaccountId of the trader we want to get the trades from - string subaccount_id = 1; - // Filter balances by denoms. If not set, the balances of all the denoms for -// the subaccount are provided. - repeated string denoms = 2; -} - -message StreamSubaccountBalanceResponse { - // Subaccount balance - SubaccountBalance balance = 1; - // Operation timestamp in UNIX millis. - sint64 timestamp = 2; -} - -message SubaccountHistoryRequest { - // SubaccountId of the trader we want to get the history from - string subaccount_id = 1; - // Filter history by denom - string denom = 2; - // Filter history by transfer type - repeated string transfer_types = 3; - // Skip will skip the first n item from the result - uint64 skip = 4; - // Limit is used to specify the maximum number of items to be returned - sint32 limit = 5; - // Upper bound of account transfer history's executedAt - sint64 end_time = 6; -} - -message SubaccountHistoryResponse { - // List of subaccount transfers - repeated SubaccountBalanceTransfer transfers = 1; - Paging paging = 2; -} - -message SubaccountBalanceTransfer { - // Type of the subaccount balance transfer - string transfer_type = 1; - // Subaccount ID of the sending side - string src_subaccount_id = 2; - // Account address of the sending side - string src_account_address = 3; - // Subaccount ID of the receiving side - string dst_subaccount_id = 4; - // Account address of the receiving side - string dst_account_address = 5; - // Coin amount of the transfer - CosmosCoin amount = 6; - // Timestamp of the transfer in UNIX millis - sint64 executed_at = 7; -} - -message CosmosCoin { - // Coin denominator - string denom = 1; - // Coin amount (big int) - string amount = 2; -} -// Paging defines the structure for required params for handling pagination -message Paging { - // total number of txs saved in database - sint64 total = 1; - // can be either block height or index num - sint32 from = 2; - // can be either block height or index num - sint32 to = 3; - // count entries by subaccount, serving some places on helix - sint64 count_by_subaccount = 4; - // array of tokens to navigate to the next pages - repeated string next = 5; -} - -message SubaccountOrderSummaryRequest { - // SubaccountId of the trader we want to get the summary from - string subaccount_id = 1; - // MarketId is limiting order summary to specific market only - string market_id = 2; - // Filter by direction of the orders - string order_direction = 3; -} - -message SubaccountOrderSummaryResponse { - // Total count of subaccount's spot orders in given market and direction - sint64 spot_orders_total = 1; - // Total count of subaccount's derivative orders in given market and direction - sint64 derivative_orders_total = 2; -} - -message RewardsRequest { - // The distribution epoch sequence number. -1 for latest. - sint64 epoch = 1; - // Account address for the rewards distribution - string account_address = 2; -} - -message RewardsResponse { - // The trading rewards distributed - repeated Reward rewards = 1; -} - -message Reward { - // Account address - string account_address = 1; - // Reward coins distributed - repeated Coin rewards = 2; - // Rewards distribution timestamp in UNIX millis. - sint64 distributed_at = 3; -} - -message Coin { - // Denom of the coin - string denom = 1; - string amount = 2; -} - -message StreamAccountDataRequest { - // account address - string account_address = 1; -} - -message StreamAccountDataResponse { - SubaccountBalanceResult subaccount_balance = 1; - PositionsResult position = 2; - TradeResult trade = 3; - OrderResult order = 4; - OrderHistoryResult order_history = 5; - FundingPaymentResult funding_payment = 6; -} - -message SubaccountBalanceResult { - // Subaccount balance - SubaccountBalance balance = 1; - // Operation timestamp in UNIX millis. - sint64 timestamp = 2; -} - -message PositionsResult { - // Updated derivative Position - Position position = 1; - // Operation timestamp in UNIX millis. - sint64 timestamp = 2; -} - -message Position { - // Ticker of the derivative market - string ticker = 1; - // Derivative Market ID - string market_id = 2; - // The subaccountId that the position belongs to - string subaccount_id = 3; - // Direction of the position - string direction = 4; - // Quantity of the position - string quantity = 5; - // Price of the position - string entry_price = 6; - // Margin of the position - string margin = 7; - // LiquidationPrice of the position - string liquidation_price = 8; - // MarkPrice of the position - string mark_price = 9; - // Position updated timestamp in UNIX millis. - sint64 updated_at = 10; - // Position created timestamp in UNIX millis. - sint64 created_at = 11; -} - -message TradeResult { - oneof trade { - // New spot market trade - SpotTrade spot_trade = 1; - // New derivative market trade - DerivativeTrade derivative_trade = 2; - } - // Executed trades update type - string operation_type = 3; - // Operation timestamp in UNIX millis. - sint64 timestamp = 4; -} - -message SpotTrade { - // Maker order hash. - string order_hash = 1; - // The subaccountId that executed the trade - string subaccount_id = 2; - // The ID of the market that this trade is in - string market_id = 3; - // The execution type of the trade - string trade_execution_type = 4; - // The direction the trade - string trade_direction = 5; - // Price level at which trade has been executed - PriceLevel price = 6; - // The fee associated with the trade (quote asset denom) - string fee = 7; - // Timestamp of trade execution in UNIX millis - sint64 executed_at = 8; - // Fee recipient address - string fee_recipient = 9; - // A unique string that helps differentiate between trades - string trade_id = 10; - // Trade's execution side, marker/taker - string execution_side = 11; - // Custom client order ID - string cid = 12; -} - -message PriceLevel { - // Price number of the price level. - string price = 1; - // Quantity of the price level. - string quantity = 2; - // Price level last updated timestamp in UNIX millis. - sint64 timestamp = 3; -} - -message DerivativeTrade { - // Order hash. - string order_hash = 1; - // The subaccountId that executed the trade - string subaccount_id = 2; - // The ID of the market that this trade is in - string market_id = 3; - // The execution type of the trade - string trade_execution_type = 4; - // True if the trade is a liquidation - bool is_liquidation = 5; - // Position Delta from the trade - PositionDelta position_delta = 6; - // The payout associated with the trade - string payout = 7; - // The fee associated with the trade - string fee = 8; - // Timestamp of trade execution in UNIX millis - sint64 executed_at = 9; - // Fee recipient address - string fee_recipient = 10; - // A unique string that helps differentiate between trades - string trade_id = 11; - // Trade's execution side, marker/taker - string execution_side = 12; - // Custom client order ID - string cid = 13; -} - -message PositionDelta { - // The direction the trade - string trade_direction = 1; - // Execution Price of the trade. - string execution_price = 2; - // Execution Quantity of the trade. - string execution_quantity = 3; - // Execution Margin of the trade. - string execution_margin = 4; -} - -message OrderResult { - oneof order { - // Updated spot market order - SpotLimitOrder spot_order = 1; - // Updated derivative market order - DerivativeLimitOrder derivative_order = 2; - } - // Executed orders update type - string operation_type = 3; - // Operation timestamp in UNIX millis. - sint64 timestamp = 4; -} - -message SpotLimitOrder { - // Hash of the order - string order_hash = 1; - // The side of the order - string order_side = 2; - // Spot Market ID is keccak265(baseDenom + quoteDenom) - string market_id = 3; - // The subaccountId that this order belongs to - string subaccount_id = 4; - // Price of the order - string price = 5; - // Quantity of the order - string quantity = 6; - // The amount of the quantity remaining unfilled - string unfilled_quantity = 7; - // Trigger price is the trigger price used by stop/take orders. 0 if the -// trigger price is not set. - string trigger_price = 8; - // Fee recipient address - string fee_recipient = 9; - // Order state - string state = 10; - // Order committed timestamp in UNIX millis. - sint64 created_at = 11; - // Order updated timestamp in UNIX millis. - sint64 updated_at = 12; - // Transaction Hash where order is created. Not all orders have this field - string tx_hash = 13; - // Custom client order ID - string cid = 14; -} - -message DerivativeLimitOrder { - // Hash of the order - string order_hash = 1; - // The side of the order - string order_side = 2; - // Derivative Market ID - string market_id = 3; - // The subaccountId that this order belongs to - string subaccount_id = 4; - // True if the order is a reduce-only order - bool is_reduce_only = 5; - // Margin of the order - string margin = 6; - // Price of the order - string price = 7; - // Quantity of the order - string quantity = 8; - // The amount of the quantity remaining unfilled - string unfilled_quantity = 9; - // Trigger price is the trigger price used by stop/take orders - string trigger_price = 10; - // Fee recipient address - string fee_recipient = 11; - // Order state - string state = 12; - // Order committed timestamp in UNIX millis. - sint64 created_at = 13; - // Order updated timestamp in UNIX millis. - sint64 updated_at = 14; - // Order number of subaccount - sint64 order_number = 15; - // Order type - string order_type = 16; - // Order type - bool is_conditional = 17; - // Trigger timestamp, only exists for conditional orders - uint64 trigger_at = 18; - // OrderHash of order that is triggered by this conditional order - string placed_order_hash = 19; - // Execution type of conditional order - string execution_type = 20; - // Transaction Hash where order is created. Not all orders have this field - string tx_hash = 21; - // Custom client order ID - string cid = 22; -} - -message OrderHistoryResult { - oneof order_history { - // Spot order history - SpotOrderHistory spot_order_history = 1; - // Derivative order history - DerivativeOrderHistory derivative_order_history = 2; - } - // Order update type - string operation_type = 3; - // Operation timestamp in UNIX millis. - sint64 timestamp = 4; -} - -message SpotOrderHistory { - // Hash of the order - string order_hash = 1; - // Spot Market ID is keccak265(baseDenom + quoteDenom) - string market_id = 2; - // active state of the order - bool is_active = 3; - // The subaccountId that this order belongs to - string subaccount_id = 4; - // The execution type - string execution_type = 5; - // The side of the order - string order_type = 6; - // Price of the order - string price = 7; - // Trigger price - string trigger_price = 8; - // Quantity of the order - string quantity = 9; - // Filled amount - string filled_quantity = 10; - // Order state - string state = 11; - // Order committed timestamp in UNIX millis. - sint64 created_at = 12; - // Order updated timestamp in UNIX millis. - sint64 updated_at = 13; - // Order direction (order side) - string direction = 14; - // Transaction Hash where order is created. Not all orders have this field - string tx_hash = 15; - // Custom client order ID - string cid = 16; -} - -message DerivativeOrderHistory { - // Hash of the order - string order_hash = 1; - // Spot Market ID is keccak265(baseDenom + quoteDenom) - string market_id = 2; - // active state of the order - bool is_active = 3; - // The subaccountId that this order belongs to - string subaccount_id = 4; - // The execution type - string execution_type = 5; - // The side of the order - string order_type = 6; - // Price of the order - string price = 7; - // Trigger price - string trigger_price = 8; - // Quantity of the order - string quantity = 9; - // Filled amount - string filled_quantity = 10; - // Order state - string state = 11; - // Order committed timestamp in UNIX millis. - sint64 created_at = 12; - // Order updated timestamp in UNIX millis. - sint64 updated_at = 13; - // True if an order is reduce only - bool is_reduce_only = 14; - // Order direction (order side) - string direction = 15; - // True if this is conditional order, otherwise false - bool is_conditional = 16; - // Trigger timestamp in unix milli - uint64 trigger_at = 17; - // Order hash placed when this triggers - string placed_order_hash = 18; - // Order's margin - string margin = 19; - // Transaction Hash where order is created. Not all orders have this field - string tx_hash = 20; - // Custom client order ID - string cid = 21; -} - -message FundingPaymentResult { - // Funding payments of the account - FundingPayment funding_payments = 1; - // Funding payments type - string operation_type = 2; - // Operation timestamp in UNIX millis. - sint64 timestamp = 4; -} - -message FundingPayment { - // Derivative Market ID - string market_id = 1; - // The subaccountId that the position belongs to - string subaccount_id = 2; - // Amount of the funding payment - string amount = 3; - // Timestamp of funding payment in UNIX millis - sint64 timestamp = 4; -} diff --git a/exchange/auction_rpc/pb/goadesign_goagen_injective_auction_rpc.pb.go b/exchange/auction_rpc/pb/goadesign_goagen_injective_auction_rpc.pb.go index 865f0882..0640a809 100644 --- a/exchange/auction_rpc/pb/goadesign_goagen_injective_auction_rpc.pb.go +++ b/exchange/auction_rpc/pb/goadesign_goagen_injective_auction_rpc.pb.go @@ -8,7 +8,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.30.0 -// protoc v3.19.4 +// protoc v3.21.12 // source: goadesign_goagen_injective_auction_rpc.proto package injective_auction_rpcpb diff --git a/exchange/auction_rpc/pb/goadesign_goagen_injective_auction_rpc_grpc.pb.go b/exchange/auction_rpc/pb/goadesign_goagen_injective_auction_rpc_grpc.pb.go index 4100ffbf..3c89d6b5 100644 --- a/exchange/auction_rpc/pb/goadesign_goagen_injective_auction_rpc_grpc.pb.go +++ b/exchange/auction_rpc/pb/goadesign_goagen_injective_auction_rpc_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.2.0 -// - protoc v3.19.4 +// - protoc v3.21.12 // source: goadesign_goagen_injective_auction_rpc.proto package injective_auction_rpcpb diff --git a/exchange/campaign_rpc/pb/goadesign_goagen_injective_campaign_rpc.pb.go b/exchange/campaign_rpc/pb/goadesign_goagen_injective_campaign_rpc.pb.go index da99cb0b..cb9eacab 100644 --- a/exchange/campaign_rpc/pb/goadesign_goagen_injective_campaign_rpc.pb.go +++ b/exchange/campaign_rpc/pb/goadesign_goagen_injective_campaign_rpc.pb.go @@ -8,7 +8,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.30.0 -// protoc v3.19.4 +// protoc v3.21.12 // source: goadesign_goagen_injective_campaign_rpc.proto package injective_campaign_rpcpb @@ -792,12 +792,23 @@ type CampaignsV2Request struct { // Campaign type Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` - // Whether the campaign is active + // Whether the campaign is active. + // Deprecated: use status instead. Active bool `protobuf:"varint,2,opt,name=active,proto3" json:"active,omitempty"` // Limit number of returned campaigns Limit int32 `protobuf:"zigzag32,3,opt,name=limit,proto3" json:"limit,omitempty"` // Cursor for pagination Cursor string `protobuf:"bytes,4,opt,name=cursor,proto3" json:"cursor,omitempty"` + // Filter campaigns by start date greater than this value in milliseconds + FromStartDate int64 `protobuf:"zigzag64,5,opt,name=from_start_date,json=fromStartDate,proto3" json:"from_start_date,omitempty"` + // Filter campaigns by start date lower than this value in milliseconds + ToStartDate int64 `protobuf:"zigzag64,6,opt,name=to_start_date,json=toStartDate,proto3" json:"to_start_date,omitempty"` + // Filter campaigns by end date greater than this value in milliseconds + FromEndDate int64 `protobuf:"zigzag64,7,opt,name=from_end_date,json=fromEndDate,proto3" json:"from_end_date,omitempty"` + // Filter campaigns by end date lower than this value in milliseconds + ToEndDate int64 `protobuf:"zigzag64,8,opt,name=to_end_date,json=toEndDate,proto3" json:"to_end_date,omitempty"` + // Filter campaigns by status + Status string `protobuf:"bytes,9,opt,name=status,proto3" json:"status,omitempty"` } func (x *CampaignsV2Request) Reset() { @@ -860,6 +871,41 @@ func (x *CampaignsV2Request) GetCursor() string { return "" } +func (x *CampaignsV2Request) GetFromStartDate() int64 { + if x != nil { + return x.FromStartDate + } + return 0 +} + +func (x *CampaignsV2Request) GetToStartDate() int64 { + if x != nil { + return x.ToStartDate + } + return 0 +} + +func (x *CampaignsV2Request) GetFromEndDate() int64 { + if x != nil { + return x.FromEndDate + } + return 0 +} + +func (x *CampaignsV2Request) GetToEndDate() int64 { + if x != nil { + return x.ToEndDate + } + return 0 +} + +func (x *CampaignsV2Request) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + type CampaignsV2Response struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2085,246 +2131,256 @@ var file_goadesign_goagen_injective_campaign_rpc_proto_rawDesc = []byte{ 0x75, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x11, 0x52, 0x0b, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x22, 0x6e, 0x0a, 0x12, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x56, - 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, - 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x61, 0x63, - 0x74, 0x69, 0x76, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, - 0x72, 0x73, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, - 0x6f, 0x72, 0x22, 0x6f, 0x0a, 0x13, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x56, - 0x32, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x40, 0x0a, 0x09, 0x63, 0x61, 0x6d, - 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x69, + 0x6e, 0x74, 0x22, 0x96, 0x02, 0x0a, 0x12, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, + 0x56, 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, + 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x61, + 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x63, + 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, + 0x73, 0x6f, 0x72, 0x12, 0x26, 0x0a, 0x0f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0d, 0x66, 0x72, + 0x6f, 0x6d, 0x53, 0x74, 0x61, 0x72, 0x74, 0x44, 0x61, 0x74, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x74, + 0x6f, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x12, 0x52, 0x0b, 0x74, 0x6f, 0x53, 0x74, 0x61, 0x72, 0x74, 0x44, 0x61, 0x74, 0x65, 0x12, + 0x22, 0x0a, 0x0d, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0b, 0x66, 0x72, 0x6f, 0x6d, 0x45, 0x6e, 0x64, 0x44, + 0x61, 0x74, 0x65, 0x12, 0x1e, 0x0a, 0x0b, 0x74, 0x6f, 0x5f, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x61, + 0x74, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x74, 0x6f, 0x45, 0x6e, 0x64, 0x44, + 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x6f, 0x0a, 0x13, 0x43, + 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x56, 0x32, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x40, 0x0a, 0x09, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, + 0x65, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, + 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x56, 0x32, 0x52, 0x09, 0x63, 0x61, 0x6d, 0x70, 0x61, + 0x69, 0x67, 0x6e, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0xc3, 0x04, 0x0a, + 0x0a, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x56, 0x32, 0x12, 0x1f, 0x0a, 0x0b, 0x63, + 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, + 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x74, + 0x61, 0x6c, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x44, 0x61, 0x74, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x64, + 0x61, 0x74, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x12, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x44, 0x61, + 0x74, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x73, 0x5f, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x61, 0x62, + 0x6c, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x73, 0x43, 0x6c, 0x61, 0x69, + 0x6d, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x69, + 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x11, 0x52, 0x07, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x49, 0x64, + 0x12, 0x29, 0x0a, 0x10, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x74, + 0x72, 0x61, 0x63, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6d, 0x61, 0x6e, 0x61, + 0x67, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x12, 0x36, 0x0a, 0x07, 0x72, + 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, - 0x6e, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x56, 0x32, - 0x52, 0x09, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x63, - 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, - 0x73, 0x6f, 0x72, 0x22, 0xc3, 0x04, 0x0a, 0x0a, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, - 0x56, 0x32, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, - 0x6e, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, - 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x63, 0x6f, 0x72, - 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, - 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, - 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x12, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x44, 0x61, 0x74, 0x65, 0x12, 0x19, - 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x12, - 0x52, 0x07, 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x73, 0x5f, - 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x0b, 0x69, 0x73, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x19, 0x0a, 0x08, - 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x11, 0x52, 0x07, - 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x49, 0x64, 0x12, 0x29, 0x0a, 0x10, 0x6d, 0x61, 0x6e, 0x61, 0x67, - 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, - 0x63, 0x74, 0x12, 0x36, 0x0a, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x0c, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, - 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x69, - 0x6e, 0x52, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0x30, 0x0a, 0x14, 0x73, 0x75, - 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x5f, 0x73, 0x75, 0x66, 0x66, - 0x69, 0x78, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x53, 0x75, 0x66, 0x66, 0x69, 0x78, 0x12, 0x27, 0x0a, 0x0f, - 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x18, - 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x6e, - 0x74, 0x72, 0x61, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0f, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x83, 0x01, 0x0a, 0x11, 0x4c, 0x69, - 0x73, 0x74, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x2b, 0x0a, 0x11, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x74, - 0x72, 0x61, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x61, 0x6d, 0x70, - 0x61, 0x69, 0x67, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x12, 0x14, 0x0a, 0x05, - 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, 0x69, 0x6d, - 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x11, - 0x52, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x62, - 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x6f, 0x72, 0x74, 0x42, 0x79, 0x22, - 0xf6, 0x01, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x06, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, - 0x76, 0x65, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x72, 0x70, 0x63, 0x2e, - 0x47, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x06, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x12, 0x36, 0x0a, - 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, - 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, - 0x67, 0x6e, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x70, - 0x61, 0x67, 0x69, 0x6e, 0x67, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, - 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x64, 0x41, 0x74, 0x12, 0x52, 0x0a, 0x10, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, - 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, - 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, - 0x69, 0x67, 0x6e, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, - 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x0f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, - 0x6e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x22, 0xe5, 0x03, 0x0a, 0x05, 0x47, 0x75, 0x69, - 0x6c, 0x64, 0x12, 0x2b, 0x0a, 0x11, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x63, - 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, - 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x12, - 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x6d, 0x61, - 0x73, 0x74, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0d, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, - 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, - 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x76, 0x6c, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x76, 0x6c, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x21, 0x0a, - 0x0c, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, - 0x12, 0x24, 0x0a, 0x0e, 0x72, 0x61, 0x6e, 0x6b, 0x5f, 0x62, 0x79, 0x5f, 0x76, 0x6f, 0x6c, 0x75, - 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x11, 0x52, 0x0c, 0x72, 0x61, 0x6e, 0x6b, 0x42, 0x79, - 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0b, 0x72, 0x61, 0x6e, 0x6b, 0x5f, 0x62, - 0x79, 0x5f, 0x74, 0x76, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x11, 0x52, 0x09, 0x72, 0x61, 0x6e, - 0x6b, 0x42, 0x79, 0x54, 0x76, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x6f, 0x67, 0x6f, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6c, 0x6f, 0x67, 0x6f, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x6f, - 0x74, 0x61, 0x6c, 0x5f, 0x74, 0x76, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, - 0x6f, 0x74, 0x61, 0x6c, 0x54, 0x76, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0e, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x73, - 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, - 0x73, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x6d, 0x61, 0x73, 0x74, 0x65, - 0x72, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0d, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x20, - 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x10, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x22, 0x82, 0x03, 0x0a, 0x0f, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x53, 0x75, 0x6d, - 0x6d, 0x61, 0x72, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x61, 0x6d, 0x70, 0x61, - 0x69, 0x67, 0x6e, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x11, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, - 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x10, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, - 0x63, 0x74, 0x12, 0x2c, 0x0a, 0x12, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x67, 0x75, 0x69, 0x6c, - 0x64, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x11, 0x52, 0x10, - 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x74, 0x76, 0x6c, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x54, 0x76, 0x6c, 0x12, 0x2a, 0x0a, - 0x11, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x74, - 0x76, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x41, - 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x54, 0x76, 0x6c, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x6f, 0x74, - 0x61, 0x6c, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, - 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x12, - 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x2e, 0x0a, 0x13, 0x74, - 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x11, 0x52, 0x11, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x4d, - 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, - 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x12, 0x52, - 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, - 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x12, 0x52, 0x07, 0x65, 0x6e, - 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xd2, 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x75, - 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x2b, 0x0a, 0x11, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x63, 0x6f, - 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x61, - 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x12, 0x19, - 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, - 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, - 0x12, 0x0a, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x11, 0x52, 0x04, 0x73, - 0x6b, 0x69, 0x70, 0x12, 0x2c, 0x0a, 0x12, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x67, - 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x10, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x6e, 0x66, - 0x6f, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x62, 0x79, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x73, 0x6f, 0x72, 0x74, 0x42, 0x79, 0x22, 0xcf, 0x01, 0x0a, 0x18, 0x4c, - 0x69, 0x73, 0x74, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, - 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, - 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x72, 0x70, - 0x63, 0x2e, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x07, 0x6d, - 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x36, 0x0a, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, + 0x6e, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x07, 0x72, 0x65, 0x77, 0x61, + 0x72, 0x64, 0x73, 0x12, 0x30, 0x0a, 0x14, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x5f, 0x69, 0x64, 0x5f, 0x73, 0x75, 0x66, 0x66, 0x69, 0x78, 0x18, 0x0d, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x12, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x53, + 0x75, 0x66, 0x66, 0x69, 0x78, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, + 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, + 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x12, 0x12, + 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, + 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x10, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x22, 0x83, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x75, 0x69, 0x6c, 0x64, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x11, 0x63, 0x61, 0x6d, 0x70, + 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x43, 0x6f, 0x6e, + 0x74, 0x72, 0x61, 0x63, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, + 0x6b, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x11, 0x52, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x12, + 0x17, 0x0a, 0x07, 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x62, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x73, 0x6f, 0x72, 0x74, 0x42, 0x79, 0x22, 0xf6, 0x01, 0x0a, 0x12, 0x4c, 0x69, 0x73, + 0x74, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x35, 0x0a, 0x06, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1d, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x61, 0x6d, 0x70, + 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x06, + 0x67, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x12, 0x36, 0x0a, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x72, 0x70, 0x63, 0x2e, - 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x12, 0x3c, - 0x0a, 0x0a, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, - 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x75, 0x69, 0x6c, - 0x64, 0x52, 0x09, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xd3, 0x03, 0x0a, - 0x0b, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x2b, 0x0a, 0x11, - 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, - 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, - 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x75, 0x69, - 0x6c, 0x64, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1b, - 0x0a, 0x09, 0x6a, 0x6f, 0x69, 0x6e, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x12, 0x52, 0x08, 0x6a, 0x6f, 0x69, 0x6e, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x74, - 0x76, 0x6c, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x74, 0x76, 0x6c, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x76, 0x6f, 0x6c, 0x75, - 0x6d, 0x65, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, - 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x74, - 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x74, 0x76, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x54, 0x76, 0x6c, 0x12, 0x36, 0x0a, 0x17, 0x76, 0x6f, 0x6c, 0x75, - 0x6d, 0x65, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, - 0x61, 0x67, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x01, 0x52, 0x15, 0x76, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, - 0x12, 0x30, 0x0a, 0x14, 0x74, 0x76, 0x6c, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x70, 0x65, - 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x01, 0x52, 0x12, - 0x74, 0x76, 0x6c, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, - 0x67, 0x65, 0x12, 0x3b, 0x0a, 0x0a, 0x74, 0x76, 0x6c, 0x5f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, - 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, - 0x76, 0x65, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x72, 0x70, 0x63, 0x2e, - 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x09, 0x74, 0x76, 0x6c, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, - 0x41, 0x0a, 0x0d, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, - 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, - 0x76, 0x65, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x72, 0x70, 0x63, 0x2e, - 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x0c, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x77, 0x61, - 0x72, 0x64, 0x22, 0x5e, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, - 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x11, 0x63, + 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x12, 0x1d, + 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x12, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x52, 0x0a, + 0x10, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, + 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, + 0x69, 0x76, 0x65, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x72, 0x70, 0x63, + 0x2e, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, + 0x52, 0x0f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, + 0x79, 0x22, 0xe5, 0x03, 0x0a, 0x05, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x12, 0x2b, 0x0a, 0x11, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, - 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, - 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, - 0x73, 0x73, 0x22, 0x51, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, - 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x04, - 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x69, 0x6e, 0x6a, + 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, + 0x64, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, + 0x64, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x61, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6d, 0x61, 0x73, + 0x74, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x76, 0x6c, + 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x76, + 0x6c, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, + 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x76, 0x6f, + 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x72, 0x61, 0x6e, + 0x6b, 0x5f, 0x62, 0x79, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x11, 0x52, 0x0c, 0x72, 0x61, 0x6e, 0x6b, 0x42, 0x79, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, + 0x1e, 0x0a, 0x0b, 0x72, 0x61, 0x6e, 0x6b, 0x5f, 0x62, 0x79, 0x5f, 0x74, 0x76, 0x6c, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x11, 0x52, 0x09, 0x72, 0x61, 0x6e, 0x6b, 0x42, 0x79, 0x54, 0x76, 0x6c, 0x12, + 0x12, 0x0a, 0x04, 0x6c, 0x6f, 0x67, 0x6f, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6c, + 0x6f, 0x67, 0x6f, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x74, 0x76, 0x6c, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x54, 0x76, 0x6c, + 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0b, + 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, + 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x73, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x12, 0x25, 0x0a, 0x0e, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, + 0x63, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, + 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x82, 0x03, 0x0a, 0x0f, 0x43, 0x61, + 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x1f, 0x0a, + 0x0b, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x49, 0x64, 0x12, 0x2b, + 0x0a, 0x11, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, + 0x61, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x61, 0x6d, 0x70, 0x61, + 0x69, 0x67, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x12, 0x2c, 0x0a, 0x12, 0x74, + 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x11, 0x52, 0x10, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x47, 0x75, + 0x69, 0x6c, 0x64, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x6f, 0x74, + 0x61, 0x6c, 0x5f, 0x74, 0x76, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x6f, + 0x74, 0x61, 0x6c, 0x54, 0x76, 0x6c, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, + 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x76, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x41, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x54, + 0x76, 0x6c, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x76, 0x6f, 0x6c, 0x75, + 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x56, + 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, + 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x64, 0x41, 0x74, 0x12, 0x2e, 0x0a, 0x13, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x6d, 0x65, + 0x6d, 0x62, 0x65, 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x11, 0x52, 0x11, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, + 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, + 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x12, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xd2, + 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x6d, 0x62, + 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x11, 0x63, 0x61, + 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x43, + 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, + 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, + 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x11, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6b, 0x69, 0x70, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x11, 0x52, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x12, 0x2c, 0x0a, 0x12, + 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x6e, + 0x66, 0x6f, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, + 0x65, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x6f, + 0x72, 0x74, 0x5f, 0x62, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x6f, 0x72, + 0x74, 0x42, 0x79, 0x22, 0xcf, 0x01, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x75, 0x69, 0x6c, + 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x3d, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x23, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x61, + 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x75, 0x69, 0x6c, 0x64, + 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, + 0x36, 0x0a, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1e, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x61, 0x6d, 0x70, + 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x52, + 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x12, 0x3c, 0x0a, 0x0a, 0x67, 0x75, 0x69, 0x6c, 0x64, + 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x69, 0x6e, + 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, + 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x09, 0x67, 0x75, 0x69, 0x6c, + 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xd3, 0x03, 0x0a, 0x0b, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4d, + 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x2b, 0x0a, 0x11, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, + 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x10, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, + 0x63, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x18, 0x0a, + 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6a, 0x6f, 0x69, 0x6e, 0x65, + 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x12, 0x52, 0x08, 0x6a, 0x6f, 0x69, 0x6e, + 0x65, 0x64, 0x41, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x76, 0x6c, 0x5f, 0x73, 0x63, 0x6f, 0x72, + 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x76, 0x6c, 0x53, 0x63, 0x6f, 0x72, + 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x73, 0x63, 0x6f, 0x72, + 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, + 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x74, 0x76, + 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x54, 0x76, + 0x6c, 0x12, 0x36, 0x0a, 0x17, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x73, 0x63, 0x6f, 0x72, + 0x65, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x01, 0x52, 0x15, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x50, + 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x74, 0x76, 0x6c, + 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, + 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x01, 0x52, 0x12, 0x74, 0x76, 0x6c, 0x53, 0x63, 0x6f, 0x72, + 0x65, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x12, 0x3b, 0x0a, 0x0a, 0x74, + 0x76, 0x6c, 0x5f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1c, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x61, 0x6d, 0x70, + 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x09, 0x74, + 0x76, 0x6c, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x41, 0x0a, 0x0d, 0x76, 0x6f, 0x6c, 0x75, + 0x6d, 0x65, 0x5f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1c, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x61, 0x6d, 0x70, + 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x0c, 0x76, + 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x22, 0x5e, 0x0a, 0x15, 0x47, + 0x65, 0x74, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x11, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, + 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x10, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, + 0x74, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x51, 0x0a, 0x16, 0x47, + 0x65, 0x74, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, + 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x75, 0x69, + 0x6c, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x32, 0x89, + 0x05, 0x0a, 0x14, 0x49, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x61, 0x6d, 0x70, + 0x61, 0x69, 0x67, 0x6e, 0x52, 0x50, 0x43, 0x12, 0x5a, 0x0a, 0x07, 0x52, 0x61, 0x6e, 0x6b, 0x69, + 0x6e, 0x67, 0x12, 0x26, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, + 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x61, 0x6e, 0x6b, + 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, - 0x72, 0x70, 0x63, 0x2e, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, - 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x32, 0x89, 0x05, 0x0a, 0x14, 0x49, 0x6e, 0x6a, 0x65, 0x63, 0x74, - 0x69, 0x76, 0x65, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x52, 0x50, 0x43, 0x12, 0x5a, - 0x0a, 0x07, 0x52, 0x61, 0x6e, 0x6b, 0x69, 0x6e, 0x67, 0x12, 0x26, 0x2e, 0x69, 0x6e, 0x6a, 0x65, - 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x72, - 0x70, 0x63, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x27, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x61, - 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x69, - 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x60, 0x0a, 0x09, 0x43, 0x61, - 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x12, 0x28, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, - 0x69, 0x76, 0x65, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x72, 0x70, 0x63, - 0x2e, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x29, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x61, - 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x61, 0x6d, 0x70, 0x61, - 0x69, 0x67, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x66, 0x0a, 0x0b, - 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x56, 0x32, 0x12, 0x2a, 0x2e, 0x69, 0x6e, + 0x72, 0x70, 0x63, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x60, 0x0a, 0x09, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, + 0x12, 0x28, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x61, 0x6d, + 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, + 0x67, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x69, 0x6e, 0x6a, + 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, + 0x72, 0x70, 0x63, 0x2e, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x66, 0x0a, 0x0b, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, + 0x6e, 0x73, 0x56, 0x32, 0x12, 0x2a, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x61, + 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x56, 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x2b, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x61, 0x6d, + 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, + 0x67, 0x6e, 0x73, 0x56, 0x32, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x63, 0x0a, + 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x12, 0x29, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, - 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x56, 0x32, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, + 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, + 0x76, 0x65, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x72, 0x70, 0x63, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x75, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4d, + 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x2f, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, + 0x76, 0x65, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x72, 0x70, 0x63, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x72, 0x70, 0x63, - 0x2e, 0x43, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x73, 0x56, 0x32, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x63, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x75, 0x69, 0x6c, - 0x64, 0x73, 0x12, 0x29, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, - 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x47, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, - 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, - 0x67, 0x6e, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x75, 0x69, 0x6c, 0x64, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x75, 0x0a, 0x10, 0x4c, 0x69, 0x73, - 0x74, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x2f, 0x2e, - 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, - 0x67, 0x6e, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x75, 0x69, 0x6c, 0x64, - 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, - 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, - 0x69, 0x67, 0x6e, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x75, 0x69, 0x6c, - 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x6f, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x6d, 0x62, - 0x65, 0x72, 0x12, 0x2d, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, - 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x47, - 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x2e, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x61, - 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x75, - 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x42, 0x1b, 0x5a, 0x19, 0x2f, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, - 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, 0x72, 0x70, 0x63, 0x70, 0x62, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6f, 0x0a, 0x0e, 0x47, 0x65, 0x74, + 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x2d, 0x2e, 0x69, 0x6e, + 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, + 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x6d, + 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x69, 0x6e, 0x6a, + 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x5f, + 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x6d, 0x62, + 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x1b, 0x5a, 0x19, 0x2f, 0x69, + 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, + 0x6e, 0x5f, 0x72, 0x70, 0x63, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/exchange/campaign_rpc/pb/goadesign_goagen_injective_campaign_rpc_grpc.pb.go b/exchange/campaign_rpc/pb/goadesign_goagen_injective_campaign_rpc_grpc.pb.go index f45711c2..7b8d6047 100644 --- a/exchange/campaign_rpc/pb/goadesign_goagen_injective_campaign_rpc_grpc.pb.go +++ b/exchange/campaign_rpc/pb/goadesign_goagen_injective_campaign_rpc_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.2.0 -// - protoc v3.19.4 +// - protoc v3.21.12 // source: goadesign_goagen_injective_campaign_rpc.proto package injective_campaign_rpcpb diff --git a/exchange/campaign_rpc/pb/injective_campaign_rpc.proto b/exchange/campaign_rpc/pb/injective_campaign_rpc.proto index f5095311..13acc8b2 100644 --- a/exchange/campaign_rpc/pb/injective_campaign_rpc.proto +++ b/exchange/campaign_rpc/pb/injective_campaign_rpc.proto @@ -149,12 +149,23 @@ message CampaignsResponse { message CampaignsV2Request { // Campaign type string type = 1; - // Whether the campaign is active + // Whether the campaign is active. +// Deprecated: use status instead. bool active = 2; // Limit number of returned campaigns sint32 limit = 3; // Cursor for pagination string cursor = 4; + // Filter campaigns by start date greater than this value in milliseconds + sint64 from_start_date = 5; + // Filter campaigns by start date lower than this value in milliseconds + sint64 to_start_date = 6; + // Filter campaigns by end date greater than this value in milliseconds + sint64 from_end_date = 7; + // Filter campaigns by end date lower than this value in milliseconds + sint64 to_end_date = 8; + // Filter campaigns by status + string status = 9; } message CampaignsV2Response { diff --git a/exchange/derivative_exchange_rpc/pb/goadesign_goagen_injective_derivative_exchange_rpc.pb.go b/exchange/derivative_exchange_rpc/pb/goadesign_goagen_injective_derivative_exchange_rpc.pb.go index 98af60fa..cae3c64a 100644 --- a/exchange/derivative_exchange_rpc/pb/goadesign_goagen_injective_derivative_exchange_rpc.pb.go +++ b/exchange/derivative_exchange_rpc/pb/goadesign_goagen_injective_derivative_exchange_rpc.pb.go @@ -8,7 +8,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.30.0 -// protoc v3.19.4 +// protoc v3.21.12 // source: goadesign_goagen_injective_derivative_exchange_rpc.proto package injective_derivative_exchange_rpcpb @@ -170,7 +170,7 @@ type DerivativeMarketInfo struct { MaintenanceMarginRatio string `protobuf:"bytes,9,opt,name=maintenance_margin_ratio,json=maintenanceMarginRatio,proto3" json:"maintenance_margin_ratio,omitempty"` // Coin denom used for the quote asset. QuoteDenom string `protobuf:"bytes,10,opt,name=quote_denom,json=quoteDenom,proto3" json:"quote_denom,omitempty"` - // Token metadata for quote asset, only for Ethereum-based assets + // Token metadata for quote asset QuoteTokenMeta *TokenMeta `protobuf:"bytes,11,opt,name=quote_token_meta,json=quoteTokenMeta,proto3" json:"quote_token_meta,omitempty"` // Defines the fee percentage makers pay when trading (in quote asset) MakerFeeRate string `protobuf:"bytes,12,opt,name=maker_fee_rate,json=makerFeeRate,proto3" json:"maker_fee_rate,omitempty"` @@ -377,7 +377,7 @@ type TokenMeta struct { // Token full name Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // Token Ethereum contract address + // Token contract address (native or not) Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"` // Token symbol short name Symbol string `protobuf:"bytes,3,opt,name=symbol,proto3" json:"symbol,omitempty"` @@ -1033,7 +1033,7 @@ type BinaryOptionsMarketInfo struct { SettlementTimestamp int64 `protobuf:"zigzag64,9,opt,name=settlement_timestamp,json=settlementTimestamp,proto3" json:"settlement_timestamp,omitempty"` // Coin denom used for the quote asset. QuoteDenom string `protobuf:"bytes,10,opt,name=quote_denom,json=quoteDenom,proto3" json:"quote_denom,omitempty"` - // Token metadata for quote asset, only for Ethereum-based assets + // Token metadata for quote asset QuoteTokenMeta *TokenMeta `protobuf:"bytes,11,opt,name=quote_token_meta,json=quoteTokenMeta,proto3" json:"quote_token_meta,omitempty"` // Defines the fee percentage makers pay when trading (in quote asset) MakerFeeRate string `protobuf:"bytes,12,opt,name=maker_fee_rate,json=makerFeeRate,proto3" json:"maker_fee_rate,omitempty"` @@ -4256,6 +4256,8 @@ type TradesRequest struct { AccountAddress string `protobuf:"bytes,13,opt,name=account_address,json=accountAddress,proto3" json:"account_address,omitempty"` // Client order ID Cid string `protobuf:"bytes,14,opt,name=cid,proto3" json:"cid,omitempty"` + // Filter by fee recipient + FeeRecipient string `protobuf:"bytes,15,opt,name=fee_recipient,json=feeRecipient,proto3" json:"fee_recipient,omitempty"` } func (x *TradesRequest) Reset() { @@ -4388,6 +4390,13 @@ func (x *TradesRequest) GetCid() string { return "" } +func (x *TradesRequest) GetFeeRecipient() string { + if x != nil { + return x.FeeRecipient + } + return "" +} + type TradesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -4710,6 +4719,8 @@ type TradesV2Request struct { AccountAddress string `protobuf:"bytes,13,opt,name=account_address,json=accountAddress,proto3" json:"account_address,omitempty"` // Client order ID Cid string `protobuf:"bytes,14,opt,name=cid,proto3" json:"cid,omitempty"` + // Filter by fee recipient + FeeRecipient string `protobuf:"bytes,15,opt,name=fee_recipient,json=feeRecipient,proto3" json:"fee_recipient,omitempty"` } func (x *TradesV2Request) Reset() { @@ -4842,6 +4853,13 @@ func (x *TradesV2Request) GetCid() string { return "" } +func (x *TradesV2Request) GetFeeRecipient() string { + if x != nil { + return x.FeeRecipient + } + return "" +} + type TradesV2Response struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -4933,6 +4951,8 @@ type StreamTradesRequest struct { AccountAddress string `protobuf:"bytes,13,opt,name=account_address,json=accountAddress,proto3" json:"account_address,omitempty"` // Client order ID Cid string `protobuf:"bytes,14,opt,name=cid,proto3" json:"cid,omitempty"` + // Filter by fee recipient + FeeRecipient string `protobuf:"bytes,15,opt,name=fee_recipient,json=feeRecipient,proto3" json:"fee_recipient,omitempty"` } func (x *StreamTradesRequest) Reset() { @@ -5065,6 +5085,13 @@ func (x *StreamTradesRequest) GetCid() string { return "" } +func (x *StreamTradesRequest) GetFeeRecipient() string { + if x != nil { + return x.FeeRecipient + } + return "" +} + type StreamTradesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -5166,6 +5193,8 @@ type StreamTradesV2Request struct { AccountAddress string `protobuf:"bytes,13,opt,name=account_address,json=accountAddress,proto3" json:"account_address,omitempty"` // Client order ID Cid string `protobuf:"bytes,14,opt,name=cid,proto3" json:"cid,omitempty"` + // Filter by fee recipient + FeeRecipient string `protobuf:"bytes,15,opt,name=fee_recipient,json=feeRecipient,proto3" json:"fee_recipient,omitempty"` } func (x *StreamTradesV2Request) Reset() { @@ -5298,6 +5327,13 @@ func (x *StreamTradesV2Request) GetCid() string { return "" } +func (x *StreamTradesV2Request) GetFeeRecipient() string { + if x != nil { + return x.FeeRecipient + } + return "" +} + type StreamTradesV2Response struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -6952,7 +6988,7 @@ var file_goadesign_goagen_injective_derivative_exchange_rpc_proto_rawDesc = []by 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x12, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0xbf, + 0x01, 0x28, 0x12, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0xe4, 0x03, 0x0a, 0x0d, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x25, 0x0a, @@ -6981,542 +7017,551 @@ var file_goadesign_goagen_injective_derivative_exchange_rpc_proto_rawDesc = []by 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x69, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, 0x69, 0x64, - 0x22, 0x9f, 0x01, 0x0a, 0x0e, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x4a, 0x0a, 0x06, 0x74, 0x72, 0x61, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, - 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, - 0x76, 0x65, 0x54, 0x72, 0x61, 0x64, 0x65, 0x52, 0x06, 0x74, 0x72, 0x61, 0x64, 0x65, 0x73, 0x12, - 0x41, 0x0a, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x29, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, - 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, - 0x72, 0x70, 0x63, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x70, 0x61, 0x67, 0x69, - 0x6e, 0x67, 0x22, 0xe8, 0x03, 0x0a, 0x0f, 0x44, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, - 0x65, 0x54, 0x72, 0x61, 0x64, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, - 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x72, 0x64, 0x65, - 0x72, 0x48, 0x61, 0x73, 0x68, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, - 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, - 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, - 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x74, 0x72, 0x61, 0x64, 0x65, - 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x74, 0x72, 0x61, 0x64, 0x65, 0x45, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x69, 0x73, 0x5f, - 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x0d, 0x69, 0x73, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x57, 0x0a, 0x0e, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x65, 0x6c, - 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, + 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x65, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, + 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x66, 0x65, 0x65, 0x52, 0x65, 0x63, 0x69, + 0x70, 0x69, 0x65, 0x6e, 0x74, 0x22, 0x9f, 0x01, 0x0a, 0x0e, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4a, 0x0a, 0x06, 0x74, 0x72, 0x61, 0x64, + 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, - 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x6f, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x52, 0x0d, 0x70, 0x6f, 0x73, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x61, 0x79, - 0x6f, 0x75, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x61, 0x79, 0x6f, 0x75, - 0x74, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x65, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x66, 0x65, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x64, 0x5f, - 0x61, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0a, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, - 0x65, 0x64, 0x41, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x65, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x69, - 0x70, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x66, 0x65, 0x65, - 0x52, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x72, 0x61, - 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x72, 0x61, - 0x64, 0x65, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x78, - 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x69, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x63, - 0x69, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, 0x69, 0x64, 0x22, 0xbb, 0x01, - 0x0a, 0x0d, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x12, - 0x27, 0x0a, 0x0f, 0x74, 0x72, 0x61, 0x64, 0x65, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x74, 0x72, 0x61, 0x64, 0x65, 0x44, - 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x65, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x69, 0x63, - 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x71, - 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x65, - 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, - 0x12, 0x29, 0x0a, 0x10, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, - 0x72, 0x67, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x65, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x22, 0xc1, 0x03, 0x0a, 0x0f, - 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x56, 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, - 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, - 0x69, 0x64, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, - 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, - 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, - 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, - 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x12, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, - 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, - 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x75, 0x62, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x73, - 0x12, 0x27, 0x0a, 0x0f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, - 0x70, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x72, 0x61, - 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x72, 0x61, - 0x64, 0x65, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, - 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x10, 0x0a, - 0x03, 0x63, 0x69, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, 0x69, 0x64, 0x22, - 0xa1, 0x01, 0x0a, 0x10, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x56, 0x32, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4a, 0x0a, 0x06, 0x74, 0x72, 0x61, 0x64, 0x65, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x65, 0x72, + 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x54, 0x72, 0x61, 0x64, 0x65, 0x52, 0x06, 0x74, 0x72, + 0x61, 0x64, 0x65, 0x73, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, - 0x69, 0x76, 0x65, 0x54, 0x72, 0x61, 0x64, 0x65, 0x52, 0x06, 0x74, 0x72, 0x61, 0x64, 0x65, 0x73, - 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x29, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, - 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x70, 0x61, 0x67, - 0x69, 0x6e, 0x67, 0x22, 0xc5, 0x03, 0x0a, 0x13, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x72, - 0x61, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6d, - 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0d, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x69, 0x64, 0x65, 0x12, - 0x1c, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, - 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1d, 0x0a, 0x0a, - 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x12, - 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, - 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x12, 0x52, 0x07, 0x65, - 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, - 0x5f, 0x69, 0x64, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x61, 0x72, 0x6b, - 0x65, 0x74, 0x49, 0x64, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x73, - 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x73, 0x12, 0x27, 0x0a, 0x0f, - 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, - 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x72, 0x61, 0x64, 0x65, 0x5f, 0x69, - 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x72, 0x61, 0x64, 0x65, 0x49, 0x64, - 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, - 0x65, 0x73, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x69, 0x64, - 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, 0x69, 0x64, 0x22, 0xa5, 0x01, 0x0a, 0x14, - 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x05, 0x74, 0x72, 0x61, 0x64, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, - 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, - 0x76, 0x65, 0x54, 0x72, 0x61, 0x64, 0x65, 0x52, 0x05, 0x74, 0x72, 0x61, 0x64, 0x65, 0x12, 0x25, - 0x0a, 0x0e, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x22, 0xc7, 0x03, 0x0a, 0x15, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x72, - 0x61, 0x64, 0x65, 0x73, 0x56, 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, - 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x78, - 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0d, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x69, 0x64, - 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, - 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1d, - 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x12, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, - 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x12, 0x52, - 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x72, 0x6b, - 0x65, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x61, - 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x75, 0x62, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x73, 0x12, 0x27, - 0x0a, 0x0f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, - 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, - 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x72, 0x61, 0x64, 0x65, - 0x5f, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x72, 0x61, 0x64, 0x65, - 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x64, - 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x63, - 0x69, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, 0x69, 0x64, 0x22, 0xa7, 0x01, - 0x0a, 0x16, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x56, 0x32, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x05, 0x74, 0x72, 0x61, 0x64, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, - 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, - 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x65, 0x72, 0x69, - 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x54, 0x72, 0x61, 0x64, 0x65, 0x52, 0x05, 0x74, 0x72, 0x61, - 0x64, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x70, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x74, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0x89, 0x01, 0x0a, 0x1b, 0x53, 0x75, 0x62, 0x61, + 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x52, + 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x22, 0xe8, 0x03, 0x0a, 0x0f, 0x44, 0x65, 0x72, 0x69, + 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x54, 0x72, 0x61, 0x64, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, + 0x72, 0x64, 0x65, 0x72, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x48, 0x61, 0x73, 0x68, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, + 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, + 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x14, + 0x74, 0x72, 0x61, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x74, 0x72, 0x61, 0x64, + 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x25, + 0x0a, 0x0e, 0x69, 0x73, 0x5f, 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x69, 0x73, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x57, 0x0a, 0x0e, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, + 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, + 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, + 0x63, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x52, + 0x0d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x12, 0x16, + 0x0a, 0x06, 0x70, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x70, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x65, 0x65, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x66, 0x65, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x78, 0x65, 0x63, + 0x75, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0a, 0x65, + 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x65, 0x65, + 0x5f, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0c, 0x66, 0x65, 0x65, 0x52, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x19, + 0x0a, 0x08, 0x74, 0x72, 0x61, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x74, 0x72, 0x61, 0x64, 0x65, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x78, 0x65, + 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0d, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x69, 0x64, 0x65, + 0x12, 0x10, 0x0a, 0x03, 0x63, 0x69, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, + 0x69, 0x64, 0x22, 0xbb, 0x01, 0x0a, 0x0d, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, + 0x65, 0x6c, 0x74, 0x61, 0x12, 0x27, 0x0a, 0x0f, 0x74, 0x72, 0x61, 0x64, 0x65, 0x5f, 0x64, 0x69, + 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x74, + 0x72, 0x61, 0x64, 0x65, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, + 0x0f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x11, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x61, + 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x29, 0x0a, 0x10, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, + 0x22, 0xe6, 0x03, 0x0a, 0x0f, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x56, 0x32, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, + 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, + 0x69, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x78, 0x65, 0x63, 0x75, + 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x69, 0x64, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x69, 0x72, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, + 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73, + 0x6b, 0x69, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x12, + 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, + 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, + 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x12, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, + 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x09, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x73, 0x12, 0x25, + 0x0a, 0x0e, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x73, + 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x49, 0x64, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, + 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x19, + 0x0a, 0x08, 0x74, 0x72, 0x61, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x74, 0x72, 0x61, 0x64, 0x65, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x0d, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x69, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x63, 0x69, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x65, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x69, + 0x70, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x66, 0x65, 0x65, + 0x52, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x22, 0xa1, 0x01, 0x0a, 0x10, 0x54, 0x72, + 0x61, 0x64, 0x65, 0x73, 0x56, 0x32, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4a, + 0x0a, 0x06, 0x74, 0x72, 0x61, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, + 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, + 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, + 0x70, 0x63, 0x2e, 0x44, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x54, 0x72, 0x61, + 0x64, 0x65, 0x52, 0x06, 0x74, 0x72, 0x61, 0x64, 0x65, 0x73, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, + 0x67, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x69, 0x6e, 0x6a, + 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, + 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, + 0x61, 0x67, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x22, 0xea, 0x03, + 0x0a, 0x13, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, + 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x73, 0x69, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x78, 0x65, 0x63, + 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x69, 0x64, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x69, 0x72, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x69, + 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, + 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, + 0x73, 0x6b, 0x69, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6b, 0x69, 0x70, + 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x11, 0x52, + 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, + 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, + 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x12, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, + 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x09, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x73, 0x12, + 0x25, 0x0a, 0x0e, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, + 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x49, 0x64, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, + 0x19, 0x0a, 0x08, 0x74, 0x72, 0x61, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x74, 0x72, 0x61, 0x64, 0x65, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x0d, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x69, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x63, 0x69, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x65, 0x65, 0x5f, 0x72, 0x65, 0x63, + 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x66, 0x65, + 0x65, 0x52, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x22, 0xa5, 0x01, 0x0a, 0x14, 0x53, + 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x05, 0x74, 0x72, 0x61, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, + 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, + 0x65, 0x54, 0x72, 0x61, 0x64, 0x65, 0x52, 0x05, 0x74, 0x72, 0x61, 0x64, 0x65, 0x12, 0x25, 0x0a, + 0x0e, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x22, 0xec, 0x03, 0x0a, 0x15, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x72, 0x61, + 0x64, 0x65, 0x73, 0x56, 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, + 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x78, 0x65, + 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0d, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x69, 0x64, 0x65, + 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, + 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1d, 0x0a, + 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x12, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, + 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x12, 0x52, 0x07, + 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x72, 0x6b, 0x65, + 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x61, 0x72, + 0x6b, 0x65, 0x74, 0x49, 0x64, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, + 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x73, 0x12, 0x27, 0x0a, + 0x0f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, + 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x72, 0x61, 0x64, 0x65, 0x5f, + 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x72, 0x61, 0x64, 0x65, 0x49, + 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x69, + 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, 0x69, 0x64, 0x12, 0x23, 0x0a, 0x0d, + 0x66, 0x65, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x0f, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0c, 0x66, 0x65, 0x65, 0x52, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, + 0x74, 0x22, 0xa7, 0x01, 0x0a, 0x16, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x64, + 0x65, 0x73, 0x56, 0x32, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x05, + 0x74, 0x72, 0x61, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x69, 0x6e, + 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, + 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, + 0x44, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x54, 0x72, 0x61, 0x64, 0x65, 0x52, + 0x05, 0x74, 0x72, 0x61, 0x64, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, + 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, + 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x12, + 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0x89, 0x01, 0x0a, 0x1b, + 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, + 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x73, + 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, + 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, + 0x04, 0x73, 0x6b, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6b, 0x69, + 0x70, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x11, + 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0xb2, 0x01, 0x0a, 0x1c, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x4c, 0x69, 0x73, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, - 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, - 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6b, 0x69, - 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x12, 0x14, 0x0a, - 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, 0x69, - 0x6d, 0x69, 0x74, 0x22, 0xb2, 0x01, 0x0a, 0x1c, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x06, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, - 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, - 0x69, 0x76, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x06, 0x6f, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x06, 0x6f, 0x72, 0x64, 0x65, + 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, + 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, + 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x65, 0x72, + 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4f, 0x72, 0x64, 0x65, + 0x72, 0x52, 0x06, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x67, + 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x69, 0x6e, 0x6a, 0x65, + 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, + 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x61, + 0x67, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x22, 0xce, 0x01, 0x0a, + 0x1b, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, + 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, + 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, + 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x25, + 0x0a, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0x6a, 0x0a, + 0x1c, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, + 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4a, 0x0a, + 0x06, 0x74, 0x72, 0x61, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, + 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, + 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, + 0x63, 0x2e, 0x44, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x54, 0x72, 0x61, 0x64, + 0x65, 0x52, 0x06, 0x74, 0x72, 0x61, 0x64, 0x65, 0x73, 0x22, 0xfc, 0x03, 0x0a, 0x14, 0x4f, 0x72, + 0x64, 0x65, 0x72, 0x73, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x61, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, + 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, + 0x65, 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, + 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1f, + 0x0a, 0x0b, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x05, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, + 0x1c, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, + 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x12, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, + 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x12, 0x52, 0x07, + 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x69, 0x73, 0x5f, 0x63, 0x6f, + 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0d, 0x69, 0x73, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x12, 0x1d, + 0x0a, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0a, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, + 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, + 0x61, 0x74, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x78, + 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x0a, + 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x74, + 0x72, 0x61, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, + 0x72, 0x61, 0x64, 0x65, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x13, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x0f, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x11, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x4d, 0x61, 0x72, 0x6b, 0x65, + 0x74, 0x73, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x69, 0x64, 0x18, 0x10, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, 0x69, 0x64, 0x22, 0xad, 0x01, 0x0a, 0x15, 0x4f, 0x72, 0x64, + 0x65, 0x72, 0x73, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x51, 0x0a, 0x06, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, + 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, + 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x06, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, - 0x52, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x22, 0xce, 0x01, 0x0a, 0x1b, 0x53, 0x75, 0x62, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x4c, 0x69, 0x73, - 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x61, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0c, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, - 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x78, - 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0d, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, + 0x52, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x22, 0xa9, 0x05, 0x0a, 0x16, 0x44, 0x65, 0x72, + 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x48, 0x69, 0x73, 0x74, + 0x6f, 0x72, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x68, 0x61, 0x73, + 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x48, 0x61, + 0x73, 0x68, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, + 0x1b, 0x0a, 0x09, 0x69, 0x73, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x23, 0x0a, 0x0d, + 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, + 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x78, 0x65, 0x63, 0x75, + 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x72, 0x64, 0x65, + 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x72, + 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x23, 0x0a, + 0x0d, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x50, 0x72, 0x69, + 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x27, + 0x0a, 0x0f, 0x66, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x5f, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, + 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x66, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x51, + 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x0a, + 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, + 0x12, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x12, + 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x24, 0x0a, 0x0e, 0x69, + 0x73, 0x5f, 0x72, 0x65, 0x64, 0x75, 0x63, 0x65, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x0e, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0c, 0x69, 0x73, 0x52, 0x65, 0x64, 0x75, 0x63, 0x65, 0x4f, 0x6e, 0x6c, + 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x12, 0x0a, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, - 0x6b, 0x69, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x11, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0x6a, 0x0a, 0x1c, 0x53, 0x75, 0x62, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x4c, 0x69, 0x73, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4a, 0x0a, 0x06, 0x74, 0x72, 0x61, - 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x69, 0x6e, 0x6a, 0x65, - 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, - 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x65, - 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x54, 0x72, 0x61, 0x64, 0x65, 0x52, 0x06, 0x74, - 0x72, 0x61, 0x64, 0x65, 0x73, 0x22, 0xfc, 0x03, 0x0a, 0x14, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, - 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, - 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, - 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, - 0x73, 0x6b, 0x69, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x72, - 0x64, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x64, - 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x73, - 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, - 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x12, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, - 0x69, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x69, 0x73, 0x43, - 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x72, - 0x64, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x6f, 0x72, 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, - 0x74, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, - 0x27, 0x0a, 0x0f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, - 0x65, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x72, 0x6b, - 0x65, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x61, - 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x72, 0x61, 0x64, 0x65, - 0x5f, 0x69, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x72, 0x61, 0x64, 0x65, - 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x13, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x6d, 0x61, 0x72, - 0x6b, 0x65, 0x74, 0x73, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x11, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x4f, 0x6e, - 0x6c, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x69, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x63, 0x69, 0x64, 0x22, 0xad, 0x01, 0x0a, 0x15, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x48, - 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x51, - 0x0a, 0x06, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, - 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, - 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, - 0x70, 0x63, 0x2e, 0x44, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x4f, 0x72, 0x64, - 0x65, 0x72, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x06, 0x6f, 0x72, 0x64, 0x65, 0x72, - 0x73, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x29, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, - 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x70, 0x61, - 0x67, 0x69, 0x6e, 0x67, 0x22, 0xa9, 0x05, 0x0a, 0x16, 0x44, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, - 0x69, 0x76, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, - 0x1d, 0x0a, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x48, 0x61, 0x73, 0x68, 0x12, 0x1b, - 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x69, - 0x73, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, - 0x69, 0x73, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x61, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0c, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x25, 0x0a, - 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x74, 0x72, 0x69, - 0x67, 0x67, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0c, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x1a, - 0x0a, 0x08, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x66, 0x69, - 0x6c, 0x6c, 0x65, 0x64, 0x5f, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x0a, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0e, 0x66, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x51, 0x75, 0x61, 0x6e, 0x74, - 0x69, 0x74, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0b, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x75, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x24, 0x0a, 0x0e, 0x69, 0x73, 0x5f, 0x72, 0x65, - 0x64, 0x75, 0x63, 0x65, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x0c, 0x69, 0x73, 0x52, 0x65, 0x64, 0x75, 0x63, 0x65, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x1c, 0x0a, - 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x0e, 0x69, - 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x18, 0x10, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x0d, 0x69, 0x73, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x61, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x5f, 0x61, 0x74, - 0x18, 0x11, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x41, - 0x74, 0x12, 0x2a, 0x0a, 0x11, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x64, 0x5f, 0x6f, 0x72, 0x64, 0x65, - 0x72, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x6c, - 0x61, 0x63, 0x65, 0x64, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x48, 0x61, 0x73, 0x68, 0x12, 0x16, 0x0a, - 0x06, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, - 0x61, 0x72, 0x67, 0x69, 0x6e, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x78, 0x5f, 0x68, 0x61, 0x73, 0x68, - 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x12, 0x10, - 0x0a, 0x03, 0x63, 0x69, 0x64, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, 0x69, 0x64, - 0x22, 0xdc, 0x01, 0x0a, 0x1a, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, - 0x73, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, - 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, - 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x22, - 0xb3, 0x01, 0x0a, 0x1b, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, - 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x4f, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, + 0x25, 0x0a, 0x0e, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, + 0x6c, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x69, 0x73, 0x43, 0x6f, 0x6e, 0x64, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, + 0x72, 0x5f, 0x61, 0x74, 0x18, 0x11, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x74, 0x72, 0x69, 0x67, + 0x67, 0x65, 0x72, 0x41, 0x74, 0x12, 0x2a, 0x0a, 0x11, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x64, 0x5f, + 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0f, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x64, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x48, 0x61, 0x73, + 0x68, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x18, 0x13, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x78, 0x5f, + 0x68, 0x61, 0x73, 0x68, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x78, 0x48, 0x61, + 0x73, 0x68, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x69, 0x64, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x63, 0x69, 0x64, 0x22, 0xdc, 0x01, 0x0a, 0x1a, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, + 0x72, 0x64, 0x65, 0x72, 0x73, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, + 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, + 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x72, 0x64, 0x65, + 0x72, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x65, 0x78, + 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x06, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, + 0x70, 0x65, 0x73, 0x22, 0xb3, 0x01, 0x0a, 0x1b, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, + 0x64, 0x65, 0x72, 0x73, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, + 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, + 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x05, 0x6f, + 0x72, 0x64, 0x65, 0x72, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, + 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x32, 0xc4, 0x1a, 0x0a, 0x1e, 0x49, 0x6e, + 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, + 0x65, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x50, 0x43, 0x12, 0x70, 0x0a, 0x07, + 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x31, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, + 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, + 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4d, 0x61, 0x72, 0x6b, + 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x69, 0x6e, 0x6a, + 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, + 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4d, + 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6d, + 0x0a, 0x06, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x12, 0x30, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, + 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, + 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4d, 0x61, 0x72, + 0x6b, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x69, 0x6e, 0x6a, + 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, + 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4d, + 0x61, 0x72, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x81, 0x01, + 0x0a, 0x0c, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x12, 0x36, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, - 0x70, 0x63, 0x2e, 0x44, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x4f, 0x72, 0x64, - 0x65, 0x72, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, - 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x32, 0xc4, 0x1a, 0x0a, 0x1e, 0x49, 0x6e, 0x6a, 0x65, 0x63, 0x74, - 0x69, 0x76, 0x65, 0x44, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x45, 0x78, 0x63, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x50, 0x43, 0x12, 0x70, 0x0a, 0x07, 0x4d, 0x61, 0x72, 0x6b, - 0x65, 0x74, 0x73, 0x12, 0x31, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, - 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, - 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, - 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, - 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6d, 0x0a, 0x06, 0x4d, 0x61, - 0x72, 0x6b, 0x65, 0x74, 0x12, 0x30, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, - 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, + 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, - 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x81, 0x01, 0x0a, 0x0c, 0x53, 0x74, - 0x72, 0x65, 0x61, 0x6d, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x12, 0x36, 0x2e, 0x69, 0x6e, 0x6a, + 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, + 0x6d, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, + 0x01, 0x12, 0x97, 0x01, 0x0a, 0x14, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x4f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x3e, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, - 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, - 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, + 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x42, + 0x69, 0x6e, 0x61, 0x72, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4d, 0x61, 0x72, 0x6b, + 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3f, 0x2e, 0x69, 0x6e, 0x6a, + 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, + 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x42, + 0x69, 0x6e, 0x61, 0x72, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4d, 0x61, 0x72, 0x6b, + 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x94, 0x01, 0x0a, 0x13, + 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4d, 0x61, 0x72, + 0x6b, 0x65, 0x74, 0x12, 0x3d, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, + 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x4f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x3e, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4d, 0x61, 0x72, - 0x6b, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x97, 0x01, - 0x0a, 0x14, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4d, - 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x3e, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, - 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, - 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x42, 0x69, 0x6e, 0x61, 0x72, - 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3f, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, - 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, - 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x42, 0x69, 0x6e, 0x61, 0x72, - 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x94, 0x01, 0x0a, 0x13, 0x42, 0x69, 0x6e, 0x61, - 0x72, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x12, - 0x3d, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, - 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, - 0x72, 0x70, 0x63, 0x2e, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3e, + 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x4f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x7c, 0x0a, 0x0b, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x56, + 0x32, 0x12, 0x35, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, + 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x56, + 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, + 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, + 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4f, 0x72, 0x64, + 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x56, 0x32, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x7f, 0x0a, 0x0c, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x56, 0x32, + 0x12, 0x36, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, + 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x56, + 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, + 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, + 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4f, 0x72, 0x64, + 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x56, 0x32, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x90, 0x01, 0x0a, 0x11, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, + 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x56, 0x32, 0x12, 0x3b, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, + 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, + 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x56, 0x32, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, + 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x56, 0x32, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x30, 0x01, 0x12, 0x9c, 0x01, 0x0a, 0x15, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, + 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x3f, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, - 0x70, 0x63, 0x2e, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7c, - 0x0a, 0x0b, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x56, 0x32, 0x12, 0x35, 0x2e, + 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, + 0x6f, 0x6b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x40, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, + 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, + 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, + 0x6f, 0x6f, 0x6b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x30, 0x01, 0x12, 0x6d, 0x0a, 0x06, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x30, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, - 0x63, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x56, 0x32, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, - 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, - 0x6f, 0x6b, 0x56, 0x32, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7f, 0x0a, 0x0c, - 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x56, 0x32, 0x12, 0x36, 0x2e, 0x69, - 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, - 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, - 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x56, 0x32, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x63, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x31, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, + 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, + 0x72, 0x70, 0x63, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x76, 0x0a, 0x09, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x33, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, + 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, + 0x72, 0x70, 0x63, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, - 0x6f, 0x6b, 0x73, 0x56, 0x32, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x90, 0x01, - 0x0a, 0x11, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, - 0x6b, 0x56, 0x32, 0x12, 0x3b, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, - 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, - 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x56, 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x3c, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, - 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, - 0x62, 0x6f, 0x6f, 0x6b, 0x56, 0x32, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, - 0x12, 0x9c, 0x01, 0x0a, 0x15, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, - 0x62, 0x6f, 0x6f, 0x6b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x3f, 0x2e, 0x69, 0x6e, 0x6a, - 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, - 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, - 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x40, 0x2e, 0x69, 0x6e, - 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, - 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, - 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, - 0x6d, 0x0a, 0x06, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x30, 0x2e, 0x69, 0x6e, 0x6a, 0x65, + 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7c, 0x0a, 0x0b, 0x50, 0x6f, + 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x56, 0x32, 0x12, 0x35, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, - 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4f, 0x72, - 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x69, 0x6e, - 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, - 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, - 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x76, - 0x0a, 0x09, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x33, 0x2e, 0x69, 0x6e, - 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, - 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, - 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x34, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, + 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x6f, + 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x56, 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x36, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7c, 0x0a, 0x0b, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x56, 0x32, 0x12, 0x35, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, - 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x56, 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x69, - 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, - 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, - 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x56, 0x32, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x94, 0x01, 0x0a, 0x13, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x61, - 0x62, 0x6c, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3d, 0x2e, 0x69, - 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, - 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, - 0x2e, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3e, 0x2e, 0x69, 0x6e, - 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, - 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, - 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x88, 0x01, 0x0a, 0x0f, - 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, - 0x39, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, + 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x56, 0x32, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x94, 0x01, 0x0a, 0x13, 0x4c, 0x69, 0x71, + 0x75, 0x69, 0x64, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x12, 0x3d, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, + 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x61, 0x62, 0x6c, 0x65, 0x50, + 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x3e, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, - 0x72, 0x70, 0x63, 0x2e, 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x79, 0x6d, 0x65, - 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x69, 0x6e, 0x6a, + 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x6f, + 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x88, 0x01, 0x0a, 0x0f, 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x79, 0x6d, 0x65, + 0x6e, 0x74, 0x73, 0x12, 0x39, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, + 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, + 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3a, + 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, + 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, + 0x70, 0x63, 0x2e, 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, + 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7f, 0x0a, 0x0c, 0x46, 0x75, + 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x61, 0x74, 0x65, 0x73, 0x12, 0x36, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x46, - 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7f, 0x0a, 0x0c, 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, - 0x67, 0x52, 0x61, 0x74, 0x65, 0x73, 0x12, 0x36, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, + 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, + 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x61, + 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8a, 0x01, 0x0a, 0x0f, + 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x39, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, + 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, + 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x69, 0x6e, 0x6a, + 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, + 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, + 0x74, 0x72, 0x65, 0x61, 0x6d, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x81, 0x01, 0x0a, 0x0c, 0x53, 0x74, 0x72, + 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x36, 0x2e, 0x69, 0x6e, 0x6a, 0x65, + 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, + 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, + 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x37, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, + 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, + 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x6d, 0x0a, 0x06, + 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x12, 0x30, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, - 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x46, 0x75, 0x6e, 0x64, 0x69, - 0x6e, 0x67, 0x52, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, - 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, - 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, - 0x70, 0x63, 0x2e, 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x61, 0x74, 0x65, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8a, 0x01, 0x0a, 0x0f, 0x53, 0x74, 0x72, 0x65, - 0x61, 0x6d, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x39, 0x2e, 0x69, 0x6e, + 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x72, 0x61, 0x64, 0x65, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, + 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, + 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x72, 0x61, + 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x73, 0x0a, 0x08, 0x54, + 0x72, 0x61, 0x64, 0x65, 0x73, 0x56, 0x32, 0x12, 0x32, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, + 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, + 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x72, 0x61, 0x64, + 0x65, 0x73, 0x56, 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, - 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, - 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, - 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, - 0x6d, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x30, 0x01, 0x12, 0x81, 0x01, 0x0a, 0x0c, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, - 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x36, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, - 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, - 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, - 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, - 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, - 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x6d, 0x0a, 0x06, 0x54, 0x72, 0x61, 0x64, - 0x65, 0x73, 0x12, 0x30, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, - 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, - 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x73, 0x0a, 0x08, 0x54, 0x72, 0x61, 0x64, 0x65, - 0x73, 0x56, 0x32, 0x12, 0x32, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, - 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x56, 0x32, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, + 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x56, 0x32, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x81, 0x01, 0x0a, 0x0c, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x64, 0x65, + 0x73, 0x12, 0x36, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, + 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x64, + 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x69, 0x6e, 0x6a, 0x65, + 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, + 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, + 0x72, 0x65, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x30, 0x01, 0x12, 0x87, 0x01, 0x0a, 0x0e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, + 0x72, 0x61, 0x64, 0x65, 0x73, 0x56, 0x32, 0x12, 0x38, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, - 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x72, 0x61, 0x64, - 0x65, 0x73, 0x56, 0x32, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x81, 0x01, 0x0a, - 0x0c, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x12, 0x36, 0x2e, - 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, - 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, - 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, - 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, - 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, - 0x12, 0x87, 0x01, 0x0a, 0x0e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x64, 0x65, - 0x73, 0x56, 0x32, 0x12, 0x38, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, - 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x72, - 0x61, 0x64, 0x65, 0x73, 0x56, 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, - 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, - 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, - 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x56, 0x32, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x97, 0x01, 0x0a, 0x14, 0x53, - 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x4c, - 0x69, 0x73, 0x74, 0x12, 0x3e, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, - 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x3f, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, - 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x97, 0x01, 0x0a, 0x14, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x3e, 0x2e, - 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, - 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, - 0x63, 0x2e, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x64, - 0x65, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3f, 0x2e, + 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x56, 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x39, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, + 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x64, + 0x65, 0x73, 0x56, 0x32, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x97, + 0x01, 0x0a, 0x14, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4f, 0x72, 0x64, + 0x65, 0x72, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x3e, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, + 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, + 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x75, 0x62, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x4c, 0x69, 0x73, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3f, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, + 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, + 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x75, 0x62, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x4c, 0x69, 0x73, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x97, 0x01, 0x0a, 0x14, 0x53, 0x75, 0x62, + 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x4c, 0x69, 0x73, + 0x74, 0x12, 0x3e, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, + 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x3f, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, + 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x82, 0x01, 0x0a, 0x0d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x48, 0x69, 0x73, + 0x74, 0x6f, 0x72, 0x79, 0x12, 0x37, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x48, + 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, - 0x63, 0x2e, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x64, - 0x65, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x82, - 0x01, 0x0a, 0x0d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, - 0x12, 0x37, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, - 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x48, 0x69, 0x73, 0x74, 0x6f, - 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x69, 0x6e, 0x6a, 0x65, - 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, - 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4f, 0x72, - 0x64, 0x65, 0x72, 0x73, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x96, 0x01, 0x0a, 0x13, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, - 0x64, 0x65, 0x72, 0x73, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x3d, 0x2e, 0x69, 0x6e, - 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, - 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, - 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x48, 0x69, 0x73, 0x74, - 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3e, 0x2e, 0x69, 0x6e, 0x6a, - 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, - 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, - 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x48, 0x69, 0x73, 0x74, 0x6f, - 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x42, 0x26, 0x5a, 0x24, - 0x2f, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, + 0x63, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x96, 0x01, 0x0a, 0x13, 0x53, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, + 0x3d, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, + 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, + 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, + 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3e, + 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, - 0x70, 0x63, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x48, + 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, + 0x42, 0x26, 0x5a, 0x24, 0x2f, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, + 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/exchange/derivative_exchange_rpc/pb/goadesign_goagen_injective_derivative_exchange_rpc_grpc.pb.go b/exchange/derivative_exchange_rpc/pb/goadesign_goagen_injective_derivative_exchange_rpc_grpc.pb.go index 3fe28e50..4ca27953 100644 --- a/exchange/derivative_exchange_rpc/pb/goadesign_goagen_injective_derivative_exchange_rpc_grpc.pb.go +++ b/exchange/derivative_exchange_rpc/pb/goadesign_goagen_injective_derivative_exchange_rpc_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.2.0 -// - protoc v3.19.4 +// - protoc v3.21.12 // source: goadesign_goagen_injective_derivative_exchange_rpc.proto package injective_derivative_exchange_rpcpb diff --git a/exchange/derivative_exchange_rpc/pb/injective_derivative_exchange_rpc.proto b/exchange/derivative_exchange_rpc/pb/injective_derivative_exchange_rpc.proto index 468da6c6..b65d2df4 100644 --- a/exchange/derivative_exchange_rpc/pb/injective_derivative_exchange_rpc.proto +++ b/exchange/derivative_exchange_rpc/pb/injective_derivative_exchange_rpc.proto @@ -107,7 +107,7 @@ message DerivativeMarketInfo { string maintenance_margin_ratio = 9; // Coin denom used for the quote asset. string quote_denom = 10; - // Token metadata for quote asset, only for Ethereum-based assets + // Token metadata for quote asset TokenMeta quote_token_meta = 11; // Defines the fee percentage makers pay when trading (in quote asset) string maker_fee_rate = 12; @@ -131,7 +131,7 @@ message DerivativeMarketInfo { message TokenMeta { // Token full name string name = 1; - // Token Ethereum contract address + // Token contract address (native or not) string address = 2; // Token symbol short name string symbol = 3; @@ -238,7 +238,7 @@ message BinaryOptionsMarketInfo { sint64 settlement_timestamp = 9; // Coin denom used for the quote asset. string quote_denom = 10; - // Token metadata for quote asset, only for Ethereum-based assets + // Token metadata for quote asset TokenMeta quote_token_meta = 11; // Defines the fee percentage makers pay when trading (in quote asset) string maker_fee_rate = 12; @@ -755,6 +755,8 @@ message TradesRequest { string account_address = 13; // Client order ID string cid = 14; + // Filter by fee recipient + string fee_recipient = 15; } message TradesResponse { @@ -834,6 +836,8 @@ message TradesV2Request { string account_address = 13; // Client order ID string cid = 14; + // Filter by fee recipient + string fee_recipient = 15; } message TradesV2Response { @@ -873,6 +877,8 @@ message StreamTradesRequest { string account_address = 13; // Client order ID string cid = 14; + // Filter by fee recipient + string fee_recipient = 15; } message StreamTradesResponse { @@ -915,6 +921,8 @@ message StreamTradesV2Request { string account_address = 13; // Client order ID string cid = 14; + // Filter by fee recipient + string fee_recipient = 15; } message StreamTradesV2Response { diff --git a/exchange/event_provider_api/pb/event_provider_api.pb.gw.go b/exchange/event_provider_api/pb/event_provider_api.pb.gw.go new file mode 100644 index 00000000..03cf7f4d --- /dev/null +++ b/exchange/event_provider_api/pb/event_provider_api.pb.gw.go @@ -0,0 +1,569 @@ +// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT. +// source: event_provider_api.proto + +/* +Package event_provider_apipb is a reverse proxy. + +It translates gRPC into RESTful JSON APIs. +*/ +package event_provider_apipb + +import ( + "context" + "io" + "net/http" + + "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" + "github.com/grpc-ecosystem/grpc-gateway/v2/utilities" + "google.golang.org/grpc" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/grpclog" + "google.golang.org/grpc/metadata" + "google.golang.org/grpc/status" + "google.golang.org/protobuf/proto" +) + +// Suppress "imported and not used" errors +var _ codes.Code +var _ io.Reader +var _ status.Status +var _ = runtime.String +var _ = utilities.NewDoubleArray +var _ = metadata.Join + +func request_EventProviderAPI_GetLatestHeight_0(ctx context.Context, marshaler runtime.Marshaler, client EventProviderAPIClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetLatestHeightRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.GetLatestHeight(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_EventProviderAPI_GetLatestHeight_0(ctx context.Context, marshaler runtime.Marshaler, server EventProviderAPIServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetLatestHeightRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.GetLatestHeight(ctx, &protoReq) + return msg, metadata, err + +} + +func request_EventProviderAPI_StreamBlockEvents_0(ctx context.Context, marshaler runtime.Marshaler, client EventProviderAPIClient, req *http.Request, pathParams map[string]string) (EventProviderAPI_StreamBlockEventsClient, runtime.ServerMetadata, error) { + var protoReq StreamBlockEventsRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + stream, err := client.StreamBlockEvents(ctx, &protoReq) + if err != nil { + return nil, metadata, err + } + header, err := stream.Header() + if err != nil { + return nil, metadata, err + } + metadata.HeaderMD = header + return stream, metadata, nil + +} + +func request_EventProviderAPI_GetBlockEventsRPC_0(ctx context.Context, marshaler runtime.Marshaler, client EventProviderAPIClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetBlockEventsRPCRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.GetBlockEventsRPC(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_EventProviderAPI_GetBlockEventsRPC_0(ctx context.Context, marshaler runtime.Marshaler, server EventProviderAPIServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetBlockEventsRPCRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.GetBlockEventsRPC(ctx, &protoReq) + return msg, metadata, err + +} + +func request_EventProviderAPI_GetCustomEventsRPC_0(ctx context.Context, marshaler runtime.Marshaler, client EventProviderAPIClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetCustomEventsRPCRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.GetCustomEventsRPC(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_EventProviderAPI_GetCustomEventsRPC_0(ctx context.Context, marshaler runtime.Marshaler, server EventProviderAPIServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetCustomEventsRPCRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.GetCustomEventsRPC(ctx, &protoReq) + return msg, metadata, err + +} + +func request_EventProviderAPI_GetABCIBlockEvents_0(ctx context.Context, marshaler runtime.Marshaler, client EventProviderAPIClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetABCIBlockEventsRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.GetABCIBlockEvents(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_EventProviderAPI_GetABCIBlockEvents_0(ctx context.Context, marshaler runtime.Marshaler, server EventProviderAPIServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetABCIBlockEventsRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.GetABCIBlockEvents(ctx, &protoReq) + return msg, metadata, err + +} + +func request_EventProviderAPI_GetABCIBlockEventsAtHeight_0(ctx context.Context, marshaler runtime.Marshaler, client EventProviderAPIClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetABCIBlockEventsAtHeightRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.GetABCIBlockEventsAtHeight(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_EventProviderAPI_GetABCIBlockEventsAtHeight_0(ctx context.Context, marshaler runtime.Marshaler, server EventProviderAPIServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetABCIBlockEventsAtHeightRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.GetABCIBlockEventsAtHeight(ctx, &protoReq) + return msg, metadata, err + +} + +// RegisterEventProviderAPIHandlerServer registers the http handlers for service EventProviderAPI to "mux". +// UnaryRPC :call EventProviderAPIServer directly. +// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. +// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterEventProviderAPIHandlerFromEndpoint instead. +func RegisterEventProviderAPIHandlerServer(ctx context.Context, mux *runtime.ServeMux, server EventProviderAPIServer) error { + + mux.Handle("POST", pattern_EventProviderAPI_GetLatestHeight_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/event_provider_api.EventProviderAPI/GetLatestHeight", runtime.WithHTTPPathPattern("/event_provider_api.EventProviderAPI/GetLatestHeight")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_EventProviderAPI_GetLatestHeight_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_EventProviderAPI_GetLatestHeight_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_EventProviderAPI_StreamBlockEvents_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + err := status.Error(codes.Unimplemented, "streaming calls are not yet supported in the in-process transport") + _, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + }) + + mux.Handle("POST", pattern_EventProviderAPI_GetBlockEventsRPC_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/event_provider_api.EventProviderAPI/GetBlockEventsRPC", runtime.WithHTTPPathPattern("/event_provider_api.EventProviderAPI/GetBlockEventsRPC")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_EventProviderAPI_GetBlockEventsRPC_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_EventProviderAPI_GetBlockEventsRPC_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_EventProviderAPI_GetCustomEventsRPC_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/event_provider_api.EventProviderAPI/GetCustomEventsRPC", runtime.WithHTTPPathPattern("/event_provider_api.EventProviderAPI/GetCustomEventsRPC")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_EventProviderAPI_GetCustomEventsRPC_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_EventProviderAPI_GetCustomEventsRPC_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_EventProviderAPI_GetABCIBlockEvents_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/event_provider_api.EventProviderAPI/GetABCIBlockEvents", runtime.WithHTTPPathPattern("/event_provider_api.EventProviderAPI/GetABCIBlockEvents")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_EventProviderAPI_GetABCIBlockEvents_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_EventProviderAPI_GetABCIBlockEvents_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_EventProviderAPI_GetABCIBlockEventsAtHeight_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/event_provider_api.EventProviderAPI/GetABCIBlockEventsAtHeight", runtime.WithHTTPPathPattern("/event_provider_api.EventProviderAPI/GetABCIBlockEventsAtHeight")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_EventProviderAPI_GetABCIBlockEventsAtHeight_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_EventProviderAPI_GetABCIBlockEventsAtHeight_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + return nil +} + +// RegisterEventProviderAPIHandlerFromEndpoint is same as RegisterEventProviderAPIHandler but +// automatically dials to "endpoint" and closes the connection when "ctx" gets done. +func RegisterEventProviderAPIHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { + conn, err := grpc.Dial(endpoint, opts...) + if err != nil { + return err + } + defer func() { + if err != nil { + if cerr := conn.Close(); cerr != nil { + grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + } + return + } + go func() { + <-ctx.Done() + if cerr := conn.Close(); cerr != nil { + grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + } + }() + }() + + return RegisterEventProviderAPIHandler(ctx, mux, conn) +} + +// RegisterEventProviderAPIHandler registers the http handlers for service EventProviderAPI to "mux". +// The handlers forward requests to the grpc endpoint over "conn". +func RegisterEventProviderAPIHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error { + return RegisterEventProviderAPIHandlerClient(ctx, mux, NewEventProviderAPIClient(conn)) +} + +// RegisterEventProviderAPIHandlerClient registers the http handlers for service EventProviderAPI +// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "EventProviderAPIClient". +// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "EventProviderAPIClient" +// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in +// "EventProviderAPIClient" to call the correct interceptors. +func RegisterEventProviderAPIHandlerClient(ctx context.Context, mux *runtime.ServeMux, client EventProviderAPIClient) error { + + mux.Handle("POST", pattern_EventProviderAPI_GetLatestHeight_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/event_provider_api.EventProviderAPI/GetLatestHeight", runtime.WithHTTPPathPattern("/event_provider_api.EventProviderAPI/GetLatestHeight")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_EventProviderAPI_GetLatestHeight_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_EventProviderAPI_GetLatestHeight_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_EventProviderAPI_StreamBlockEvents_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/event_provider_api.EventProviderAPI/StreamBlockEvents", runtime.WithHTTPPathPattern("/event_provider_api.EventProviderAPI/StreamBlockEvents")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_EventProviderAPI_StreamBlockEvents_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_EventProviderAPI_StreamBlockEvents_0(annotatedContext, mux, outboundMarshaler, w, req, func() (proto.Message, error) { return resp.Recv() }, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_EventProviderAPI_GetBlockEventsRPC_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/event_provider_api.EventProviderAPI/GetBlockEventsRPC", runtime.WithHTTPPathPattern("/event_provider_api.EventProviderAPI/GetBlockEventsRPC")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_EventProviderAPI_GetBlockEventsRPC_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_EventProviderAPI_GetBlockEventsRPC_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_EventProviderAPI_GetCustomEventsRPC_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/event_provider_api.EventProviderAPI/GetCustomEventsRPC", runtime.WithHTTPPathPattern("/event_provider_api.EventProviderAPI/GetCustomEventsRPC")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_EventProviderAPI_GetCustomEventsRPC_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_EventProviderAPI_GetCustomEventsRPC_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_EventProviderAPI_GetABCIBlockEvents_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/event_provider_api.EventProviderAPI/GetABCIBlockEvents", runtime.WithHTTPPathPattern("/event_provider_api.EventProviderAPI/GetABCIBlockEvents")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_EventProviderAPI_GetABCIBlockEvents_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_EventProviderAPI_GetABCIBlockEvents_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_EventProviderAPI_GetABCIBlockEventsAtHeight_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/event_provider_api.EventProviderAPI/GetABCIBlockEventsAtHeight", runtime.WithHTTPPathPattern("/event_provider_api.EventProviderAPI/GetABCIBlockEventsAtHeight")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_EventProviderAPI_GetABCIBlockEventsAtHeight_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_EventProviderAPI_GetABCIBlockEventsAtHeight_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + return nil +} + +var ( + pattern_EventProviderAPI_GetLatestHeight_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"event_provider_api.EventProviderAPI", "GetLatestHeight"}, "")) + + pattern_EventProviderAPI_StreamBlockEvents_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"event_provider_api.EventProviderAPI", "StreamBlockEvents"}, "")) + + pattern_EventProviderAPI_GetBlockEventsRPC_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"event_provider_api.EventProviderAPI", "GetBlockEventsRPC"}, "")) + + pattern_EventProviderAPI_GetCustomEventsRPC_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"event_provider_api.EventProviderAPI", "GetCustomEventsRPC"}, "")) + + pattern_EventProviderAPI_GetABCIBlockEvents_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"event_provider_api.EventProviderAPI", "GetABCIBlockEvents"}, "")) + + pattern_EventProviderAPI_GetABCIBlockEventsAtHeight_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"event_provider_api.EventProviderAPI", "GetABCIBlockEventsAtHeight"}, "")) +) + +var ( + forward_EventProviderAPI_GetLatestHeight_0 = runtime.ForwardResponseMessage + + forward_EventProviderAPI_StreamBlockEvents_0 = runtime.ForwardResponseStream + + forward_EventProviderAPI_GetBlockEventsRPC_0 = runtime.ForwardResponseMessage + + forward_EventProviderAPI_GetCustomEventsRPC_0 = runtime.ForwardResponseMessage + + forward_EventProviderAPI_GetABCIBlockEvents_0 = runtime.ForwardResponseMessage + + forward_EventProviderAPI_GetABCIBlockEventsAtHeight_0 = runtime.ForwardResponseMessage +) diff --git a/exchange/event_provider_api/pb/event_provider_api.proto b/exchange/event_provider_api/pb/event_provider_api.proto new file mode 100644 index 00000000..7b85e866 --- /dev/null +++ b/exchange/event_provider_api/pb/event_provider_api.proto @@ -0,0 +1,180 @@ +// Code generated with goa v3.7.0, DO NOT EDIT. +// +// EventProviderAPI protocol buffer definition +// +// Command: +// $ goa gen github.com/InjectiveLabs/injective-indexer/api/design -o ../ + +syntax = "proto3"; + +package event_provider_api; + +option go_package = "/event_provider_apipb"; + +// EventProviderAPI provides processed block events for different backends. +service EventProviderAPI { + // Get latest block from event provider + rpc GetLatestHeight (GetLatestHeightRequest) returns (GetLatestHeightResponse); + // Stream processed block events for selected backend + rpc StreamBlockEvents (StreamBlockEventsRequest) returns (stream StreamBlockEventsResponse); + // Get processed block events for selected backend + rpc GetBlockEventsRPC (GetBlockEventsRPCRequest) returns (GetBlockEventsRPCResponse); + // Get custom processed block events for selected backend + rpc GetCustomEventsRPC (GetCustomEventsRPCRequest) returns (GetCustomEventsRPCResponse); + // Get raw block events for selected height + rpc GetABCIBlockEvents (GetABCIBlockEventsRequest) returns (GetABCIBlockEventsResponse); + // Get all raw block events for selected height + rpc GetABCIBlockEventsAtHeight (GetABCIBlockEventsAtHeightRequest) returns (GetABCIBlockEventsAtHeightResponse); +} + +message GetLatestHeightRequest { +} + +message GetLatestHeightResponse { + // Response version. + string v = 1; + // Status of the response. + string s = 2; + // Error message. + string e = 3; + LatestBlockHeight data = 4; +} +// Latest block height from event provider db +message LatestBlockHeight { + uint64 height = 1; +} + +message StreamBlockEventsRequest { + // Select backend processor + string backend = 1; + sint32 height = 2; +} + +message StreamBlockEventsResponse { + repeated Block blocks = 1; +} + +message Block { + sint64 height = 1; + string version = 2; + // Processed block events in the block + repeated BlockEvent events = 3; + // Indicates whether the block is the latest one available in the event provider + bool in_sync = 4; +} + +message BlockEvent { + // Event type + string type_url = 1; + // Event data + bytes value = 2; + // TX hash + bytes tx_hash = 3; + // Set only if it's a BeginBlock or EndBlock event + string mode = 4; +} + +message GetBlockEventsRPCRequest { + // Select backend processor + string backend = 1; + sint32 height = 2; + bool human_readable = 3; +} + +message GetBlockEventsRPCResponse { + // Response version. + string v = 1; + // Status of the response. + string s = 2; + // Error message. + string e = 3; + BlockEventsRPC data = 4; +} +// Processed block events for backend processor to consume +message BlockEventsRPC { + // Array of event types + repeated string types = 1; + // Array of parsed events + repeated bytes events = 2; + // Map of event index - tx hash + map tx_hashes = 3; +} + +message GetCustomEventsRPCRequest { + // Select backend processor + string backend = 1; + sint32 height = 2; + // Specify custom events to get + string events = 3; +} + +message GetCustomEventsRPCResponse { + // Response version. + string v = 1; + // Status of the response. + string s = 2; + // Error message. + string e = 3; + BlockEventsRPC data = 4; +} + +message GetABCIBlockEventsRequest { + sint32 height = 1; + // Array of event types + repeated string event_types = 2; +} + +message GetABCIBlockEventsResponse { + // Response version. + string v = 1; + // Status of the response. + string s = 2; + // Error message. + string e = 3; + RawBlock raw_block = 4; +} + +message RawBlock { + sint64 height = 1; + string block_time = 5; + // Block timestamp in UNIX millis. + sint64 block_timestamp = 6; + repeated ABCIResponseDeliverTx txs_results = 2; + repeated ABCIEvent begin_block_events = 3; + repeated ABCIEvent end_block_events = 4; +} + +message ABCIResponseDeliverTx { + sint32 code = 1; + string log = 2; + string info = 3; + sint64 gas_wanted = 4; + sint64 gas_used = 5; + repeated ABCIEvent events = 6; + string codespace = 7; + bytes tx_hash = 8; +} + +message ABCIEvent { + string type = 1; + repeated ABCIAttribute attributes = 2; +} + +message ABCIAttribute { + string key = 1; + string value = 2; +} + +message GetABCIBlockEventsAtHeightRequest { + sint32 height = 1; +} + +message GetABCIBlockEventsAtHeightResponse { + // Response version. + string v = 1; + // Status of the response. + string s = 2; + // Error message. + string e = 3; + RawBlock raw_block = 4; +} diff --git a/exchange/event_provider_api/pb/event_provider_api_grpc.pb_mock.go b/exchange/event_provider_api/pb/event_provider_api_grpc.pb_mock.go new file mode 100644 index 00000000..2acb375b --- /dev/null +++ b/exchange/event_provider_api/pb/event_provider_api_grpc.pb_mock.go @@ -0,0 +1,563 @@ +// Code generated by MockGen. DO NOT EDIT. +// Source: api/gen/grpc/event_provider_api/pb/goadesign_goagen_event_provider_api_grpc.pb.go +// +// Generated by this command: +// +// mockgen -source=api/gen/grpc/event_provider_api/pb/goadesign_goagen_event_provider_api_grpc.pb.go -destination=api/gen/grpc/event_provider_api/pb/event_provider_api_grpc.pb_mock.go -package=event_provider_apipb +// + +// Package event_provider_apipb is a generated GoMock package. +package event_provider_apipb + +import ( + context "context" + reflect "reflect" + + gomock "go.uber.org/mock/gomock" + grpc "google.golang.org/grpc" + metadata "google.golang.org/grpc/metadata" +) + +// MockEventProviderAPIClient is a mock of EventProviderAPIClient interface. +type MockEventProviderAPIClient struct { + ctrl *gomock.Controller + recorder *MockEventProviderAPIClientMockRecorder +} + +// MockEventProviderAPIClientMockRecorder is the mock recorder for MockEventProviderAPIClient. +type MockEventProviderAPIClientMockRecorder struct { + mock *MockEventProviderAPIClient +} + +// NewMockEventProviderAPIClient creates a new mock instance. +func NewMockEventProviderAPIClient(ctrl *gomock.Controller) *MockEventProviderAPIClient { + mock := &MockEventProviderAPIClient{ctrl: ctrl} + mock.recorder = &MockEventProviderAPIClientMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockEventProviderAPIClient) EXPECT() *MockEventProviderAPIClientMockRecorder { + return m.recorder +} + +// GetABCIBlockEvents mocks base method. +func (m *MockEventProviderAPIClient) GetABCIBlockEvents(ctx context.Context, in *GetABCIBlockEventsRequest, opts ...grpc.CallOption) (*GetABCIBlockEventsResponse, error) { + m.ctrl.T.Helper() + varargs := []any{ctx, in} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "GetABCIBlockEvents", varargs...) + ret0, _ := ret[0].(*GetABCIBlockEventsResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetABCIBlockEvents indicates an expected call of GetABCIBlockEvents. +func (mr *MockEventProviderAPIClientMockRecorder) GetABCIBlockEvents(ctx, in any, opts ...any) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]any{ctx, in}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetABCIBlockEvents", reflect.TypeOf((*MockEventProviderAPIClient)(nil).GetABCIBlockEvents), varargs...) +} + +// GetABCIBlockEventsAtHeight mocks base method. +func (m *MockEventProviderAPIClient) GetABCIBlockEventsAtHeight(ctx context.Context, in *GetABCIBlockEventsAtHeightRequest, opts ...grpc.CallOption) (*GetABCIBlockEventsAtHeightResponse, error) { + m.ctrl.T.Helper() + varargs := []any{ctx, in} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "GetABCIBlockEventsAtHeight", varargs...) + ret0, _ := ret[0].(*GetABCIBlockEventsAtHeightResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetABCIBlockEventsAtHeight indicates an expected call of GetABCIBlockEventsAtHeight. +func (mr *MockEventProviderAPIClientMockRecorder) GetABCIBlockEventsAtHeight(ctx, in any, opts ...any) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]any{ctx, in}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetABCIBlockEventsAtHeight", reflect.TypeOf((*MockEventProviderAPIClient)(nil).GetABCIBlockEventsAtHeight), varargs...) +} + +// GetBlockEventsRPC mocks base method. +func (m *MockEventProviderAPIClient) GetBlockEventsRPC(ctx context.Context, in *GetBlockEventsRPCRequest, opts ...grpc.CallOption) (*GetBlockEventsRPCResponse, error) { + m.ctrl.T.Helper() + varargs := []any{ctx, in} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "GetBlockEventsRPC", varargs...) + ret0, _ := ret[0].(*GetBlockEventsRPCResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetBlockEventsRPC indicates an expected call of GetBlockEventsRPC. +func (mr *MockEventProviderAPIClientMockRecorder) GetBlockEventsRPC(ctx, in any, opts ...any) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]any{ctx, in}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetBlockEventsRPC", reflect.TypeOf((*MockEventProviderAPIClient)(nil).GetBlockEventsRPC), varargs...) +} + +// GetCustomEventsRPC mocks base method. +func (m *MockEventProviderAPIClient) GetCustomEventsRPC(ctx context.Context, in *GetCustomEventsRPCRequest, opts ...grpc.CallOption) (*GetCustomEventsRPCResponse, error) { + m.ctrl.T.Helper() + varargs := []any{ctx, in} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "GetCustomEventsRPC", varargs...) + ret0, _ := ret[0].(*GetCustomEventsRPCResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetCustomEventsRPC indicates an expected call of GetCustomEventsRPC. +func (mr *MockEventProviderAPIClientMockRecorder) GetCustomEventsRPC(ctx, in any, opts ...any) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]any{ctx, in}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetCustomEventsRPC", reflect.TypeOf((*MockEventProviderAPIClient)(nil).GetCustomEventsRPC), varargs...) +} + +// GetLatestHeight mocks base method. +func (m *MockEventProviderAPIClient) GetLatestHeight(ctx context.Context, in *GetLatestHeightRequest, opts ...grpc.CallOption) (*GetLatestHeightResponse, error) { + m.ctrl.T.Helper() + varargs := []any{ctx, in} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "GetLatestHeight", varargs...) + ret0, _ := ret[0].(*GetLatestHeightResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetLatestHeight indicates an expected call of GetLatestHeight. +func (mr *MockEventProviderAPIClientMockRecorder) GetLatestHeight(ctx, in any, opts ...any) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]any{ctx, in}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetLatestHeight", reflect.TypeOf((*MockEventProviderAPIClient)(nil).GetLatestHeight), varargs...) +} + +// StreamBlockEvents mocks base method. +func (m *MockEventProviderAPIClient) StreamBlockEvents(ctx context.Context, in *StreamBlockEventsRequest, opts ...grpc.CallOption) (EventProviderAPI_StreamBlockEventsClient, error) { + m.ctrl.T.Helper() + varargs := []any{ctx, in} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "StreamBlockEvents", varargs...) + ret0, _ := ret[0].(EventProviderAPI_StreamBlockEventsClient) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// StreamBlockEvents indicates an expected call of StreamBlockEvents. +func (mr *MockEventProviderAPIClientMockRecorder) StreamBlockEvents(ctx, in any, opts ...any) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]any{ctx, in}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "StreamBlockEvents", reflect.TypeOf((*MockEventProviderAPIClient)(nil).StreamBlockEvents), varargs...) +} + +// MockEventProviderAPI_StreamBlockEventsClient is a mock of EventProviderAPI_StreamBlockEventsClient interface. +type MockEventProviderAPI_StreamBlockEventsClient struct { + ctrl *gomock.Controller + recorder *MockEventProviderAPI_StreamBlockEventsClientMockRecorder +} + +// MockEventProviderAPI_StreamBlockEventsClientMockRecorder is the mock recorder for MockEventProviderAPI_StreamBlockEventsClient. +type MockEventProviderAPI_StreamBlockEventsClientMockRecorder struct { + mock *MockEventProviderAPI_StreamBlockEventsClient +} + +// NewMockEventProviderAPI_StreamBlockEventsClient creates a new mock instance. +func NewMockEventProviderAPI_StreamBlockEventsClient(ctrl *gomock.Controller) *MockEventProviderAPI_StreamBlockEventsClient { + mock := &MockEventProviderAPI_StreamBlockEventsClient{ctrl: ctrl} + mock.recorder = &MockEventProviderAPI_StreamBlockEventsClientMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockEventProviderAPI_StreamBlockEventsClient) EXPECT() *MockEventProviderAPI_StreamBlockEventsClientMockRecorder { + return m.recorder +} + +// CloseSend mocks base method. +func (m *MockEventProviderAPI_StreamBlockEventsClient) CloseSend() error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "CloseSend") + ret0, _ := ret[0].(error) + return ret0 +} + +// CloseSend indicates an expected call of CloseSend. +func (mr *MockEventProviderAPI_StreamBlockEventsClientMockRecorder) CloseSend() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CloseSend", reflect.TypeOf((*MockEventProviderAPI_StreamBlockEventsClient)(nil).CloseSend)) +} + +// Context mocks base method. +func (m *MockEventProviderAPI_StreamBlockEventsClient) Context() context.Context { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Context") + ret0, _ := ret[0].(context.Context) + return ret0 +} + +// Context indicates an expected call of Context. +func (mr *MockEventProviderAPI_StreamBlockEventsClientMockRecorder) Context() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Context", reflect.TypeOf((*MockEventProviderAPI_StreamBlockEventsClient)(nil).Context)) +} + +// Header mocks base method. +func (m *MockEventProviderAPI_StreamBlockEventsClient) Header() (metadata.MD, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Header") + ret0, _ := ret[0].(metadata.MD) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// Header indicates an expected call of Header. +func (mr *MockEventProviderAPI_StreamBlockEventsClientMockRecorder) Header() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Header", reflect.TypeOf((*MockEventProviderAPI_StreamBlockEventsClient)(nil).Header)) +} + +// Recv mocks base method. +func (m *MockEventProviderAPI_StreamBlockEventsClient) Recv() (*StreamBlockEventsResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Recv") + ret0, _ := ret[0].(*StreamBlockEventsResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// Recv indicates an expected call of Recv. +func (mr *MockEventProviderAPI_StreamBlockEventsClientMockRecorder) Recv() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Recv", reflect.TypeOf((*MockEventProviderAPI_StreamBlockEventsClient)(nil).Recv)) +} + +// RecvMsg mocks base method. +func (m_2 *MockEventProviderAPI_StreamBlockEventsClient) RecvMsg(m any) error { + m_2.ctrl.T.Helper() + ret := m_2.ctrl.Call(m_2, "RecvMsg", m) + ret0, _ := ret[0].(error) + return ret0 +} + +// RecvMsg indicates an expected call of RecvMsg. +func (mr *MockEventProviderAPI_StreamBlockEventsClientMockRecorder) RecvMsg(m any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RecvMsg", reflect.TypeOf((*MockEventProviderAPI_StreamBlockEventsClient)(nil).RecvMsg), m) +} + +// SendMsg mocks base method. +func (m_2 *MockEventProviderAPI_StreamBlockEventsClient) SendMsg(m any) error { + m_2.ctrl.T.Helper() + ret := m_2.ctrl.Call(m_2, "SendMsg", m) + ret0, _ := ret[0].(error) + return ret0 +} + +// SendMsg indicates an expected call of SendMsg. +func (mr *MockEventProviderAPI_StreamBlockEventsClientMockRecorder) SendMsg(m any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SendMsg", reflect.TypeOf((*MockEventProviderAPI_StreamBlockEventsClient)(nil).SendMsg), m) +} + +// Trailer mocks base method. +func (m *MockEventProviderAPI_StreamBlockEventsClient) Trailer() metadata.MD { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Trailer") + ret0, _ := ret[0].(metadata.MD) + return ret0 +} + +// Trailer indicates an expected call of Trailer. +func (mr *MockEventProviderAPI_StreamBlockEventsClientMockRecorder) Trailer() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Trailer", reflect.TypeOf((*MockEventProviderAPI_StreamBlockEventsClient)(nil).Trailer)) +} + +// MockEventProviderAPIServer is a mock of EventProviderAPIServer interface. +type MockEventProviderAPIServer struct { + ctrl *gomock.Controller + recorder *MockEventProviderAPIServerMockRecorder +} + +// MockEventProviderAPIServerMockRecorder is the mock recorder for MockEventProviderAPIServer. +type MockEventProviderAPIServerMockRecorder struct { + mock *MockEventProviderAPIServer +} + +// NewMockEventProviderAPIServer creates a new mock instance. +func NewMockEventProviderAPIServer(ctrl *gomock.Controller) *MockEventProviderAPIServer { + mock := &MockEventProviderAPIServer{ctrl: ctrl} + mock.recorder = &MockEventProviderAPIServerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockEventProviderAPIServer) EXPECT() *MockEventProviderAPIServerMockRecorder { + return m.recorder +} + +// GetABCIBlockEvents mocks base method. +func (m *MockEventProviderAPIServer) GetABCIBlockEvents(arg0 context.Context, arg1 *GetABCIBlockEventsRequest) (*GetABCIBlockEventsResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetABCIBlockEvents", arg0, arg1) + ret0, _ := ret[0].(*GetABCIBlockEventsResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetABCIBlockEvents indicates an expected call of GetABCIBlockEvents. +func (mr *MockEventProviderAPIServerMockRecorder) GetABCIBlockEvents(arg0, arg1 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetABCIBlockEvents", reflect.TypeOf((*MockEventProviderAPIServer)(nil).GetABCIBlockEvents), arg0, arg1) +} + +// GetABCIBlockEventsAtHeight mocks base method. +func (m *MockEventProviderAPIServer) GetABCIBlockEventsAtHeight(arg0 context.Context, arg1 *GetABCIBlockEventsAtHeightRequest) (*GetABCIBlockEventsAtHeightResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetABCIBlockEventsAtHeight", arg0, arg1) + ret0, _ := ret[0].(*GetABCIBlockEventsAtHeightResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetABCIBlockEventsAtHeight indicates an expected call of GetABCIBlockEventsAtHeight. +func (mr *MockEventProviderAPIServerMockRecorder) GetABCIBlockEventsAtHeight(arg0, arg1 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetABCIBlockEventsAtHeight", reflect.TypeOf((*MockEventProviderAPIServer)(nil).GetABCIBlockEventsAtHeight), arg0, arg1) +} + +// GetBlockEventsRPC mocks base method. +func (m *MockEventProviderAPIServer) GetBlockEventsRPC(arg0 context.Context, arg1 *GetBlockEventsRPCRequest) (*GetBlockEventsRPCResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetBlockEventsRPC", arg0, arg1) + ret0, _ := ret[0].(*GetBlockEventsRPCResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetBlockEventsRPC indicates an expected call of GetBlockEventsRPC. +func (mr *MockEventProviderAPIServerMockRecorder) GetBlockEventsRPC(arg0, arg1 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetBlockEventsRPC", reflect.TypeOf((*MockEventProviderAPIServer)(nil).GetBlockEventsRPC), arg0, arg1) +} + +// GetCustomEventsRPC mocks base method. +func (m *MockEventProviderAPIServer) GetCustomEventsRPC(arg0 context.Context, arg1 *GetCustomEventsRPCRequest) (*GetCustomEventsRPCResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetCustomEventsRPC", arg0, arg1) + ret0, _ := ret[0].(*GetCustomEventsRPCResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetCustomEventsRPC indicates an expected call of GetCustomEventsRPC. +func (mr *MockEventProviderAPIServerMockRecorder) GetCustomEventsRPC(arg0, arg1 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetCustomEventsRPC", reflect.TypeOf((*MockEventProviderAPIServer)(nil).GetCustomEventsRPC), arg0, arg1) +} + +// GetLatestHeight mocks base method. +func (m *MockEventProviderAPIServer) GetLatestHeight(arg0 context.Context, arg1 *GetLatestHeightRequest) (*GetLatestHeightResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetLatestHeight", arg0, arg1) + ret0, _ := ret[0].(*GetLatestHeightResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetLatestHeight indicates an expected call of GetLatestHeight. +func (mr *MockEventProviderAPIServerMockRecorder) GetLatestHeight(arg0, arg1 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetLatestHeight", reflect.TypeOf((*MockEventProviderAPIServer)(nil).GetLatestHeight), arg0, arg1) +} + +// StreamBlockEvents mocks base method. +func (m *MockEventProviderAPIServer) StreamBlockEvents(arg0 *StreamBlockEventsRequest, arg1 EventProviderAPI_StreamBlockEventsServer) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "StreamBlockEvents", arg0, arg1) + ret0, _ := ret[0].(error) + return ret0 +} + +// StreamBlockEvents indicates an expected call of StreamBlockEvents. +func (mr *MockEventProviderAPIServerMockRecorder) StreamBlockEvents(arg0, arg1 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "StreamBlockEvents", reflect.TypeOf((*MockEventProviderAPIServer)(nil).StreamBlockEvents), arg0, arg1) +} + +// mustEmbedUnimplementedEventProviderAPIServer mocks base method. +func (m *MockEventProviderAPIServer) mustEmbedUnimplementedEventProviderAPIServer() { + m.ctrl.T.Helper() + m.ctrl.Call(m, "mustEmbedUnimplementedEventProviderAPIServer") +} + +// mustEmbedUnimplementedEventProviderAPIServer indicates an expected call of mustEmbedUnimplementedEventProviderAPIServer. +func (mr *MockEventProviderAPIServerMockRecorder) mustEmbedUnimplementedEventProviderAPIServer() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "mustEmbedUnimplementedEventProviderAPIServer", reflect.TypeOf((*MockEventProviderAPIServer)(nil).mustEmbedUnimplementedEventProviderAPIServer)) +} + +// MockUnsafeEventProviderAPIServer is a mock of UnsafeEventProviderAPIServer interface. +type MockUnsafeEventProviderAPIServer struct { + ctrl *gomock.Controller + recorder *MockUnsafeEventProviderAPIServerMockRecorder +} + +// MockUnsafeEventProviderAPIServerMockRecorder is the mock recorder for MockUnsafeEventProviderAPIServer. +type MockUnsafeEventProviderAPIServerMockRecorder struct { + mock *MockUnsafeEventProviderAPIServer +} + +// NewMockUnsafeEventProviderAPIServer creates a new mock instance. +func NewMockUnsafeEventProviderAPIServer(ctrl *gomock.Controller) *MockUnsafeEventProviderAPIServer { + mock := &MockUnsafeEventProviderAPIServer{ctrl: ctrl} + mock.recorder = &MockUnsafeEventProviderAPIServerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockUnsafeEventProviderAPIServer) EXPECT() *MockUnsafeEventProviderAPIServerMockRecorder { + return m.recorder +} + +// mustEmbedUnimplementedEventProviderAPIServer mocks base method. +func (m *MockUnsafeEventProviderAPIServer) mustEmbedUnimplementedEventProviderAPIServer() { + m.ctrl.T.Helper() + m.ctrl.Call(m, "mustEmbedUnimplementedEventProviderAPIServer") +} + +// mustEmbedUnimplementedEventProviderAPIServer indicates an expected call of mustEmbedUnimplementedEventProviderAPIServer. +func (mr *MockUnsafeEventProviderAPIServerMockRecorder) mustEmbedUnimplementedEventProviderAPIServer() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "mustEmbedUnimplementedEventProviderAPIServer", reflect.TypeOf((*MockUnsafeEventProviderAPIServer)(nil).mustEmbedUnimplementedEventProviderAPIServer)) +} + +// MockEventProviderAPI_StreamBlockEventsServer is a mock of EventProviderAPI_StreamBlockEventsServer interface. +type MockEventProviderAPI_StreamBlockEventsServer struct { + ctrl *gomock.Controller + recorder *MockEventProviderAPI_StreamBlockEventsServerMockRecorder +} + +// MockEventProviderAPI_StreamBlockEventsServerMockRecorder is the mock recorder for MockEventProviderAPI_StreamBlockEventsServer. +type MockEventProviderAPI_StreamBlockEventsServerMockRecorder struct { + mock *MockEventProviderAPI_StreamBlockEventsServer +} + +// NewMockEventProviderAPI_StreamBlockEventsServer creates a new mock instance. +func NewMockEventProviderAPI_StreamBlockEventsServer(ctrl *gomock.Controller) *MockEventProviderAPI_StreamBlockEventsServer { + mock := &MockEventProviderAPI_StreamBlockEventsServer{ctrl: ctrl} + mock.recorder = &MockEventProviderAPI_StreamBlockEventsServerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockEventProviderAPI_StreamBlockEventsServer) EXPECT() *MockEventProviderAPI_StreamBlockEventsServerMockRecorder { + return m.recorder +} + +// Context mocks base method. +func (m *MockEventProviderAPI_StreamBlockEventsServer) Context() context.Context { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Context") + ret0, _ := ret[0].(context.Context) + return ret0 +} + +// Context indicates an expected call of Context. +func (mr *MockEventProviderAPI_StreamBlockEventsServerMockRecorder) Context() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Context", reflect.TypeOf((*MockEventProviderAPI_StreamBlockEventsServer)(nil).Context)) +} + +// RecvMsg mocks base method. +func (m_2 *MockEventProviderAPI_StreamBlockEventsServer) RecvMsg(m any) error { + m_2.ctrl.T.Helper() + ret := m_2.ctrl.Call(m_2, "RecvMsg", m) + ret0, _ := ret[0].(error) + return ret0 +} + +// RecvMsg indicates an expected call of RecvMsg. +func (mr *MockEventProviderAPI_StreamBlockEventsServerMockRecorder) RecvMsg(m any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RecvMsg", reflect.TypeOf((*MockEventProviderAPI_StreamBlockEventsServer)(nil).RecvMsg), m) +} + +// Send mocks base method. +func (m *MockEventProviderAPI_StreamBlockEventsServer) Send(arg0 *StreamBlockEventsResponse) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Send", arg0) + ret0, _ := ret[0].(error) + return ret0 +} + +// Send indicates an expected call of Send. +func (mr *MockEventProviderAPI_StreamBlockEventsServerMockRecorder) Send(arg0 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Send", reflect.TypeOf((*MockEventProviderAPI_StreamBlockEventsServer)(nil).Send), arg0) +} + +// SendHeader mocks base method. +func (m *MockEventProviderAPI_StreamBlockEventsServer) SendHeader(arg0 metadata.MD) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "SendHeader", arg0) + ret0, _ := ret[0].(error) + return ret0 +} + +// SendHeader indicates an expected call of SendHeader. +func (mr *MockEventProviderAPI_StreamBlockEventsServerMockRecorder) SendHeader(arg0 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SendHeader", reflect.TypeOf((*MockEventProviderAPI_StreamBlockEventsServer)(nil).SendHeader), arg0) +} + +// SendMsg mocks base method. +func (m_2 *MockEventProviderAPI_StreamBlockEventsServer) SendMsg(m any) error { + m_2.ctrl.T.Helper() + ret := m_2.ctrl.Call(m_2, "SendMsg", m) + ret0, _ := ret[0].(error) + return ret0 +} + +// SendMsg indicates an expected call of SendMsg. +func (mr *MockEventProviderAPI_StreamBlockEventsServerMockRecorder) SendMsg(m any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SendMsg", reflect.TypeOf((*MockEventProviderAPI_StreamBlockEventsServer)(nil).SendMsg), m) +} + +// SetHeader mocks base method. +func (m *MockEventProviderAPI_StreamBlockEventsServer) SetHeader(arg0 metadata.MD) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "SetHeader", arg0) + ret0, _ := ret[0].(error) + return ret0 +} + +// SetHeader indicates an expected call of SetHeader. +func (mr *MockEventProviderAPI_StreamBlockEventsServerMockRecorder) SetHeader(arg0 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetHeader", reflect.TypeOf((*MockEventProviderAPI_StreamBlockEventsServer)(nil).SetHeader), arg0) +} + +// SetTrailer mocks base method. +func (m *MockEventProviderAPI_StreamBlockEventsServer) SetTrailer(arg0 metadata.MD) { + m.ctrl.T.Helper() + m.ctrl.Call(m, "SetTrailer", arg0) +} + +// SetTrailer indicates an expected call of SetTrailer. +func (mr *MockEventProviderAPI_StreamBlockEventsServerMockRecorder) SetTrailer(arg0 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetTrailer", reflect.TypeOf((*MockEventProviderAPI_StreamBlockEventsServer)(nil).SetTrailer), arg0) +} diff --git a/exchange/event_provider_api/pb/goadesign_goagen_event_provider_api.pb.go b/exchange/event_provider_api/pb/goadesign_goagen_event_provider_api.pb.go new file mode 100644 index 00000000..1389f949 --- /dev/null +++ b/exchange/event_provider_api/pb/goadesign_goagen_event_provider_api.pb.go @@ -0,0 +1,1881 @@ +// Code generated with goa v3.7.0, DO NOT EDIT. +// +// EventProviderAPI protocol buffer definition +// +// Command: +// $ goa gen github.com/InjectiveLabs/injective-indexer/api/design -o ../ + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.30.0 +// protoc v3.21.12 +// source: goadesign_goagen_event_provider_api.proto + +package event_provider_apipb + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type GetLatestHeightRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *GetLatestHeightRequest) Reset() { + *x = GetLatestHeightRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetLatestHeightRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetLatestHeightRequest) ProtoMessage() {} + +func (x *GetLatestHeightRequest) ProtoReflect() protoreflect.Message { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetLatestHeightRequest.ProtoReflect.Descriptor instead. +func (*GetLatestHeightRequest) Descriptor() ([]byte, []int) { + return file_goadesign_goagen_event_provider_api_proto_rawDescGZIP(), []int{0} +} + +type GetLatestHeightResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Response version. + V string `protobuf:"bytes,1,opt,name=v,proto3" json:"v,omitempty"` + // Status of the response. + S string `protobuf:"bytes,2,opt,name=s,proto3" json:"s,omitempty"` + // Error message. + E string `protobuf:"bytes,3,opt,name=e,proto3" json:"e,omitempty"` + Data *LatestBlockHeight `protobuf:"bytes,4,opt,name=data,proto3" json:"data,omitempty"` +} + +func (x *GetLatestHeightResponse) Reset() { + *x = GetLatestHeightResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetLatestHeightResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetLatestHeightResponse) ProtoMessage() {} + +func (x *GetLatestHeightResponse) ProtoReflect() protoreflect.Message { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetLatestHeightResponse.ProtoReflect.Descriptor instead. +func (*GetLatestHeightResponse) Descriptor() ([]byte, []int) { + return file_goadesign_goagen_event_provider_api_proto_rawDescGZIP(), []int{1} +} + +func (x *GetLatestHeightResponse) GetV() string { + if x != nil { + return x.V + } + return "" +} + +func (x *GetLatestHeightResponse) GetS() string { + if x != nil { + return x.S + } + return "" +} + +func (x *GetLatestHeightResponse) GetE() string { + if x != nil { + return x.E + } + return "" +} + +func (x *GetLatestHeightResponse) GetData() *LatestBlockHeight { + if x != nil { + return x.Data + } + return nil +} + +// Latest block height from event provider db +type LatestBlockHeight struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Height uint64 `protobuf:"varint,1,opt,name=height,proto3" json:"height,omitempty"` +} + +func (x *LatestBlockHeight) Reset() { + *x = LatestBlockHeight{} + if protoimpl.UnsafeEnabled { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LatestBlockHeight) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LatestBlockHeight) ProtoMessage() {} + +func (x *LatestBlockHeight) ProtoReflect() protoreflect.Message { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LatestBlockHeight.ProtoReflect.Descriptor instead. +func (*LatestBlockHeight) Descriptor() ([]byte, []int) { + return file_goadesign_goagen_event_provider_api_proto_rawDescGZIP(), []int{2} +} + +func (x *LatestBlockHeight) GetHeight() uint64 { + if x != nil { + return x.Height + } + return 0 +} + +type StreamBlockEventsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Select backend processor + Backend string `protobuf:"bytes,1,opt,name=backend,proto3" json:"backend,omitempty"` + Height int32 `protobuf:"zigzag32,2,opt,name=height,proto3" json:"height,omitempty"` +} + +func (x *StreamBlockEventsRequest) Reset() { + *x = StreamBlockEventsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StreamBlockEventsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StreamBlockEventsRequest) ProtoMessage() {} + +func (x *StreamBlockEventsRequest) ProtoReflect() protoreflect.Message { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StreamBlockEventsRequest.ProtoReflect.Descriptor instead. +func (*StreamBlockEventsRequest) Descriptor() ([]byte, []int) { + return file_goadesign_goagen_event_provider_api_proto_rawDescGZIP(), []int{3} +} + +func (x *StreamBlockEventsRequest) GetBackend() string { + if x != nil { + return x.Backend + } + return "" +} + +func (x *StreamBlockEventsRequest) GetHeight() int32 { + if x != nil { + return x.Height + } + return 0 +} + +type StreamBlockEventsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Blocks []*Block `protobuf:"bytes,1,rep,name=blocks,proto3" json:"blocks,omitempty"` +} + +func (x *StreamBlockEventsResponse) Reset() { + *x = StreamBlockEventsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StreamBlockEventsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StreamBlockEventsResponse) ProtoMessage() {} + +func (x *StreamBlockEventsResponse) ProtoReflect() protoreflect.Message { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StreamBlockEventsResponse.ProtoReflect.Descriptor instead. +func (*StreamBlockEventsResponse) Descriptor() ([]byte, []int) { + return file_goadesign_goagen_event_provider_api_proto_rawDescGZIP(), []int{4} +} + +func (x *StreamBlockEventsResponse) GetBlocks() []*Block { + if x != nil { + return x.Blocks + } + return nil +} + +type Block struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Height int64 `protobuf:"zigzag64,1,opt,name=height,proto3" json:"height,omitempty"` + Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` + // Processed block events in the block + Events []*BlockEvent `protobuf:"bytes,3,rep,name=events,proto3" json:"events,omitempty"` + // Indicates whether the block is the latest one available in the event provider + InSync bool `protobuf:"varint,4,opt,name=in_sync,json=inSync,proto3" json:"in_sync,omitempty"` +} + +func (x *Block) Reset() { + *x = Block{} + if protoimpl.UnsafeEnabled { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Block) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Block) ProtoMessage() {} + +func (x *Block) ProtoReflect() protoreflect.Message { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Block.ProtoReflect.Descriptor instead. +func (*Block) Descriptor() ([]byte, []int) { + return file_goadesign_goagen_event_provider_api_proto_rawDescGZIP(), []int{5} +} + +func (x *Block) GetHeight() int64 { + if x != nil { + return x.Height + } + return 0 +} + +func (x *Block) GetVersion() string { + if x != nil { + return x.Version + } + return "" +} + +func (x *Block) GetEvents() []*BlockEvent { + if x != nil { + return x.Events + } + return nil +} + +func (x *Block) GetInSync() bool { + if x != nil { + return x.InSync + } + return false +} + +type BlockEvent struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Event type + TypeUrl string `protobuf:"bytes,1,opt,name=type_url,json=typeUrl,proto3" json:"type_url,omitempty"` + // Event data + Value []byte `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` + // TX hash + TxHash []byte `protobuf:"bytes,3,opt,name=tx_hash,json=txHash,proto3" json:"tx_hash,omitempty"` + // Set only if it's a BeginBlock or EndBlock event + Mode string `protobuf:"bytes,4,opt,name=mode,proto3" json:"mode,omitempty"` +} + +func (x *BlockEvent) Reset() { + *x = BlockEvent{} + if protoimpl.UnsafeEnabled { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlockEvent) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlockEvent) ProtoMessage() {} + +func (x *BlockEvent) ProtoReflect() protoreflect.Message { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlockEvent.ProtoReflect.Descriptor instead. +func (*BlockEvent) Descriptor() ([]byte, []int) { + return file_goadesign_goagen_event_provider_api_proto_rawDescGZIP(), []int{6} +} + +func (x *BlockEvent) GetTypeUrl() string { + if x != nil { + return x.TypeUrl + } + return "" +} + +func (x *BlockEvent) GetValue() []byte { + if x != nil { + return x.Value + } + return nil +} + +func (x *BlockEvent) GetTxHash() []byte { + if x != nil { + return x.TxHash + } + return nil +} + +func (x *BlockEvent) GetMode() string { + if x != nil { + return x.Mode + } + return "" +} + +type GetBlockEventsRPCRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Select backend processor + Backend string `protobuf:"bytes,1,opt,name=backend,proto3" json:"backend,omitempty"` + Height int32 `protobuf:"zigzag32,2,opt,name=height,proto3" json:"height,omitempty"` + HumanReadable bool `protobuf:"varint,3,opt,name=human_readable,json=humanReadable,proto3" json:"human_readable,omitempty"` +} + +func (x *GetBlockEventsRPCRequest) Reset() { + *x = GetBlockEventsRPCRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetBlockEventsRPCRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetBlockEventsRPCRequest) ProtoMessage() {} + +func (x *GetBlockEventsRPCRequest) ProtoReflect() protoreflect.Message { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetBlockEventsRPCRequest.ProtoReflect.Descriptor instead. +func (*GetBlockEventsRPCRequest) Descriptor() ([]byte, []int) { + return file_goadesign_goagen_event_provider_api_proto_rawDescGZIP(), []int{7} +} + +func (x *GetBlockEventsRPCRequest) GetBackend() string { + if x != nil { + return x.Backend + } + return "" +} + +func (x *GetBlockEventsRPCRequest) GetHeight() int32 { + if x != nil { + return x.Height + } + return 0 +} + +func (x *GetBlockEventsRPCRequest) GetHumanReadable() bool { + if x != nil { + return x.HumanReadable + } + return false +} + +type GetBlockEventsRPCResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Response version. + V string `protobuf:"bytes,1,opt,name=v,proto3" json:"v,omitempty"` + // Status of the response. + S string `protobuf:"bytes,2,opt,name=s,proto3" json:"s,omitempty"` + // Error message. + E string `protobuf:"bytes,3,opt,name=e,proto3" json:"e,omitempty"` + Data *BlockEventsRPC `protobuf:"bytes,4,opt,name=data,proto3" json:"data,omitempty"` +} + +func (x *GetBlockEventsRPCResponse) Reset() { + *x = GetBlockEventsRPCResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetBlockEventsRPCResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetBlockEventsRPCResponse) ProtoMessage() {} + +func (x *GetBlockEventsRPCResponse) ProtoReflect() protoreflect.Message { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetBlockEventsRPCResponse.ProtoReflect.Descriptor instead. +func (*GetBlockEventsRPCResponse) Descriptor() ([]byte, []int) { + return file_goadesign_goagen_event_provider_api_proto_rawDescGZIP(), []int{8} +} + +func (x *GetBlockEventsRPCResponse) GetV() string { + if x != nil { + return x.V + } + return "" +} + +func (x *GetBlockEventsRPCResponse) GetS() string { + if x != nil { + return x.S + } + return "" +} + +func (x *GetBlockEventsRPCResponse) GetE() string { + if x != nil { + return x.E + } + return "" +} + +func (x *GetBlockEventsRPCResponse) GetData() *BlockEventsRPC { + if x != nil { + return x.Data + } + return nil +} + +// Processed block events for backend processor to consume +type BlockEventsRPC struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Array of event types + Types []string `protobuf:"bytes,1,rep,name=types,proto3" json:"types,omitempty"` + // Array of parsed events + Events [][]byte `protobuf:"bytes,2,rep,name=events,proto3" json:"events,omitempty"` + // Map of event index - tx hash + TxHashes map[int32][]byte `protobuf:"bytes,3,rep,name=tx_hashes,json=txHashes,proto3" json:"tx_hashes,omitempty" protobuf_key:"zigzag32,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` +} + +func (x *BlockEventsRPC) Reset() { + *x = BlockEventsRPC{} + if protoimpl.UnsafeEnabled { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlockEventsRPC) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlockEventsRPC) ProtoMessage() {} + +func (x *BlockEventsRPC) ProtoReflect() protoreflect.Message { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlockEventsRPC.ProtoReflect.Descriptor instead. +func (*BlockEventsRPC) Descriptor() ([]byte, []int) { + return file_goadesign_goagen_event_provider_api_proto_rawDescGZIP(), []int{9} +} + +func (x *BlockEventsRPC) GetTypes() []string { + if x != nil { + return x.Types + } + return nil +} + +func (x *BlockEventsRPC) GetEvents() [][]byte { + if x != nil { + return x.Events + } + return nil +} + +func (x *BlockEventsRPC) GetTxHashes() map[int32][]byte { + if x != nil { + return x.TxHashes + } + return nil +} + +type GetCustomEventsRPCRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Select backend processor + Backend string `protobuf:"bytes,1,opt,name=backend,proto3" json:"backend,omitempty"` + Height int32 `protobuf:"zigzag32,2,opt,name=height,proto3" json:"height,omitempty"` + // Specify custom events to get + Events string `protobuf:"bytes,3,opt,name=events,proto3" json:"events,omitempty"` +} + +func (x *GetCustomEventsRPCRequest) Reset() { + *x = GetCustomEventsRPCRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetCustomEventsRPCRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetCustomEventsRPCRequest) ProtoMessage() {} + +func (x *GetCustomEventsRPCRequest) ProtoReflect() protoreflect.Message { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetCustomEventsRPCRequest.ProtoReflect.Descriptor instead. +func (*GetCustomEventsRPCRequest) Descriptor() ([]byte, []int) { + return file_goadesign_goagen_event_provider_api_proto_rawDescGZIP(), []int{10} +} + +func (x *GetCustomEventsRPCRequest) GetBackend() string { + if x != nil { + return x.Backend + } + return "" +} + +func (x *GetCustomEventsRPCRequest) GetHeight() int32 { + if x != nil { + return x.Height + } + return 0 +} + +func (x *GetCustomEventsRPCRequest) GetEvents() string { + if x != nil { + return x.Events + } + return "" +} + +type GetCustomEventsRPCResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Response version. + V string `protobuf:"bytes,1,opt,name=v,proto3" json:"v,omitempty"` + // Status of the response. + S string `protobuf:"bytes,2,opt,name=s,proto3" json:"s,omitempty"` + // Error message. + E string `protobuf:"bytes,3,opt,name=e,proto3" json:"e,omitempty"` + Data *BlockEventsRPC `protobuf:"bytes,4,opt,name=data,proto3" json:"data,omitempty"` +} + +func (x *GetCustomEventsRPCResponse) Reset() { + *x = GetCustomEventsRPCResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetCustomEventsRPCResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetCustomEventsRPCResponse) ProtoMessage() {} + +func (x *GetCustomEventsRPCResponse) ProtoReflect() protoreflect.Message { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetCustomEventsRPCResponse.ProtoReflect.Descriptor instead. +func (*GetCustomEventsRPCResponse) Descriptor() ([]byte, []int) { + return file_goadesign_goagen_event_provider_api_proto_rawDescGZIP(), []int{11} +} + +func (x *GetCustomEventsRPCResponse) GetV() string { + if x != nil { + return x.V + } + return "" +} + +func (x *GetCustomEventsRPCResponse) GetS() string { + if x != nil { + return x.S + } + return "" +} + +func (x *GetCustomEventsRPCResponse) GetE() string { + if x != nil { + return x.E + } + return "" +} + +func (x *GetCustomEventsRPCResponse) GetData() *BlockEventsRPC { + if x != nil { + return x.Data + } + return nil +} + +type GetABCIBlockEventsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Height int32 `protobuf:"zigzag32,1,opt,name=height,proto3" json:"height,omitempty"` + // Array of event types + EventTypes []string `protobuf:"bytes,2,rep,name=event_types,json=eventTypes,proto3" json:"event_types,omitempty"` +} + +func (x *GetABCIBlockEventsRequest) Reset() { + *x = GetABCIBlockEventsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetABCIBlockEventsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetABCIBlockEventsRequest) ProtoMessage() {} + +func (x *GetABCIBlockEventsRequest) ProtoReflect() protoreflect.Message { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetABCIBlockEventsRequest.ProtoReflect.Descriptor instead. +func (*GetABCIBlockEventsRequest) Descriptor() ([]byte, []int) { + return file_goadesign_goagen_event_provider_api_proto_rawDescGZIP(), []int{12} +} + +func (x *GetABCIBlockEventsRequest) GetHeight() int32 { + if x != nil { + return x.Height + } + return 0 +} + +func (x *GetABCIBlockEventsRequest) GetEventTypes() []string { + if x != nil { + return x.EventTypes + } + return nil +} + +type GetABCIBlockEventsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Response version. + V string `protobuf:"bytes,1,opt,name=v,proto3" json:"v,omitempty"` + // Status of the response. + S string `protobuf:"bytes,2,opt,name=s,proto3" json:"s,omitempty"` + // Error message. + E string `protobuf:"bytes,3,opt,name=e,proto3" json:"e,omitempty"` + RawBlock *RawBlock `protobuf:"bytes,4,opt,name=raw_block,json=rawBlock,proto3" json:"raw_block,omitempty"` +} + +func (x *GetABCIBlockEventsResponse) Reset() { + *x = GetABCIBlockEventsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetABCIBlockEventsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetABCIBlockEventsResponse) ProtoMessage() {} + +func (x *GetABCIBlockEventsResponse) ProtoReflect() protoreflect.Message { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetABCIBlockEventsResponse.ProtoReflect.Descriptor instead. +func (*GetABCIBlockEventsResponse) Descriptor() ([]byte, []int) { + return file_goadesign_goagen_event_provider_api_proto_rawDescGZIP(), []int{13} +} + +func (x *GetABCIBlockEventsResponse) GetV() string { + if x != nil { + return x.V + } + return "" +} + +func (x *GetABCIBlockEventsResponse) GetS() string { + if x != nil { + return x.S + } + return "" +} + +func (x *GetABCIBlockEventsResponse) GetE() string { + if x != nil { + return x.E + } + return "" +} + +func (x *GetABCIBlockEventsResponse) GetRawBlock() *RawBlock { + if x != nil { + return x.RawBlock + } + return nil +} + +type RawBlock struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Height int64 `protobuf:"zigzag64,1,opt,name=height,proto3" json:"height,omitempty"` + BlockTime string `protobuf:"bytes,5,opt,name=block_time,json=blockTime,proto3" json:"block_time,omitempty"` + // Block timestamp in UNIX millis. + BlockTimestamp int64 `protobuf:"zigzag64,6,opt,name=block_timestamp,json=blockTimestamp,proto3" json:"block_timestamp,omitempty"` + TxsResults []*ABCIResponseDeliverTx `protobuf:"bytes,2,rep,name=txs_results,json=txsResults,proto3" json:"txs_results,omitempty"` + BeginBlockEvents []*ABCIEvent `protobuf:"bytes,3,rep,name=begin_block_events,json=beginBlockEvents,proto3" json:"begin_block_events,omitempty"` + EndBlockEvents []*ABCIEvent `protobuf:"bytes,4,rep,name=end_block_events,json=endBlockEvents,proto3" json:"end_block_events,omitempty"` +} + +func (x *RawBlock) Reset() { + *x = RawBlock{} + if protoimpl.UnsafeEnabled { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RawBlock) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RawBlock) ProtoMessage() {} + +func (x *RawBlock) ProtoReflect() protoreflect.Message { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[14] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RawBlock.ProtoReflect.Descriptor instead. +func (*RawBlock) Descriptor() ([]byte, []int) { + return file_goadesign_goagen_event_provider_api_proto_rawDescGZIP(), []int{14} +} + +func (x *RawBlock) GetHeight() int64 { + if x != nil { + return x.Height + } + return 0 +} + +func (x *RawBlock) GetBlockTime() string { + if x != nil { + return x.BlockTime + } + return "" +} + +func (x *RawBlock) GetBlockTimestamp() int64 { + if x != nil { + return x.BlockTimestamp + } + return 0 +} + +func (x *RawBlock) GetTxsResults() []*ABCIResponseDeliverTx { + if x != nil { + return x.TxsResults + } + return nil +} + +func (x *RawBlock) GetBeginBlockEvents() []*ABCIEvent { + if x != nil { + return x.BeginBlockEvents + } + return nil +} + +func (x *RawBlock) GetEndBlockEvents() []*ABCIEvent { + if x != nil { + return x.EndBlockEvents + } + return nil +} + +type ABCIResponseDeliverTx struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Code int32 `protobuf:"zigzag32,1,opt,name=code,proto3" json:"code,omitempty"` + Log string `protobuf:"bytes,2,opt,name=log,proto3" json:"log,omitempty"` + Info string `protobuf:"bytes,3,opt,name=info,proto3" json:"info,omitempty"` + GasWanted int64 `protobuf:"zigzag64,4,opt,name=gas_wanted,json=gasWanted,proto3" json:"gas_wanted,omitempty"` + GasUsed int64 `protobuf:"zigzag64,5,opt,name=gas_used,json=gasUsed,proto3" json:"gas_used,omitempty"` + Events []*ABCIEvent `protobuf:"bytes,6,rep,name=events,proto3" json:"events,omitempty"` + Codespace string `protobuf:"bytes,7,opt,name=codespace,proto3" json:"codespace,omitempty"` + TxHash []byte `protobuf:"bytes,8,opt,name=tx_hash,json=txHash,proto3" json:"tx_hash,omitempty"` +} + +func (x *ABCIResponseDeliverTx) Reset() { + *x = ABCIResponseDeliverTx{} + if protoimpl.UnsafeEnabled { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ABCIResponseDeliverTx) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ABCIResponseDeliverTx) ProtoMessage() {} + +func (x *ABCIResponseDeliverTx) ProtoReflect() protoreflect.Message { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[15] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ABCIResponseDeliverTx.ProtoReflect.Descriptor instead. +func (*ABCIResponseDeliverTx) Descriptor() ([]byte, []int) { + return file_goadesign_goagen_event_provider_api_proto_rawDescGZIP(), []int{15} +} + +func (x *ABCIResponseDeliverTx) GetCode() int32 { + if x != nil { + return x.Code + } + return 0 +} + +func (x *ABCIResponseDeliverTx) GetLog() string { + if x != nil { + return x.Log + } + return "" +} + +func (x *ABCIResponseDeliverTx) GetInfo() string { + if x != nil { + return x.Info + } + return "" +} + +func (x *ABCIResponseDeliverTx) GetGasWanted() int64 { + if x != nil { + return x.GasWanted + } + return 0 +} + +func (x *ABCIResponseDeliverTx) GetGasUsed() int64 { + if x != nil { + return x.GasUsed + } + return 0 +} + +func (x *ABCIResponseDeliverTx) GetEvents() []*ABCIEvent { + if x != nil { + return x.Events + } + return nil +} + +func (x *ABCIResponseDeliverTx) GetCodespace() string { + if x != nil { + return x.Codespace + } + return "" +} + +func (x *ABCIResponseDeliverTx) GetTxHash() []byte { + if x != nil { + return x.TxHash + } + return nil +} + +type ABCIEvent struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` + Attributes []*ABCIAttribute `protobuf:"bytes,2,rep,name=attributes,proto3" json:"attributes,omitempty"` +} + +func (x *ABCIEvent) Reset() { + *x = ABCIEvent{} + if protoimpl.UnsafeEnabled { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ABCIEvent) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ABCIEvent) ProtoMessage() {} + +func (x *ABCIEvent) ProtoReflect() protoreflect.Message { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[16] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ABCIEvent.ProtoReflect.Descriptor instead. +func (*ABCIEvent) Descriptor() ([]byte, []int) { + return file_goadesign_goagen_event_provider_api_proto_rawDescGZIP(), []int{16} +} + +func (x *ABCIEvent) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +func (x *ABCIEvent) GetAttributes() []*ABCIAttribute { + if x != nil { + return x.Attributes + } + return nil +} + +type ABCIAttribute struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` +} + +func (x *ABCIAttribute) Reset() { + *x = ABCIAttribute{} + if protoimpl.UnsafeEnabled { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ABCIAttribute) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ABCIAttribute) ProtoMessage() {} + +func (x *ABCIAttribute) ProtoReflect() protoreflect.Message { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[17] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ABCIAttribute.ProtoReflect.Descriptor instead. +func (*ABCIAttribute) Descriptor() ([]byte, []int) { + return file_goadesign_goagen_event_provider_api_proto_rawDescGZIP(), []int{17} +} + +func (x *ABCIAttribute) GetKey() string { + if x != nil { + return x.Key + } + return "" +} + +func (x *ABCIAttribute) GetValue() string { + if x != nil { + return x.Value + } + return "" +} + +type GetABCIBlockEventsAtHeightRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Height int32 `protobuf:"zigzag32,1,opt,name=height,proto3" json:"height,omitempty"` +} + +func (x *GetABCIBlockEventsAtHeightRequest) Reset() { + *x = GetABCIBlockEventsAtHeightRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetABCIBlockEventsAtHeightRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetABCIBlockEventsAtHeightRequest) ProtoMessage() {} + +func (x *GetABCIBlockEventsAtHeightRequest) ProtoReflect() protoreflect.Message { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[18] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetABCIBlockEventsAtHeightRequest.ProtoReflect.Descriptor instead. +func (*GetABCIBlockEventsAtHeightRequest) Descriptor() ([]byte, []int) { + return file_goadesign_goagen_event_provider_api_proto_rawDescGZIP(), []int{18} +} + +func (x *GetABCIBlockEventsAtHeightRequest) GetHeight() int32 { + if x != nil { + return x.Height + } + return 0 +} + +type GetABCIBlockEventsAtHeightResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Response version. + V string `protobuf:"bytes,1,opt,name=v,proto3" json:"v,omitempty"` + // Status of the response. + S string `protobuf:"bytes,2,opt,name=s,proto3" json:"s,omitempty"` + // Error message. + E string `protobuf:"bytes,3,opt,name=e,proto3" json:"e,omitempty"` + RawBlock *RawBlock `protobuf:"bytes,4,opt,name=raw_block,json=rawBlock,proto3" json:"raw_block,omitempty"` +} + +func (x *GetABCIBlockEventsAtHeightResponse) Reset() { + *x = GetABCIBlockEventsAtHeightResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetABCIBlockEventsAtHeightResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetABCIBlockEventsAtHeightResponse) ProtoMessage() {} + +func (x *GetABCIBlockEventsAtHeightResponse) ProtoReflect() protoreflect.Message { + mi := &file_goadesign_goagen_event_provider_api_proto_msgTypes[19] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetABCIBlockEventsAtHeightResponse.ProtoReflect.Descriptor instead. +func (*GetABCIBlockEventsAtHeightResponse) Descriptor() ([]byte, []int) { + return file_goadesign_goagen_event_provider_api_proto_rawDescGZIP(), []int{19} +} + +func (x *GetABCIBlockEventsAtHeightResponse) GetV() string { + if x != nil { + return x.V + } + return "" +} + +func (x *GetABCIBlockEventsAtHeightResponse) GetS() string { + if x != nil { + return x.S + } + return "" +} + +func (x *GetABCIBlockEventsAtHeightResponse) GetE() string { + if x != nil { + return x.E + } + return "" +} + +func (x *GetABCIBlockEventsAtHeightResponse) GetRawBlock() *RawBlock { + if x != nil { + return x.RawBlock + } + return nil +} + +var File_goadesign_goagen_event_provider_api_proto protoreflect.FileDescriptor + +var file_goadesign_goagen_event_provider_api_proto_rawDesc = []byte{ + 0x0a, 0x29, 0x67, 0x6f, 0x61, 0x64, 0x65, 0x73, 0x69, 0x67, 0x6e, 0x5f, 0x67, 0x6f, 0x61, 0x67, + 0x65, 0x6e, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, + 0x72, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x65, 0x76, 0x65, + 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x22, + 0x18, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x48, 0x65, 0x69, 0x67, + 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x7e, 0x0a, 0x17, 0x47, 0x65, 0x74, + 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0c, 0x0a, 0x01, 0x76, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x01, 0x76, 0x12, 0x0c, 0x0a, 0x01, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x01, 0x73, + 0x12, 0x0c, 0x0a, 0x01, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x01, 0x65, 0x12, 0x39, + 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x65, + 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x61, 0x70, + 0x69, 0x2e, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, + 0x67, 0x68, 0x74, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x2b, 0x0a, 0x11, 0x4c, 0x61, 0x74, + 0x65, 0x73, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x16, + 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, + 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0x4c, 0x0a, 0x18, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, + 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x12, 0x16, 0x0a, 0x06, + 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x11, 0x52, 0x06, 0x68, 0x65, + 0x69, 0x67, 0x68, 0x74, 0x22, 0x4e, 0x0a, 0x19, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x42, 0x6c, + 0x6f, 0x63, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x31, 0x0a, 0x06, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x19, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, + 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x06, 0x62, 0x6c, + 0x6f, 0x63, 0x6b, 0x73, 0x22, 0x8a, 0x01, 0x0a, 0x05, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x16, + 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x12, 0x52, 0x06, + 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x12, 0x36, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x1e, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, + 0x72, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x6e, 0x5f, 0x73, + 0x79, 0x6e, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x69, 0x6e, 0x53, 0x79, 0x6e, + 0x63, 0x22, 0x6a, 0x0a, 0x0a, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, + 0x19, 0x0a, 0x08, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x74, 0x79, 0x70, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x12, 0x17, 0x0a, 0x07, 0x74, 0x78, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x06, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x6f, 0x64, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0x73, 0x0a, + 0x18, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, + 0x50, 0x43, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x61, 0x63, + 0x6b, 0x65, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x61, 0x63, 0x6b, + 0x65, 0x6e, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x11, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x68, + 0x75, 0x6d, 0x61, 0x6e, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0d, 0x68, 0x75, 0x6d, 0x61, 0x6e, 0x52, 0x65, 0x61, 0x64, 0x61, 0x62, + 0x6c, 0x65, 0x22, 0x7d, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x73, 0x52, 0x50, 0x43, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x0c, 0x0a, 0x01, 0x76, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x01, 0x76, 0x12, 0x0c, 0x0a, + 0x01, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x01, 0x73, 0x12, 0x0c, 0x0a, 0x01, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x01, 0x65, 0x12, 0x36, 0x0a, 0x04, 0x64, 0x61, 0x74, + 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, + 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x42, 0x6c, 0x6f, + 0x63, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x50, 0x43, 0x52, 0x04, 0x64, 0x61, 0x74, + 0x61, 0x22, 0xca, 0x01, 0x0a, 0x0e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x73, 0x52, 0x50, 0x43, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x76, + 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, + 0x74, 0x73, 0x12, 0x4d, 0x0a, 0x09, 0x74, 0x78, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x65, 0x73, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x72, + 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x50, 0x43, 0x2e, 0x54, 0x78, 0x48, 0x61, 0x73, 0x68, + 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x65, + 0x73, 0x1a, 0x3b, 0x0a, 0x0d, 0x54, 0x78, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x11, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x65, + 0x0a, 0x19, 0x47, 0x65, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x73, 0x52, 0x50, 0x43, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x62, + 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x61, + 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x11, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x16, 0x0a, + 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, + 0x76, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x7e, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x43, 0x75, 0x73, 0x74, + 0x6f, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x50, 0x43, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x0c, 0x0a, 0x01, 0x76, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x01, + 0x76, 0x12, 0x0c, 0x0a, 0x01, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x01, 0x73, 0x12, + 0x0c, 0x0a, 0x01, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x01, 0x65, 0x12, 0x36, 0x0a, + 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x65, 0x76, + 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, + 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x50, 0x43, 0x52, + 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x54, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x41, 0x42, 0x43, 0x49, + 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x11, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x76, + 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x0a, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x73, 0x22, 0x81, 0x01, 0x0a, 0x1a, + 0x47, 0x65, 0x74, 0x41, 0x42, 0x43, 0x49, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0c, 0x0a, 0x01, 0x76, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x01, 0x76, 0x12, 0x0c, 0x0a, 0x01, 0x73, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x01, 0x73, 0x12, 0x0c, 0x0a, 0x01, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x01, 0x65, 0x12, 0x39, 0x0a, 0x09, 0x72, 0x61, 0x77, 0x5f, 0x62, 0x6c, 0x6f, 0x63, + 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, + 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x61, 0x77, + 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x08, 0x72, 0x61, 0x77, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x22, + 0xcc, 0x02, 0x0a, 0x08, 0x52, 0x61, 0x77, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x16, 0x0a, 0x06, + 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x12, 0x52, 0x06, 0x68, 0x65, + 0x69, 0x67, 0x68, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x74, 0x69, + 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x54, + 0x69, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x74, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0e, 0x62, 0x6c, + 0x6f, 0x63, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x4a, 0x0a, 0x0b, + 0x74, 0x78, 0x73, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x29, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, + 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x41, 0x42, 0x43, 0x49, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x44, 0x65, 0x6c, 0x69, 0x76, 0x65, 0x72, 0x54, 0x78, 0x52, 0x0a, 0x74, 0x78, + 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x4b, 0x0a, 0x12, 0x62, 0x65, 0x67, 0x69, + 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x6f, + 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x41, 0x42, 0x43, 0x49, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x52, 0x10, 0x62, 0x65, 0x67, 0x69, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x47, 0x0a, 0x10, 0x65, 0x6e, 0x64, 0x5f, 0x62, 0x6c, 0x6f, + 0x63, 0x6b, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1d, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, + 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x41, 0x42, 0x43, 0x49, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x0e, + 0x65, 0x6e, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x22, 0xf9, + 0x01, 0x0a, 0x15, 0x41, 0x42, 0x43, 0x49, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x44, + 0x65, 0x6c, 0x69, 0x76, 0x65, 0x72, 0x54, 0x78, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x11, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, + 0x6c, 0x6f, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6c, 0x6f, 0x67, 0x12, 0x12, + 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x69, 0x6e, + 0x66, 0x6f, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x61, 0x73, 0x5f, 0x77, 0x61, 0x6e, 0x74, 0x65, 0x64, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x67, 0x61, 0x73, 0x57, 0x61, 0x6e, 0x74, 0x65, + 0x64, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x61, 0x73, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x12, 0x52, 0x07, 0x67, 0x61, 0x73, 0x55, 0x73, 0x65, 0x64, 0x12, 0x35, 0x0a, 0x06, + 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x65, + 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x61, 0x70, + 0x69, 0x2e, 0x41, 0x42, 0x43, 0x49, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, + 0x6e, 0x74, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x78, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x06, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x22, 0x62, 0x0a, 0x09, 0x41, 0x42, + 0x43, 0x49, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x41, 0x0a, 0x0a, 0x61, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x21, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, + 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x41, 0x42, 0x43, 0x49, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x22, 0x37, + 0x0a, 0x0d, 0x41, 0x42, 0x43, 0x49, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, + 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x3b, 0x0a, 0x21, 0x47, 0x65, 0x74, 0x41, 0x42, + 0x43, 0x49, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x41, 0x74, 0x48, + 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, + 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x11, 0x52, 0x06, 0x68, 0x65, + 0x69, 0x67, 0x68, 0x74, 0x22, 0x89, 0x01, 0x0a, 0x22, 0x47, 0x65, 0x74, 0x41, 0x42, 0x43, 0x49, + 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x41, 0x74, 0x48, 0x65, 0x69, + 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0c, 0x0a, 0x01, 0x76, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x01, 0x76, 0x12, 0x0c, 0x0a, 0x01, 0x73, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x01, 0x73, 0x12, 0x0c, 0x0a, 0x01, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x01, 0x65, 0x12, 0x39, 0x0a, 0x09, 0x72, 0x61, 0x77, 0x5f, 0x62, 0x6c, 0x6f, + 0x63, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, + 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x61, + 0x77, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x08, 0x72, 0x61, 0x77, 0x42, 0x6c, 0x6f, 0x63, 0x6b, + 0x32, 0xdc, 0x05, 0x0a, 0x10, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, + 0x65, 0x72, 0x41, 0x50, 0x49, 0x12, 0x6a, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, + 0x73, 0x74, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x2a, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, + 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, + 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x6f, + 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, + 0x65, 0x73, 0x74, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x72, 0x0a, 0x11, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x2c, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x70, + 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x6f, + 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, + 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x70, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, + 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x50, 0x43, 0x12, 0x2c, 0x2e, 0x65, 0x76, 0x65, + 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x2e, + 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x50, + 0x43, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, + 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, + 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x50, 0x43, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x73, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x43, 0x75, + 0x73, 0x74, 0x6f, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x50, 0x43, 0x12, 0x2d, 0x2e, + 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x61, + 0x70, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x73, 0x52, 0x50, 0x43, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x65, + 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x61, 0x70, + 0x69, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x73, 0x52, 0x50, 0x43, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x73, 0x0a, 0x12, + 0x47, 0x65, 0x74, 0x41, 0x42, 0x43, 0x49, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x73, 0x12, 0x2d, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, + 0x64, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x42, 0x43, 0x49, 0x42, + 0x6c, 0x6f, 0x63, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x2e, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, + 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x42, 0x43, 0x49, 0x42, 0x6c, + 0x6f, 0x63, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x8b, 0x01, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x41, 0x42, 0x43, 0x49, 0x42, 0x6c, 0x6f, + 0x63, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x41, 0x74, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x12, 0x35, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, + 0x72, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x42, 0x43, 0x49, 0x42, 0x6c, 0x6f, + 0x63, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x41, 0x74, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, + 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, 0x74, + 0x41, 0x42, 0x43, 0x49, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x41, + 0x74, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, + 0x17, 0x5a, 0x15, 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, + 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_goadesign_goagen_event_provider_api_proto_rawDescOnce sync.Once + file_goadesign_goagen_event_provider_api_proto_rawDescData = file_goadesign_goagen_event_provider_api_proto_rawDesc +) + +func file_goadesign_goagen_event_provider_api_proto_rawDescGZIP() []byte { + file_goadesign_goagen_event_provider_api_proto_rawDescOnce.Do(func() { + file_goadesign_goagen_event_provider_api_proto_rawDescData = protoimpl.X.CompressGZIP(file_goadesign_goagen_event_provider_api_proto_rawDescData) + }) + return file_goadesign_goagen_event_provider_api_proto_rawDescData +} + +var file_goadesign_goagen_event_provider_api_proto_msgTypes = make([]protoimpl.MessageInfo, 21) +var file_goadesign_goagen_event_provider_api_proto_goTypes = []interface{}{ + (*GetLatestHeightRequest)(nil), // 0: event_provider_api.GetLatestHeightRequest + (*GetLatestHeightResponse)(nil), // 1: event_provider_api.GetLatestHeightResponse + (*LatestBlockHeight)(nil), // 2: event_provider_api.LatestBlockHeight + (*StreamBlockEventsRequest)(nil), // 3: event_provider_api.StreamBlockEventsRequest + (*StreamBlockEventsResponse)(nil), // 4: event_provider_api.StreamBlockEventsResponse + (*Block)(nil), // 5: event_provider_api.Block + (*BlockEvent)(nil), // 6: event_provider_api.BlockEvent + (*GetBlockEventsRPCRequest)(nil), // 7: event_provider_api.GetBlockEventsRPCRequest + (*GetBlockEventsRPCResponse)(nil), // 8: event_provider_api.GetBlockEventsRPCResponse + (*BlockEventsRPC)(nil), // 9: event_provider_api.BlockEventsRPC + (*GetCustomEventsRPCRequest)(nil), // 10: event_provider_api.GetCustomEventsRPCRequest + (*GetCustomEventsRPCResponse)(nil), // 11: event_provider_api.GetCustomEventsRPCResponse + (*GetABCIBlockEventsRequest)(nil), // 12: event_provider_api.GetABCIBlockEventsRequest + (*GetABCIBlockEventsResponse)(nil), // 13: event_provider_api.GetABCIBlockEventsResponse + (*RawBlock)(nil), // 14: event_provider_api.RawBlock + (*ABCIResponseDeliverTx)(nil), // 15: event_provider_api.ABCIResponseDeliverTx + (*ABCIEvent)(nil), // 16: event_provider_api.ABCIEvent + (*ABCIAttribute)(nil), // 17: event_provider_api.ABCIAttribute + (*GetABCIBlockEventsAtHeightRequest)(nil), // 18: event_provider_api.GetABCIBlockEventsAtHeightRequest + (*GetABCIBlockEventsAtHeightResponse)(nil), // 19: event_provider_api.GetABCIBlockEventsAtHeightResponse + nil, // 20: event_provider_api.BlockEventsRPC.TxHashesEntry +} +var file_goadesign_goagen_event_provider_api_proto_depIdxs = []int32{ + 2, // 0: event_provider_api.GetLatestHeightResponse.data:type_name -> event_provider_api.LatestBlockHeight + 5, // 1: event_provider_api.StreamBlockEventsResponse.blocks:type_name -> event_provider_api.Block + 6, // 2: event_provider_api.Block.events:type_name -> event_provider_api.BlockEvent + 9, // 3: event_provider_api.GetBlockEventsRPCResponse.data:type_name -> event_provider_api.BlockEventsRPC + 20, // 4: event_provider_api.BlockEventsRPC.tx_hashes:type_name -> event_provider_api.BlockEventsRPC.TxHashesEntry + 9, // 5: event_provider_api.GetCustomEventsRPCResponse.data:type_name -> event_provider_api.BlockEventsRPC + 14, // 6: event_provider_api.GetABCIBlockEventsResponse.raw_block:type_name -> event_provider_api.RawBlock + 15, // 7: event_provider_api.RawBlock.txs_results:type_name -> event_provider_api.ABCIResponseDeliverTx + 16, // 8: event_provider_api.RawBlock.begin_block_events:type_name -> event_provider_api.ABCIEvent + 16, // 9: event_provider_api.RawBlock.end_block_events:type_name -> event_provider_api.ABCIEvent + 16, // 10: event_provider_api.ABCIResponseDeliverTx.events:type_name -> event_provider_api.ABCIEvent + 17, // 11: event_provider_api.ABCIEvent.attributes:type_name -> event_provider_api.ABCIAttribute + 14, // 12: event_provider_api.GetABCIBlockEventsAtHeightResponse.raw_block:type_name -> event_provider_api.RawBlock + 0, // 13: event_provider_api.EventProviderAPI.GetLatestHeight:input_type -> event_provider_api.GetLatestHeightRequest + 3, // 14: event_provider_api.EventProviderAPI.StreamBlockEvents:input_type -> event_provider_api.StreamBlockEventsRequest + 7, // 15: event_provider_api.EventProviderAPI.GetBlockEventsRPC:input_type -> event_provider_api.GetBlockEventsRPCRequest + 10, // 16: event_provider_api.EventProviderAPI.GetCustomEventsRPC:input_type -> event_provider_api.GetCustomEventsRPCRequest + 12, // 17: event_provider_api.EventProviderAPI.GetABCIBlockEvents:input_type -> event_provider_api.GetABCIBlockEventsRequest + 18, // 18: event_provider_api.EventProviderAPI.GetABCIBlockEventsAtHeight:input_type -> event_provider_api.GetABCIBlockEventsAtHeightRequest + 1, // 19: event_provider_api.EventProviderAPI.GetLatestHeight:output_type -> event_provider_api.GetLatestHeightResponse + 4, // 20: event_provider_api.EventProviderAPI.StreamBlockEvents:output_type -> event_provider_api.StreamBlockEventsResponse + 8, // 21: event_provider_api.EventProviderAPI.GetBlockEventsRPC:output_type -> event_provider_api.GetBlockEventsRPCResponse + 11, // 22: event_provider_api.EventProviderAPI.GetCustomEventsRPC:output_type -> event_provider_api.GetCustomEventsRPCResponse + 13, // 23: event_provider_api.EventProviderAPI.GetABCIBlockEvents:output_type -> event_provider_api.GetABCIBlockEventsResponse + 19, // 24: event_provider_api.EventProviderAPI.GetABCIBlockEventsAtHeight:output_type -> event_provider_api.GetABCIBlockEventsAtHeightResponse + 19, // [19:25] is the sub-list for method output_type + 13, // [13:19] is the sub-list for method input_type + 13, // [13:13] is the sub-list for extension type_name + 13, // [13:13] is the sub-list for extension extendee + 0, // [0:13] is the sub-list for field type_name +} + +func init() { file_goadesign_goagen_event_provider_api_proto_init() } +func file_goadesign_goagen_event_provider_api_proto_init() { + if File_goadesign_goagen_event_provider_api_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_goadesign_goagen_event_provider_api_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetLatestHeightRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_goadesign_goagen_event_provider_api_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetLatestHeightResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_goadesign_goagen_event_provider_api_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LatestBlockHeight); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_goadesign_goagen_event_provider_api_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StreamBlockEventsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_goadesign_goagen_event_provider_api_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StreamBlockEventsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_goadesign_goagen_event_provider_api_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Block); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_goadesign_goagen_event_provider_api_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlockEvent); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_goadesign_goagen_event_provider_api_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetBlockEventsRPCRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_goadesign_goagen_event_provider_api_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetBlockEventsRPCResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_goadesign_goagen_event_provider_api_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BlockEventsRPC); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_goadesign_goagen_event_provider_api_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetCustomEventsRPCRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_goadesign_goagen_event_provider_api_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetCustomEventsRPCResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_goadesign_goagen_event_provider_api_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetABCIBlockEventsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_goadesign_goagen_event_provider_api_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetABCIBlockEventsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_goadesign_goagen_event_provider_api_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RawBlock); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_goadesign_goagen_event_provider_api_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ABCIResponseDeliverTx); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_goadesign_goagen_event_provider_api_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ABCIEvent); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_goadesign_goagen_event_provider_api_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ABCIAttribute); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_goadesign_goagen_event_provider_api_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetABCIBlockEventsAtHeightRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_goadesign_goagen_event_provider_api_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetABCIBlockEventsAtHeightResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_goadesign_goagen_event_provider_api_proto_rawDesc, + NumEnums: 0, + NumMessages: 21, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_goadesign_goagen_event_provider_api_proto_goTypes, + DependencyIndexes: file_goadesign_goagen_event_provider_api_proto_depIdxs, + MessageInfos: file_goadesign_goagen_event_provider_api_proto_msgTypes, + }.Build() + File_goadesign_goagen_event_provider_api_proto = out.File + file_goadesign_goagen_event_provider_api_proto_rawDesc = nil + file_goadesign_goagen_event_provider_api_proto_goTypes = nil + file_goadesign_goagen_event_provider_api_proto_depIdxs = nil +} diff --git a/exchange/event_provider_api/pb/goadesign_goagen_event_provider_api_grpc.pb.go b/exchange/event_provider_api/pb/goadesign_goagen_event_provider_api_grpc.pb.go new file mode 100644 index 00000000..d83f56c5 --- /dev/null +++ b/exchange/event_provider_api/pb/goadesign_goagen_event_provider_api_grpc.pb.go @@ -0,0 +1,325 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.2.0 +// - protoc v3.21.12 +// source: goadesign_goagen_event_provider_api.proto + +package event_provider_apipb + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +// EventProviderAPIClient is the client API for EventProviderAPI service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type EventProviderAPIClient interface { + // Get latest block from event provider + GetLatestHeight(ctx context.Context, in *GetLatestHeightRequest, opts ...grpc.CallOption) (*GetLatestHeightResponse, error) + // Stream processed block events for selected backend + StreamBlockEvents(ctx context.Context, in *StreamBlockEventsRequest, opts ...grpc.CallOption) (EventProviderAPI_StreamBlockEventsClient, error) + // Get processed block events for selected backend + GetBlockEventsRPC(ctx context.Context, in *GetBlockEventsRPCRequest, opts ...grpc.CallOption) (*GetBlockEventsRPCResponse, error) + // Get custom processed block events for selected backend + GetCustomEventsRPC(ctx context.Context, in *GetCustomEventsRPCRequest, opts ...grpc.CallOption) (*GetCustomEventsRPCResponse, error) + // Get raw block events for selected height + GetABCIBlockEvents(ctx context.Context, in *GetABCIBlockEventsRequest, opts ...grpc.CallOption) (*GetABCIBlockEventsResponse, error) + // Get all raw block events for selected height + GetABCIBlockEventsAtHeight(ctx context.Context, in *GetABCIBlockEventsAtHeightRequest, opts ...grpc.CallOption) (*GetABCIBlockEventsAtHeightResponse, error) +} + +type eventProviderAPIClient struct { + cc grpc.ClientConnInterface +} + +func NewEventProviderAPIClient(cc grpc.ClientConnInterface) EventProviderAPIClient { + return &eventProviderAPIClient{cc} +} + +func (c *eventProviderAPIClient) GetLatestHeight(ctx context.Context, in *GetLatestHeightRequest, opts ...grpc.CallOption) (*GetLatestHeightResponse, error) { + out := new(GetLatestHeightResponse) + err := c.cc.Invoke(ctx, "/event_provider_api.EventProviderAPI/GetLatestHeight", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *eventProviderAPIClient) StreamBlockEvents(ctx context.Context, in *StreamBlockEventsRequest, opts ...grpc.CallOption) (EventProviderAPI_StreamBlockEventsClient, error) { + stream, err := c.cc.NewStream(ctx, &EventProviderAPI_ServiceDesc.Streams[0], "/event_provider_api.EventProviderAPI/StreamBlockEvents", opts...) + if err != nil { + return nil, err + } + x := &eventProviderAPIStreamBlockEventsClient{stream} + if err := x.ClientStream.SendMsg(in); err != nil { + return nil, err + } + if err := x.ClientStream.CloseSend(); err != nil { + return nil, err + } + return x, nil +} + +type EventProviderAPI_StreamBlockEventsClient interface { + Recv() (*StreamBlockEventsResponse, error) + grpc.ClientStream +} + +type eventProviderAPIStreamBlockEventsClient struct { + grpc.ClientStream +} + +func (x *eventProviderAPIStreamBlockEventsClient) Recv() (*StreamBlockEventsResponse, error) { + m := new(StreamBlockEventsResponse) + if err := x.ClientStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + +func (c *eventProviderAPIClient) GetBlockEventsRPC(ctx context.Context, in *GetBlockEventsRPCRequest, opts ...grpc.CallOption) (*GetBlockEventsRPCResponse, error) { + out := new(GetBlockEventsRPCResponse) + err := c.cc.Invoke(ctx, "/event_provider_api.EventProviderAPI/GetBlockEventsRPC", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *eventProviderAPIClient) GetCustomEventsRPC(ctx context.Context, in *GetCustomEventsRPCRequest, opts ...grpc.CallOption) (*GetCustomEventsRPCResponse, error) { + out := new(GetCustomEventsRPCResponse) + err := c.cc.Invoke(ctx, "/event_provider_api.EventProviderAPI/GetCustomEventsRPC", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *eventProviderAPIClient) GetABCIBlockEvents(ctx context.Context, in *GetABCIBlockEventsRequest, opts ...grpc.CallOption) (*GetABCIBlockEventsResponse, error) { + out := new(GetABCIBlockEventsResponse) + err := c.cc.Invoke(ctx, "/event_provider_api.EventProviderAPI/GetABCIBlockEvents", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *eventProviderAPIClient) GetABCIBlockEventsAtHeight(ctx context.Context, in *GetABCIBlockEventsAtHeightRequest, opts ...grpc.CallOption) (*GetABCIBlockEventsAtHeightResponse, error) { + out := new(GetABCIBlockEventsAtHeightResponse) + err := c.cc.Invoke(ctx, "/event_provider_api.EventProviderAPI/GetABCIBlockEventsAtHeight", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// EventProviderAPIServer is the server API for EventProviderAPI service. +// All implementations must embed UnimplementedEventProviderAPIServer +// for forward compatibility +type EventProviderAPIServer interface { + // Get latest block from event provider + GetLatestHeight(context.Context, *GetLatestHeightRequest) (*GetLatestHeightResponse, error) + // Stream processed block events for selected backend + StreamBlockEvents(*StreamBlockEventsRequest, EventProviderAPI_StreamBlockEventsServer) error + // Get processed block events for selected backend + GetBlockEventsRPC(context.Context, *GetBlockEventsRPCRequest) (*GetBlockEventsRPCResponse, error) + // Get custom processed block events for selected backend + GetCustomEventsRPC(context.Context, *GetCustomEventsRPCRequest) (*GetCustomEventsRPCResponse, error) + // Get raw block events for selected height + GetABCIBlockEvents(context.Context, *GetABCIBlockEventsRequest) (*GetABCIBlockEventsResponse, error) + // Get all raw block events for selected height + GetABCIBlockEventsAtHeight(context.Context, *GetABCIBlockEventsAtHeightRequest) (*GetABCIBlockEventsAtHeightResponse, error) + mustEmbedUnimplementedEventProviderAPIServer() +} + +// UnimplementedEventProviderAPIServer must be embedded to have forward compatible implementations. +type UnimplementedEventProviderAPIServer struct { +} + +func (UnimplementedEventProviderAPIServer) GetLatestHeight(context.Context, *GetLatestHeightRequest) (*GetLatestHeightResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetLatestHeight not implemented") +} +func (UnimplementedEventProviderAPIServer) StreamBlockEvents(*StreamBlockEventsRequest, EventProviderAPI_StreamBlockEventsServer) error { + return status.Errorf(codes.Unimplemented, "method StreamBlockEvents not implemented") +} +func (UnimplementedEventProviderAPIServer) GetBlockEventsRPC(context.Context, *GetBlockEventsRPCRequest) (*GetBlockEventsRPCResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetBlockEventsRPC not implemented") +} +func (UnimplementedEventProviderAPIServer) GetCustomEventsRPC(context.Context, *GetCustomEventsRPCRequest) (*GetCustomEventsRPCResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetCustomEventsRPC not implemented") +} +func (UnimplementedEventProviderAPIServer) GetABCIBlockEvents(context.Context, *GetABCIBlockEventsRequest) (*GetABCIBlockEventsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetABCIBlockEvents not implemented") +} +func (UnimplementedEventProviderAPIServer) GetABCIBlockEventsAtHeight(context.Context, *GetABCIBlockEventsAtHeightRequest) (*GetABCIBlockEventsAtHeightResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetABCIBlockEventsAtHeight not implemented") +} +func (UnimplementedEventProviderAPIServer) mustEmbedUnimplementedEventProviderAPIServer() {} + +// UnsafeEventProviderAPIServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to EventProviderAPIServer will +// result in compilation errors. +type UnsafeEventProviderAPIServer interface { + mustEmbedUnimplementedEventProviderAPIServer() +} + +func RegisterEventProviderAPIServer(s grpc.ServiceRegistrar, srv EventProviderAPIServer) { + s.RegisterService(&EventProviderAPI_ServiceDesc, srv) +} + +func _EventProviderAPI_GetLatestHeight_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetLatestHeightRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(EventProviderAPIServer).GetLatestHeight(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/event_provider_api.EventProviderAPI/GetLatestHeight", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(EventProviderAPIServer).GetLatestHeight(ctx, req.(*GetLatestHeightRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _EventProviderAPI_StreamBlockEvents_Handler(srv interface{}, stream grpc.ServerStream) error { + m := new(StreamBlockEventsRequest) + if err := stream.RecvMsg(m); err != nil { + return err + } + return srv.(EventProviderAPIServer).StreamBlockEvents(m, &eventProviderAPIStreamBlockEventsServer{stream}) +} + +type EventProviderAPI_StreamBlockEventsServer interface { + Send(*StreamBlockEventsResponse) error + grpc.ServerStream +} + +type eventProviderAPIStreamBlockEventsServer struct { + grpc.ServerStream +} + +func (x *eventProviderAPIStreamBlockEventsServer) Send(m *StreamBlockEventsResponse) error { + return x.ServerStream.SendMsg(m) +} + +func _EventProviderAPI_GetBlockEventsRPC_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetBlockEventsRPCRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(EventProviderAPIServer).GetBlockEventsRPC(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/event_provider_api.EventProviderAPI/GetBlockEventsRPC", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(EventProviderAPIServer).GetBlockEventsRPC(ctx, req.(*GetBlockEventsRPCRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _EventProviderAPI_GetCustomEventsRPC_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetCustomEventsRPCRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(EventProviderAPIServer).GetCustomEventsRPC(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/event_provider_api.EventProviderAPI/GetCustomEventsRPC", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(EventProviderAPIServer).GetCustomEventsRPC(ctx, req.(*GetCustomEventsRPCRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _EventProviderAPI_GetABCIBlockEvents_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetABCIBlockEventsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(EventProviderAPIServer).GetABCIBlockEvents(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/event_provider_api.EventProviderAPI/GetABCIBlockEvents", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(EventProviderAPIServer).GetABCIBlockEvents(ctx, req.(*GetABCIBlockEventsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _EventProviderAPI_GetABCIBlockEventsAtHeight_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetABCIBlockEventsAtHeightRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(EventProviderAPIServer).GetABCIBlockEventsAtHeight(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/event_provider_api.EventProviderAPI/GetABCIBlockEventsAtHeight", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(EventProviderAPIServer).GetABCIBlockEventsAtHeight(ctx, req.(*GetABCIBlockEventsAtHeightRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// EventProviderAPI_ServiceDesc is the grpc.ServiceDesc for EventProviderAPI service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var EventProviderAPI_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "event_provider_api.EventProviderAPI", + HandlerType: (*EventProviderAPIServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "GetLatestHeight", + Handler: _EventProviderAPI_GetLatestHeight_Handler, + }, + { + MethodName: "GetBlockEventsRPC", + Handler: _EventProviderAPI_GetBlockEventsRPC_Handler, + }, + { + MethodName: "GetCustomEventsRPC", + Handler: _EventProviderAPI_GetCustomEventsRPC_Handler, + }, + { + MethodName: "GetABCIBlockEvents", + Handler: _EventProviderAPI_GetABCIBlockEvents_Handler, + }, + { + MethodName: "GetABCIBlockEventsAtHeight", + Handler: _EventProviderAPI_GetABCIBlockEventsAtHeight_Handler, + }, + }, + Streams: []grpc.StreamDesc{ + { + StreamName: "StreamBlockEvents", + Handler: _EventProviderAPI_StreamBlockEvents_Handler, + ServerStreams: true, + }, + }, + Metadata: "goadesign_goagen_event_provider_api.proto", +} diff --git a/exchange/exchange_rpc/pb/goadesign_goagen_injective_exchange_rpc.pb.go b/exchange/exchange_rpc/pb/goadesign_goagen_injective_exchange_rpc.pb.go index 9011281f..9b02dbe9 100644 --- a/exchange/exchange_rpc/pb/goadesign_goagen_injective_exchange_rpc.pb.go +++ b/exchange/exchange_rpc/pb/goadesign_goagen_injective_exchange_rpc.pb.go @@ -8,7 +8,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.30.0 -// protoc v3.19.4 +// protoc v3.21.12 // source: goadesign_goagen_injective_exchange_rpc.proto package injective_exchange_rpcpb @@ -206,7 +206,7 @@ type PrepareTxRequest struct { Fee *CosmosTxFee `protobuf:"bytes,6,opt,name=fee,proto3" json:"fee,omitempty"` // List of Cosmos proto3-encoded Msgs to include in a single tx Msgs [][]byte `protobuf:"bytes,7,rep,name=msgs,proto3" json:"msgs,omitempty"` - // The wrapper of the EIP712 message, V1 or V2 + // The wrapper of the EIP712 message, 'v1'/'v2' or 'V1'/'V2' Eip712Wrapper string `protobuf:"bytes,8,opt,name=eip712_wrapper,json=eip712Wrapper,proto3" json:"eip712_wrapper,omitempty"` } @@ -515,6 +515,174 @@ func (x *PrepareTxResponse) GetFeePayerSig() string { return "" } +type PrepareEip712Request struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Specify chainID for the target tx + ChainId uint64 `protobuf:"varint,1,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"` + // Specify Ethereum address of a signer + SignerAddress string `protobuf:"bytes,2,opt,name=signer_address,json=signerAddress,proto3" json:"signer_address,omitempty"` + // Sequence number of the transaction signer + Sequence uint64 `protobuf:"varint,3,opt,name=sequence,proto3" json:"sequence,omitempty"` + // Account number of the transaction signer + AccountNumber uint64 `protobuf:"varint,4,opt,name=account_number,json=accountNumber,proto3" json:"account_number,omitempty"` + // Textual memo information to attach with tx + Memo string `protobuf:"bytes,5,opt,name=memo,proto3" json:"memo,omitempty"` + // Block height until which the transaction is valid. + TimeoutHeight uint64 `protobuf:"varint,6,opt,name=timeout_height,json=timeoutHeight,proto3" json:"timeout_height,omitempty"` + // Transaction fee details. + Fee *CosmosTxFee `protobuf:"bytes,7,opt,name=fee,proto3" json:"fee,omitempty"` + // List of Cosmos proto3-encoded Msgs to include in a single tx + Msgs [][]byte `protobuf:"bytes,8,rep,name=msgs,proto3" json:"msgs,omitempty"` + // The wrapper of the EIP712 message, 'v1'/'v2' or 'V1'/'V2' + Eip712Wrapper string `protobuf:"bytes,9,opt,name=eip712_wrapper,json=eip712Wrapper,proto3" json:"eip712_wrapper,omitempty"` +} + +func (x *PrepareEip712Request) Reset() { + *x = PrepareEip712Request{} + if protoimpl.UnsafeEnabled { + mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PrepareEip712Request) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PrepareEip712Request) ProtoMessage() {} + +func (x *PrepareEip712Request) ProtoReflect() protoreflect.Message { + mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PrepareEip712Request.ProtoReflect.Descriptor instead. +func (*PrepareEip712Request) Descriptor() ([]byte, []int) { + return file_goadesign_goagen_injective_exchange_rpc_proto_rawDescGZIP(), []int{6} +} + +func (x *PrepareEip712Request) GetChainId() uint64 { + if x != nil { + return x.ChainId + } + return 0 +} + +func (x *PrepareEip712Request) GetSignerAddress() string { + if x != nil { + return x.SignerAddress + } + return "" +} + +func (x *PrepareEip712Request) GetSequence() uint64 { + if x != nil { + return x.Sequence + } + return 0 +} + +func (x *PrepareEip712Request) GetAccountNumber() uint64 { + if x != nil { + return x.AccountNumber + } + return 0 +} + +func (x *PrepareEip712Request) GetMemo() string { + if x != nil { + return x.Memo + } + return "" +} + +func (x *PrepareEip712Request) GetTimeoutHeight() uint64 { + if x != nil { + return x.TimeoutHeight + } + return 0 +} + +func (x *PrepareEip712Request) GetFee() *CosmosTxFee { + if x != nil { + return x.Fee + } + return nil +} + +func (x *PrepareEip712Request) GetMsgs() [][]byte { + if x != nil { + return x.Msgs + } + return nil +} + +func (x *PrepareEip712Request) GetEip712Wrapper() string { + if x != nil { + return x.Eip712Wrapper + } + return "" +} + +type PrepareEip712Response struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // EIP712-compatible message suitable for signing with eth_signTypedData_v4 + Data string `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` +} + +func (x *PrepareEip712Response) Reset() { + *x = PrepareEip712Response{} + if protoimpl.UnsafeEnabled { + mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PrepareEip712Response) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PrepareEip712Response) ProtoMessage() {} + +func (x *PrepareEip712Response) ProtoReflect() protoreflect.Message { + mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PrepareEip712Response.ProtoReflect.Descriptor instead. +func (*PrepareEip712Response) Descriptor() ([]byte, []int) { + return file_goadesign_goagen_injective_exchange_rpc_proto_rawDescGZIP(), []int{7} +} + +func (x *PrepareEip712Response) GetData() string { + if x != nil { + return x.Data + } + return "" +} + type BroadcastTxRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -541,7 +709,7 @@ type BroadcastTxRequest struct { func (x *BroadcastTxRequest) Reset() { *x = BroadcastTxRequest{} if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[6] + mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -554,7 +722,7 @@ func (x *BroadcastTxRequest) String() string { func (*BroadcastTxRequest) ProtoMessage() {} func (x *BroadcastTxRequest) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[6] + mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -567,7 +735,7 @@ func (x *BroadcastTxRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use BroadcastTxRequest.ProtoReflect.Descriptor instead. func (*BroadcastTxRequest) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_exchange_rpc_proto_rawDescGZIP(), []int{6} + return file_goadesign_goagen_injective_exchange_rpc_proto_rawDescGZIP(), []int{8} } func (x *BroadcastTxRequest) GetChainId() uint64 { @@ -640,7 +808,7 @@ type CosmosPubKey struct { func (x *CosmosPubKey) Reset() { *x = CosmosPubKey{} if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[7] + mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -653,7 +821,7 @@ func (x *CosmosPubKey) String() string { func (*CosmosPubKey) ProtoMessage() {} func (x *CosmosPubKey) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[7] + mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -666,7 +834,7 @@ func (x *CosmosPubKey) ProtoReflect() protoreflect.Message { // Deprecated: Use CosmosPubKey.ProtoReflect.Descriptor instead. func (*CosmosPubKey) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_exchange_rpc_proto_rawDescGZIP(), []int{7} + return file_goadesign_goagen_injective_exchange_rpc_proto_rawDescGZIP(), []int{9} } func (x *CosmosPubKey) GetType() string { @@ -710,7 +878,7 @@ type BroadcastTxResponse struct { func (x *BroadcastTxResponse) Reset() { *x = BroadcastTxResponse{} if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[8] + mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -723,7 +891,7 @@ func (x *BroadcastTxResponse) String() string { func (*BroadcastTxResponse) ProtoMessage() {} func (x *BroadcastTxResponse) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[8] + mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -736,7 +904,7 @@ func (x *BroadcastTxResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use BroadcastTxResponse.ProtoReflect.Descriptor instead. func (*BroadcastTxResponse) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_exchange_rpc_proto_rawDescGZIP(), []int{8} + return file_goadesign_goagen_injective_exchange_rpc_proto_rawDescGZIP(), []int{10} } func (x *BroadcastTxResponse) GetTxHash() string { @@ -817,7 +985,7 @@ type PrepareCosmosTxRequest struct { func (x *PrepareCosmosTxRequest) Reset() { *x = PrepareCosmosTxRequest{} if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[9] + mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -830,7 +998,7 @@ func (x *PrepareCosmosTxRequest) String() string { func (*PrepareCosmosTxRequest) ProtoMessage() {} func (x *PrepareCosmosTxRequest) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[9] + mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -843,7 +1011,7 @@ func (x *PrepareCosmosTxRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use PrepareCosmosTxRequest.ProtoReflect.Descriptor instead. func (*PrepareCosmosTxRequest) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_exchange_rpc_proto_rawDescGZIP(), []int{9} + return file_goadesign_goagen_injective_exchange_rpc_proto_rawDescGZIP(), []int{11} } func (x *PrepareCosmosTxRequest) GetChainId() uint64 { @@ -910,7 +1078,7 @@ type PrepareCosmosTxResponse struct { func (x *PrepareCosmosTxResponse) Reset() { *x = PrepareCosmosTxResponse{} if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[10] + mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -923,7 +1091,7 @@ func (x *PrepareCosmosTxResponse) String() string { func (*PrepareCosmosTxResponse) ProtoMessage() {} func (x *PrepareCosmosTxResponse) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[10] + mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -936,7 +1104,7 @@ func (x *PrepareCosmosTxResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use PrepareCosmosTxResponse.ProtoReflect.Descriptor instead. func (*PrepareCosmosTxResponse) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_exchange_rpc_proto_rawDescGZIP(), []int{10} + return file_goadesign_goagen_injective_exchange_rpc_proto_rawDescGZIP(), []int{12} } func (x *PrepareCosmosTxResponse) GetTx() []byte { @@ -999,7 +1167,7 @@ type BroadcastCosmosTxRequest struct { func (x *BroadcastCosmosTxRequest) Reset() { *x = BroadcastCosmosTxRequest{} if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[11] + mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1012,7 +1180,7 @@ func (x *BroadcastCosmosTxRequest) String() string { func (*BroadcastCosmosTxRequest) ProtoMessage() {} func (x *BroadcastCosmosTxRequest) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[11] + mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1025,7 +1193,7 @@ func (x *BroadcastCosmosTxRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use BroadcastCosmosTxRequest.ProtoReflect.Descriptor instead. func (*BroadcastCosmosTxRequest) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_exchange_rpc_proto_rawDescGZIP(), []int{11} + return file_goadesign_goagen_injective_exchange_rpc_proto_rawDescGZIP(), []int{13} } func (x *BroadcastCosmosTxRequest) GetTx() []byte { @@ -1083,7 +1251,7 @@ type BroadcastCosmosTxResponse struct { func (x *BroadcastCosmosTxResponse) Reset() { *x = BroadcastCosmosTxResponse{} if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[12] + mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1096,7 +1264,7 @@ func (x *BroadcastCosmosTxResponse) String() string { func (*BroadcastCosmosTxResponse) ProtoMessage() {} func (x *BroadcastCosmosTxResponse) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[12] + mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1109,7 +1277,7 @@ func (x *BroadcastCosmosTxResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use BroadcastCosmosTxResponse.ProtoReflect.Descriptor instead. func (*BroadcastCosmosTxResponse) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_exchange_rpc_proto_rawDescGZIP(), []int{12} + return file_goadesign_goagen_injective_exchange_rpc_proto_rawDescGZIP(), []int{14} } func (x *BroadcastCosmosTxResponse) GetTxHash() string { @@ -1177,7 +1345,7 @@ type GetFeePayerRequest struct { func (x *GetFeePayerRequest) Reset() { *x = GetFeePayerRequest{} if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[13] + mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1190,7 +1358,7 @@ func (x *GetFeePayerRequest) String() string { func (*GetFeePayerRequest) ProtoMessage() {} func (x *GetFeePayerRequest) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[13] + mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1203,7 +1371,7 @@ func (x *GetFeePayerRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetFeePayerRequest.ProtoReflect.Descriptor instead. func (*GetFeePayerRequest) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_exchange_rpc_proto_rawDescGZIP(), []int{13} + return file_goadesign_goagen_injective_exchange_rpc_proto_rawDescGZIP(), []int{15} } type GetFeePayerResponse struct { @@ -1220,7 +1388,7 @@ type GetFeePayerResponse struct { func (x *GetFeePayerResponse) Reset() { *x = GetFeePayerResponse{} if protoimpl.UnsafeEnabled { - mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[14] + mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1233,7 +1401,7 @@ func (x *GetFeePayerResponse) String() string { func (*GetFeePayerResponse) ProtoMessage() {} func (x *GetFeePayerResponse) ProtoReflect() protoreflect.Message { - mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[14] + mi := &file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1246,7 +1414,7 @@ func (x *GetFeePayerResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetFeePayerResponse.ProtoReflect.Descriptor instead. func (*GetFeePayerResponse) Descriptor() ([]byte, []int) { - return file_goadesign_goagen_injective_exchange_rpc_proto_rawDescGZIP(), []int{14} + return file_goadesign_goagen_injective_exchange_rpc_proto_rawDescGZIP(), []int{16} } func (x *GetFeePayerResponse) GetFeePayer() string { @@ -1328,148 +1496,179 @@ var file_goadesign_goagen_injective_exchange_rpc_proto_rawDesc = []byte{ 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x65, 0x65, 0x50, 0x61, 0x79, 0x65, 0x72, 0x12, 0x22, 0x0a, 0x0d, 0x66, 0x65, 0x65, 0x5f, 0x70, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x73, 0x69, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66, 0x65, 0x65, 0x50, 0x61, 0x79, 0x65, 0x72, 0x53, 0x69, - 0x67, 0x22, 0x85, 0x02, 0x0a, 0x12, 0x42, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x54, - 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x68, 0x61, 0x69, - 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x63, 0x68, 0x61, 0x69, - 0x6e, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, - 0x02, 0x74, 0x78, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x73, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x0c, 0x52, 0x04, 0x6d, 0x73, 0x67, 0x73, 0x12, 0x3d, 0x0a, 0x07, 0x70, 0x75, 0x62, 0x5f, 0x6b, - 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, - 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, - 0x63, 0x2e, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x52, 0x06, - 0x70, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, - 0x75, 0x72, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, - 0x74, 0x75, 0x72, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x65, 0x65, 0x5f, 0x70, 0x61, 0x79, 0x65, - 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x65, 0x65, 0x50, 0x61, 0x79, 0x65, - 0x72, 0x12, 0x22, 0x0a, 0x0d, 0x66, 0x65, 0x65, 0x5f, 0x70, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x73, - 0x69, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66, 0x65, 0x65, 0x50, 0x61, 0x79, - 0x65, 0x72, 0x53, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0x34, 0x0a, 0x0c, 0x43, 0x6f, 0x73, - 0x6d, 0x6f, 0x73, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, - 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x22, - 0xd9, 0x01, 0x0a, 0x13, 0x42, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x54, 0x78, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x78, 0x5f, 0x68, 0x61, - 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, - 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x12, - 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1c, - 0x0a, 0x09, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, - 0x63, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, - 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, - 0x64, 0x61, 0x74, 0x61, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x61, 0x77, 0x5f, 0x6c, 0x6f, 0x67, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x61, 0x77, 0x4c, 0x6f, 0x67, 0x12, 0x1c, 0x0a, - 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0xe0, 0x01, 0x0a, 0x16, - 0x50, 0x72, 0x65, 0x70, 0x61, 0x72, 0x65, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x54, 0x78, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x49, - 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, - 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x65, 0x6e, 0x64, 0x65, - 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x65, 0x6d, 0x6f, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6d, 0x65, 0x6d, 0x6f, 0x12, 0x25, 0x0a, 0x0e, - 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x48, 0x65, 0x69, - 0x67, 0x68, 0x74, 0x12, 0x35, 0x0a, 0x03, 0x66, 0x65, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x23, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, + 0x67, 0x22, 0xc8, 0x02, 0x0a, 0x14, 0x50, 0x72, 0x65, 0x70, 0x61, 0x72, 0x65, 0x45, 0x69, 0x70, + 0x37, 0x31, 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x68, + 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x63, 0x68, + 0x61, 0x69, 0x6e, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x5f, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, + 0x69, 0x67, 0x6e, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1a, 0x0a, 0x08, + 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, + 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x0d, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, + 0x12, 0x0a, 0x04, 0x6d, 0x65, 0x6d, 0x6f, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6d, + 0x65, 0x6d, 0x6f, 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x68, + 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x74, 0x69, 0x6d, + 0x65, 0x6f, 0x75, 0x74, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x35, 0x0a, 0x03, 0x66, 0x65, + 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, + 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, + 0x2e, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x54, 0x78, 0x46, 0x65, 0x65, 0x52, 0x03, 0x66, 0x65, + 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x73, 0x67, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0c, 0x52, + 0x04, 0x6d, 0x73, 0x67, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x69, 0x70, 0x37, 0x31, 0x32, 0x5f, + 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, + 0x69, 0x70, 0x37, 0x31, 0x32, 0x57, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x22, 0x2b, 0x0a, 0x15, + 0x50, 0x72, 0x65, 0x70, 0x61, 0x72, 0x65, 0x45, 0x69, 0x70, 0x37, 0x31, 0x32, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x85, 0x02, 0x0a, 0x12, 0x42, 0x72, + 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x54, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x19, 0x0a, 0x08, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x07, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x74, + 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x02, 0x74, 0x78, 0x12, 0x12, 0x0a, 0x04, 0x6d, + 0x73, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x04, 0x6d, 0x73, 0x67, 0x73, 0x12, + 0x3d, 0x0a, 0x07, 0x70, 0x75, 0x62, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x24, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, - 0x54, 0x78, 0x46, 0x65, 0x65, 0x52, 0x03, 0x66, 0x65, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x73, - 0x67, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x04, 0x6d, 0x73, 0x67, 0x73, 0x22, 0xfa, - 0x01, 0x0a, 0x17, 0x50, 0x72, 0x65, 0x70, 0x61, 0x72, 0x65, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, - 0x54, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x78, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x02, 0x74, 0x78, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x69, - 0x67, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, - 0x69, 0x67, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x20, 0x0a, 0x0c, 0x70, 0x75, 0x62, 0x5f, 0x6b, - 0x65, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, - 0x75, 0x62, 0x4b, 0x65, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x65, 0x65, - 0x5f, 0x70, 0x61, 0x79, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x65, - 0x65, 0x50, 0x61, 0x79, 0x65, 0x72, 0x12, 0x22, 0x0a, 0x0d, 0x66, 0x65, 0x65, 0x5f, 0x70, 0x61, - 0x79, 0x65, 0x72, 0x5f, 0x73, 0x69, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66, - 0x65, 0x65, 0x50, 0x61, 0x79, 0x65, 0x72, 0x53, 0x69, 0x67, 0x12, 0x4f, 0x0a, 0x11, 0x66, 0x65, - 0x65, 0x5f, 0x70, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x70, 0x75, 0x62, 0x5f, 0x6b, 0x65, 0x79, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, - 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, - 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x52, 0x0e, 0x66, 0x65, 0x65, - 0x50, 0x61, 0x79, 0x65, 0x72, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x22, 0xae, 0x01, 0x0a, 0x18, - 0x42, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x54, - 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x78, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0c, 0x52, 0x02, 0x74, 0x78, 0x12, 0x3d, 0x0a, 0x07, 0x70, 0x75, 0x62, 0x5f, - 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x69, 0x6e, 0x6a, 0x65, - 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, - 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x52, - 0x06, 0x70, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, - 0x74, 0x75, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, - 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x5f, - 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, - 0x65, 0x6e, 0x64, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0xdf, 0x01, 0x0a, - 0x19, 0x42, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, - 0x54, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x78, - 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x78, 0x48, - 0x61, 0x73, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x12, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, - 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x63, - 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x61, 0x77, 0x5f, 0x6c, - 0x6f, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x61, 0x77, 0x4c, 0x6f, 0x67, - 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0x14, - 0x0a, 0x12, 0x47, 0x65, 0x74, 0x46, 0x65, 0x65, 0x50, 0x61, 0x79, 0x65, 0x72, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x22, 0x83, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x46, 0x65, 0x65, 0x50, - 0x61, 0x79, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x09, - 0x66, 0x65, 0x65, 0x5f, 0x70, 0x61, 0x79, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x66, 0x65, 0x65, 0x50, 0x61, 0x79, 0x65, 0x72, 0x12, 0x4f, 0x0a, 0x11, 0x66, 0x65, 0x65, - 0x5f, 0x70, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x70, 0x75, 0x62, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, - 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, - 0x73, 0x6d, 0x6f, 0x73, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x52, 0x0e, 0x66, 0x65, 0x65, 0x50, - 0x61, 0x79, 0x65, 0x72, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x32, 0x8c, 0x05, 0x0a, 0x14, 0x49, - 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x52, 0x50, 0x43, 0x12, 0x54, 0x0a, 0x05, 0x47, 0x65, 0x74, 0x54, 0x78, 0x12, 0x24, 0x2e, 0x69, + 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x52, 0x06, 0x70, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x12, 0x1c, + 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x1b, 0x0a, 0x09, + 0x66, 0x65, 0x65, 0x5f, 0x70, 0x61, 0x79, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x66, 0x65, 0x65, 0x50, 0x61, 0x79, 0x65, 0x72, 0x12, 0x22, 0x0a, 0x0d, 0x66, 0x65, 0x65, + 0x5f, 0x70, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x73, 0x69, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x66, 0x65, 0x65, 0x50, 0x61, 0x79, 0x65, 0x72, 0x53, 0x69, 0x67, 0x12, 0x12, 0x0a, + 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6d, 0x6f, 0x64, + 0x65, 0x22, 0x34, 0x0a, 0x0c, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x50, 0x75, 0x62, 0x4b, 0x65, + 0x79, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x22, 0xd9, 0x01, 0x0a, 0x13, 0x42, 0x72, 0x6f, 0x61, + 0x64, 0x63, 0x61, 0x73, 0x74, 0x54, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x17, 0x0a, 0x07, 0x74, 0x78, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, + 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x12, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x64, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x17, 0x0a, 0x07, + 0x72, 0x61, 0x77, 0x5f, 0x6c, 0x6f, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, + 0x61, 0x77, 0x4c, 0x6f, 0x67, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x22, 0xe0, 0x01, 0x0a, 0x16, 0x50, 0x72, 0x65, 0x70, 0x61, 0x72, 0x65, 0x43, + 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x54, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, + 0x0a, 0x08, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x07, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x65, 0x6e, + 0x64, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0d, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x65, 0x6d, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6d, 0x65, 0x6d, 0x6f, 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, + 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x74, 0x69, + 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x35, 0x0a, 0x03, 0x66, + 0x65, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, + 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, + 0x63, 0x2e, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x54, 0x78, 0x46, 0x65, 0x65, 0x52, 0x03, 0x66, + 0x65, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x73, 0x67, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0c, + 0x52, 0x04, 0x6d, 0x73, 0x67, 0x73, 0x22, 0xfa, 0x01, 0x0a, 0x17, 0x50, 0x72, 0x65, 0x70, 0x61, + 0x72, 0x65, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x54, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x02, + 0x74, 0x78, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x69, 0x67, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x12, + 0x20, 0x0a, 0x0c, 0x70, 0x75, 0x62, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x65, 0x65, 0x5f, 0x70, 0x61, 0x79, 0x65, 0x72, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x65, 0x65, 0x50, 0x61, 0x79, 0x65, 0x72, 0x12, 0x22, + 0x0a, 0x0d, 0x66, 0x65, 0x65, 0x5f, 0x70, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x73, 0x69, 0x67, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66, 0x65, 0x65, 0x50, 0x61, 0x79, 0x65, 0x72, 0x53, + 0x69, 0x67, 0x12, 0x4f, 0x0a, 0x11, 0x66, 0x65, 0x65, 0x5f, 0x70, 0x61, 0x79, 0x65, 0x72, 0x5f, + 0x70, 0x75, 0x62, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, + 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x50, 0x75, 0x62, + 0x4b, 0x65, 0x79, 0x52, 0x0e, 0x66, 0x65, 0x65, 0x50, 0x61, 0x79, 0x65, 0x72, 0x50, 0x75, 0x62, + 0x4b, 0x65, 0x79, 0x22, 0xae, 0x01, 0x0a, 0x18, 0x42, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, + 0x74, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x54, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x02, 0x74, 0x78, + 0x12, 0x3d, 0x0a, 0x07, 0x70, 0x75, 0x62, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x24, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, + 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x52, 0x06, 0x70, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x12, + 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x25, 0x0a, + 0x0e, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x41, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x22, 0xdf, 0x01, 0x0a, 0x19, 0x42, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, + 0x73, 0x74, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x54, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x78, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x68, + 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x12, 0x52, 0x06, 0x68, 0x65, 0x69, + 0x67, 0x68, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x64, + 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, + 0x64, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, + 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, + 0x17, 0x0a, 0x07, 0x72, 0x61, 0x77, 0x5f, 0x6c, 0x6f, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x72, 0x61, 0x77, 0x4c, 0x6f, 0x67, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0x14, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x46, 0x65, 0x65, + 0x50, 0x61, 0x79, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x83, 0x01, 0x0a, + 0x13, 0x47, 0x65, 0x74, 0x46, 0x65, 0x65, 0x50, 0x61, 0x79, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x65, 0x65, 0x5f, 0x70, 0x61, 0x79, 0x65, + 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x65, 0x65, 0x50, 0x61, 0x79, 0x65, + 0x72, 0x12, 0x4f, 0x0a, 0x11, 0x66, 0x65, 0x65, 0x5f, 0x70, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x70, + 0x75, 0x62, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, - 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x54, - 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x60, 0x0a, 0x09, 0x50, 0x72, 0x65, - 0x70, 0x61, 0x72, 0x65, 0x54, 0x78, 0x12, 0x28, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, - 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, - 0x50, 0x72, 0x65, 0x70, 0x61, 0x72, 0x65, 0x54, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x29, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x72, 0x65, 0x70, 0x61, 0x72, - 0x65, 0x54, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x66, 0x0a, 0x0b, 0x42, - 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x54, 0x78, 0x12, 0x2a, 0x2e, 0x69, 0x6e, 0x6a, + 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x50, 0x75, 0x62, 0x4b, + 0x65, 0x79, 0x52, 0x0e, 0x66, 0x65, 0x65, 0x50, 0x61, 0x79, 0x65, 0x72, 0x50, 0x75, 0x62, 0x4b, + 0x65, 0x79, 0x32, 0xfa, 0x05, 0x0a, 0x14, 0x49, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x50, 0x43, 0x12, 0x54, 0x0a, 0x05, 0x47, + 0x65, 0x74, 0x54, 0x78, 0x12, 0x24, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, + 0x74, 0x54, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, - 0x72, 0x70, 0x63, 0x2e, 0x42, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x54, 0x78, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, - 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, - 0x42, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x54, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x72, 0x0a, 0x0f, 0x50, 0x72, 0x65, 0x70, 0x61, 0x72, 0x65, 0x43, 0x6f, - 0x73, 0x6d, 0x6f, 0x73, 0x54, 0x78, 0x12, 0x2e, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, - 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, - 0x50, 0x72, 0x65, 0x70, 0x61, 0x72, 0x65, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x54, 0x78, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, - 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, - 0x50, 0x72, 0x65, 0x70, 0x61, 0x72, 0x65, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x54, 0x78, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x78, 0x0a, 0x11, 0x42, 0x72, 0x6f, 0x61, 0x64, - 0x63, 0x61, 0x73, 0x74, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x54, 0x78, 0x12, 0x30, 0x2e, 0x69, - 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x42, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x43, - 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x54, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, + 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x60, 0x0a, 0x09, 0x50, 0x72, 0x65, 0x70, 0x61, 0x72, 0x65, 0x54, 0x78, 0x12, 0x28, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x42, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, - 0x74, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x54, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x66, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x46, 0x65, 0x65, 0x50, 0x61, 0x79, 0x65, 0x72, + 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x72, 0x65, 0x70, 0x61, 0x72, 0x65, 0x54, + 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, + 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, + 0x63, 0x2e, 0x50, 0x72, 0x65, 0x70, 0x61, 0x72, 0x65, 0x54, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x6c, 0x0a, 0x0d, 0x50, 0x72, 0x65, 0x70, 0x61, 0x72, 0x65, 0x45, 0x69, + 0x70, 0x37, 0x31, 0x32, 0x12, 0x2c, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x72, + 0x65, 0x70, 0x61, 0x72, 0x65, 0x45, 0x69, 0x70, 0x37, 0x31, 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, + 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x72, 0x65, 0x70, + 0x61, 0x72, 0x65, 0x45, 0x69, 0x70, 0x37, 0x31, 0x32, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x66, 0x0a, 0x0b, 0x42, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x54, 0x78, 0x12, 0x2a, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x65, 0x65, - 0x50, 0x61, 0x79, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x69, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x42, 0x72, 0x6f, 0x61, 0x64, 0x63, + 0x61, 0x73, 0x74, 0x54, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x69, + 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x42, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x54, + 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x72, 0x0a, 0x0f, 0x50, 0x72, 0x65, + 0x70, 0x61, 0x72, 0x65, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x54, 0x78, 0x12, 0x2e, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x65, 0x65, 0x50, 0x61, 0x79, 0x65, - 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x1b, 0x5a, 0x19, 0x2f, 0x69, 0x6e, - 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x5f, 0x72, 0x70, 0x63, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x72, 0x65, 0x70, 0x61, 0x72, 0x65, 0x43, 0x6f, 0x73, + 0x6d, 0x6f, 0x73, 0x54, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x69, + 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x72, 0x65, 0x70, 0x61, 0x72, 0x65, 0x43, 0x6f, 0x73, + 0x6d, 0x6f, 0x73, 0x54, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x78, 0x0a, + 0x11, 0x42, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x54, 0x78, 0x12, 0x30, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, + 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x42, 0x72, 0x6f, 0x61, + 0x64, 0x63, 0x61, 0x73, 0x74, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x54, 0x78, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x42, 0x72, + 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x54, 0x78, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x66, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x46, 0x65, + 0x65, 0x50, 0x61, 0x79, 0x65, 0x72, 0x12, 0x2a, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, + 0x76, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, + 0x47, 0x65, 0x74, 0x46, 0x65, 0x65, 0x50, 0x61, 0x79, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, + 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x46, + 0x65, 0x65, 0x50, 0x61, 0x79, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, + 0x1b, 0x5a, 0x19, 0x2f, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, + 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1484,7 +1683,7 @@ func file_goadesign_goagen_injective_exchange_rpc_proto_rawDescGZIP() []byte { return file_goadesign_goagen_injective_exchange_rpc_proto_rawDescData } -var file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes = make([]protoimpl.MessageInfo, 15) +var file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes = make([]protoimpl.MessageInfo, 17) var file_goadesign_goagen_injective_exchange_rpc_proto_goTypes = []interface{}{ (*GetTxRequest)(nil), // 0: injective_exchange_rpc.GetTxRequest (*GetTxResponse)(nil), // 1: injective_exchange_rpc.GetTxResponse @@ -1492,41 +1691,46 @@ var file_goadesign_goagen_injective_exchange_rpc_proto_goTypes = []interface{}{ (*CosmosTxFee)(nil), // 3: injective_exchange_rpc.CosmosTxFee (*CosmosCoin)(nil), // 4: injective_exchange_rpc.CosmosCoin (*PrepareTxResponse)(nil), // 5: injective_exchange_rpc.PrepareTxResponse - (*BroadcastTxRequest)(nil), // 6: injective_exchange_rpc.BroadcastTxRequest - (*CosmosPubKey)(nil), // 7: injective_exchange_rpc.CosmosPubKey - (*BroadcastTxResponse)(nil), // 8: injective_exchange_rpc.BroadcastTxResponse - (*PrepareCosmosTxRequest)(nil), // 9: injective_exchange_rpc.PrepareCosmosTxRequest - (*PrepareCosmosTxResponse)(nil), // 10: injective_exchange_rpc.PrepareCosmosTxResponse - (*BroadcastCosmosTxRequest)(nil), // 11: injective_exchange_rpc.BroadcastCosmosTxRequest - (*BroadcastCosmosTxResponse)(nil), // 12: injective_exchange_rpc.BroadcastCosmosTxResponse - (*GetFeePayerRequest)(nil), // 13: injective_exchange_rpc.GetFeePayerRequest - (*GetFeePayerResponse)(nil), // 14: injective_exchange_rpc.GetFeePayerResponse + (*PrepareEip712Request)(nil), // 6: injective_exchange_rpc.PrepareEip712Request + (*PrepareEip712Response)(nil), // 7: injective_exchange_rpc.PrepareEip712Response + (*BroadcastTxRequest)(nil), // 8: injective_exchange_rpc.BroadcastTxRequest + (*CosmosPubKey)(nil), // 9: injective_exchange_rpc.CosmosPubKey + (*BroadcastTxResponse)(nil), // 10: injective_exchange_rpc.BroadcastTxResponse + (*PrepareCosmosTxRequest)(nil), // 11: injective_exchange_rpc.PrepareCosmosTxRequest + (*PrepareCosmosTxResponse)(nil), // 12: injective_exchange_rpc.PrepareCosmosTxResponse + (*BroadcastCosmosTxRequest)(nil), // 13: injective_exchange_rpc.BroadcastCosmosTxRequest + (*BroadcastCosmosTxResponse)(nil), // 14: injective_exchange_rpc.BroadcastCosmosTxResponse + (*GetFeePayerRequest)(nil), // 15: injective_exchange_rpc.GetFeePayerRequest + (*GetFeePayerResponse)(nil), // 16: injective_exchange_rpc.GetFeePayerResponse } var file_goadesign_goagen_injective_exchange_rpc_proto_depIdxs = []int32{ 3, // 0: injective_exchange_rpc.PrepareTxRequest.fee:type_name -> injective_exchange_rpc.CosmosTxFee 4, // 1: injective_exchange_rpc.CosmosTxFee.price:type_name -> injective_exchange_rpc.CosmosCoin - 7, // 2: injective_exchange_rpc.BroadcastTxRequest.pub_key:type_name -> injective_exchange_rpc.CosmosPubKey - 3, // 3: injective_exchange_rpc.PrepareCosmosTxRequest.fee:type_name -> injective_exchange_rpc.CosmosTxFee - 7, // 4: injective_exchange_rpc.PrepareCosmosTxResponse.fee_payer_pub_key:type_name -> injective_exchange_rpc.CosmosPubKey - 7, // 5: injective_exchange_rpc.BroadcastCosmosTxRequest.pub_key:type_name -> injective_exchange_rpc.CosmosPubKey - 7, // 6: injective_exchange_rpc.GetFeePayerResponse.fee_payer_pub_key:type_name -> injective_exchange_rpc.CosmosPubKey - 0, // 7: injective_exchange_rpc.InjectiveExchangeRPC.GetTx:input_type -> injective_exchange_rpc.GetTxRequest - 2, // 8: injective_exchange_rpc.InjectiveExchangeRPC.PrepareTx:input_type -> injective_exchange_rpc.PrepareTxRequest - 6, // 9: injective_exchange_rpc.InjectiveExchangeRPC.BroadcastTx:input_type -> injective_exchange_rpc.BroadcastTxRequest - 9, // 10: injective_exchange_rpc.InjectiveExchangeRPC.PrepareCosmosTx:input_type -> injective_exchange_rpc.PrepareCosmosTxRequest - 11, // 11: injective_exchange_rpc.InjectiveExchangeRPC.BroadcastCosmosTx:input_type -> injective_exchange_rpc.BroadcastCosmosTxRequest - 13, // 12: injective_exchange_rpc.InjectiveExchangeRPC.GetFeePayer:input_type -> injective_exchange_rpc.GetFeePayerRequest - 1, // 13: injective_exchange_rpc.InjectiveExchangeRPC.GetTx:output_type -> injective_exchange_rpc.GetTxResponse - 5, // 14: injective_exchange_rpc.InjectiveExchangeRPC.PrepareTx:output_type -> injective_exchange_rpc.PrepareTxResponse - 8, // 15: injective_exchange_rpc.InjectiveExchangeRPC.BroadcastTx:output_type -> injective_exchange_rpc.BroadcastTxResponse - 10, // 16: injective_exchange_rpc.InjectiveExchangeRPC.PrepareCosmosTx:output_type -> injective_exchange_rpc.PrepareCosmosTxResponse - 12, // 17: injective_exchange_rpc.InjectiveExchangeRPC.BroadcastCosmosTx:output_type -> injective_exchange_rpc.BroadcastCosmosTxResponse - 14, // 18: injective_exchange_rpc.InjectiveExchangeRPC.GetFeePayer:output_type -> injective_exchange_rpc.GetFeePayerResponse - 13, // [13:19] is the sub-list for method output_type - 7, // [7:13] is the sub-list for method input_type - 7, // [7:7] is the sub-list for extension type_name - 7, // [7:7] is the sub-list for extension extendee - 0, // [0:7] is the sub-list for field type_name + 3, // 2: injective_exchange_rpc.PrepareEip712Request.fee:type_name -> injective_exchange_rpc.CosmosTxFee + 9, // 3: injective_exchange_rpc.BroadcastTxRequest.pub_key:type_name -> injective_exchange_rpc.CosmosPubKey + 3, // 4: injective_exchange_rpc.PrepareCosmosTxRequest.fee:type_name -> injective_exchange_rpc.CosmosTxFee + 9, // 5: injective_exchange_rpc.PrepareCosmosTxResponse.fee_payer_pub_key:type_name -> injective_exchange_rpc.CosmosPubKey + 9, // 6: injective_exchange_rpc.BroadcastCosmosTxRequest.pub_key:type_name -> injective_exchange_rpc.CosmosPubKey + 9, // 7: injective_exchange_rpc.GetFeePayerResponse.fee_payer_pub_key:type_name -> injective_exchange_rpc.CosmosPubKey + 0, // 8: injective_exchange_rpc.InjectiveExchangeRPC.GetTx:input_type -> injective_exchange_rpc.GetTxRequest + 2, // 9: injective_exchange_rpc.InjectiveExchangeRPC.PrepareTx:input_type -> injective_exchange_rpc.PrepareTxRequest + 6, // 10: injective_exchange_rpc.InjectiveExchangeRPC.PrepareEip712:input_type -> injective_exchange_rpc.PrepareEip712Request + 8, // 11: injective_exchange_rpc.InjectiveExchangeRPC.BroadcastTx:input_type -> injective_exchange_rpc.BroadcastTxRequest + 11, // 12: injective_exchange_rpc.InjectiveExchangeRPC.PrepareCosmosTx:input_type -> injective_exchange_rpc.PrepareCosmosTxRequest + 13, // 13: injective_exchange_rpc.InjectiveExchangeRPC.BroadcastCosmosTx:input_type -> injective_exchange_rpc.BroadcastCosmosTxRequest + 15, // 14: injective_exchange_rpc.InjectiveExchangeRPC.GetFeePayer:input_type -> injective_exchange_rpc.GetFeePayerRequest + 1, // 15: injective_exchange_rpc.InjectiveExchangeRPC.GetTx:output_type -> injective_exchange_rpc.GetTxResponse + 5, // 16: injective_exchange_rpc.InjectiveExchangeRPC.PrepareTx:output_type -> injective_exchange_rpc.PrepareTxResponse + 7, // 17: injective_exchange_rpc.InjectiveExchangeRPC.PrepareEip712:output_type -> injective_exchange_rpc.PrepareEip712Response + 10, // 18: injective_exchange_rpc.InjectiveExchangeRPC.BroadcastTx:output_type -> injective_exchange_rpc.BroadcastTxResponse + 12, // 19: injective_exchange_rpc.InjectiveExchangeRPC.PrepareCosmosTx:output_type -> injective_exchange_rpc.PrepareCosmosTxResponse + 14, // 20: injective_exchange_rpc.InjectiveExchangeRPC.BroadcastCosmosTx:output_type -> injective_exchange_rpc.BroadcastCosmosTxResponse + 16, // 21: injective_exchange_rpc.InjectiveExchangeRPC.GetFeePayer:output_type -> injective_exchange_rpc.GetFeePayerResponse + 15, // [15:22] is the sub-list for method output_type + 8, // [8:15] is the sub-list for method input_type + 8, // [8:8] is the sub-list for extension type_name + 8, // [8:8] is the sub-list for extension extendee + 0, // [0:8] is the sub-list for field type_name } func init() { file_goadesign_goagen_injective_exchange_rpc_proto_init() } @@ -1608,7 +1812,7 @@ func file_goadesign_goagen_injective_exchange_rpc_proto_init() { } } file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BroadcastTxRequest); i { + switch v := v.(*PrepareEip712Request); i { case 0: return &v.state case 1: @@ -1620,7 +1824,7 @@ func file_goadesign_goagen_injective_exchange_rpc_proto_init() { } } file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CosmosPubKey); i { + switch v := v.(*PrepareEip712Response); i { case 0: return &v.state case 1: @@ -1632,7 +1836,7 @@ func file_goadesign_goagen_injective_exchange_rpc_proto_init() { } } file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BroadcastTxResponse); i { + switch v := v.(*BroadcastTxRequest); i { case 0: return &v.state case 1: @@ -1644,7 +1848,7 @@ func file_goadesign_goagen_injective_exchange_rpc_proto_init() { } } file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PrepareCosmosTxRequest); i { + switch v := v.(*CosmosPubKey); i { case 0: return &v.state case 1: @@ -1656,7 +1860,7 @@ func file_goadesign_goagen_injective_exchange_rpc_proto_init() { } } file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PrepareCosmosTxResponse); i { + switch v := v.(*BroadcastTxResponse); i { case 0: return &v.state case 1: @@ -1668,7 +1872,7 @@ func file_goadesign_goagen_injective_exchange_rpc_proto_init() { } } file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BroadcastCosmosTxRequest); i { + switch v := v.(*PrepareCosmosTxRequest); i { case 0: return &v.state case 1: @@ -1680,7 +1884,7 @@ func file_goadesign_goagen_injective_exchange_rpc_proto_init() { } } file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BroadcastCosmosTxResponse); i { + switch v := v.(*PrepareCosmosTxResponse); i { case 0: return &v.state case 1: @@ -1692,7 +1896,7 @@ func file_goadesign_goagen_injective_exchange_rpc_proto_init() { } } file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetFeePayerRequest); i { + switch v := v.(*BroadcastCosmosTxRequest); i { case 0: return &v.state case 1: @@ -1704,6 +1908,30 @@ func file_goadesign_goagen_injective_exchange_rpc_proto_init() { } } file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BroadcastCosmosTxResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetFeePayerRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_goadesign_goagen_injective_exchange_rpc_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetFeePayerResponse); i { case 0: return &v.state @@ -1722,7 +1950,7 @@ func file_goadesign_goagen_injective_exchange_rpc_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_goadesign_goagen_injective_exchange_rpc_proto_rawDesc, NumEnums: 0, - NumMessages: 15, + NumMessages: 17, NumExtensions: 0, NumServices: 1, }, diff --git a/exchange/exchange_rpc/pb/goadesign_goagen_injective_exchange_rpc_grpc.pb.go b/exchange/exchange_rpc/pb/goadesign_goagen_injective_exchange_rpc_grpc.pb.go index c7e2827d..721f4ef7 100644 --- a/exchange/exchange_rpc/pb/goadesign_goagen_injective_exchange_rpc_grpc.pb.go +++ b/exchange/exchange_rpc/pb/goadesign_goagen_injective_exchange_rpc_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.2.0 -// - protoc v3.19.4 +// - protoc v3.21.12 // source: goadesign_goagen_injective_exchange_rpc.proto package injective_exchange_rpcpb @@ -26,6 +26,8 @@ type InjectiveExchangeRPCClient interface { GetTx(ctx context.Context, in *GetTxRequest, opts ...grpc.CallOption) (*GetTxResponse, error) // PrepareTx generates a Web3-signable body for a Cosmos transaction PrepareTx(ctx context.Context, in *PrepareTxRequest, opts ...grpc.CallOption) (*PrepareTxResponse, error) + // prepareEip712 generates EIP712 for an Injective Message + PrepareEip712(ctx context.Context, in *PrepareEip712Request, opts ...grpc.CallOption) (*PrepareEip712Response, error) // BroadcastTx broadcasts a signed Web3 transaction BroadcastTx(ctx context.Context, in *BroadcastTxRequest, opts ...grpc.CallOption) (*BroadcastTxResponse, error) // PrepareCosmosTx generates a Web3-signable body for a Cosmos transaction @@ -62,6 +64,15 @@ func (c *injectiveExchangeRPCClient) PrepareTx(ctx context.Context, in *PrepareT return out, nil } +func (c *injectiveExchangeRPCClient) PrepareEip712(ctx context.Context, in *PrepareEip712Request, opts ...grpc.CallOption) (*PrepareEip712Response, error) { + out := new(PrepareEip712Response) + err := c.cc.Invoke(ctx, "/injective_exchange_rpc.InjectiveExchangeRPC/PrepareEip712", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *injectiveExchangeRPCClient) BroadcastTx(ctx context.Context, in *BroadcastTxRequest, opts ...grpc.CallOption) (*BroadcastTxResponse, error) { out := new(BroadcastTxResponse) err := c.cc.Invoke(ctx, "/injective_exchange_rpc.InjectiveExchangeRPC/BroadcastTx", in, out, opts...) @@ -106,6 +117,8 @@ type InjectiveExchangeRPCServer interface { GetTx(context.Context, *GetTxRequest) (*GetTxResponse, error) // PrepareTx generates a Web3-signable body for a Cosmos transaction PrepareTx(context.Context, *PrepareTxRequest) (*PrepareTxResponse, error) + // prepareEip712 generates EIP712 for an Injective Message + PrepareEip712(context.Context, *PrepareEip712Request) (*PrepareEip712Response, error) // BroadcastTx broadcasts a signed Web3 transaction BroadcastTx(context.Context, *BroadcastTxRequest) (*BroadcastTxResponse, error) // PrepareCosmosTx generates a Web3-signable body for a Cosmos transaction @@ -127,6 +140,9 @@ func (UnimplementedInjectiveExchangeRPCServer) GetTx(context.Context, *GetTxRequ func (UnimplementedInjectiveExchangeRPCServer) PrepareTx(context.Context, *PrepareTxRequest) (*PrepareTxResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method PrepareTx not implemented") } +func (UnimplementedInjectiveExchangeRPCServer) PrepareEip712(context.Context, *PrepareEip712Request) (*PrepareEip712Response, error) { + return nil, status.Errorf(codes.Unimplemented, "method PrepareEip712 not implemented") +} func (UnimplementedInjectiveExchangeRPCServer) BroadcastTx(context.Context, *BroadcastTxRequest) (*BroadcastTxResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method BroadcastTx not implemented") } @@ -188,6 +204,24 @@ func _InjectiveExchangeRPC_PrepareTx_Handler(srv interface{}, ctx context.Contex return interceptor(ctx, in, info, handler) } +func _InjectiveExchangeRPC_PrepareEip712_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(PrepareEip712Request) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(InjectiveExchangeRPCServer).PrepareEip712(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/injective_exchange_rpc.InjectiveExchangeRPC/PrepareEip712", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(InjectiveExchangeRPCServer).PrepareEip712(ctx, req.(*PrepareEip712Request)) + } + return interceptor(ctx, in, info, handler) +} + func _InjectiveExchangeRPC_BroadcastTx_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(BroadcastTxRequest) if err := dec(in); err != nil { @@ -275,6 +309,10 @@ var InjectiveExchangeRPC_ServiceDesc = grpc.ServiceDesc{ MethodName: "PrepareTx", Handler: _InjectiveExchangeRPC_PrepareTx_Handler, }, + { + MethodName: "PrepareEip712", + Handler: _InjectiveExchangeRPC_PrepareEip712_Handler, + }, { MethodName: "BroadcastTx", Handler: _InjectiveExchangeRPC_BroadcastTx_Handler, diff --git a/exchange/exchange_rpc/pb/injective_exchange_rpc.pb.gw.go b/exchange/exchange_rpc/pb/injective_exchange_rpc.pb.gw.go index d5d28a2a..11748a98 100644 --- a/exchange/exchange_rpc/pb/injective_exchange_rpc.pb.gw.go +++ b/exchange/exchange_rpc/pb/injective_exchange_rpc.pb.gw.go @@ -99,6 +99,40 @@ func local_request_InjectiveExchangeRPC_PrepareTx_0(ctx context.Context, marshal } +func request_InjectiveExchangeRPC_PrepareEip712_0(ctx context.Context, marshaler runtime.Marshaler, client InjectiveExchangeRPCClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq PrepareEip712Request + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.PrepareEip712(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_InjectiveExchangeRPC_PrepareEip712_0(ctx context.Context, marshaler runtime.Marshaler, server InjectiveExchangeRPCServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq PrepareEip712Request + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.PrepareEip712(ctx, &protoReq) + return msg, metadata, err + +} + func request_InjectiveExchangeRPC_BroadcastTx_0(ctx context.Context, marshaler runtime.Marshaler, client InjectiveExchangeRPCClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq BroadcastTxRequest var metadata runtime.ServerMetadata @@ -291,6 +325,31 @@ func RegisterInjectiveExchangeRPCHandlerServer(ctx context.Context, mux *runtime }) + mux.Handle("POST", pattern_InjectiveExchangeRPC_PrepareEip712_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/injective_exchange_rpc.InjectiveExchangeRPC/PrepareEip712", runtime.WithHTTPPathPattern("/injective_exchange_rpc.InjectiveExchangeRPC/PrepareEip712")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_InjectiveExchangeRPC_PrepareEip712_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_InjectiveExchangeRPC_PrepareEip712_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("POST", pattern_InjectiveExchangeRPC_BroadcastTx_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -476,6 +535,28 @@ func RegisterInjectiveExchangeRPCHandlerClient(ctx context.Context, mux *runtime }) + mux.Handle("POST", pattern_InjectiveExchangeRPC_PrepareEip712_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/injective_exchange_rpc.InjectiveExchangeRPC/PrepareEip712", runtime.WithHTTPPathPattern("/injective_exchange_rpc.InjectiveExchangeRPC/PrepareEip712")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_InjectiveExchangeRPC_PrepareEip712_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_InjectiveExchangeRPC_PrepareEip712_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("POST", pattern_InjectiveExchangeRPC_BroadcastTx_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -572,6 +653,8 @@ var ( pattern_InjectiveExchangeRPC_PrepareTx_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"injective_exchange_rpc.InjectiveExchangeRPC", "PrepareTx"}, "")) + pattern_InjectiveExchangeRPC_PrepareEip712_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"injective_exchange_rpc.InjectiveExchangeRPC", "PrepareEip712"}, "")) + pattern_InjectiveExchangeRPC_BroadcastTx_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"injective_exchange_rpc.InjectiveExchangeRPC", "BroadcastTx"}, "")) pattern_InjectiveExchangeRPC_PrepareCosmosTx_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"injective_exchange_rpc.InjectiveExchangeRPC", "PrepareCosmosTx"}, "")) @@ -586,6 +669,8 @@ var ( forward_InjectiveExchangeRPC_PrepareTx_0 = runtime.ForwardResponseMessage + forward_InjectiveExchangeRPC_PrepareEip712_0 = runtime.ForwardResponseMessage + forward_InjectiveExchangeRPC_BroadcastTx_0 = runtime.ForwardResponseMessage forward_InjectiveExchangeRPC_PrepareCosmosTx_0 = runtime.ForwardResponseMessage diff --git a/exchange/exchange_rpc/pb/injective_exchange_rpc.proto b/exchange/exchange_rpc/pb/injective_exchange_rpc.proto index 54536b59..5c6a877d 100644 --- a/exchange/exchange_rpc/pb/injective_exchange_rpc.proto +++ b/exchange/exchange_rpc/pb/injective_exchange_rpc.proto @@ -17,6 +17,8 @@ service InjectiveExchangeRPC { rpc GetTx (GetTxRequest) returns (GetTxResponse); // PrepareTx generates a Web3-signable body for a Cosmos transaction rpc PrepareTx (PrepareTxRequest) returns (PrepareTxResponse); + // prepareEip712 generates EIP712 for an Injective Message + rpc PrepareEip712 (PrepareEip712Request) returns (PrepareEip712Response); // BroadcastTx broadcasts a signed Web3 transaction rpc BroadcastTx (BroadcastTxRequest) returns (BroadcastTxResponse); // PrepareCosmosTx generates a Web3-signable body for a Cosmos transaction @@ -67,7 +69,7 @@ message PrepareTxRequest { CosmosTxFee fee = 6; // List of Cosmos proto3-encoded Msgs to include in a single tx repeated bytes msgs = 7; - // The wrapper of the EIP712 message, V1 or V2 + // The wrapper of the EIP712 message, 'v1'/'v2' or 'V1'/'V2' string eip712_wrapper = 8; } @@ -103,6 +105,32 @@ message PrepareTxResponse { string fee_payer_sig = 6; } +message PrepareEip712Request { + // Specify chainID for the target tx + uint64 chain_id = 1; + // Specify Ethereum address of a signer + string signer_address = 2; + // Sequence number of the transaction signer + uint64 sequence = 3; + // Account number of the transaction signer + uint64 account_number = 4; + // Textual memo information to attach with tx + string memo = 5; + // Block height until which the transaction is valid. + uint64 timeout_height = 6; + // Transaction fee details. + CosmosTxFee fee = 7; + // List of Cosmos proto3-encoded Msgs to include in a single tx + repeated bytes msgs = 8; + // The wrapper of the EIP712 message, 'v1'/'v2' or 'V1'/'V2' + string eip712_wrapper = 9; +} + +message PrepareEip712Response { + // EIP712-compatible message suitable for signing with eth_signTypedData_v4 + string data = 1; +} + message BroadcastTxRequest { // Specify Web3 chainID (from prepateTx) for the target Tx uint64 chain_id = 1; diff --git a/exchange/explorer_rpc/pb/goadesign_goagen_injective_explorer_rpc.pb.go b/exchange/explorer_rpc/pb/goadesign_goagen_injective_explorer_rpc.pb.go index d59b7740..c63dc9a5 100644 --- a/exchange/explorer_rpc/pb/goadesign_goagen_injective_explorer_rpc.pb.go +++ b/exchange/explorer_rpc/pb/goadesign_goagen_injective_explorer_rpc.pb.go @@ -8,7 +8,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.30.0 -// protoc v3.19.4 +// protoc v3.21.12 // source: goadesign_goagen_injective_explorer_rpc.proto package injective_explorer_rpcpb @@ -1679,7 +1679,8 @@ type TxData struct { // transaction event logs Logs []byte `protobuf:"bytes,11,opt,name=logs,proto3" json:"logs,omitempty"` // peggy bridge claim id, non-zero if tx contains MsgDepositClaim - ClaimIds []int64 `protobuf:"zigzag64,12,rep,packed,name=claim_ids,json=claimIds,proto3" json:"claim_ids,omitempty"` + ClaimIds []int64 `protobuf:"zigzag64,12,rep,packed,name=claim_ids,json=claimIds,proto3" json:"claim_ids,omitempty"` + Signatures []*Signature `protobuf:"bytes,13,rep,name=signatures,proto3" json:"signatures,omitempty"` } func (x *TxData) Reset() { @@ -1798,6 +1799,13 @@ func (x *TxData) GetClaimIds() []int64 { return nil } +func (x *TxData) GetSignatures() []*Signature { + if x != nil { + return x.Signatures + } + return nil +} + type GetValidatorsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -6253,6 +6261,164 @@ func (x *StreamBlocksResponse) GetTimestamp() string { return "" } +type GetStatsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *GetStatsRequest) Reset() { + *x = GetStatsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_goadesign_goagen_injective_explorer_rpc_proto_msgTypes[74] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetStatsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetStatsRequest) ProtoMessage() {} + +func (x *GetStatsRequest) ProtoReflect() protoreflect.Message { + mi := &file_goadesign_goagen_injective_explorer_rpc_proto_msgTypes[74] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetStatsRequest.ProtoReflect.Descriptor instead. +func (*GetStatsRequest) Descriptor() ([]byte, []int) { + return file_goadesign_goagen_injective_explorer_rpc_proto_rawDescGZIP(), []int{74} +} + +type GetStatsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Total of unique addresses + Addresses uint64 `protobuf:"varint,1,opt,name=addresses,proto3" json:"addresses,omitempty"` + // Total number of assets + Assets uint64 `protobuf:"varint,2,opt,name=assets,proto3" json:"assets,omitempty"` + // Total circulating supply of INJ + InjSupply uint64 `protobuf:"varint,3,opt,name=inj_supply,json=injSupply,proto3" json:"inj_supply,omitempty"` + // Avg of TX per second in the past 24hs + TxsPs24H uint64 `protobuf:"varint,4,opt,name=txs_ps24_h,json=txsPs24H,proto3" json:"txs_ps24_h,omitempty"` + // Avg of TX per second in the 100 blocks + TxsPs100B uint64 `protobuf:"varint,5,opt,name=txs_ps100_b,json=txsPs100B,proto3" json:"txs_ps100_b,omitempty"` + // Total number of TXs + TxsTotal uint64 `protobuf:"varint,6,opt,name=txs_total,json=txsTotal,proto3" json:"txs_total,omitempty"` + // Total number of TXs in the past 24hs + Txs24H uint64 `protobuf:"varint,7,opt,name=txs24_h,json=txs24H,proto3" json:"txs24_h,omitempty"` + // Total number of TXs in the past 30 days + Txs30D uint64 `protobuf:"varint,8,opt,name=txs30_d,json=txs30D,proto3" json:"txs30_d,omitempty"` + // Number of blocks produced in the past 24hs + BlockCount24H uint64 `protobuf:"varint,9,opt,name=block_count24_h,json=blockCount24H,proto3" json:"block_count24_h,omitempty"` +} + +func (x *GetStatsResponse) Reset() { + *x = GetStatsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_goadesign_goagen_injective_explorer_rpc_proto_msgTypes[75] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetStatsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetStatsResponse) ProtoMessage() {} + +func (x *GetStatsResponse) ProtoReflect() protoreflect.Message { + mi := &file_goadesign_goagen_injective_explorer_rpc_proto_msgTypes[75] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetStatsResponse.ProtoReflect.Descriptor instead. +func (*GetStatsResponse) Descriptor() ([]byte, []int) { + return file_goadesign_goagen_injective_explorer_rpc_proto_rawDescGZIP(), []int{75} +} + +func (x *GetStatsResponse) GetAddresses() uint64 { + if x != nil { + return x.Addresses + } + return 0 +} + +func (x *GetStatsResponse) GetAssets() uint64 { + if x != nil { + return x.Assets + } + return 0 +} + +func (x *GetStatsResponse) GetInjSupply() uint64 { + if x != nil { + return x.InjSupply + } + return 0 +} + +func (x *GetStatsResponse) GetTxsPs24H() uint64 { + if x != nil { + return x.TxsPs24H + } + return 0 +} + +func (x *GetStatsResponse) GetTxsPs100B() uint64 { + if x != nil { + return x.TxsPs100B + } + return 0 +} + +func (x *GetStatsResponse) GetTxsTotal() uint64 { + if x != nil { + return x.TxsTotal + } + return 0 +} + +func (x *GetStatsResponse) GetTxs24H() uint64 { + if x != nil { + return x.Txs24H + } + return 0 +} + +func (x *GetStatsResponse) GetTxs30D() uint64 { + if x != nil { + return x.Txs30D + } + return 0 +} + +func (x *GetStatsResponse) GetBlockCount24H() uint64 { + if x != nil { + return x.BlockCount24H + } + return 0 +} + var File_goadesign_goagen_injective_explorer_rpc_proto protoreflect.FileDescriptor var file_goadesign_goagen_injective_explorer_rpc_proto_rawDesc = []byte{ @@ -6491,7 +6657,7 @@ var file_goadesign_goagen_injective_explorer_rpc_proto_rawDesc = []byte{ 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x78, 0x44, 0x61, 0x74, 0x61, 0x52, 0x03, 0x74, 0x78, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0xd3, 0x02, 0x0a, 0x06, 0x54, 0x78, 0x44, 0x61, 0x74, 0x61, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0x96, 0x03, 0x0a, 0x06, 0x54, 0x78, 0x44, 0x61, 0x74, 0x61, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x75, 0x6d, @@ -6512,817 +6678,846 @@ var file_goadesign_goagen_injective_explorer_rpc_proto_rawDesc = []byte{ 0x74, 0x78, 0x4d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x6f, 0x67, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x6c, 0x6f, 0x67, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, - 0x12, 0x52, 0x08, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x49, 0x64, 0x73, 0x22, 0x16, 0x0a, 0x14, 0x47, - 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x22, 0x74, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, - 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0c, 0x0a, 0x01, - 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x01, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, - 0x72, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6d, - 0x73, 0x67, 0x12, 0x35, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x21, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, - 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, - 0x74, 0x6f, 0x72, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xb5, 0x07, 0x0a, 0x09, 0x56, 0x61, - 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x6f, 0x6e, 0x69, 0x6b, - 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x6f, 0x6e, 0x69, 0x6b, 0x65, - 0x72, 0x12, 0x29, 0x0a, 0x10, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, - 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x2b, 0x0a, 0x11, - 0x63, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, - 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, - 0x75, 0x73, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x6a, 0x61, 0x69, - 0x6c, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x6a, 0x61, 0x69, 0x6c, 0x65, - 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x11, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x6f, 0x6b, - 0x65, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x6f, 0x6b, 0x65, 0x6e, - 0x73, 0x12, 0x29, 0x0a, 0x10, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x73, - 0x68, 0x61, 0x72, 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x65, 0x6c, - 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x68, 0x61, 0x72, 0x65, 0x73, 0x12, 0x4e, 0x0a, 0x0b, - 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x2c, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, - 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, - 0x61, 0x74, 0x6f, 0x72, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, - 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, - 0x18, 0x0a, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0f, 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, - 0x67, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x75, 0x6e, 0x62, 0x6f, 0x6e, - 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0d, 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x27, - 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x61, 0x74, - 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x12, 0x2e, 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x6d, 0x69, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x0d, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x4d, 0x61, 0x78, 0x52, 0x61, 0x74, 0x65, 0x12, 0x3b, 0x0a, 0x1a, 0x63, 0x6f, 0x6d, 0x6d, 0x69, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, 0x63, 0x6f, 0x6d, - 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x78, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x52, 0x61, 0x74, 0x65, 0x12, 0x34, 0x0a, 0x16, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0f, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, - 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x70, 0x72, - 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, - 0x18, 0x11, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x12, 0x16, - 0x0a, 0x06, 0x6d, 0x69, 0x73, 0x73, 0x65, 0x64, 0x18, 0x12, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, - 0x6d, 0x69, 0x73, 0x73, 0x65, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x12, 0x41, 0x0a, 0x07, 0x75, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x18, - 0x14, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, - 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x56, - 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x52, 0x07, - 0x75, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x4e, 0x0a, 0x0f, 0x73, 0x6c, 0x61, 0x73, 0x68, - 0x69, 0x6e, 0x67, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x15, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x25, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, - 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x69, - 0x6e, 0x67, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x0e, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, - 0x67, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x75, 0x70, 0x74, 0x69, 0x6d, - 0x65, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, 0x16, 0x20, 0x01, - 0x28, 0x01, 0x52, 0x10, 0x75, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, - 0x74, 0x61, 0x67, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x75, 0x72, - 0x6c, 0x18, 0x17, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x72, - 0x6c, 0x22, 0xc8, 0x01, 0x0a, 0x14, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x44, - 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x6f, - 0x6e, 0x69, 0x6b, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x6f, 0x6e, - 0x69, 0x6b, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, - 0x12, 0x18, 0x0a, 0x07, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x73, 0x65, - 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x6f, - 0x6e, 0x74, 0x61, 0x63, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, - 0x1b, 0x0a, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x72, 0x6c, 0x22, 0x4c, 0x0a, 0x0f, - 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x12, + 0x12, 0x52, 0x08, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x49, 0x64, 0x73, 0x12, 0x41, 0x0a, 0x0a, 0x73, + 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x21, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, + 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, + 0x72, 0x65, 0x52, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x22, 0x16, + 0x0a, 0x14, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x74, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, + 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x0c, 0x0a, 0x01, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x01, 0x73, 0x12, 0x16, 0x0a, + 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, + 0x72, 0x72, 0x6d, 0x73, 0x67, 0x12, 0x35, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, + 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x56, 0x61, 0x6c, + 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xb5, 0x07, 0x0a, + 0x09, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x6f, + 0x6e, 0x69, 0x6b, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x6f, 0x6e, + 0x69, 0x6b, 0x65, 0x72, 0x12, 0x29, 0x0a, 0x10, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, + 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, + 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, + 0x2b, 0x0a, 0x11, 0x63, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x5f, 0x61, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x6f, 0x6e, 0x73, + 0x65, 0x6e, 0x73, 0x75, 0x73, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x16, 0x0a, 0x06, + 0x6a, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x6a, 0x61, + 0x69, 0x6c, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x11, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, + 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, + 0x72, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, + 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x68, 0x61, 0x72, 0x65, 0x73, 0x12, + 0x4e, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x56, 0x61, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x29, 0x0a, 0x10, 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x68, 0x65, 0x69, + 0x67, 0x68, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0f, 0x75, 0x6e, 0x62, 0x6f, 0x6e, + 0x64, 0x69, 0x6e, 0x67, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x75, 0x6e, + 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0d, 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d, + 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, + 0x72, 0x61, 0x74, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x6d, + 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x12, 0x2e, 0x0a, 0x13, 0x63, 0x6f, + 0x6d, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x61, 0x74, + 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x78, 0x52, 0x61, 0x74, 0x65, 0x12, 0x3b, 0x0a, 0x1a, 0x63, 0x6f, + 0x6d, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x63, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, + 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x78, 0x43, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x52, 0x61, 0x74, 0x65, 0x12, 0x34, 0x0a, 0x16, 0x63, 0x6f, 0x6d, 0x6d, 0x69, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, + 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a, + 0x08, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x08, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x69, 0x67, + 0x6e, 0x65, 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x73, 0x69, 0x67, 0x6e, 0x65, + 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x69, 0x73, 0x73, 0x65, 0x64, 0x18, 0x12, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x06, 0x6d, 0x69, 0x73, 0x73, 0x65, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x41, 0x0a, 0x07, 0x75, 0x70, 0x74, 0x69, 0x6d, + 0x65, 0x73, 0x18, 0x14, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, + 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, + 0x63, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x70, 0x74, 0x69, 0x6d, + 0x65, 0x52, 0x07, 0x75, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x4e, 0x0a, 0x0f, 0x73, 0x6c, + 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x15, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, + 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x6c, 0x61, + 0x73, 0x68, 0x69, 0x6e, 0x67, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x0e, 0x73, 0x6c, 0x61, 0x73, + 0x68, 0x69, 0x6e, 0x67, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x75, 0x70, + 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, + 0x16, 0x20, 0x01, 0x28, 0x01, 0x52, 0x10, 0x75, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x50, 0x65, 0x72, + 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, + 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x17, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6d, 0x61, 0x67, + 0x65, 0x55, 0x72, 0x6c, 0x22, 0xc8, 0x01, 0x0a, 0x14, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x6f, 0x72, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, + 0x07, 0x6d, 0x6f, 0x6e, 0x69, 0x6b, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x6d, 0x6f, 0x6e, 0x69, 0x6b, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x74, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x12, 0x29, 0x0a, + 0x10, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, + 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, + 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x72, 0x6c, 0x22, + 0x4c, 0x0a, 0x0f, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x70, 0x74, 0x69, + 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xe0, 0x01, + 0x0a, 0x0d, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, - 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xe0, 0x01, 0x0a, 0x0d, 0x53, - 0x6c, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x0c, - 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, - 0x27, 0x0a, 0x0f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x54, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, - 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, - 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x05, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, - 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, - 0x12, 0x16, 0x0a, 0x06, 0x6a, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x6a, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x69, 0x73, 0x73, - 0x65, 0x64, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x0c, 0x6d, 0x69, 0x73, 0x73, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x22, 0x2f, 0x0a, - 0x13, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x73, - 0x0a, 0x14, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0c, 0x0a, 0x01, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x01, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x12, 0x35, 0x0a, 0x04, - 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x69, 0x6e, 0x6a, - 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, - 0x72, 0x70, 0x63, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x04, 0x64, - 0x61, 0x74, 0x61, 0x22, 0x35, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, - 0x74, 0x6f, 0x72, 0x55, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x7f, 0x0a, 0x1a, 0x47, 0x65, - 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x70, 0x74, 0x69, 0x6d, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0c, 0x0a, 0x01, 0x73, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x01, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x12, 0x3b, - 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x69, + 0x65, 0x72, 0x12, 0x27, 0x0a, 0x0f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x74, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x62, 0x6c, 0x6f, + 0x63, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x61, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x72, + 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, + 0x73, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x6a, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x6a, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x6d, + 0x69, 0x73, 0x73, 0x65, 0x64, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x0c, 0x6d, 0x69, 0x73, 0x73, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, + 0x22, 0x2f, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x22, 0x73, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, + 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0c, 0x0a, 0x01, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x01, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, + 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x12, + 0x35, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, + 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, + 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, + 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x35, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, + 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x7f, 0x0a, + 0x1a, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x70, 0x74, + 0x69, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0c, 0x0a, 0x01, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x01, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72, + 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, + 0x67, 0x12, 0x3b, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x27, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, + 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x6f, 0x72, 0x55, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xa3, + 0x02, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x54, 0x78, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x16, 0x0a, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x66, 0x74, 0x65, + 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0x12, 0x14, + 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, + 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, + 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x6f, + 0x64, 0x75, 0x6c, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x6e, 0x75, 0x6d, + 0x62, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x4e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x6f, 0x5f, 0x6e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x12, 0x52, 0x08, 0x74, 0x6f, 0x4e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, + 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x12, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x22, 0x7c, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x54, 0x78, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, + 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, + 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x12, 0x32, + 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, - 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x55, - 0x70, 0x74, 0x69, 0x6d, 0x65, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xa3, 0x02, 0x0a, 0x0d, - 0x47, 0x65, 0x74, 0x54, 0x78, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, - 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x62, - 0x65, 0x66, 0x6f, 0x72, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6c, - 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, - 0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x04, 0x73, 0x6b, 0x69, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x6f, 0x64, - 0x75, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x6f, 0x64, 0x75, 0x6c, - 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x4e, 0x75, 0x6d, 0x62, - 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x6f, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x12, 0x52, 0x08, 0x74, 0x6f, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, - 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, - 0x01, 0x28, 0x12, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, - 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x12, - 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x22, 0x7c, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x54, 0x78, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, - 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x61, 0x67, - 0x69, 0x6e, 0x67, 0x52, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x12, 0x32, 0x0a, 0x04, 0x64, - 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x69, 0x6e, 0x6a, 0x65, - 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, - 0x70, 0x63, 0x2e, 0x54, 0x78, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, - 0x2a, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x54, 0x78, 0x42, 0x79, 0x54, 0x78, 0x48, 0x61, 0x73, 0x68, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x22, 0x77, 0x0a, 0x15, 0x47, - 0x65, 0x74, 0x54, 0x78, 0x42, 0x79, 0x54, 0x78, 0x48, 0x61, 0x73, 0x68, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0c, 0x0a, 0x01, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x01, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x12, 0x38, 0x0a, 0x04, 0x64, 0x61, - 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, + 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x78, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, + 0x74, 0x61, 0x22, 0x2a, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x54, 0x78, 0x42, 0x79, 0x54, 0x78, 0x48, + 0x61, 0x73, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x61, + 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x22, 0x77, + 0x0a, 0x15, 0x47, 0x65, 0x74, 0x54, 0x78, 0x42, 0x79, 0x54, 0x78, 0x48, 0x61, 0x73, 0x68, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0c, 0x0a, 0x01, 0x73, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x01, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x12, 0x38, 0x0a, + 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x69, 0x6e, + 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, + 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x78, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x44, 0x61, 0x74, + 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x79, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x50, 0x65, + 0x67, 0x67, 0x79, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x54, 0x78, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, + 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, + 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, + 0x0a, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6b, + 0x69, 0x70, 0x22, 0x5a, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x50, 0x65, 0x67, 0x67, 0x79, 0x44, 0x65, + 0x70, 0x6f, 0x73, 0x69, 0x74, 0x54, 0x78, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x3c, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x26, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, + 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x65, 0x67, 0x67, 0x79, 0x44, 0x65, + 0x70, 0x6f, 0x73, 0x69, 0x74, 0x54, 0x78, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x22, 0xf9, + 0x02, 0x0a, 0x0e, 0x50, 0x65, 0x67, 0x67, 0x79, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x54, + 0x78, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x63, + 0x65, 0x69, 0x76, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x63, + 0x65, 0x69, 0x76, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x6e, + 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x65, 0x76, 0x65, 0x6e, + 0x74, 0x4e, 0x6f, 0x6e, 0x63, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, + 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x65, 0x76, + 0x65, 0x6e, 0x74, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, + 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, + 0x74, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x12, 0x31, 0x0a, 0x14, 0x6f, 0x72, 0x63, 0x68, 0x65, + 0x73, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, + 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, + 0x61, 0x74, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, + 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x11, 0x52, 0x09, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x1b, 0x0a, 0x09, 0x74, 0x78, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x08, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x0a, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x7c, 0x0a, 0x1c, 0x47, 0x65, + 0x74, 0x50, 0x65, 0x67, 0x67, 0x79, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, + 0x54, 0x78, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, + 0x6e, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x6e, 0x64, + 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x12, 0x14, + 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, + 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x22, 0x60, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x50, + 0x65, 0x67, 0x67, 0x79, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x54, 0x78, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x05, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, - 0x63, 0x2e, 0x54, 0x78, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, - 0x64, 0x61, 0x74, 0x61, 0x22, 0x79, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x50, 0x65, 0x67, 0x67, 0x79, - 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x54, 0x78, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x63, 0x2e, 0x50, 0x65, 0x67, 0x67, 0x79, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, + 0x6c, 0x54, 0x78, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x22, 0x87, 0x04, 0x0a, 0x11, 0x50, + 0x65, 0x67, 0x67, 0x79, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x54, 0x78, + 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x63, 0x65, + 0x69, 0x76, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x63, 0x65, + 0x69, 0x76, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, + 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x64, 0x65, 0x6e, + 0x6f, 0x6d, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x66, 0x65, 0x65, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x46, 0x65, + 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x78, + 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x6f, 0x75, 0x74, 0x67, 0x6f, + 0x69, 0x6e, 0x67, 0x54, 0x78, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x62, 0x61, 0x74, 0x63, 0x68, + 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, + 0x62, 0x61, 0x74, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x1f, 0x0a, 0x0b, + 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x0a, 0x62, 0x61, 0x74, 0x63, 0x68, 0x4e, 0x6f, 0x6e, 0x63, 0x65, 0x12, 0x31, 0x0a, + 0x14, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x6f, 0x72, 0x63, + 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x4e, 0x6f, 0x6e, 0x63, + 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, + 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x65, + 0x69, 0x67, 0x68, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0c, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, + 0x61, 0x69, 0x6d, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x11, 0x52, 0x09, + 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x78, 0x5f, + 0x68, 0x61, 0x73, 0x68, 0x65, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x74, 0x78, + 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, + 0x5f, 0x61, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x64, 0x41, 0x74, 0x22, 0xf4, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x49, 0x42, 0x43, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x78, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x63, - 0x65, 0x69, 0x76, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, - 0x6b, 0x69, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x22, - 0x5a, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x50, 0x65, 0x67, 0x67, 0x79, 0x44, 0x65, 0x70, 0x6f, 0x73, - 0x69, 0x74, 0x54, 0x78, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, - 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x69, - 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, - 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x65, 0x67, 0x67, 0x79, 0x44, 0x65, 0x70, 0x6f, 0x73, - 0x69, 0x74, 0x54, 0x78, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x22, 0xf9, 0x02, 0x0a, 0x0e, - 0x50, 0x65, 0x67, 0x67, 0x79, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x54, 0x78, 0x12, 0x16, - 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, - 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, - 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x6e, 0x6f, 0x6e, 0x63, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x4e, 0x6f, - 0x6e, 0x63, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x65, 0x69, - 0x67, 0x68, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x65, 0x76, 0x65, 0x6e, 0x74, - 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x14, - 0x0a, 0x05, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x64, - 0x65, 0x6e, 0x6f, 0x6d, 0x12, 0x31, 0x0a, 0x14, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, - 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x13, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, - 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x0a, - 0x0a, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x11, 0x52, 0x09, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, - 0x74, 0x78, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x08, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x7c, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x50, 0x65, - 0x67, 0x67, 0x79, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x54, 0x78, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, + 0x65, 0x69, 0x76, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x72, 0x63, 0x5f, 0x63, 0x68, 0x61, + 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x72, 0x63, 0x43, + 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x72, 0x63, 0x5f, 0x70, 0x6f, + 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x72, 0x63, 0x50, 0x6f, 0x72, + 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x65, 0x73, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, + 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x43, 0x68, 0x61, + 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x72, + 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x65, 0x73, 0x74, 0x50, 0x6f, 0x72, + 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x11, + 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x22, 0x58, 0x0a, 0x19, 0x47, + 0x65, 0x74, 0x49, 0x42, 0x43, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x78, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, + 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, + 0x2e, 0x49, 0x42, 0x43, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x78, 0x52, 0x05, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x22, 0x9e, 0x04, 0x0a, 0x0d, 0x49, 0x42, 0x43, 0x54, 0x72, 0x61, + 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x78, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6c, - 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, - 0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x04, 0x73, 0x6b, 0x69, 0x70, 0x22, 0x60, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x50, 0x65, 0x67, 0x67, - 0x79, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x54, 0x78, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, - 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, - 0x65, 0x67, 0x67, 0x79, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x54, 0x78, - 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x22, 0x87, 0x04, 0x0a, 0x11, 0x50, 0x65, 0x67, 0x67, - 0x79, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x54, 0x78, 0x12, 0x16, 0x0a, - 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, - 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, - 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, - 0x72, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x65, 0x6e, - 0x6f, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x12, - 0x1d, 0x0a, 0x0a, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x66, 0x65, 0x65, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x46, 0x65, 0x65, 0x12, 0x24, - 0x0a, 0x0e, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x78, 0x5f, 0x69, 0x64, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, - 0x54, 0x78, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x74, 0x69, - 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x62, 0x61, 0x74, - 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x62, 0x61, 0x74, - 0x63, 0x68, 0x5f, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, - 0x62, 0x61, 0x74, 0x63, 0x68, 0x4e, 0x6f, 0x6e, 0x63, 0x65, 0x12, 0x31, 0x0a, 0x14, 0x6f, 0x72, - 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, - 0x73, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, - 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1f, 0x0a, - 0x0b, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x0a, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x0a, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x4e, 0x6f, 0x6e, 0x63, 0x65, 0x12, 0x21, - 0x0a, 0x0c, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x0b, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x65, 0x69, 0x67, 0x68, - 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x61, 0x69, 0x6d, - 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x11, 0x52, 0x09, 0x63, 0x6c, 0x61, - 0x69, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x78, 0x5f, 0x68, 0x61, 0x73, - 0x68, 0x65, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x74, 0x78, 0x48, 0x61, 0x73, - 0x68, 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, - 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, - 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, - 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, - 0x74, 0x22, 0xf4, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x49, 0x42, 0x43, 0x54, 0x72, 0x61, 0x6e, - 0x73, 0x66, 0x65, 0x72, 0x54, 0x78, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, - 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, - 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, - 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x72, 0x63, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, - 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x72, 0x63, 0x43, 0x68, 0x61, 0x6e, - 0x6e, 0x65, 0x6c, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x72, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x72, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x21, - 0x0a, 0x0c, 0x64, 0x65, 0x73, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, - 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x65, 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x14, - 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, - 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x22, 0x58, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x49, - 0x42, 0x43, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x78, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, - 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x49, 0x42, - 0x43, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x78, 0x52, 0x05, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x22, 0x9e, 0x04, 0x0a, 0x0d, 0x49, 0x42, 0x43, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, - 0x65, 0x72, 0x54, 0x78, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, - 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0d, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, - 0x12, 0x29, 0x0a, 0x10, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x70, 0x6f, 0x72, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x65, 0x73, 0x74, - 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x2f, 0x0a, 0x13, 0x64, - 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, - 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x16, 0x0a, 0x06, - 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, - 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x69, - 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0d, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x48, 0x65, 0x69, 0x67, 0x68, - 0x74, 0x12, 0x2b, 0x0a, 0x11, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x74, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x52, 0x10, 0x74, 0x69, - 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x27, - 0x0a, 0x0f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, - 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x53, - 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x64, 0x61, 0x74, 0x61, 0x5f, - 0x68, 0x65, 0x78, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x64, 0x61, 0x74, 0x61, 0x48, - 0x65, 0x78, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x78, 0x5f, 0x68, - 0x61, 0x73, 0x68, 0x65, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x74, 0x78, 0x48, - 0x61, 0x73, 0x68, 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, - 0x5f, 0x61, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, - 0x61, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x64, 0x41, 0x74, 0x22, 0x69, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x57, 0x61, 0x73, 0x6d, 0x43, 0x6f, - 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, - 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, - 0x12, 0x1f, 0x0a, 0x0b, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x4e, 0x75, 0x6d, 0x62, 0x65, - 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x6f, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x12, 0x52, 0x08, 0x74, 0x6f, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x84, - 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x57, 0x61, 0x73, 0x6d, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, - 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, - 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, - 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x12, - 0x34, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, - 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, - 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x57, 0x61, 0x73, 0x6d, 0x43, 0x6f, 0x64, 0x65, 0x52, - 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xe2, 0x03, 0x0a, 0x08, 0x57, 0x61, 0x73, 0x6d, 0x43, 0x6f, - 0x64, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x06, 0x63, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x74, - 0x78, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x78, - 0x48, 0x61, 0x73, 0x68, 0x12, 0x3c, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, - 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, - 0x75, 0x6d, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, - 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, - 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x12, 0x4a, 0x0a, 0x0a, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, - 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, - 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x52, 0x0a, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, - 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x64, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x1b, 0x0a, - 0x09, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x63, 0x6f, 0x64, 0x65, 0x56, 0x69, 0x65, 0x77, 0x12, 0x22, 0x0a, 0x0c, 0x69, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x74, 0x69, 0x61, 0x74, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x69, 0x61, 0x74, 0x65, 0x73, 0x12, 0x18, - 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x64, 0x65, - 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0a, 0x63, - 0x6f, 0x64, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x72, 0x6f, - 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0a, - 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x49, 0x64, 0x22, 0x3c, 0x0a, 0x08, 0x43, 0x68, - 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, - 0x74, 0x68, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x6c, 0x67, 0x6f, 0x72, - 0x69, 0x74, 0x68, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x22, 0x4f, 0x0a, 0x12, 0x43, 0x6f, 0x6e, 0x74, - 0x72, 0x61, 0x63, 0x74, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1f, - 0x0a, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x11, 0x52, 0x0a, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x31, 0x0a, 0x16, 0x47, 0x65, 0x74, - 0x57, 0x61, 0x73, 0x6d, 0x43, 0x6f, 0x64, 0x65, 0x42, 0x79, 0x49, 0x44, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x12, 0x52, 0x06, 0x63, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x22, 0xf1, 0x03, 0x0a, - 0x17, 0x47, 0x65, 0x74, 0x57, 0x61, 0x73, 0x6d, 0x43, 0x6f, 0x64, 0x65, 0x42, 0x79, 0x49, 0x44, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x6f, 0x64, 0x65, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x63, 0x6f, 0x64, 0x65, 0x49, - 0x64, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x78, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x12, 0x3c, 0x0a, 0x08, 0x63, 0x68, - 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x69, - 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, - 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x52, 0x08, - 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x72, - 0x61, 0x63, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, - 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x4a, 0x0a, 0x0a, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, - 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x69, 0x6e, 0x6a, + 0x09, 0x52, 0x08, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x25, 0x0a, 0x0e, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x68, 0x61, 0x6e, + 0x6e, 0x65, 0x6c, 0x12, 0x29, 0x0a, 0x10, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x64, + 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x2f, + 0x0a, 0x13, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x68, + 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x64, 0x65, 0x73, + 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, + 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x65, 0x6e, 0x6f, 0x6d, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x12, 0x25, 0x0a, + 0x0e, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x48, 0x65, + 0x69, 0x67, 0x68, 0x74, 0x12, 0x2b, 0x0a, 0x11, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, + 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x10, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x73, 0x65, 0x71, 0x75, + 0x65, 0x6e, 0x63, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x70, 0x61, 0x63, 0x6b, + 0x65, 0x74, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x64, 0x61, + 0x74, 0x61, 0x5f, 0x68, 0x65, 0x78, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x64, 0x61, + 0x74, 0x61, 0x48, 0x65, 0x78, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0d, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x74, + 0x78, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x65, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, + 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x69, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x57, 0x61, 0x73, + 0x6d, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, + 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, 0x69, + 0x6d, 0x69, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x6e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x4e, 0x75, + 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x6f, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, + 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x12, 0x52, 0x08, 0x74, 0x6f, 0x4e, 0x75, 0x6d, 0x62, 0x65, + 0x72, 0x22, 0x84, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x57, 0x61, 0x73, 0x6d, 0x43, 0x6f, 0x64, + 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x06, 0x70, 0x61, + 0x67, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, - 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x50, 0x65, 0x72, 0x6d, - 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, - 0x61, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x64, 0x65, 0x53, 0x63, 0x68, - 0x65, 0x6d, 0x61, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x69, 0x65, 0x77, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x64, 0x65, 0x56, 0x69, 0x65, 0x77, - 0x12, 0x22, 0x0a, 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x69, 0x61, 0x74, 0x65, 0x73, - 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x69, - 0x61, 0x74, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x18, - 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x1f, - 0x0a, 0x0b, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x0c, 0x20, - 0x01, 0x28, 0x12, 0x52, 0x0a, 0x63, 0x6f, 0x64, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, - 0x1f, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x0d, - 0x20, 0x01, 0x28, 0x12, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x49, 0x64, - 0x22, 0xd1, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x57, 0x61, 0x73, 0x6d, 0x43, 0x6f, 0x6e, 0x74, - 0x72, 0x61, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, - 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, 0x69, 0x6d, - 0x69, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x12, 0x52, 0x06, 0x63, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x66, - 0x72, 0x6f, 0x6d, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x12, - 0x52, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, - 0x74, 0x6f, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x12, 0x52, - 0x08, 0x74, 0x6f, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x73, 0x73, - 0x65, 0x74, 0x73, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, - 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6b, - 0x69, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x12, 0x52, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x12, 0x14, - 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, - 0x61, 0x62, 0x65, 0x6c, 0x22, 0x8c, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x57, 0x61, 0x73, 0x6d, - 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x36, 0x0a, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1e, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, - 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, - 0x67, 0x52, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x12, 0x38, 0x0a, 0x04, 0x64, 0x61, 0x74, - 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, + 0x72, 0x70, 0x63, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x70, 0x61, 0x67, 0x69, + 0x6e, 0x67, 0x12, 0x34, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x20, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, + 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x57, 0x61, 0x73, 0x6d, 0x43, 0x6f, + 0x64, 0x65, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xe2, 0x03, 0x0a, 0x08, 0x57, 0x61, 0x73, + 0x6d, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x63, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x17, + 0x0a, 0x07, 0x74, 0x78, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x12, 0x3c, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, + 0x73, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x69, 0x6e, 0x6a, 0x65, + 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, + 0x70, 0x63, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x52, 0x08, 0x63, 0x68, 0x65, + 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x41, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6f, 0x6e, + 0x74, 0x72, 0x61, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x12, 0x4a, 0x0a, 0x0a, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, - 0x2e, 0x57, 0x61, 0x73, 0x6d, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x52, 0x04, 0x64, - 0x61, 0x74, 0x61, 0x22, 0xe9, 0x04, 0x0a, 0x0c, 0x57, 0x61, 0x73, 0x6d, 0x43, 0x6f, 0x6e, 0x74, - 0x72, 0x61, 0x63, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, - 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x78, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x12, 0x18, 0x0a, - 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x65, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x65, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x69, 0x61, - 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x69, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x74, 0x69, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x21, 0x0a, 0x0c, - 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x69, 0x6e, 0x69, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, - 0x28, 0x0a, 0x10, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x64, - 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x45, - 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x3a, 0x0a, 0x05, 0x66, 0x75, 0x6e, - 0x64, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, - 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, - 0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x46, 0x75, 0x6e, 0x64, 0x52, 0x05, - 0x66, 0x75, 0x6e, 0x64, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, - 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x63, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x14, - 0x0a, 0x05, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x12, 0x36, 0x0a, 0x17, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, - 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, - 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x4d, 0x69, - 0x67, 0x72, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x27, 0x0a, 0x0f, - 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, - 0x0d, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x4e, - 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, - 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, - 0x79, 0x70, 0x65, 0x12, 0x49, 0x0a, 0x0d, 0x63, 0x77, 0x32, 0x30, 0x5f, 0x6d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x69, 0x6e, 0x6a, + 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, + 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x64, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, + 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x64, 0x65, 0x56, 0x69, 0x65, 0x77, 0x12, 0x22, 0x0a, + 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x69, 0x61, 0x74, 0x65, 0x73, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x69, 0x61, 0x74, 0x65, + 0x73, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x0b, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x63, + 0x6f, 0x64, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x12, + 0x52, 0x0a, 0x63, 0x6f, 0x64, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0b, + 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, + 0x12, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x49, 0x64, 0x22, 0x3c, 0x0a, + 0x08, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x6c, 0x67, + 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x6c, + 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x22, 0x4f, 0x0a, 0x12, 0x43, + 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x11, 0x52, 0x0a, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x31, 0x0a, 0x16, + 0x47, 0x65, 0x74, 0x57, 0x61, 0x73, 0x6d, 0x43, 0x6f, 0x64, 0x65, 0x42, 0x79, 0x49, 0x44, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x12, 0x52, 0x06, 0x63, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x22, + 0xf1, 0x03, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x57, 0x61, 0x73, 0x6d, 0x43, 0x6f, 0x64, 0x65, 0x42, + 0x79, 0x49, 0x44, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x63, + 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x63, 0x6f, + 0x64, 0x65, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x78, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x12, 0x3c, 0x0a, + 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x20, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, + 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, + 0x6d, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x1d, 0x0a, 0x0a, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x4a, 0x0a, 0x0a, 0x70, 0x65, 0x72, + 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, + 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, + 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x50, + 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x65, 0x72, 0x6d, 0x69, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x73, 0x63, + 0x68, 0x65, 0x6d, 0x61, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x64, 0x65, + 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x76, + 0x69, 0x65, 0x77, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x64, 0x65, 0x56, + 0x69, 0x65, 0x77, 0x12, 0x22, 0x0a, 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x69, 0x61, + 0x74, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, + 0x6e, 0x74, 0x69, 0x61, 0x74, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x6f, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, + 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, + 0x18, 0x0c, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0a, 0x63, 0x6f, 0x64, 0x65, 0x4e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, 0x69, + 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, + 0x6c, 0x49, 0x64, 0x22, 0xd1, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x57, 0x61, 0x73, 0x6d, 0x43, + 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, + 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x12, 0x52, 0x06, 0x63, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x1f, + 0x0a, 0x0b, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x12, 0x52, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, + 0x1b, 0x0a, 0x09, 0x74, 0x6f, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x12, 0x52, 0x08, 0x74, 0x6f, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0b, + 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0a, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x12, 0x0a, + 0x04, 0x73, 0x6b, 0x69, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x12, 0x52, 0x04, 0x73, 0x6b, 0x69, + 0x70, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x22, 0x8c, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x57, + 0x61, 0x73, 0x6d, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x61, + 0x67, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x12, 0x38, 0x0a, 0x04, + 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, - 0x72, 0x70, 0x63, 0x2e, 0x43, 0x77, 0x32, 0x30, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x52, 0x0c, 0x63, 0x77, 0x32, 0x30, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1f, - 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x11, 0x20, - 0x01, 0x28, 0x12, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x49, 0x64, 0x22, - 0x3c, 0x0a, 0x0c, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x46, 0x75, 0x6e, 0x64, 0x12, - 0x14, 0x0a, 0x05, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xa6, 0x01, - 0x0a, 0x0c, 0x43, 0x77, 0x32, 0x30, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x44, - 0x0a, 0x0a, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, - 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x77, 0x32, 0x30, - 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x74, 0x6f, 0x6b, 0x65, 0x6e, - 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x50, 0x0a, 0x0e, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x69, 0x6e, - 0x67, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x69, - 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, - 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x77, 0x32, 0x30, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, - 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0d, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x69, - 0x6e, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x7a, 0x0a, 0x0d, 0x43, 0x77, 0x32, 0x30, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, - 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x79, 0x6d, - 0x62, 0x6f, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x73, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x12, 0x52, 0x08, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x73, 0x12, - 0x21, 0x0a, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6c, 0x79, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x75, 0x70, 0x70, - 0x6c, 0x79, 0x22, 0x81, 0x01, 0x0a, 0x11, 0x43, 0x77, 0x32, 0x30, 0x4d, 0x61, 0x72, 0x6b, 0x65, - 0x74, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x6f, 0x67, 0x6f, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x6c, 0x6f, 0x67, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, - 0x65, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x6d, 0x61, 0x72, - 0x6b, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x22, 0x4c, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x57, 0x61, 0x73, - 0x6d, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x42, 0x79, 0x41, 0x64, 0x64, 0x72, 0x65, - 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x6f, 0x6e, - 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x41, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x22, 0xfd, 0x04, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x57, 0x61, 0x73, 0x6d, - 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x42, 0x79, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, - 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, - 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x78, 0x5f, - 0x68, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x78, 0x48, 0x61, - 0x73, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x1a, 0x0a, 0x08, - 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, - 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x69, 0x6e, 0x73, 0x74, - 0x61, 0x6e, 0x74, 0x69, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x0e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x69, 0x61, 0x74, 0x65, 0x64, 0x41, - 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x6e, 0x69, 0x74, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x65, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, - 0x6c, 0x61, 0x73, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x3a, - 0x0a, 0x05, 0x66, 0x75, 0x6e, 0x64, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, + 0x72, 0x70, 0x63, 0x2e, 0x57, 0x61, 0x73, 0x6d, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, + 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xe9, 0x04, 0x0a, 0x0c, 0x57, 0x61, 0x73, 0x6d, 0x43, + 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x18, 0x0a, + 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x78, 0x5f, 0x68, 0x61, + 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, + 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, + 0x65, 0x63, 0x75, 0x74, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x65, 0x78, + 0x65, 0x63, 0x75, 0x74, 0x65, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x74, 0x69, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x0e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x69, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, + 0x21, 0x0a, 0x0c, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x6e, 0x69, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, + 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x6c, 0x61, + 0x73, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x3a, 0x0a, 0x05, + 0x66, 0x75, 0x6e, 0x64, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x69, 0x6e, + 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, + 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x46, 0x75, 0x6e, + 0x64, 0x52, 0x05, 0x66, 0x75, 0x6e, 0x64, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x6f, 0x64, 0x65, + 0x5f, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x63, 0x6f, 0x64, 0x65, 0x49, + 0x64, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x12, 0x36, 0x0a, 0x17, 0x63, 0x75, 0x72, 0x72, 0x65, + 0x6e, 0x74, 0x5f, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, + 0x74, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, + 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, + 0x63, 0x74, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x49, 0x0a, 0x0d, 0x63, 0x77, 0x32, 0x30, 0x5f, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, - 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x46, - 0x75, 0x6e, 0x64, 0x52, 0x05, 0x66, 0x75, 0x6e, 0x64, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x6f, - 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x63, 0x6f, 0x64, - 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x18, 0x0b, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x12, 0x36, 0x0a, 0x17, 0x63, 0x75, 0x72, - 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x63, 0x75, 0x72, 0x72, - 0x65, 0x6e, 0x74, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x6e, 0x75, - 0x6d, 0x62, 0x65, 0x72, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x74, - 0x72, 0x61, 0x63, 0x74, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0f, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x49, 0x0a, 0x0d, 0x63, 0x77, 0x32, 0x30, - 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x24, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, - 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x77, 0x32, 0x30, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0c, 0x63, 0x77, 0x32, 0x30, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, - 0x69, 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, - 0x61, 0x6c, 0x49, 0x64, 0x22, 0x47, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x43, 0x77, 0x32, 0x30, 0x42, - 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, - 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0x57, 0x0a, - 0x16, 0x47, 0x65, 0x74, 0x43, 0x77, 0x32, 0x30, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, - 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, - 0x57, 0x61, 0x73, 0x6d, 0x43, 0x77, 0x32, 0x30, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, - 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x22, 0xda, 0x01, 0x0a, 0x0f, 0x57, 0x61, 0x73, 0x6d, 0x43, - 0x77, 0x32, 0x30, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x6f, - 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x41, 0x64, - 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, - 0x18, 0x0a, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x75, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x49, 0x0a, 0x0d, 0x63, 0x77, 0x32, 0x30, - 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x24, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, - 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x77, 0x32, 0x30, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0c, 0x63, 0x77, 0x32, 0x30, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x22, 0x31, 0x0a, 0x0f, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0b, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, - 0x5f, 0x69, 0x5f, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x61, 0x72, - 0x6b, 0x65, 0x74, 0x49, 0x44, 0x73, 0x22, 0x50, 0x0a, 0x10, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x65, - 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x05, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x69, 0x6e, 0x6a, 0x65, - 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, - 0x70, 0x63, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, - 0x73, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x22, 0x6a, 0x0a, 0x0e, 0x52, 0x65, 0x6c, 0x61, - 0x79, 0x65, 0x72, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, - 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, - 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x3b, 0x0a, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x79, - 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x69, 0x6e, 0x6a, 0x65, + 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x77, 0x32, 0x30, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x52, 0x0c, 0x63, 0x77, 0x32, 0x30, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, 0x69, 0x64, + 0x18, 0x11, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, + 0x49, 0x64, 0x22, 0x3c, 0x0a, 0x0c, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x46, 0x75, + 0x6e, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, + 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, + 0x22, 0xa6, 0x01, 0x0a, 0x0c, 0x43, 0x77, 0x32, 0x30, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x12, 0x44, 0x0a, 0x0a, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, + 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, + 0x77, 0x32, 0x30, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x50, 0x0a, 0x0e, 0x6d, 0x61, 0x72, 0x6b, 0x65, + 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x29, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, + 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x77, 0x32, 0x30, 0x4d, 0x61, 0x72, + 0x6b, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0d, 0x6d, 0x61, 0x72, 0x6b, + 0x65, 0x74, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x7a, 0x0a, 0x0d, 0x43, 0x77, 0x32, + 0x30, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, + 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, + 0x6c, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x12, 0x52, 0x08, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, + 0x6c, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x75, 0x70, 0x70, + 0x6c, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, + 0x75, 0x70, 0x70, 0x6c, 0x79, 0x22, 0x81, 0x01, 0x0a, 0x11, 0x43, 0x77, 0x32, 0x30, 0x4d, 0x61, + 0x72, 0x6b, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x6f, 0x67, 0x6f, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6c, 0x6f, 0x67, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x6d, + 0x61, 0x72, 0x6b, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, + 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x22, 0x4c, 0x0a, 0x1f, 0x47, 0x65, 0x74, + 0x57, 0x61, 0x73, 0x6d, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x42, 0x79, 0x41, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x10, + 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, + 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0xfd, 0x04, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x57, + 0x61, 0x73, 0x6d, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x42, 0x79, 0x41, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, + 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, + 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x17, 0x0a, 0x07, + 0x74, 0x78, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, + 0x78, 0x48, 0x61, 0x73, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x12, + 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x08, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x69, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x69, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x69, 0x61, 0x74, + 0x65, 0x64, 0x41, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x6d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x6e, 0x69, 0x74, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x6c, 0x61, 0x73, 0x74, 0x5f, + 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x64, 0x41, + 0x74, 0x12, 0x3a, 0x0a, 0x05, 0x66, 0x75, 0x6e, 0x64, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x24, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, + 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, + 0x63, 0x74, 0x46, 0x75, 0x6e, 0x64, 0x52, 0x05, 0x66, 0x75, 0x6e, 0x64, 0x73, 0x12, 0x17, 0x0a, + 0x07, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, + 0x63, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x18, + 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x12, 0x36, 0x0a, 0x17, + 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x5f, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x63, + 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, + 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0e, 0x63, + 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x18, 0x0a, + 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x49, 0x0a, 0x0d, 0x63, + 0x77, 0x32, 0x30, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x10, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, + 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x77, 0x32, 0x30, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0c, 0x63, 0x77, 0x32, 0x30, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, + 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0a, 0x70, 0x72, 0x6f, + 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x49, 0x64, 0x22, 0x47, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x43, 0x77, + 0x32, 0x30, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, + 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, + 0x22, 0x57, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x43, 0x77, 0x32, 0x30, 0x42, 0x61, 0x6c, 0x61, 0x6e, + 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x05, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, - 0x70, 0x63, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x52, 0x08, 0x72, 0x65, 0x6c, 0x61, - 0x79, 0x65, 0x72, 0x73, 0x22, 0x2f, 0x0a, 0x07, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x12, - 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x63, 0x74, 0x61, 0x22, 0xbd, 0x02, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x42, 0x61, 0x6e, - 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x07, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x72, - 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x0a, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x39, 0x0a, 0x19, 0x69, - 0x73, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, - 0x5f, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, - 0x69, 0x73, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x50, 0x6f, 0x6f, 0x6c, 0x52, - 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, - 0x73, 0x6b, 0x69, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6b, 0x69, 0x70, - 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, - 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x12, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, - 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x65, 0x72, 0x5f, 0x70, 0x61, 0x67, 0x65, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x11, 0x52, 0x07, 0x70, 0x65, 0x72, 0x50, 0x61, 0x67, 0x65, 0x12, - 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x8c, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x42, 0x61, 0x6e, - 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x36, 0x0a, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, - 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x61, 0x67, 0x69, - 0x6e, 0x67, 0x52, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x12, 0x38, 0x0a, 0x04, 0x64, 0x61, - 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, - 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, - 0x63, 0x2e, 0x42, 0x61, 0x6e, 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x52, 0x04, - 0x64, 0x61, 0x74, 0x61, 0x22, 0xc8, 0x01, 0x0a, 0x0c, 0x42, 0x61, 0x6e, 0x6b, 0x54, 0x72, 0x61, - 0x6e, 0x73, 0x66, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x1c, 0x0a, - 0x09, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x36, 0x0a, 0x07, 0x61, - 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x69, - 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, - 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x07, 0x61, 0x6d, 0x6f, 0x75, - 0x6e, 0x74, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, - 0x62, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, - 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x27, 0x0a, 0x0f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, - 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, - 0x34, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x65, 0x6e, 0x6f, 0x6d, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x12, 0x16, 0x0a, - 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, - 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x12, 0x0a, 0x10, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, - 0x78, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xa8, 0x02, 0x0a, 0x11, 0x53, 0x74, - 0x72, 0x65, 0x61, 0x6d, 0x54, 0x78, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, - 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, - 0x65, 0x72, 0x12, 0x27, 0x0a, 0x0f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x74, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x68, - 0x61, 0x73, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x12, - 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1a, 0x0a, - 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x78, 0x5f, - 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x74, 0x78, - 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, - 0x6c, 0x6f, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x72, 0x72, 0x6f, 0x72, - 0x4c, 0x6f, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x61, 0x69, 0x6d, - 0x5f, 0x69, 0x64, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x12, 0x52, 0x08, 0x63, 0x6c, 0x61, 0x69, - 0x6d, 0x49, 0x64, 0x73, 0x22, 0x15, 0x0a, 0x13, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x42, 0x6c, - 0x6f, 0x63, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xb8, 0x02, 0x0a, 0x14, - 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1a, 0x0a, 0x08, - 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x6f, 0x6e, 0x69, - 0x6b, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x6f, 0x6e, 0x69, 0x6b, - 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, - 0x68, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x48, 0x61, - 0x73, 0x68, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x75, 0x6d, 0x5f, 0x70, 0x72, 0x65, 0x5f, 0x63, 0x6f, - 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0d, 0x6e, 0x75, 0x6d, - 0x50, 0x72, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x6e, 0x75, - 0x6d, 0x5f, 0x74, 0x78, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x12, 0x52, 0x06, 0x6e, 0x75, 0x6d, - 0x54, 0x78, 0x73, 0x12, 0x33, 0x0a, 0x03, 0x74, 0x78, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x21, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, - 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x78, 0x44, 0x61, 0x74, 0x61, - 0x52, 0x50, 0x43, 0x52, 0x03, 0x74, 0x78, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x32, 0xc6, 0x13, 0x0a, 0x14, 0x49, 0x6e, 0x6a, 0x65, 0x63, - 0x74, 0x69, 0x76, 0x65, 0x45, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x52, 0x50, 0x43, 0x12, - 0x6c, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x78, 0x73, - 0x12, 0x2c, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, - 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x78, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, - 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, - 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x54, 0x78, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6f, 0x0a, - 0x0e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x54, 0x78, 0x73, 0x12, - 0x2d, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, - 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, - 0x72, 0x61, 0x63, 0x74, 0x54, 0x78, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, - 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, - 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, - 0x61, 0x63, 0x74, 0x54, 0x78, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x75, - 0x0a, 0x10, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x54, 0x78, 0x73, - 0x56, 0x32, 0x12, 0x2f, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, - 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x43, - 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x54, 0x78, 0x73, 0x56, 0x32, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, - 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, - 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x54, 0x78, 0x73, 0x56, 0x32, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x60, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, - 0x6b, 0x73, 0x12, 0x28, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, - 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x69, + 0x70, 0x63, 0x2e, 0x57, 0x61, 0x73, 0x6d, 0x43, 0x77, 0x32, 0x30, 0x42, 0x61, 0x6c, 0x61, 0x6e, + 0x63, 0x65, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x22, 0xda, 0x01, 0x0a, 0x0f, 0x57, 0x61, + 0x73, 0x6d, 0x43, 0x77, 0x32, 0x30, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x29, 0x0a, + 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, + 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1d, 0x0a, 0x0a, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x12, + 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x49, 0x0a, 0x0d, 0x63, + 0x77, 0x32, 0x30, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, + 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x77, 0x32, 0x30, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0c, 0x63, 0x77, 0x32, 0x30, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x31, 0x0a, 0x0f, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x65, + 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0b, 0x6d, 0x61, 0x72, + 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x5f, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, + 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x73, 0x22, 0x50, 0x0a, 0x10, 0x52, 0x65, 0x6c, + 0x61, 0x79, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, + 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, - 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5d, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x42, 0x6c, - 0x6f, 0x63, 0x6b, 0x12, 0x27, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, - 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, - 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x69, + 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4d, 0x61, 0x72, + 0x6b, 0x65, 0x74, 0x73, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x22, 0x6a, 0x0a, 0x0e, 0x52, + 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x1b, 0x0a, + 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x3b, 0x0a, 0x08, 0x72, 0x65, + 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, - 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6c, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, - 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x2c, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, - 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, - 0x2e, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, + 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x52, 0x08, 0x72, + 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x22, 0x2f, 0x0a, 0x07, 0x52, 0x65, 0x6c, 0x61, 0x79, + 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x74, 0x61, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, 0x74, 0x61, 0x22, 0xbd, 0x02, 0x0a, 0x17, 0x47, 0x65, 0x74, + 0x42, 0x61, 0x6e, 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x12, 0x1e, + 0x0a, 0x0a, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x39, + 0x0a, 0x19, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x5f, 0x70, + 0x6f, 0x6f, 0x6c, 0x5f, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x16, 0x69, 0x73, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x50, 0x6f, + 0x6f, 0x6c, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, + 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, + 0x12, 0x0a, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, + 0x6b, 0x69, 0x70, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, + 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, + 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x12, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x18, 0x0a, + 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x65, 0x72, 0x5f, 0x70, + 0x61, 0x67, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x11, 0x52, 0x07, 0x70, 0x65, 0x72, 0x50, 0x61, + 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x8c, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, + 0x42, 0x61, 0x6e, 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, + 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, + 0x61, 0x67, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x12, 0x38, 0x0a, + 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x69, 0x6e, + 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, + 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x42, 0x61, 0x6e, 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, + 0x72, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xc8, 0x01, 0x0a, 0x0c, 0x42, 0x61, 0x6e, 0x6b, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, + 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, + 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x36, + 0x0a, 0x07, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1c, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, + 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x07, 0x61, + 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, + 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x62, 0x6c, + 0x6f, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x27, 0x0a, 0x0f, 0x62, 0x6c, 0x6f, + 0x63, 0x6b, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x22, 0x34, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x65, + 0x6e, 0x6f, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x64, 0x65, 0x6e, 0x6f, 0x6d, + 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x12, 0x0a, 0x10, 0x53, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0x54, 0x78, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xa8, 0x02, 0x0a, + 0x11, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x78, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, + 0x69, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x27, 0x0a, 0x0f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x74, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, + 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x12, + 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x61, + 0x73, 0x68, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x09, + 0x74, 0x78, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x08, 0x74, 0x78, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x72, 0x72, + 0x6f, 0x72, 0x5f, 0x6c, 0x6f, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x72, + 0x72, 0x6f, 0x72, 0x4c, 0x6f, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, + 0x61, 0x69, 0x6d, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x12, 0x52, 0x08, 0x63, + 0x6c, 0x61, 0x69, 0x6d, 0x49, 0x64, 0x73, 0x22, 0x15, 0x0a, 0x13, 0x53, 0x74, 0x72, 0x65, 0x61, + 0x6d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xb8, + 0x02, 0x0a, 0x14, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, + 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x6d, + 0x6f, 0x6e, 0x69, 0x6b, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x6f, + 0x6e, 0x69, 0x6b, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, + 0x61, 0x73, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, + 0x48, 0x61, 0x73, 0x68, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x68, + 0x61, 0x73, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x65, 0x6e, + 0x74, 0x48, 0x61, 0x73, 0x68, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x75, 0x6d, 0x5f, 0x70, 0x72, 0x65, + 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0d, + 0x6e, 0x75, 0x6d, 0x50, 0x72, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x17, 0x0a, + 0x07, 0x6e, 0x75, 0x6d, 0x5f, 0x74, 0x78, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x12, 0x52, 0x06, + 0x6e, 0x75, 0x6d, 0x54, 0x78, 0x73, 0x12, 0x33, 0x0a, 0x03, 0x74, 0x78, 0x73, 0x18, 0x08, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, + 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x78, 0x44, + 0x61, 0x74, 0x61, 0x52, 0x50, 0x43, 0x52, 0x03, 0x74, 0x78, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x74, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0x11, 0x0a, 0x0f, 0x47, 0x65, 0x74, + 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x9c, 0x02, 0x0a, + 0x10, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x12, + 0x16, 0x0a, 0x06, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x06, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6e, 0x6a, 0x5f, 0x73, + 0x75, 0x70, 0x70, 0x6c, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x69, 0x6e, 0x6a, + 0x53, 0x75, 0x70, 0x70, 0x6c, 0x79, 0x12, 0x1c, 0x0a, 0x0a, 0x74, 0x78, 0x73, 0x5f, 0x70, 0x73, + 0x32, 0x34, 0x5f, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x74, 0x78, 0x73, 0x50, + 0x73, 0x32, 0x34, 0x48, 0x12, 0x1e, 0x0a, 0x0b, 0x74, 0x78, 0x73, 0x5f, 0x70, 0x73, 0x31, 0x30, + 0x30, 0x5f, 0x62, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x74, 0x78, 0x73, 0x50, 0x73, + 0x31, 0x30, 0x30, 0x42, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x78, 0x73, 0x5f, 0x74, 0x6f, 0x74, 0x61, + 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x74, 0x78, 0x73, 0x54, 0x6f, 0x74, 0x61, + 0x6c, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x78, 0x73, 0x32, 0x34, 0x5f, 0x68, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x06, 0x74, 0x78, 0x73, 0x32, 0x34, 0x48, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x78, + 0x73, 0x33, 0x30, 0x5f, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x74, 0x78, 0x73, + 0x33, 0x30, 0x44, 0x12, 0x26, 0x0a, 0x0f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x32, 0x34, 0x5f, 0x68, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x62, 0x6c, + 0x6f, 0x63, 0x6b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x32, 0x34, 0x48, 0x32, 0xa5, 0x14, 0x0a, 0x14, + 0x49, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x45, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, + 0x72, 0x52, 0x50, 0x43, 0x12, 0x6c, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x54, 0x78, 0x73, 0x12, 0x2c, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, - 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x69, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, - 0x61, 0x74, 0x6f, 0x72, 0x12, 0x2b, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x65, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x78, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, + 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, + 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x78, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x6f, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, + 0x74, 0x54, 0x78, 0x73, 0x12, 0x2d, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, - 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x2c, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, - 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x61, - 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x7b, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x55, - 0x70, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x31, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, - 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, - 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x70, 0x74, 0x69, 0x6d, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, + 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x54, 0x78, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, + 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, + 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x54, 0x78, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x75, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, + 0x63, 0x74, 0x54, 0x78, 0x73, 0x56, 0x32, 0x12, 0x2f, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, + 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, + 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x54, 0x78, 0x73, 0x56, + 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, + 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, + 0x63, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x54, 0x78, 0x73, + 0x56, 0x32, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x60, 0x0a, 0x09, 0x47, 0x65, + 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x12, 0x28, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, + 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, + 0x2e, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x29, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, + 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x6c, + 0x6f, 0x63, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5d, 0x0a, 0x08, + 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x27, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, - 0x63, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x70, - 0x74, 0x69, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x57, 0x0a, 0x06, - 0x47, 0x65, 0x74, 0x54, 0x78, 0x73, 0x12, 0x25, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, + 0x63, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x28, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, + 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x6c, + 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6c, 0x0a, 0x0d, 0x47, + 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x2c, 0x2e, 0x69, + 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, + 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x6f, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x69, 0x6e, 0x6a, + 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, + 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x69, 0x0a, 0x0c, 0x47, 0x65, 0x74, + 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x2b, 0x2e, 0x69, 0x6e, 0x6a, 0x65, + 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, + 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, - 0x47, 0x65, 0x74, 0x54, 0x78, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, + 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7b, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, + 0x61, 0x74, 0x6f, 0x72, 0x55, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x31, 0x2e, 0x69, 0x6e, 0x6a, + 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, + 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, + 0x55, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, - 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x78, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6c, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x54, 0x78, 0x42, 0x79, - 0x54, 0x78, 0x48, 0x61, 0x73, 0x68, 0x12, 0x2c, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, + 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x6f, 0x72, 0x55, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x57, 0x0a, 0x06, 0x47, 0x65, 0x74, 0x54, 0x78, 0x73, 0x12, 0x25, 0x2e, 0x69, 0x6e, + 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, + 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x78, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, + 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x54, + 0x78, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6c, 0x0a, 0x0d, 0x47, 0x65, + 0x74, 0x54, 0x78, 0x42, 0x79, 0x54, 0x78, 0x48, 0x61, 0x73, 0x68, 0x12, 0x2c, 0x2e, 0x69, 0x6e, + 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, + 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x78, 0x42, 0x79, 0x54, 0x78, 0x48, 0x61, + 0x73, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x69, 0x6e, 0x6a, 0x65, + 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, + 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x78, 0x42, 0x79, 0x54, 0x78, 0x48, 0x61, 0x73, 0x68, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7b, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x50, + 0x65, 0x67, 0x67, 0x79, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x54, 0x78, 0x73, 0x12, 0x31, + 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, + 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x65, 0x67, 0x67, 0x79, + 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x54, 0x78, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x32, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, + 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x65, + 0x67, 0x67, 0x79, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x54, 0x78, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x84, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x50, 0x65, 0x67, + 0x67, 0x79, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x54, 0x78, 0x73, 0x12, + 0x34, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, + 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x65, 0x67, 0x67, + 0x79, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x54, 0x78, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, + 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, + 0x65, 0x74, 0x50, 0x65, 0x67, 0x67, 0x79, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, + 0x6c, 0x54, 0x78, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x78, 0x0a, 0x11, + 0x47, 0x65, 0x74, 0x49, 0x42, 0x43, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x78, + 0x73, 0x12, 0x30, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, + 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x42, + 0x43, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x78, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, + 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, + 0x49, 0x42, 0x43, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x78, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x69, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x57, 0x61, 0x73, + 0x6d, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x2b, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, - 0x47, 0x65, 0x74, 0x54, 0x78, 0x42, 0x79, 0x54, 0x78, 0x48, 0x61, 0x73, 0x68, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x47, 0x65, 0x74, 0x57, 0x61, 0x73, 0x6d, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, + 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, + 0x57, 0x61, 0x73, 0x6d, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x72, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x57, 0x61, 0x73, 0x6d, 0x43, 0x6f, 0x64, 0x65, + 0x42, 0x79, 0x49, 0x44, 0x12, 0x2e, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, - 0x74, 0x54, 0x78, 0x42, 0x79, 0x54, 0x78, 0x48, 0x61, 0x73, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x7b, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x50, 0x65, 0x67, 0x67, 0x79, 0x44, - 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x54, 0x78, 0x73, 0x12, 0x31, 0x2e, 0x69, 0x6e, 0x6a, 0x65, + 0x74, 0x57, 0x61, 0x73, 0x6d, 0x43, 0x6f, 0x64, 0x65, 0x42, 0x79, 0x49, 0x44, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, + 0x74, 0x57, 0x61, 0x73, 0x6d, 0x43, 0x6f, 0x64, 0x65, 0x42, 0x79, 0x49, 0x44, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x75, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x57, 0x61, 0x73, 0x6d, + 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x73, 0x12, 0x2f, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, - 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x65, 0x67, 0x67, 0x79, 0x44, 0x65, 0x70, 0x6f, 0x73, - 0x69, 0x74, 0x54, 0x78, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x69, - 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, - 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x65, 0x67, 0x67, 0x79, 0x44, 0x65, - 0x70, 0x6f, 0x73, 0x69, 0x74, 0x54, 0x78, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x84, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x50, 0x65, 0x67, 0x67, 0x79, 0x57, 0x69, 0x74, - 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x54, 0x78, 0x73, 0x12, 0x34, 0x2e, 0x69, 0x6e, 0x6a, + 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x61, 0x73, 0x6d, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, + 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, - 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x65, 0x67, 0x67, 0x79, 0x57, 0x69, 0x74, 0x68, - 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x54, 0x78, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x35, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, - 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x65, 0x67, - 0x67, 0x79, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x54, 0x78, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x78, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x49, 0x42, - 0x43, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x78, 0x73, 0x12, 0x30, 0x2e, 0x69, - 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, - 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x42, 0x43, 0x54, 0x72, 0x61, 0x6e, - 0x73, 0x66, 0x65, 0x72, 0x54, 0x78, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, - 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, - 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x42, 0x43, 0x54, 0x72, - 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x78, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x69, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x57, 0x61, 0x73, 0x6d, 0x43, 0x6f, 0x64, 0x65, - 0x73, 0x12, 0x2b, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, - 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x61, - 0x73, 0x6d, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, - 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, - 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x61, 0x73, 0x6d, 0x43, - 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x72, 0x0a, 0x0f, - 0x47, 0x65, 0x74, 0x57, 0x61, 0x73, 0x6d, 0x43, 0x6f, 0x64, 0x65, 0x42, 0x79, 0x49, 0x44, 0x12, - 0x2e, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, - 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x61, 0x73, 0x6d, - 0x43, 0x6f, 0x64, 0x65, 0x42, 0x79, 0x49, 0x44, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x2f, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, - 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x61, 0x73, 0x6d, - 0x43, 0x6f, 0x64, 0x65, 0x42, 0x79, 0x49, 0x44, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x75, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x57, 0x61, 0x73, 0x6d, 0x43, 0x6f, 0x6e, 0x74, 0x72, - 0x61, 0x63, 0x74, 0x73, 0x12, 0x2f, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, - 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, - 0x74, 0x57, 0x61, 0x73, 0x6d, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, - 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, - 0x65, 0x74, 0x57, 0x61, 0x73, 0x6d, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8d, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x57, + 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x61, 0x73, 0x6d, 0x43, 0x6f, 0x6e, 0x74, 0x72, + 0x61, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8d, 0x01, 0x0a, + 0x18, 0x47, 0x65, 0x74, 0x57, 0x61, 0x73, 0x6d, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, + 0x42, 0x79, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x37, 0x2e, 0x69, 0x6e, 0x6a, 0x65, + 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, + 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x61, 0x73, 0x6d, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, + 0x63, 0x74, 0x42, 0x79, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, + 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x61, 0x73, 0x6d, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x42, 0x79, 0x41, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x12, 0x37, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, - 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, - 0x74, 0x57, 0x61, 0x73, 0x6d, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x42, 0x79, 0x41, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, + 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6f, 0x0a, 0x0e, + 0x47, 0x65, 0x74, 0x43, 0x77, 0x32, 0x30, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x2d, + 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, + 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x77, 0x32, 0x30, 0x42, + 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, - 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x61, 0x73, 0x6d, 0x43, 0x6f, - 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x42, 0x79, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6f, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x43, 0x77, - 0x32, 0x30, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x2d, 0x2e, 0x69, 0x6e, 0x6a, 0x65, + 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x77, 0x32, 0x30, 0x42, 0x61, + 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5d, 0x0a, + 0x08, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x12, 0x27, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, - 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x77, 0x32, 0x30, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, - 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, - 0x63, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x77, 0x32, 0x30, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5d, 0x0a, 0x08, 0x52, 0x65, 0x6c, 0x61, - 0x79, 0x65, 0x72, 0x73, 0x12, 0x27, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, - 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, - 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, - 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, - 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x75, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x42, 0x61, - 0x6e, 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x12, 0x2f, 0x2e, 0x69, 0x6e, - 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, - 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x61, 0x6e, 0x6b, 0x54, 0x72, 0x61, 0x6e, - 0x73, 0x66, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x69, - 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, - 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x61, 0x6e, 0x6b, 0x54, 0x72, 0x61, - 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x62, - 0x0a, 0x09, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x78, 0x73, 0x12, 0x28, 0x2e, 0x69, 0x6e, - 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, - 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x78, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, - 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, - 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x78, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x30, 0x01, 0x12, 0x6b, 0x0a, 0x0c, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x42, 0x6c, 0x6f, 0x63, - 0x6b, 0x73, 0x12, 0x2b, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, - 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, - 0x61, 0x6d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x2c, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, - 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x42, - 0x1b, 0x5a, 0x19, 0x2f, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, - 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, + 0x70, 0x63, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, + 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x6c, 0x61, + 0x79, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x75, 0x0a, 0x10, + 0x47, 0x65, 0x74, 0x42, 0x61, 0x6e, 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, + 0x12, 0x2f, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, + 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x61, 0x6e, + 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x30, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, + 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x61, + 0x6e, 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x62, 0x0a, 0x09, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x78, 0x73, + 0x12, 0x28, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, + 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, + 0x54, 0x78, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x69, 0x6e, 0x6a, + 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, + 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x78, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x6b, 0x0a, 0x0c, 0x53, 0x74, 0x72, 0x65, 0x61, + 0x6d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x12, 0x2b, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, + 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, + 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, + 0x72, 0x65, 0x61, 0x6d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x30, 0x01, 0x12, 0x5d, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, + 0x12, 0x27, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, + 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, + 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x69, 0x6e, 0x6a, 0x65, + 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, + 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x42, 0x1b, 0x5a, 0x19, 0x2f, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, + 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x70, 0x62, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -7337,7 +7532,7 @@ func file_goadesign_goagen_injective_explorer_rpc_proto_rawDescGZIP() []byte { return file_goadesign_goagen_injective_explorer_rpc_proto_rawDescData } -var file_goadesign_goagen_injective_explorer_rpc_proto_msgTypes = make([]protoimpl.MessageInfo, 75) +var file_goadesign_goagen_injective_explorer_rpc_proto_msgTypes = make([]protoimpl.MessageInfo, 77) var file_goadesign_goagen_injective_explorer_rpc_proto_goTypes = []interface{}{ (*GetAccountTxsRequest)(nil), // 0: injective_explorer_rpc.GetAccountTxsRequest (*GetAccountTxsResponse)(nil), // 1: injective_explorer_rpc.GetAccountTxsResponse @@ -7413,7 +7608,9 @@ var file_goadesign_goagen_injective_explorer_rpc_proto_goTypes = []interface{}{ (*StreamTxsResponse)(nil), // 71: injective_explorer_rpc.StreamTxsResponse (*StreamBlocksRequest)(nil), // 72: injective_explorer_rpc.StreamBlocksRequest (*StreamBlocksResponse)(nil), // 73: injective_explorer_rpc.StreamBlocksResponse - nil, // 74: injective_explorer_rpc.Event.AttributesEntry + (*GetStatsRequest)(nil), // 74: injective_explorer_rpc.GetStatsRequest + (*GetStatsResponse)(nil), // 75: injective_explorer_rpc.GetStatsResponse + nil, // 76: injective_explorer_rpc.Event.AttributesEntry } var file_goadesign_goagen_injective_explorer_rpc_proto_depIdxs = []int32{ 2, // 0: injective_explorer_rpc.GetAccountTxsResponse.paging:type_name -> injective_explorer_rpc.Paging @@ -7422,7 +7619,7 @@ var file_goadesign_goagen_injective_explorer_rpc_proto_depIdxs = []int32{ 6, // 3: injective_explorer_rpc.TxDetailData.events:type_name -> injective_explorer_rpc.Event 7, // 4: injective_explorer_rpc.TxDetailData.signatures:type_name -> injective_explorer_rpc.Signature 5, // 5: injective_explorer_rpc.GasFee.amount:type_name -> injective_explorer_rpc.CosmosCoin - 74, // 6: injective_explorer_rpc.Event.attributes:type_name -> injective_explorer_rpc.Event.AttributesEntry + 76, // 6: injective_explorer_rpc.Event.attributes:type_name -> injective_explorer_rpc.Event.AttributesEntry 2, // 7: injective_explorer_rpc.GetContractTxsResponse.paging:type_name -> injective_explorer_rpc.Paging 3, // 8: injective_explorer_rpc.GetContractTxsResponse.data:type_name -> injective_explorer_rpc.TxDetailData 3, // 9: injective_explorer_rpc.GetContractTxsV2Response.data:type_name -> injective_explorer_rpc.TxDetailData @@ -7431,89 +7628,92 @@ var file_goadesign_goagen_injective_explorer_rpc_proto_depIdxs = []int32{ 15, // 12: injective_explorer_rpc.BlockInfo.txs:type_name -> injective_explorer_rpc.TxDataRPC 18, // 13: injective_explorer_rpc.GetBlockResponse.data:type_name -> injective_explorer_rpc.BlockDetailInfo 19, // 14: injective_explorer_rpc.BlockDetailInfo.txs:type_name -> injective_explorer_rpc.TxData - 22, // 15: injective_explorer_rpc.GetValidatorsResponse.data:type_name -> injective_explorer_rpc.Validator - 23, // 16: injective_explorer_rpc.Validator.description:type_name -> injective_explorer_rpc.ValidatorDescription - 24, // 17: injective_explorer_rpc.Validator.uptimes:type_name -> injective_explorer_rpc.ValidatorUptime - 25, // 18: injective_explorer_rpc.Validator.slashing_events:type_name -> injective_explorer_rpc.SlashingEvent - 22, // 19: injective_explorer_rpc.GetValidatorResponse.data:type_name -> injective_explorer_rpc.Validator - 24, // 20: injective_explorer_rpc.GetValidatorUptimeResponse.data:type_name -> injective_explorer_rpc.ValidatorUptime - 2, // 21: injective_explorer_rpc.GetTxsResponse.paging:type_name -> injective_explorer_rpc.Paging - 19, // 22: injective_explorer_rpc.GetTxsResponse.data:type_name -> injective_explorer_rpc.TxData - 3, // 23: injective_explorer_rpc.GetTxByTxHashResponse.data:type_name -> injective_explorer_rpc.TxDetailData - 36, // 24: injective_explorer_rpc.GetPeggyDepositTxsResponse.field:type_name -> injective_explorer_rpc.PeggyDepositTx - 39, // 25: injective_explorer_rpc.GetPeggyWithdrawalTxsResponse.field:type_name -> injective_explorer_rpc.PeggyWithdrawalTx - 42, // 26: injective_explorer_rpc.GetIBCTransferTxsResponse.field:type_name -> injective_explorer_rpc.IBCTransferTx - 2, // 27: injective_explorer_rpc.GetWasmCodesResponse.paging:type_name -> injective_explorer_rpc.Paging - 45, // 28: injective_explorer_rpc.GetWasmCodesResponse.data:type_name -> injective_explorer_rpc.WasmCode - 46, // 29: injective_explorer_rpc.WasmCode.checksum:type_name -> injective_explorer_rpc.Checksum - 47, // 30: injective_explorer_rpc.WasmCode.permission:type_name -> injective_explorer_rpc.ContractPermission - 46, // 31: injective_explorer_rpc.GetWasmCodeByIDResponse.checksum:type_name -> injective_explorer_rpc.Checksum - 47, // 32: injective_explorer_rpc.GetWasmCodeByIDResponse.permission:type_name -> injective_explorer_rpc.ContractPermission - 2, // 33: injective_explorer_rpc.GetWasmContractsResponse.paging:type_name -> injective_explorer_rpc.Paging - 52, // 34: injective_explorer_rpc.GetWasmContractsResponse.data:type_name -> injective_explorer_rpc.WasmContract - 53, // 35: injective_explorer_rpc.WasmContract.funds:type_name -> injective_explorer_rpc.ContractFund - 54, // 36: injective_explorer_rpc.WasmContract.cw20_metadata:type_name -> injective_explorer_rpc.Cw20Metadata - 55, // 37: injective_explorer_rpc.Cw20Metadata.token_info:type_name -> injective_explorer_rpc.Cw20TokenInfo - 56, // 38: injective_explorer_rpc.Cw20Metadata.marketing_info:type_name -> injective_explorer_rpc.Cw20MarketingInfo - 53, // 39: injective_explorer_rpc.GetWasmContractByAddressResponse.funds:type_name -> injective_explorer_rpc.ContractFund - 54, // 40: injective_explorer_rpc.GetWasmContractByAddressResponse.cw20_metadata:type_name -> injective_explorer_rpc.Cw20Metadata - 61, // 41: injective_explorer_rpc.GetCw20BalanceResponse.field:type_name -> injective_explorer_rpc.WasmCw20Balance - 54, // 42: injective_explorer_rpc.WasmCw20Balance.cw20_metadata:type_name -> injective_explorer_rpc.Cw20Metadata - 64, // 43: injective_explorer_rpc.RelayersResponse.field:type_name -> injective_explorer_rpc.RelayerMarkets - 65, // 44: injective_explorer_rpc.RelayerMarkets.relayers:type_name -> injective_explorer_rpc.Relayer - 2, // 45: injective_explorer_rpc.GetBankTransfersResponse.paging:type_name -> injective_explorer_rpc.Paging - 68, // 46: injective_explorer_rpc.GetBankTransfersResponse.data:type_name -> injective_explorer_rpc.BankTransfer - 69, // 47: injective_explorer_rpc.BankTransfer.amounts:type_name -> injective_explorer_rpc.Coin - 15, // 48: injective_explorer_rpc.StreamBlocksResponse.txs:type_name -> injective_explorer_rpc.TxDataRPC - 0, // 49: injective_explorer_rpc.InjectiveExplorerRPC.GetAccountTxs:input_type -> injective_explorer_rpc.GetAccountTxsRequest - 8, // 50: injective_explorer_rpc.InjectiveExplorerRPC.GetContractTxs:input_type -> injective_explorer_rpc.GetContractTxsRequest - 10, // 51: injective_explorer_rpc.InjectiveExplorerRPC.GetContractTxsV2:input_type -> injective_explorer_rpc.GetContractTxsV2Request - 12, // 52: injective_explorer_rpc.InjectiveExplorerRPC.GetBlocks:input_type -> injective_explorer_rpc.GetBlocksRequest - 16, // 53: injective_explorer_rpc.InjectiveExplorerRPC.GetBlock:input_type -> injective_explorer_rpc.GetBlockRequest - 20, // 54: injective_explorer_rpc.InjectiveExplorerRPC.GetValidators:input_type -> injective_explorer_rpc.GetValidatorsRequest - 26, // 55: injective_explorer_rpc.InjectiveExplorerRPC.GetValidator:input_type -> injective_explorer_rpc.GetValidatorRequest - 28, // 56: injective_explorer_rpc.InjectiveExplorerRPC.GetValidatorUptime:input_type -> injective_explorer_rpc.GetValidatorUptimeRequest - 30, // 57: injective_explorer_rpc.InjectiveExplorerRPC.GetTxs:input_type -> injective_explorer_rpc.GetTxsRequest - 32, // 58: injective_explorer_rpc.InjectiveExplorerRPC.GetTxByTxHash:input_type -> injective_explorer_rpc.GetTxByTxHashRequest - 34, // 59: injective_explorer_rpc.InjectiveExplorerRPC.GetPeggyDepositTxs:input_type -> injective_explorer_rpc.GetPeggyDepositTxsRequest - 37, // 60: injective_explorer_rpc.InjectiveExplorerRPC.GetPeggyWithdrawalTxs:input_type -> injective_explorer_rpc.GetPeggyWithdrawalTxsRequest - 40, // 61: injective_explorer_rpc.InjectiveExplorerRPC.GetIBCTransferTxs:input_type -> injective_explorer_rpc.GetIBCTransferTxsRequest - 43, // 62: injective_explorer_rpc.InjectiveExplorerRPC.GetWasmCodes:input_type -> injective_explorer_rpc.GetWasmCodesRequest - 48, // 63: injective_explorer_rpc.InjectiveExplorerRPC.GetWasmCodeByID:input_type -> injective_explorer_rpc.GetWasmCodeByIDRequest - 50, // 64: injective_explorer_rpc.InjectiveExplorerRPC.GetWasmContracts:input_type -> injective_explorer_rpc.GetWasmContractsRequest - 57, // 65: injective_explorer_rpc.InjectiveExplorerRPC.GetWasmContractByAddress:input_type -> injective_explorer_rpc.GetWasmContractByAddressRequest - 59, // 66: injective_explorer_rpc.InjectiveExplorerRPC.GetCw20Balance:input_type -> injective_explorer_rpc.GetCw20BalanceRequest - 62, // 67: injective_explorer_rpc.InjectiveExplorerRPC.Relayers:input_type -> injective_explorer_rpc.RelayersRequest - 66, // 68: injective_explorer_rpc.InjectiveExplorerRPC.GetBankTransfers:input_type -> injective_explorer_rpc.GetBankTransfersRequest - 70, // 69: injective_explorer_rpc.InjectiveExplorerRPC.StreamTxs:input_type -> injective_explorer_rpc.StreamTxsRequest - 72, // 70: injective_explorer_rpc.InjectiveExplorerRPC.StreamBlocks:input_type -> injective_explorer_rpc.StreamBlocksRequest - 1, // 71: injective_explorer_rpc.InjectiveExplorerRPC.GetAccountTxs:output_type -> injective_explorer_rpc.GetAccountTxsResponse - 9, // 72: injective_explorer_rpc.InjectiveExplorerRPC.GetContractTxs:output_type -> injective_explorer_rpc.GetContractTxsResponse - 11, // 73: injective_explorer_rpc.InjectiveExplorerRPC.GetContractTxsV2:output_type -> injective_explorer_rpc.GetContractTxsV2Response - 13, // 74: injective_explorer_rpc.InjectiveExplorerRPC.GetBlocks:output_type -> injective_explorer_rpc.GetBlocksResponse - 17, // 75: injective_explorer_rpc.InjectiveExplorerRPC.GetBlock:output_type -> injective_explorer_rpc.GetBlockResponse - 21, // 76: injective_explorer_rpc.InjectiveExplorerRPC.GetValidators:output_type -> injective_explorer_rpc.GetValidatorsResponse - 27, // 77: injective_explorer_rpc.InjectiveExplorerRPC.GetValidator:output_type -> injective_explorer_rpc.GetValidatorResponse - 29, // 78: injective_explorer_rpc.InjectiveExplorerRPC.GetValidatorUptime:output_type -> injective_explorer_rpc.GetValidatorUptimeResponse - 31, // 79: injective_explorer_rpc.InjectiveExplorerRPC.GetTxs:output_type -> injective_explorer_rpc.GetTxsResponse - 33, // 80: injective_explorer_rpc.InjectiveExplorerRPC.GetTxByTxHash:output_type -> injective_explorer_rpc.GetTxByTxHashResponse - 35, // 81: injective_explorer_rpc.InjectiveExplorerRPC.GetPeggyDepositTxs:output_type -> injective_explorer_rpc.GetPeggyDepositTxsResponse - 38, // 82: injective_explorer_rpc.InjectiveExplorerRPC.GetPeggyWithdrawalTxs:output_type -> injective_explorer_rpc.GetPeggyWithdrawalTxsResponse - 41, // 83: injective_explorer_rpc.InjectiveExplorerRPC.GetIBCTransferTxs:output_type -> injective_explorer_rpc.GetIBCTransferTxsResponse - 44, // 84: injective_explorer_rpc.InjectiveExplorerRPC.GetWasmCodes:output_type -> injective_explorer_rpc.GetWasmCodesResponse - 49, // 85: injective_explorer_rpc.InjectiveExplorerRPC.GetWasmCodeByID:output_type -> injective_explorer_rpc.GetWasmCodeByIDResponse - 51, // 86: injective_explorer_rpc.InjectiveExplorerRPC.GetWasmContracts:output_type -> injective_explorer_rpc.GetWasmContractsResponse - 58, // 87: injective_explorer_rpc.InjectiveExplorerRPC.GetWasmContractByAddress:output_type -> injective_explorer_rpc.GetWasmContractByAddressResponse - 60, // 88: injective_explorer_rpc.InjectiveExplorerRPC.GetCw20Balance:output_type -> injective_explorer_rpc.GetCw20BalanceResponse - 63, // 89: injective_explorer_rpc.InjectiveExplorerRPC.Relayers:output_type -> injective_explorer_rpc.RelayersResponse - 67, // 90: injective_explorer_rpc.InjectiveExplorerRPC.GetBankTransfers:output_type -> injective_explorer_rpc.GetBankTransfersResponse - 71, // 91: injective_explorer_rpc.InjectiveExplorerRPC.StreamTxs:output_type -> injective_explorer_rpc.StreamTxsResponse - 73, // 92: injective_explorer_rpc.InjectiveExplorerRPC.StreamBlocks:output_type -> injective_explorer_rpc.StreamBlocksResponse - 71, // [71:93] is the sub-list for method output_type - 49, // [49:71] is the sub-list for method input_type - 49, // [49:49] is the sub-list for extension type_name - 49, // [49:49] is the sub-list for extension extendee - 0, // [0:49] is the sub-list for field type_name + 7, // 15: injective_explorer_rpc.TxData.signatures:type_name -> injective_explorer_rpc.Signature + 22, // 16: injective_explorer_rpc.GetValidatorsResponse.data:type_name -> injective_explorer_rpc.Validator + 23, // 17: injective_explorer_rpc.Validator.description:type_name -> injective_explorer_rpc.ValidatorDescription + 24, // 18: injective_explorer_rpc.Validator.uptimes:type_name -> injective_explorer_rpc.ValidatorUptime + 25, // 19: injective_explorer_rpc.Validator.slashing_events:type_name -> injective_explorer_rpc.SlashingEvent + 22, // 20: injective_explorer_rpc.GetValidatorResponse.data:type_name -> injective_explorer_rpc.Validator + 24, // 21: injective_explorer_rpc.GetValidatorUptimeResponse.data:type_name -> injective_explorer_rpc.ValidatorUptime + 2, // 22: injective_explorer_rpc.GetTxsResponse.paging:type_name -> injective_explorer_rpc.Paging + 19, // 23: injective_explorer_rpc.GetTxsResponse.data:type_name -> injective_explorer_rpc.TxData + 3, // 24: injective_explorer_rpc.GetTxByTxHashResponse.data:type_name -> injective_explorer_rpc.TxDetailData + 36, // 25: injective_explorer_rpc.GetPeggyDepositTxsResponse.field:type_name -> injective_explorer_rpc.PeggyDepositTx + 39, // 26: injective_explorer_rpc.GetPeggyWithdrawalTxsResponse.field:type_name -> injective_explorer_rpc.PeggyWithdrawalTx + 42, // 27: injective_explorer_rpc.GetIBCTransferTxsResponse.field:type_name -> injective_explorer_rpc.IBCTransferTx + 2, // 28: injective_explorer_rpc.GetWasmCodesResponse.paging:type_name -> injective_explorer_rpc.Paging + 45, // 29: injective_explorer_rpc.GetWasmCodesResponse.data:type_name -> injective_explorer_rpc.WasmCode + 46, // 30: injective_explorer_rpc.WasmCode.checksum:type_name -> injective_explorer_rpc.Checksum + 47, // 31: injective_explorer_rpc.WasmCode.permission:type_name -> injective_explorer_rpc.ContractPermission + 46, // 32: injective_explorer_rpc.GetWasmCodeByIDResponse.checksum:type_name -> injective_explorer_rpc.Checksum + 47, // 33: injective_explorer_rpc.GetWasmCodeByIDResponse.permission:type_name -> injective_explorer_rpc.ContractPermission + 2, // 34: injective_explorer_rpc.GetWasmContractsResponse.paging:type_name -> injective_explorer_rpc.Paging + 52, // 35: injective_explorer_rpc.GetWasmContractsResponse.data:type_name -> injective_explorer_rpc.WasmContract + 53, // 36: injective_explorer_rpc.WasmContract.funds:type_name -> injective_explorer_rpc.ContractFund + 54, // 37: injective_explorer_rpc.WasmContract.cw20_metadata:type_name -> injective_explorer_rpc.Cw20Metadata + 55, // 38: injective_explorer_rpc.Cw20Metadata.token_info:type_name -> injective_explorer_rpc.Cw20TokenInfo + 56, // 39: injective_explorer_rpc.Cw20Metadata.marketing_info:type_name -> injective_explorer_rpc.Cw20MarketingInfo + 53, // 40: injective_explorer_rpc.GetWasmContractByAddressResponse.funds:type_name -> injective_explorer_rpc.ContractFund + 54, // 41: injective_explorer_rpc.GetWasmContractByAddressResponse.cw20_metadata:type_name -> injective_explorer_rpc.Cw20Metadata + 61, // 42: injective_explorer_rpc.GetCw20BalanceResponse.field:type_name -> injective_explorer_rpc.WasmCw20Balance + 54, // 43: injective_explorer_rpc.WasmCw20Balance.cw20_metadata:type_name -> injective_explorer_rpc.Cw20Metadata + 64, // 44: injective_explorer_rpc.RelayersResponse.field:type_name -> injective_explorer_rpc.RelayerMarkets + 65, // 45: injective_explorer_rpc.RelayerMarkets.relayers:type_name -> injective_explorer_rpc.Relayer + 2, // 46: injective_explorer_rpc.GetBankTransfersResponse.paging:type_name -> injective_explorer_rpc.Paging + 68, // 47: injective_explorer_rpc.GetBankTransfersResponse.data:type_name -> injective_explorer_rpc.BankTransfer + 69, // 48: injective_explorer_rpc.BankTransfer.amounts:type_name -> injective_explorer_rpc.Coin + 15, // 49: injective_explorer_rpc.StreamBlocksResponse.txs:type_name -> injective_explorer_rpc.TxDataRPC + 0, // 50: injective_explorer_rpc.InjectiveExplorerRPC.GetAccountTxs:input_type -> injective_explorer_rpc.GetAccountTxsRequest + 8, // 51: injective_explorer_rpc.InjectiveExplorerRPC.GetContractTxs:input_type -> injective_explorer_rpc.GetContractTxsRequest + 10, // 52: injective_explorer_rpc.InjectiveExplorerRPC.GetContractTxsV2:input_type -> injective_explorer_rpc.GetContractTxsV2Request + 12, // 53: injective_explorer_rpc.InjectiveExplorerRPC.GetBlocks:input_type -> injective_explorer_rpc.GetBlocksRequest + 16, // 54: injective_explorer_rpc.InjectiveExplorerRPC.GetBlock:input_type -> injective_explorer_rpc.GetBlockRequest + 20, // 55: injective_explorer_rpc.InjectiveExplorerRPC.GetValidators:input_type -> injective_explorer_rpc.GetValidatorsRequest + 26, // 56: injective_explorer_rpc.InjectiveExplorerRPC.GetValidator:input_type -> injective_explorer_rpc.GetValidatorRequest + 28, // 57: injective_explorer_rpc.InjectiveExplorerRPC.GetValidatorUptime:input_type -> injective_explorer_rpc.GetValidatorUptimeRequest + 30, // 58: injective_explorer_rpc.InjectiveExplorerRPC.GetTxs:input_type -> injective_explorer_rpc.GetTxsRequest + 32, // 59: injective_explorer_rpc.InjectiveExplorerRPC.GetTxByTxHash:input_type -> injective_explorer_rpc.GetTxByTxHashRequest + 34, // 60: injective_explorer_rpc.InjectiveExplorerRPC.GetPeggyDepositTxs:input_type -> injective_explorer_rpc.GetPeggyDepositTxsRequest + 37, // 61: injective_explorer_rpc.InjectiveExplorerRPC.GetPeggyWithdrawalTxs:input_type -> injective_explorer_rpc.GetPeggyWithdrawalTxsRequest + 40, // 62: injective_explorer_rpc.InjectiveExplorerRPC.GetIBCTransferTxs:input_type -> injective_explorer_rpc.GetIBCTransferTxsRequest + 43, // 63: injective_explorer_rpc.InjectiveExplorerRPC.GetWasmCodes:input_type -> injective_explorer_rpc.GetWasmCodesRequest + 48, // 64: injective_explorer_rpc.InjectiveExplorerRPC.GetWasmCodeByID:input_type -> injective_explorer_rpc.GetWasmCodeByIDRequest + 50, // 65: injective_explorer_rpc.InjectiveExplorerRPC.GetWasmContracts:input_type -> injective_explorer_rpc.GetWasmContractsRequest + 57, // 66: injective_explorer_rpc.InjectiveExplorerRPC.GetWasmContractByAddress:input_type -> injective_explorer_rpc.GetWasmContractByAddressRequest + 59, // 67: injective_explorer_rpc.InjectiveExplorerRPC.GetCw20Balance:input_type -> injective_explorer_rpc.GetCw20BalanceRequest + 62, // 68: injective_explorer_rpc.InjectiveExplorerRPC.Relayers:input_type -> injective_explorer_rpc.RelayersRequest + 66, // 69: injective_explorer_rpc.InjectiveExplorerRPC.GetBankTransfers:input_type -> injective_explorer_rpc.GetBankTransfersRequest + 70, // 70: injective_explorer_rpc.InjectiveExplorerRPC.StreamTxs:input_type -> injective_explorer_rpc.StreamTxsRequest + 72, // 71: injective_explorer_rpc.InjectiveExplorerRPC.StreamBlocks:input_type -> injective_explorer_rpc.StreamBlocksRequest + 74, // 72: injective_explorer_rpc.InjectiveExplorerRPC.GetStats:input_type -> injective_explorer_rpc.GetStatsRequest + 1, // 73: injective_explorer_rpc.InjectiveExplorerRPC.GetAccountTxs:output_type -> injective_explorer_rpc.GetAccountTxsResponse + 9, // 74: injective_explorer_rpc.InjectiveExplorerRPC.GetContractTxs:output_type -> injective_explorer_rpc.GetContractTxsResponse + 11, // 75: injective_explorer_rpc.InjectiveExplorerRPC.GetContractTxsV2:output_type -> injective_explorer_rpc.GetContractTxsV2Response + 13, // 76: injective_explorer_rpc.InjectiveExplorerRPC.GetBlocks:output_type -> injective_explorer_rpc.GetBlocksResponse + 17, // 77: injective_explorer_rpc.InjectiveExplorerRPC.GetBlock:output_type -> injective_explorer_rpc.GetBlockResponse + 21, // 78: injective_explorer_rpc.InjectiveExplorerRPC.GetValidators:output_type -> injective_explorer_rpc.GetValidatorsResponse + 27, // 79: injective_explorer_rpc.InjectiveExplorerRPC.GetValidator:output_type -> injective_explorer_rpc.GetValidatorResponse + 29, // 80: injective_explorer_rpc.InjectiveExplorerRPC.GetValidatorUptime:output_type -> injective_explorer_rpc.GetValidatorUptimeResponse + 31, // 81: injective_explorer_rpc.InjectiveExplorerRPC.GetTxs:output_type -> injective_explorer_rpc.GetTxsResponse + 33, // 82: injective_explorer_rpc.InjectiveExplorerRPC.GetTxByTxHash:output_type -> injective_explorer_rpc.GetTxByTxHashResponse + 35, // 83: injective_explorer_rpc.InjectiveExplorerRPC.GetPeggyDepositTxs:output_type -> injective_explorer_rpc.GetPeggyDepositTxsResponse + 38, // 84: injective_explorer_rpc.InjectiveExplorerRPC.GetPeggyWithdrawalTxs:output_type -> injective_explorer_rpc.GetPeggyWithdrawalTxsResponse + 41, // 85: injective_explorer_rpc.InjectiveExplorerRPC.GetIBCTransferTxs:output_type -> injective_explorer_rpc.GetIBCTransferTxsResponse + 44, // 86: injective_explorer_rpc.InjectiveExplorerRPC.GetWasmCodes:output_type -> injective_explorer_rpc.GetWasmCodesResponse + 49, // 87: injective_explorer_rpc.InjectiveExplorerRPC.GetWasmCodeByID:output_type -> injective_explorer_rpc.GetWasmCodeByIDResponse + 51, // 88: injective_explorer_rpc.InjectiveExplorerRPC.GetWasmContracts:output_type -> injective_explorer_rpc.GetWasmContractsResponse + 58, // 89: injective_explorer_rpc.InjectiveExplorerRPC.GetWasmContractByAddress:output_type -> injective_explorer_rpc.GetWasmContractByAddressResponse + 60, // 90: injective_explorer_rpc.InjectiveExplorerRPC.GetCw20Balance:output_type -> injective_explorer_rpc.GetCw20BalanceResponse + 63, // 91: injective_explorer_rpc.InjectiveExplorerRPC.Relayers:output_type -> injective_explorer_rpc.RelayersResponse + 67, // 92: injective_explorer_rpc.InjectiveExplorerRPC.GetBankTransfers:output_type -> injective_explorer_rpc.GetBankTransfersResponse + 71, // 93: injective_explorer_rpc.InjectiveExplorerRPC.StreamTxs:output_type -> injective_explorer_rpc.StreamTxsResponse + 73, // 94: injective_explorer_rpc.InjectiveExplorerRPC.StreamBlocks:output_type -> injective_explorer_rpc.StreamBlocksResponse + 75, // 95: injective_explorer_rpc.InjectiveExplorerRPC.GetStats:output_type -> injective_explorer_rpc.GetStatsResponse + 73, // [73:96] is the sub-list for method output_type + 50, // [50:73] is the sub-list for method input_type + 50, // [50:50] is the sub-list for extension type_name + 50, // [50:50] is the sub-list for extension extendee + 0, // [0:50] is the sub-list for field type_name } func init() { file_goadesign_goagen_injective_explorer_rpc_proto_init() } @@ -8410,6 +8610,30 @@ func file_goadesign_goagen_injective_explorer_rpc_proto_init() { return nil } } + file_goadesign_goagen_injective_explorer_rpc_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetStatsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_goadesign_goagen_injective_explorer_rpc_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetStatsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } type x struct{} out := protoimpl.TypeBuilder{ @@ -8417,7 +8641,7 @@ func file_goadesign_goagen_injective_explorer_rpc_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_goadesign_goagen_injective_explorer_rpc_proto_rawDesc, NumEnums: 0, - NumMessages: 75, + NumMessages: 77, NumExtensions: 0, NumServices: 1, }, diff --git a/exchange/explorer_rpc/pb/goadesign_goagen_injective_explorer_rpc_grpc.pb.go b/exchange/explorer_rpc/pb/goadesign_goagen_injective_explorer_rpc_grpc.pb.go index bbcb920f..933865b7 100644 --- a/exchange/explorer_rpc/pb/goadesign_goagen_injective_explorer_rpc_grpc.pb.go +++ b/exchange/explorer_rpc/pb/goadesign_goagen_injective_explorer_rpc_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.2.0 -// - protoc v3.19.4 +// - protoc v3.21.12 // source: goadesign_goagen_injective_explorer_rpc.proto package injective_explorer_rpcpb @@ -70,6 +70,8 @@ type InjectiveExplorerRPCClient interface { StreamTxs(ctx context.Context, in *StreamTxsRequest, opts ...grpc.CallOption) (InjectiveExplorerRPC_StreamTxsClient, error) // StreamBlocks returns the latest blocks StreamBlocks(ctx context.Context, in *StreamBlocksRequest, opts ...grpc.CallOption) (InjectiveExplorerRPC_StreamBlocksClient, error) + // GetStats returns global exchange statistics in the last 24hs + GetStats(ctx context.Context, in *GetStatsRequest, opts ...grpc.CallOption) (*GetStatsResponse, error) } type injectiveExplorerRPCClient struct { @@ -324,6 +326,15 @@ func (x *injectiveExplorerRPCStreamBlocksClient) Recv() (*StreamBlocksResponse, return m, nil } +func (c *injectiveExplorerRPCClient) GetStats(ctx context.Context, in *GetStatsRequest, opts ...grpc.CallOption) (*GetStatsResponse, error) { + out := new(GetStatsResponse) + err := c.cc.Invoke(ctx, "/injective_explorer_rpc.InjectiveExplorerRPC/GetStats", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // InjectiveExplorerRPCServer is the server API for InjectiveExplorerRPC service. // All implementations must embed UnimplementedInjectiveExplorerRPCServer // for forward compatibility @@ -376,6 +387,8 @@ type InjectiveExplorerRPCServer interface { StreamTxs(*StreamTxsRequest, InjectiveExplorerRPC_StreamTxsServer) error // StreamBlocks returns the latest blocks StreamBlocks(*StreamBlocksRequest, InjectiveExplorerRPC_StreamBlocksServer) error + // GetStats returns global exchange statistics in the last 24hs + GetStats(context.Context, *GetStatsRequest) (*GetStatsResponse, error) mustEmbedUnimplementedInjectiveExplorerRPCServer() } @@ -449,6 +462,9 @@ func (UnimplementedInjectiveExplorerRPCServer) StreamTxs(*StreamTxsRequest, Inje func (UnimplementedInjectiveExplorerRPCServer) StreamBlocks(*StreamBlocksRequest, InjectiveExplorerRPC_StreamBlocksServer) error { return status.Errorf(codes.Unimplemented, "method StreamBlocks not implemented") } +func (UnimplementedInjectiveExplorerRPCServer) GetStats(context.Context, *GetStatsRequest) (*GetStatsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetStats not implemented") +} func (UnimplementedInjectiveExplorerRPCServer) mustEmbedUnimplementedInjectiveExplorerRPCServer() {} // UnsafeInjectiveExplorerRPCServer may be embedded to opt out of forward compatibility for this service. @@ -864,6 +880,24 @@ func (x *injectiveExplorerRPCStreamBlocksServer) Send(m *StreamBlocksResponse) e return x.ServerStream.SendMsg(m) } +func _InjectiveExplorerRPC_GetStats_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetStatsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(InjectiveExplorerRPCServer).GetStats(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/injective_explorer_rpc.InjectiveExplorerRPC/GetStats", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(InjectiveExplorerRPCServer).GetStats(ctx, req.(*GetStatsRequest)) + } + return interceptor(ctx, in, info, handler) +} + // InjectiveExplorerRPC_ServiceDesc is the grpc.ServiceDesc for InjectiveExplorerRPC service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -951,6 +985,10 @@ var InjectiveExplorerRPC_ServiceDesc = grpc.ServiceDesc{ MethodName: "GetBankTransfers", Handler: _InjectiveExplorerRPC_GetBankTransfers_Handler, }, + { + MethodName: "GetStats", + Handler: _InjectiveExplorerRPC_GetStats_Handler, + }, }, Streams: []grpc.StreamDesc{ { diff --git a/exchange/explorer_rpc/pb/injective_explorer_rpc.pb.gw.go b/exchange/explorer_rpc/pb/injective_explorer_rpc.pb.gw.go index 06257030..86e23918 100644 --- a/exchange/explorer_rpc/pb/injective_explorer_rpc.pb.gw.go +++ b/exchange/explorer_rpc/pb/injective_explorer_rpc.pb.gw.go @@ -761,6 +761,40 @@ func request_InjectiveExplorerRPC_StreamBlocks_0(ctx context.Context, marshaler } +func request_InjectiveExplorerRPC_GetStats_0(ctx context.Context, marshaler runtime.Marshaler, client InjectiveExplorerRPCClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetStatsRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.GetStats(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_InjectiveExplorerRPC_GetStats_0(ctx context.Context, marshaler runtime.Marshaler, server InjectiveExplorerRPCServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetStatsRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.GetStats(ctx, &protoReq) + return msg, metadata, err + +} + // RegisterInjectiveExplorerRPCHandlerServer registers the http handlers for service InjectiveExplorerRPC to "mux". // UnaryRPC :call InjectiveExplorerRPCServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. @@ -1281,6 +1315,31 @@ func RegisterInjectiveExplorerRPCHandlerServer(ctx context.Context, mux *runtime return }) + mux.Handle("POST", pattern_InjectiveExplorerRPC_GetStats_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/injective_explorer_rpc.InjectiveExplorerRPC/GetStats", runtime.WithHTTPPathPattern("/injective_explorer_rpc.InjectiveExplorerRPC/GetStats")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_InjectiveExplorerRPC_GetStats_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_InjectiveExplorerRPC_GetStats_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + return nil } @@ -1806,6 +1865,28 @@ func RegisterInjectiveExplorerRPCHandlerClient(ctx context.Context, mux *runtime }) + mux.Handle("POST", pattern_InjectiveExplorerRPC_GetStats_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/injective_explorer_rpc.InjectiveExplorerRPC/GetStats", runtime.WithHTTPPathPattern("/injective_explorer_rpc.InjectiveExplorerRPC/GetStats")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_InjectiveExplorerRPC_GetStats_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_InjectiveExplorerRPC_GetStats_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + return nil } @@ -1853,6 +1934,8 @@ var ( pattern_InjectiveExplorerRPC_StreamTxs_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"injective_explorer_rpc.InjectiveExplorerRPC", "StreamTxs"}, "")) pattern_InjectiveExplorerRPC_StreamBlocks_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"injective_explorer_rpc.InjectiveExplorerRPC", "StreamBlocks"}, "")) + + pattern_InjectiveExplorerRPC_GetStats_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"injective_explorer_rpc.InjectiveExplorerRPC", "GetStats"}, "")) ) var ( @@ -1899,4 +1982,6 @@ var ( forward_InjectiveExplorerRPC_StreamTxs_0 = runtime.ForwardResponseStream forward_InjectiveExplorerRPC_StreamBlocks_0 = runtime.ForwardResponseStream + + forward_InjectiveExplorerRPC_GetStats_0 = runtime.ForwardResponseMessage ) diff --git a/exchange/explorer_rpc/pb/injective_explorer_rpc.proto b/exchange/explorer_rpc/pb/injective_explorer_rpc.proto index 077fc0bc..72446b66 100644 --- a/exchange/explorer_rpc/pb/injective_explorer_rpc.proto +++ b/exchange/explorer_rpc/pb/injective_explorer_rpc.proto @@ -61,6 +61,8 @@ service InjectiveExplorerRPC { rpc StreamTxs (StreamTxsRequest) returns (stream StreamTxsResponse); // StreamBlocks returns the latest blocks rpc StreamBlocks (StreamBlocksRequest) returns (stream StreamBlocksResponse); + // GetStats returns global exchange statistics in the last 24hs + rpc GetStats (GetStatsRequest) returns (GetStatsResponse); } message GetAccountTxsRequest { @@ -274,6 +276,7 @@ message TxData { bytes logs = 11; // peggy bridge claim id, non-zero if tx contains MsgDepositClaim repeated sint64 claim_ids = 12; + repeated Signature signatures = 13; } message GetValidatorsRequest { @@ -868,3 +871,27 @@ message StreamBlocksResponse { repeated TxDataRPC txs = 8; string timestamp = 9; } + +message GetStatsRequest { +} + +message GetStatsResponse { + // Total of unique addresses + uint64 addresses = 1; + // Total number of assets + uint64 assets = 2; + // Total circulating supply of INJ + uint64 inj_supply = 3; + // Avg of TX per second in the past 24hs + uint64 txs_ps24_h = 4; + // Avg of TX per second in the 100 blocks + uint64 txs_ps100_b = 5; + // Total number of TXs + uint64 txs_total = 6; + // Total number of TXs in the past 24hs + uint64 txs24_h = 7; + // Total number of TXs in the past 30 days + uint64 txs30_d = 8; + // Number of blocks produced in the past 24hs + uint64 block_count24_h = 9; +} diff --git a/exchange/health_rpc/pb/goadesign_goagen_health.pb.go b/exchange/health_rpc/pb/goadesign_goagen_health.pb.go index 1a3968ae..9b896f97 100644 --- a/exchange/health_rpc/pb/goadesign_goagen_health.pb.go +++ b/exchange/health_rpc/pb/goadesign_goagen_health.pb.go @@ -8,7 +8,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.30.0 -// protoc v3.19.4 +// protoc v3.21.12 // source: goadesign_goagen_health.proto package api_v1pb @@ -152,6 +152,8 @@ type HealthStatus struct { HoracleHeight int32 `protobuf:"zigzag32,3,opt,name=horacle_height,json=horacleHeight,proto3" json:"horacle_height,omitempty"` // block timestamp from Horacle service. HoracleTimestamp int32 `protobuf:"zigzag32,4,opt,name=horacle_timestamp,json=horacleTimestamp,proto3" json:"horacle_timestamp,omitempty"` + // Migration version of the database. + MigrationLastVersion int32 `protobuf:"zigzag32,5,opt,name=migration_last_version,json=migrationLastVersion,proto3" json:"migration_last_version,omitempty"` } func (x *HealthStatus) Reset() { @@ -214,6 +216,13 @@ func (x *HealthStatus) GetHoracleTimestamp() int32 { return 0 } +func (x *HealthStatus) GetMigrationLastVersion() int32 { + if x != nil { + return x.MigrationLastVersion + } + return 0 +} + var File_goadesign_goagen_health_proto protoreflect.FileDescriptor var file_goadesign_goagen_health_proto_rawDesc = []byte{ @@ -228,7 +237,7 @@ var file_goadesign_goagen_health_proto_rawDesc = []byte{ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xae, 0x01, 0x0a, 0x0c, 0x48, 0x65, 0x61, + 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xe4, 0x01, 0x0a, 0x0c, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x11, 0x52, 0x0b, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x27, 0x0a, 0x0f, @@ -239,13 +248,16 @@ var file_goadesign_goagen_health_proto_rawDesc = []byte{ 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x2b, 0x0a, 0x11, 0x68, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x11, 0x52, 0x10, 0x68, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, - 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x32, 0x4a, 0x0a, 0x06, 0x48, 0x65, 0x61, - 0x6c, 0x74, 0x68, 0x12, 0x40, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x12, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x0b, 0x5a, 0x09, 0x2f, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, - 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x34, 0x0a, 0x16, 0x6d, 0x69, 0x67, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x11, 0x52, 0x14, 0x6d, 0x69, 0x67, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x61, 0x73, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x32, + 0x4a, 0x0a, 0x06, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x12, 0x40, 0x0a, 0x09, 0x47, 0x65, 0x74, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, + 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x0b, 0x5a, 0x09, 0x2f, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/exchange/health_rpc/pb/goadesign_goagen_health_grpc.pb.go b/exchange/health_rpc/pb/goadesign_goagen_health_grpc.pb.go index 193c66cf..aaf42a53 100644 --- a/exchange/health_rpc/pb/goadesign_goagen_health_grpc.pb.go +++ b/exchange/health_rpc/pb/goadesign_goagen_health_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.2.0 -// - protoc v3.19.4 +// - protoc v3.21.12 // source: goadesign_goagen_health.proto package api_v1pb diff --git a/exchange/health_rpc/pb/health.proto b/exchange/health_rpc/pb/health.proto index 0d503603..cc5a190d 100644 --- a/exchange/health_rpc/pb/health.proto +++ b/exchange/health_rpc/pb/health.proto @@ -38,4 +38,6 @@ message HealthStatus { sint32 horacle_height = 3; // block timestamp from Horacle service. sint32 horacle_timestamp = 4; + // Migration version of the database. + sint32 migration_last_version = 5; } diff --git a/exchange/insurance_rpc/pb/goadesign_goagen_injective_insurance_rpc.pb.go b/exchange/insurance_rpc/pb/goadesign_goagen_injective_insurance_rpc.pb.go index 400542ac..99aa0d6a 100644 --- a/exchange/insurance_rpc/pb/goadesign_goagen_injective_insurance_rpc.pb.go +++ b/exchange/insurance_rpc/pb/goadesign_goagen_injective_insurance_rpc.pb.go @@ -8,7 +8,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.30.0 -// protoc v3.19.4 +// protoc v3.21.12 // source: goadesign_goagen_injective_insurance_rpc.proto package injective_insurance_rpcpb @@ -137,7 +137,7 @@ type InsuranceFund struct { OracleType string `protobuf:"bytes,10,opt,name=oracle_type,json=oracleType,proto3" json:"oracle_type,omitempty"` // Defines the expiry, if any Expiry int64 `protobuf:"zigzag64,11,opt,name=expiry,proto3" json:"expiry,omitempty"` - // Token metadata for the deposit asset, only for Ethereum-based assets + // Token metadata for the deposit asset DepositTokenMeta *TokenMeta `protobuf:"bytes,12,opt,name=deposit_token_meta,json=depositTokenMeta,proto3" json:"deposit_token_meta,omitempty"` } @@ -264,7 +264,7 @@ type TokenMeta struct { // Token full name Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // Token Ethereum contract address + // Token contract address (native or not) Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"` // Token symbol short name Symbol string `protobuf:"bytes,3,opt,name=symbol,proto3" json:"symbol,omitempty"` diff --git a/exchange/insurance_rpc/pb/goadesign_goagen_injective_insurance_rpc_grpc.pb.go b/exchange/insurance_rpc/pb/goadesign_goagen_injective_insurance_rpc_grpc.pb.go index 5a87cd1a..ba318673 100644 --- a/exchange/insurance_rpc/pb/goadesign_goagen_injective_insurance_rpc_grpc.pb.go +++ b/exchange/insurance_rpc/pb/goadesign_goagen_injective_insurance_rpc_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.2.0 -// - protoc v3.19.4 +// - protoc v3.21.12 // source: goadesign_goagen_injective_insurance_rpc.proto package injective_insurance_rpcpb diff --git a/exchange/insurance_rpc/pb/injective_insurance_rpc.proto b/exchange/insurance_rpc/pb/injective_insurance_rpc.proto index b670ddea..29726fb6 100644 --- a/exchange/insurance_rpc/pb/injective_insurance_rpc.proto +++ b/exchange/insurance_rpc/pb/injective_insurance_rpc.proto @@ -49,14 +49,14 @@ message InsuranceFund { string oracle_type = 10; // Defines the expiry, if any sint64 expiry = 11; - // Token metadata for the deposit asset, only for Ethereum-based assets + // Token metadata for the deposit asset TokenMeta deposit_token_meta = 12; } message TokenMeta { // Token full name string name = 1; - // Token Ethereum contract address + // Token contract address (native or not) string address = 2; // Token symbol short name string symbol = 3; diff --git a/exchange/meta_rpc/pb/goadesign_goagen_injective_meta_rpc.pb.go b/exchange/meta_rpc/pb/goadesign_goagen_injective_meta_rpc.pb.go index e6f93ea1..3ddf3838 100644 --- a/exchange/meta_rpc/pb/goadesign_goagen_injective_meta_rpc.pb.go +++ b/exchange/meta_rpc/pb/goadesign_goagen_injective_meta_rpc.pb.go @@ -8,7 +8,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.30.0 -// protoc v3.19.4 +// protoc v3.21.12 // source: goadesign_goagen_injective_meta_rpc.proto package injective_meta_rpcpb diff --git a/exchange/meta_rpc/pb/goadesign_goagen_injective_meta_rpc_grpc.pb.go b/exchange/meta_rpc/pb/goadesign_goagen_injective_meta_rpc_grpc.pb.go index 3266ca1a..53281e05 100644 --- a/exchange/meta_rpc/pb/goadesign_goagen_injective_meta_rpc_grpc.pb.go +++ b/exchange/meta_rpc/pb/goadesign_goagen_injective_meta_rpc_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.2.0 -// - protoc v3.19.4 +// - protoc v3.21.12 // source: goadesign_goagen_injective_meta_rpc.proto package injective_meta_rpcpb diff --git a/exchange/oracle_rpc/pb/goadesign_goagen_injective_oracle_rpc.pb.go b/exchange/oracle_rpc/pb/goadesign_goagen_injective_oracle_rpc.pb.go index 3308dfee..23d0f553 100644 --- a/exchange/oracle_rpc/pb/goadesign_goagen_injective_oracle_rpc.pb.go +++ b/exchange/oracle_rpc/pb/goadesign_goagen_injective_oracle_rpc.pb.go @@ -8,7 +8,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.30.0 -// protoc v3.19.4 +// protoc v3.21.12 // source: goadesign_goagen_injective_oracle_rpc.proto package injective_oracle_rpcpb diff --git a/exchange/oracle_rpc/pb/goadesign_goagen_injective_oracle_rpc_grpc.pb.go b/exchange/oracle_rpc/pb/goadesign_goagen_injective_oracle_rpc_grpc.pb.go index 4c24eee8..e3b84c89 100644 --- a/exchange/oracle_rpc/pb/goadesign_goagen_injective_oracle_rpc_grpc.pb.go +++ b/exchange/oracle_rpc/pb/goadesign_goagen_injective_oracle_rpc_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.2.0 -// - protoc v3.19.4 +// - protoc v3.21.12 // source: goadesign_goagen_injective_oracle_rpc.proto package injective_oracle_rpcpb diff --git a/exchange/portfolio_rpc/pb/goadesign_goagen_injective_portfolio_rpc.pb.go b/exchange/portfolio_rpc/pb/goadesign_goagen_injective_portfolio_rpc.pb.go index 4a6d0331..12ee3ba2 100644 --- a/exchange/portfolio_rpc/pb/goadesign_goagen_injective_portfolio_rpc.pb.go +++ b/exchange/portfolio_rpc/pb/goadesign_goagen_injective_portfolio_rpc.pb.go @@ -8,7 +8,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.30.0 -// protoc v3.19.4 +// protoc v3.21.12 // source: goadesign_goagen_injective_portfolio_rpc.proto package injective_portfolio_rpcpb diff --git a/exchange/portfolio_rpc/pb/goadesign_goagen_injective_portfolio_rpc_grpc.pb.go b/exchange/portfolio_rpc/pb/goadesign_goagen_injective_portfolio_rpc_grpc.pb.go index 86b88e4d..f109be41 100644 --- a/exchange/portfolio_rpc/pb/goadesign_goagen_injective_portfolio_rpc_grpc.pb.go +++ b/exchange/portfolio_rpc/pb/goadesign_goagen_injective_portfolio_rpc_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.2.0 -// - protoc v3.19.4 +// - protoc v3.21.12 // source: goadesign_goagen_injective_portfolio_rpc.proto package injective_portfolio_rpcpb diff --git a/exchange/spot_exchange_rpc/pb/goadesign_goagen_injective_spot_exchange_rpc.pb.go b/exchange/spot_exchange_rpc/pb/goadesign_goagen_injective_spot_exchange_rpc.pb.go index e42a27b8..34363beb 100644 --- a/exchange/spot_exchange_rpc/pb/goadesign_goagen_injective_spot_exchange_rpc.pb.go +++ b/exchange/spot_exchange_rpc/pb/goadesign_goagen_injective_spot_exchange_rpc.pb.go @@ -8,7 +8,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.30.0 -// protoc v3.19.4 +// protoc v3.21.12 // source: goadesign_goagen_injective_spot_exchange_rpc.proto package injective_spot_exchange_rpcpb @@ -163,11 +163,11 @@ type SpotMarketInfo struct { Ticker string `protobuf:"bytes,3,opt,name=ticker,proto3" json:"ticker,omitempty"` // Coin denom used for the base asset. BaseDenom string `protobuf:"bytes,4,opt,name=base_denom,json=baseDenom,proto3" json:"base_denom,omitempty"` - // Token metadata for base asset, only for Ethereum-based assets + // Token metadata for base asset BaseTokenMeta *TokenMeta `protobuf:"bytes,5,opt,name=base_token_meta,json=baseTokenMeta,proto3" json:"base_token_meta,omitempty"` // Coin denom used for the quote asset. QuoteDenom string `protobuf:"bytes,6,opt,name=quote_denom,json=quoteDenom,proto3" json:"quote_denom,omitempty"` - // Token metadata for quote asset, only for Ethereum-based assets + // Token metadata for quote asset QuoteTokenMeta *TokenMeta `protobuf:"bytes,7,opt,name=quote_token_meta,json=quoteTokenMeta,proto3" json:"quote_token_meta,omitempty"` // Defines the fee percentage makers pay when trading (in quote asset) MakerFeeRate string `protobuf:"bytes,8,opt,name=maker_fee_rate,json=makerFeeRate,proto3" json:"maker_fee_rate,omitempty"` @@ -313,7 +313,7 @@ type TokenMeta struct { // Token full name Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // Token Ethereum contract address + // Token contract address (native or not) Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"` // Token symbol short name Symbol string `protobuf:"bytes,3,opt,name=symbol,proto3" json:"symbol,omitempty"` @@ -2107,6 +2107,8 @@ type TradesRequest struct { AccountAddress string `protobuf:"bytes,13,opt,name=account_address,json=accountAddress,proto3" json:"account_address,omitempty"` // Client order ID Cid string `protobuf:"bytes,14,opt,name=cid,proto3" json:"cid,omitempty"` + // Fee recipient address + FeeRecipient string `protobuf:"bytes,15,opt,name=fee_recipient,json=feeRecipient,proto3" json:"fee_recipient,omitempty"` } func (x *TradesRequest) Reset() { @@ -2239,6 +2241,13 @@ func (x *TradesRequest) GetCid() string { return "" } +func (x *TradesRequest) GetFeeRecipient() string { + if x != nil { + return x.FeeRecipient + } + return "" +} + type TradesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2477,6 +2486,8 @@ type StreamTradesRequest struct { AccountAddress string `protobuf:"bytes,13,opt,name=account_address,json=accountAddress,proto3" json:"account_address,omitempty"` // Client order ID Cid string `protobuf:"bytes,14,opt,name=cid,proto3" json:"cid,omitempty"` + // Fee recipient address + FeeRecipient string `protobuf:"bytes,15,opt,name=fee_recipient,json=feeRecipient,proto3" json:"fee_recipient,omitempty"` } func (x *StreamTradesRequest) Reset() { @@ -2609,6 +2620,13 @@ func (x *StreamTradesRequest) GetCid() string { return "" } +func (x *StreamTradesRequest) GetFeeRecipient() string { + if x != nil { + return x.FeeRecipient + } + return "" +} + type StreamTradesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2709,6 +2727,8 @@ type TradesV2Request struct { AccountAddress string `protobuf:"bytes,13,opt,name=account_address,json=accountAddress,proto3" json:"account_address,omitempty"` // Client order ID Cid string `protobuf:"bytes,14,opt,name=cid,proto3" json:"cid,omitempty"` + // Fee recipient address + FeeRecipient string `protobuf:"bytes,15,opt,name=fee_recipient,json=feeRecipient,proto3" json:"fee_recipient,omitempty"` } func (x *TradesV2Request) Reset() { @@ -2841,6 +2861,13 @@ func (x *TradesV2Request) GetCid() string { return "" } +func (x *TradesV2Request) GetFeeRecipient() string { + if x != nil { + return x.FeeRecipient + } + return "" +} + type TradesV2Response struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2932,6 +2959,8 @@ type StreamTradesV2Request struct { AccountAddress string `protobuf:"bytes,13,opt,name=account_address,json=accountAddress,proto3" json:"account_address,omitempty"` // Client order ID Cid string `protobuf:"bytes,14,opt,name=cid,proto3" json:"cid,omitempty"` + // Fee recipient address + FeeRecipient string `protobuf:"bytes,15,opt,name=fee_recipient,json=feeRecipient,proto3" json:"fee_recipient,omitempty"` } func (x *StreamTradesV2Request) Reset() { @@ -3064,6 +3093,13 @@ func (x *StreamTradesV2Request) GetCid() string { return "" } +func (x *StreamTradesV2Request) GetFeeRecipient() string { + if x != nil { + return x.FeeRecipient + } + return "" +} + type StreamTradesV2Response struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -4611,7 +4647,7 @@ var file_goadesign_goagen_injective_spot_exchange_rpc_proto_rawDesc = []byte{ 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x22, 0xbf, 0x03, 0x0a, 0x0d, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x70, 0x22, 0xe4, 0x03, 0x0a, 0x0d, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x69, @@ -4639,485 +4675,494 @@ var file_goadesign_goagen_injective_spot_exchange_rpc_proto_rawDesc = []byte{ 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x69, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x63, 0x69, 0x64, 0x22, 0x8d, 0x01, 0x0a, 0x0e, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x06, 0x74, 0x72, 0x61, 0x64, 0x65, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, - 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x70, 0x6f, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x52, 0x06, - 0x74, 0x72, 0x61, 0x64, 0x65, 0x73, 0x12, 0x3b, 0x0a, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, - 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x70, 0x61, 0x67, - 0x69, 0x6e, 0x67, 0x22, 0xb2, 0x03, 0x0a, 0x09, 0x53, 0x70, 0x6f, 0x74, 0x54, 0x72, 0x61, 0x64, - 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x48, 0x61, 0x73, 0x68, - 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, - 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, - 0x49, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x74, 0x72, 0x61, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x12, 0x74, 0x72, 0x61, 0x64, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x74, 0x72, 0x61, 0x64, 0x65, 0x5f, 0x64, 0x69, - 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x74, - 0x72, 0x61, 0x64, 0x65, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3d, 0x0a, - 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x69, - 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, - 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x72, 0x69, 0x63, 0x65, - 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x10, 0x0a, 0x03, - 0x66, 0x65, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x66, 0x65, 0x65, 0x12, 0x1f, - 0x0a, 0x0b, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x12, 0x52, 0x0a, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, - 0x23, 0x0a, 0x0d, 0x66, 0x65, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x66, 0x65, 0x65, 0x52, 0x65, 0x63, 0x69, 0x70, - 0x69, 0x65, 0x6e, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x72, 0x61, 0x64, 0x65, 0x5f, 0x69, 0x64, - 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x72, 0x61, 0x64, 0x65, 0x49, 0x64, 0x12, - 0x25, 0x0a, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x69, 0x64, - 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, - 0x6f, 0x6e, 0x53, 0x69, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x69, 0x64, 0x18, 0x0c, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, 0x69, 0x64, 0x22, 0xc5, 0x03, 0x0a, 0x13, 0x53, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x25, 0x0a, - 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x53, 0x69, 0x64, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x6c, - 0x69, 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, - 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, - 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x12, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, - 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x75, - 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x0a, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, - 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, - 0x79, 0x70, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x72, - 0x61, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x72, - 0x61, 0x64, 0x65, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x10, - 0x0a, 0x03, 0x63, 0x69, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, 0x69, 0x64, - 0x22, 0x99, 0x01, 0x0a, 0x14, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x64, 0x65, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x05, 0x74, 0x72, 0x61, - 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, - 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x70, 0x6f, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, - 0x52, 0x05, 0x74, 0x72, 0x61, 0x64, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x70, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, - 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x12, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0xc1, 0x03, 0x0a, - 0x0f, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x56, 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x25, 0x0a, - 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x53, 0x69, 0x64, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x6c, - 0x69, 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, - 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, - 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x12, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, - 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x75, - 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x0a, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, - 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, - 0x79, 0x70, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x72, - 0x61, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x72, - 0x61, 0x64, 0x65, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x10, - 0x0a, 0x03, 0x63, 0x69, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, 0x69, 0x64, - 0x22, 0x8f, 0x01, 0x0a, 0x10, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x56, 0x32, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x06, 0x74, 0x72, 0x61, 0x64, 0x65, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, - 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, - 0x72, 0x70, 0x63, 0x2e, 0x53, 0x70, 0x6f, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x52, 0x06, 0x74, - 0x72, 0x61, 0x64, 0x65, 0x73, 0x12, 0x3b, 0x0a, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, - 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, - 0x72, 0x70, 0x63, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x70, 0x61, 0x67, 0x69, - 0x6e, 0x67, 0x22, 0xc7, 0x03, 0x0a, 0x15, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x72, 0x61, - 0x64, 0x65, 0x73, 0x56, 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, - 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0d, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x69, 0x64, 0x65, - 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, + 0x63, 0x69, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x65, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x69, 0x70, + 0x69, 0x65, 0x6e, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x66, 0x65, 0x65, 0x52, + 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x22, 0x8d, 0x01, 0x0a, 0x0e, 0x54, 0x72, 0x61, + 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x06, 0x74, + 0x72, 0x61, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x69, 0x6e, + 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x70, 0x6f, 0x74, 0x54, 0x72, + 0x61, 0x64, 0x65, 0x52, 0x06, 0x74, 0x72, 0x61, 0x64, 0x65, 0x73, 0x12, 0x3b, 0x0a, 0x06, 0x70, + 0x61, 0x67, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x69, 0x6e, + 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, + 0x52, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x22, 0xb2, 0x03, 0x0a, 0x09, 0x53, 0x70, 0x6f, + 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, + 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x72, 0x64, 0x65, + 0x72, 0x48, 0x61, 0x73, 0x68, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, + 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, + 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, + 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x74, 0x72, 0x61, 0x64, 0x65, + 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x74, 0x72, 0x61, 0x64, 0x65, 0x45, 0x78, 0x65, 0x63, + 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x74, 0x72, 0x61, + 0x64, 0x65, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0e, 0x74, 0x72, 0x61, 0x64, 0x65, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x3d, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x27, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, + 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, + 0x50, 0x72, 0x69, 0x63, 0x65, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, + 0x65, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x65, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x66, 0x65, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x64, 0x5f, + 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0a, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, + 0x65, 0x64, 0x41, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x65, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x69, + 0x70, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x66, 0x65, 0x65, + 0x52, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x72, 0x61, + 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x72, 0x61, + 0x64, 0x65, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x78, + 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x69, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x63, + 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, 0x69, 0x64, 0x22, 0xea, 0x03, + 0x0a, 0x13, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, + 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x73, 0x69, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x78, 0x65, 0x63, + 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x69, 0x64, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x69, 0x72, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x69, + 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, + 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, + 0x73, 0x6b, 0x69, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6b, 0x69, 0x70, + 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x11, 0x52, + 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, + 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, + 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x12, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, + 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x09, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x73, 0x12, + 0x25, 0x0a, 0x0e, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, + 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x49, 0x64, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, + 0x19, 0x0a, 0x08, 0x74, 0x72, 0x61, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x74, 0x72, 0x61, 0x64, 0x65, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x0d, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x69, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x63, 0x69, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x65, 0x65, 0x5f, 0x72, 0x65, 0x63, + 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x66, 0x65, + 0x65, 0x52, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x22, 0x99, 0x01, 0x0a, 0x14, 0x53, + 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x05, 0x74, 0x72, 0x61, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, + 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, + 0x2e, 0x53, 0x70, 0x6f, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x52, 0x05, 0x74, 0x72, 0x61, 0x64, + 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x74, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0xe6, 0x03, 0x0a, 0x0f, 0x54, 0x72, 0x61, 0x64, 0x65, + 0x73, 0x56, 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, + 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, + 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0d, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x69, 0x64, 0x65, 0x12, 0x1c, + 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, + 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, + 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x04, 0x73, 0x6b, 0x69, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x12, 0x52, + 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, + 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x12, 0x52, 0x07, 0x65, 0x6e, + 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, + 0x69, 0x64, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, + 0x74, 0x49, 0x64, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x75, + 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x65, + 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x0b, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, + 0x79, 0x70, 0x65, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x72, 0x61, 0x64, 0x65, 0x5f, 0x69, 0x64, + 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x72, 0x61, 0x64, 0x65, 0x49, 0x64, 0x12, + 0x27, 0x0a, 0x0f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x69, 0x64, 0x18, + 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, 0x69, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x65, + 0x65, 0x5f, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0c, 0x66, 0x65, 0x65, 0x52, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x22, + 0x8f, 0x01, 0x0a, 0x10, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x56, 0x32, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x06, 0x74, 0x72, 0x61, 0x64, 0x65, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, + 0x70, 0x63, 0x2e, 0x53, 0x70, 0x6f, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x52, 0x06, 0x74, 0x72, + 0x61, 0x64, 0x65, 0x73, 0x12, 0x3b, 0x0a, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, + 0x70, 0x63, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, + 0x67, 0x22, 0xec, 0x03, 0x0a, 0x15, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x64, + 0x65, 0x73, 0x56, 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6d, + 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x78, 0x65, 0x63, + 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0d, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x69, 0x64, 0x65, 0x12, + 0x1c, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, + 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1d, 0x0a, 0x0a, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x12, + 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, + 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x12, 0x52, 0x07, 0x65, + 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, + 0x5f, 0x69, 0x64, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x61, 0x72, 0x6b, + 0x65, 0x74, 0x49, 0x64, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x73, + 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x73, 0x12, 0x27, 0x0a, 0x0f, + 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, + 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, + 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x72, 0x61, 0x64, 0x65, 0x5f, 0x69, + 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x72, 0x61, 0x64, 0x65, 0x49, 0x64, + 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x69, 0x64, + 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, 0x69, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x66, + 0x65, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x0f, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0c, 0x66, 0x65, 0x65, 0x52, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, + 0x22, 0x9b, 0x01, 0x0a, 0x16, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x64, 0x65, + 0x73, 0x56, 0x32, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x05, 0x74, + 0x72, 0x61, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x69, 0x6e, 0x6a, + 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x70, 0x6f, 0x74, 0x54, 0x72, 0x61, + 0x64, 0x65, 0x52, 0x05, 0x74, 0x72, 0x61, 0x64, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x12, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0x89, + 0x01, 0x0a, 0x1b, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4f, 0x72, 0x64, + 0x65, 0x72, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1d, 0x0a, - 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x12, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, - 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x12, 0x52, 0x07, - 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x72, 0x6b, 0x65, - 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x61, 0x72, - 0x6b, 0x65, 0x74, 0x49, 0x64, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, - 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x73, 0x12, 0x27, 0x0a, - 0x0f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, - 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x72, 0x61, 0x64, 0x65, 0x5f, - 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x72, 0x61, 0x64, 0x65, 0x49, - 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x69, - 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, 0x69, 0x64, 0x22, 0x9b, 0x01, 0x0a, - 0x16, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x56, 0x32, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x05, 0x74, 0x72, 0x61, 0x64, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, - 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x70, 0x6f, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x52, 0x05, - 0x74, 0x72, 0x61, 0x64, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, - 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x12, 0x52, - 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0x89, 0x01, 0x0a, 0x1b, 0x53, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, + 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, + 0x73, 0x6b, 0x69, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0xa0, 0x01, 0x0a, 0x1c, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x4c, - 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, + 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x6f, + 0x72, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x69, 0x6e, + 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x70, 0x6f, 0x74, 0x4c, 0x69, + 0x6d, 0x69, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x06, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, + 0x12, 0x3b, 0x0a, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x23, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, + 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, + 0x61, 0x67, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x22, 0xce, 0x01, + 0x0a, 0x1b, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x64, + 0x65, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, + 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, + 0x25, 0x0a, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, + 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, + 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0x5e, + 0x0a, 0x1c, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x64, + 0x65, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, + 0x0a, 0x06, 0x74, 0x72, 0x61, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, + 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, + 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x70, 0x6f, + 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x52, 0x06, 0x74, 0x72, 0x61, 0x64, 0x65, 0x73, 0x22, 0xb6, + 0x03, 0x0a, 0x14, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, + 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, + 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6b, 0x69, + 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x12, 0x14, 0x0a, + 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, 0x69, + 0x6d, 0x69, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, + 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x54, + 0x79, 0x70, 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, + 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x12, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, + 0x74, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x78, 0x65, + 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, + 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x72, + 0x61, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x72, + 0x61, 0x64, 0x65, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x13, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, + 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x0d, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x11, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, + 0x73, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x69, 0x64, 0x18, 0x0e, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x63, 0x69, 0x64, 0x22, 0x9b, 0x01, 0x0a, 0x15, 0x4f, 0x72, 0x64, 0x65, + 0x72, 0x73, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x45, 0x0a, 0x06, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x2d, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, + 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, + 0x53, 0x70, 0x6f, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, + 0x52, 0x06, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x3b, 0x0a, 0x06, 0x70, 0x61, 0x67, 0x69, + 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, + 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x70, + 0x61, 0x67, 0x69, 0x6e, 0x67, 0x22, 0xf3, 0x03, 0x0a, 0x10, 0x53, 0x70, 0x6f, 0x74, 0x4f, 0x72, + 0x64, 0x65, 0x72, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x72, + 0x64, 0x65, 0x72, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x6f, 0x72, 0x64, 0x65, 0x72, 0x48, 0x61, 0x73, 0x68, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, + 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, + 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x73, 0x5f, 0x61, 0x63, 0x74, + 0x69, 0x76, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, 0x41, 0x63, 0x74, + 0x69, 0x76, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x78, 0x65, 0x63, + 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0d, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x1d, 0x0a, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, + 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, + 0x72, 0x69, 0x63, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x5f, + 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x74, 0x72, 0x69, + 0x67, 0x67, 0x65, 0x72, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x71, 0x75, 0x61, + 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x71, 0x75, 0x61, + 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x66, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x5f, + 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, + 0x66, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x14, + 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, + 0x74, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, + 0x61, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, + 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, + 0x41, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x17, 0x0a, 0x07, 0x74, 0x78, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x0f, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x69, 0x64, + 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, 0x69, 0x64, 0x22, 0xdc, 0x01, 0x0a, 0x1a, + 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x48, 0x69, 0x73, 0x74, + 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, - 0x73, 0x6b, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6b, 0x69, 0x70, - 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x11, 0x52, - 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0xa0, 0x01, 0x0a, 0x1c, 0x53, 0x75, 0x62, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x6f, 0x72, 0x64, 0x65, 0x72, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, - 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x70, 0x6f, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4f, - 0x72, 0x64, 0x65, 0x72, 0x52, 0x06, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x3b, 0x0a, 0x06, - 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x69, + 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, + 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x1c, 0x0a, + 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x73, + 0x74, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, + 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x78, 0x65, 0x63, + 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x22, 0xa7, 0x01, 0x0a, 0x1b, 0x53, + 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x48, 0x69, 0x73, 0x74, 0x6f, + 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x05, 0x6f, 0x72, + 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x69, 0x6e, 0x6a, 0x65, + 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x70, 0x6f, 0x74, 0x4f, 0x72, 0x64, 0x65, + 0x72, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, + 0x25, 0x0a, 0x0e, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x22, 0xc7, 0x01, 0x0a, 0x18, 0x41, 0x74, 0x6f, 0x6d, 0x69, 0x63, 0x53, + 0x77, 0x61, 0x70, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x63, + 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x41, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x11, 0x52, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, + 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, + 0x12, 0x1f, 0x0a, 0x0b, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x11, 0x52, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x4e, 0x75, 0x6d, 0x62, 0x65, + 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x6f, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x11, 0x52, 0x08, 0x74, 0x6f, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x95, + 0x01, 0x0a, 0x19, 0x41, 0x74, 0x6f, 0x6d, 0x69, 0x63, 0x53, 0x77, 0x61, 0x70, 0x48, 0x69, 0x73, + 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x06, + 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, - 0x67, 0x52, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x22, 0xce, 0x01, 0x0a, 0x1b, 0x53, 0x75, - 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x4c, 0x69, - 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0c, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1b, - 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x65, - 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, - 0x73, 0x6b, 0x69, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0x5e, 0x0a, 0x1c, 0x53, 0x75, - 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x4c, 0x69, - 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x06, 0x74, 0x72, - 0x61, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x69, 0x6e, 0x6a, + 0x67, 0x52, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x12, 0x3b, 0x0a, 0x04, 0x64, 0x61, 0x74, + 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, + 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x41, 0x74, 0x6f, 0x6d, 0x69, 0x63, 0x53, 0x77, 0x61, 0x70, + 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xe0, 0x03, 0x0a, 0x0a, 0x41, 0x74, 0x6f, 0x6d, 0x69, + 0x63, 0x53, 0x77, 0x61, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x14, 0x0a, + 0x05, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x72, 0x6f, + 0x75, 0x74, 0x65, 0x12, 0x42, 0x0a, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x63, 0x6f, + 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, + 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x0a, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x3e, 0x0a, 0x09, 0x64, 0x65, 0x73, 0x74, 0x5f, + 0x63, 0x6f, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x70, 0x6f, 0x74, 0x54, 0x72, 0x61, - 0x64, 0x65, 0x52, 0x06, 0x74, 0x72, 0x61, 0x64, 0x65, 0x73, 0x22, 0xb6, 0x03, 0x0a, 0x14, 0x4f, - 0x72, 0x64, 0x65, 0x72, 0x73, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x61, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, - 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, - 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, - 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, - 0x1f, 0x0a, 0x0b, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x05, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x73, - 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, - 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x12, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, - 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x12, 0x52, - 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, - 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x27, - 0x0a, 0x0f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, - 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, - 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x72, 0x6b, 0x65, - 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x61, 0x72, - 0x6b, 0x65, 0x74, 0x49, 0x64, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x72, 0x61, 0x64, 0x65, 0x5f, - 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x72, 0x61, 0x64, 0x65, 0x49, - 0x64, 0x12, 0x2e, 0x0a, 0x13, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x6d, 0x61, 0x72, 0x6b, - 0x65, 0x74, 0x73, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, - 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x4f, 0x6e, 0x6c, - 0x79, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x69, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x63, 0x69, 0x64, 0x22, 0x9b, 0x01, 0x0a, 0x15, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x48, 0x69, - 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, - 0x06, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, - 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, - 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x70, 0x6f, 0x74, - 0x4f, 0x72, 0x64, 0x65, 0x72, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x06, 0x6f, 0x72, - 0x64, 0x65, 0x72, 0x73, 0x12, 0x3b, 0x0a, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, - 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, - 0x70, 0x63, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, - 0x67, 0x22, 0xf3, 0x03, 0x0a, 0x10, 0x53, 0x70, 0x6f, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x48, - 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, - 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x72, 0x64, 0x65, - 0x72, 0x48, 0x61, 0x73, 0x68, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, - 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, - 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x73, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, - 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x78, - 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, - 0x72, 0x64, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, - 0x69, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, - 0x12, 0x23, 0x0a, 0x0d, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x69, 0x63, - 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, - 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, - 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, - 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x66, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x5f, 0x71, 0x75, 0x61, 0x6e, - 0x74, 0x69, 0x74, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x66, 0x69, 0x6c, 0x6c, - 0x65, 0x64, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, - 0x61, 0x74, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, - 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0c, - 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, - 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0d, 0x20, - 0x01, 0x28, 0x12, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1c, - 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x07, - 0x74, 0x78, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, - 0x78, 0x48, 0x61, 0x73, 0x68, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x69, 0x64, 0x18, 0x10, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x63, 0x69, 0x64, 0x22, 0xdc, 0x01, 0x0a, 0x1a, 0x53, 0x74, 0x72, 0x65, - 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, - 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6d, - 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x72, 0x64, 0x65, - 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x6f, - 0x72, 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x69, 0x72, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x69, - 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x27, 0x0a, - 0x0f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, - 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x22, 0xa7, 0x01, 0x0a, 0x1b, 0x53, 0x74, 0x72, 0x65, 0x61, - 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, + 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x08, 0x64, + 0x65, 0x73, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x35, 0x0a, 0x04, 0x66, 0x65, 0x65, 0x73, 0x18, + 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, - 0x72, 0x70, 0x63, 0x2e, 0x53, 0x70, 0x6f, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x48, 0x69, 0x73, - 0x74, 0x6f, 0x72, 0x79, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x25, 0x0a, 0x0e, 0x6f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x22, 0xc7, 0x01, 0x0a, 0x18, 0x41, 0x74, 0x6f, 0x6d, 0x69, 0x63, 0x53, 0x77, 0x61, 0x70, 0x48, - 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, - 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x72, - 0x61, 0x63, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, - 0x73, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x11, - 0x52, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1f, 0x0a, 0x0b, - 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x11, 0x52, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1b, 0x0a, - 0x09, 0x74, 0x6f, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x11, - 0x52, 0x08, 0x74, 0x6f, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x95, 0x01, 0x0a, 0x19, 0x41, - 0x74, 0x6f, 0x6d, 0x69, 0x63, 0x53, 0x77, 0x61, 0x70, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x06, 0x70, 0x61, 0x67, 0x69, - 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, - 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x70, - 0x61, 0x67, 0x69, 0x6e, 0x67, 0x12, 0x3b, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, - 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, - 0x63, 0x2e, 0x41, 0x74, 0x6f, 0x6d, 0x69, 0x63, 0x53, 0x77, 0x61, 0x70, 0x52, 0x04, 0x64, 0x61, - 0x74, 0x61, 0x22, 0xe0, 0x03, 0x0a, 0x0a, 0x41, 0x74, 0x6f, 0x6d, 0x69, 0x63, 0x53, 0x77, 0x61, - 0x70, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x6f, 0x75, - 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x12, - 0x42, 0x0a, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x69, 0x6e, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x04, 0x66, 0x65, 0x65, 0x73, 0x12, 0x29, + 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, + 0x63, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x69, 0x6e, 0x64, + 0x65, 0x78, 0x5f, 0x62, 0x79, 0x5f, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x11, 0x52, 0x0d, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x79, 0x53, 0x65, 0x6e, 0x64, 0x65, + 0x72, 0x12, 0x37, 0x0a, 0x18, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x62, 0x79, 0x5f, 0x73, 0x65, + 0x6e, 0x64, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x11, 0x52, 0x15, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x79, 0x53, 0x65, 0x6e, 0x64, + 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x78, + 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x78, 0x48, + 0x61, 0x73, 0x68, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x64, 0x5f, + 0x61, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0a, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, + 0x65, 0x64, 0x41, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x66, 0x75, 0x6e, 0x64, 0x5f, 0x61, + 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x66, + 0x75, 0x6e, 0x64, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x34, 0x0a, 0x04, 0x43, 0x6f, 0x69, + 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x32, + 0x9e, 0x11, 0x0a, 0x18, 0x49, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53, 0x70, 0x6f, + 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x50, 0x43, 0x12, 0x64, 0x0a, 0x07, + 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x2b, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, + 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, - 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, - 0x6f, 0x69, 0x6e, 0x12, 0x3e, 0x0a, 0x09, 0x64, 0x65, 0x73, 0x74, 0x5f, 0x63, 0x6f, 0x69, 0x6e, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, + 0x70, 0x63, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x61, 0x0a, 0x06, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x12, 0x2a, 0x2e, 0x69, + 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, + 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, + 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x78, 0x0a, 0x0d, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4d, + 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x31, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x08, 0x64, 0x65, 0x73, 0x74, 0x43, - 0x6f, 0x69, 0x6e, 0x12, 0x35, 0x0a, 0x04, 0x66, 0x65, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x21, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, + 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4d, 0x61, 0x72, 0x6b, 0x65, + 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x69, 0x6e, 0x6a, 0x65, + 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4d, 0x61, + 0x72, 0x6b, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, + 0x70, 0x0a, 0x0b, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x56, 0x32, 0x12, 0x2f, + 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, + 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4f, 0x72, 0x64, + 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x56, 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x30, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, + 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4f, 0x72, + 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x56, 0x32, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x73, 0x0a, 0x0c, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x56, + 0x32, 0x12, 0x30, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, - 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x04, 0x66, 0x65, 0x65, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x6f, - 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x41, 0x64, - 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x62, - 0x79, 0x5f, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x11, 0x52, 0x0d, - 0x69, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x79, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x37, 0x0a, - 0x18, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x62, 0x79, 0x5f, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, - 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x11, 0x52, - 0x15, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x79, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x43, 0x6f, - 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x78, 0x5f, 0x68, 0x61, 0x73, - 0x68, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x12, - 0x1f, 0x0a, 0x0b, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0a, - 0x20, 0x01, 0x28, 0x12, 0x52, 0x0a, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x64, 0x41, 0x74, - 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x66, 0x75, 0x6e, 0x64, 0x5f, 0x61, 0x6d, 0x6f, 0x75, 0x6e, - 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x66, 0x75, 0x6e, 0x64, 0x41, - 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x34, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x14, 0x0a, - 0x05, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x64, 0x65, - 0x6e, 0x6f, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x32, 0x9e, 0x11, 0x0a, 0x18, - 0x49, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53, 0x70, 0x6f, 0x74, 0x45, 0x78, 0x63, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x50, 0x43, 0x12, 0x64, 0x0a, 0x07, 0x4d, 0x61, 0x72, 0x6b, - 0x65, 0x74, 0x73, 0x12, 0x2b, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, + 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x56, 0x32, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, - 0x63, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x2c, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, - 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4d, - 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x61, - 0x0a, 0x06, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x12, 0x2a, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, - 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, - 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, - 0x70, 0x63, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x78, 0x0a, 0x0d, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4d, 0x61, 0x72, 0x6b, 0x65, - 0x74, 0x73, 0x12, 0x31, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, + 0x63, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x56, 0x32, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x84, 0x01, 0x0a, 0x11, 0x53, 0x74, 0x72, 0x65, 0x61, + 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x56, 0x32, 0x12, 0x35, 0x2e, 0x69, + 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, + 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, + 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x56, 0x32, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, + 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, + 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, + 0x6b, 0x56, 0x32, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x90, 0x01, + 0x0a, 0x15, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, + 0x6b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x39, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, + 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, + 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, - 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, - 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, - 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x70, 0x0a, 0x0b, 0x4f, - 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x56, 0x32, 0x12, 0x2f, 0x2e, 0x69, 0x6e, 0x6a, + 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, + 0x12, 0x61, 0x0a, 0x06, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x2a, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, - 0x6f, 0x6b, 0x56, 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x69, 0x6e, - 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, - 0x6f, 0x6f, 0x6b, 0x56, 0x32, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x73, 0x0a, - 0x0c, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x56, 0x32, 0x12, 0x30, 0x2e, + 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, + 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x75, 0x0a, 0x0c, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, + 0x65, 0x72, 0x73, 0x12, 0x30, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, + 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, + 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, + 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, + 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x61, 0x0a, 0x06, 0x54, 0x72, + 0x61, 0x64, 0x65, 0x73, 0x12, 0x2a, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, + 0x70, 0x63, 0x2e, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x2b, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, + 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x54, + 0x72, 0x61, 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x75, 0x0a, + 0x0c, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x12, 0x30, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, - 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4f, 0x72, 0x64, 0x65, - 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x56, 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, - 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4f, 0x72, - 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x56, 0x32, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x84, 0x01, 0x0a, 0x11, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, - 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x56, 0x32, 0x12, 0x35, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, - 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, - 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x56, 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x36, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, - 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, - 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x56, 0x32, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x90, 0x01, 0x0a, 0x15, 0x53, 0x74, - 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x12, 0x39, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, - 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, - 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, - 0x6b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3a, - 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, - 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x61, 0x0a, 0x06, - 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x2a, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, - 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, - 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, - 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x75, 0x0a, 0x0c, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, - 0x30, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, - 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x31, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, - 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, - 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x61, 0x0a, 0x06, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, - 0x12, 0x2a, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, + 0x72, 0x65, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x30, 0x01, 0x12, 0x67, 0x0a, 0x08, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x56, 0x32, + 0x12, 0x2c, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x54, - 0x72, 0x61, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x69, - 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, - 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x72, 0x61, 0x64, 0x65, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x75, 0x0a, 0x0c, 0x53, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x12, 0x30, 0x2e, 0x69, 0x6e, 0x6a, 0x65, - 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x72, - 0x61, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x69, 0x6e, - 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, - 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, - 0x12, 0x67, 0x0a, 0x08, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x56, 0x32, 0x12, 0x2c, 0x2e, 0x69, - 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, - 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x72, 0x61, 0x64, 0x65, - 0x73, 0x56, 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x69, 0x6e, 0x6a, - 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x56, - 0x32, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7b, 0x0a, 0x0e, 0x53, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x56, 0x32, 0x12, 0x32, 0x2e, 0x69, 0x6e, - 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, - 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x56, 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x33, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, + 0x72, 0x61, 0x64, 0x65, 0x73, 0x56, 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, + 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, + 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x72, 0x61, + 0x64, 0x65, 0x73, 0x56, 0x32, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7b, 0x0a, + 0x0e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x56, 0x32, 0x12, + 0x32, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, - 0x72, 0x65, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x56, 0x32, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x8b, 0x01, 0x0a, 0x14, 0x53, 0x75, 0x62, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x12, - 0x38, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, - 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x75, - 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x4c, 0x69, - 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x69, 0x6e, 0x6a, 0x65, - 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8b, 0x01, 0x0a, 0x14, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x38, 0x2e, + 0x72, 0x65, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x56, 0x32, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, + 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, + 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x56, 0x32, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x8b, 0x01, 0x0a, 0x14, 0x53, + 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x4c, + 0x69, 0x73, 0x74, 0x12, 0x38, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, + 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, + 0x63, 0x2e, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4f, 0x72, 0x64, 0x65, + 0x72, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x75, 0x62, 0x61, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x4c, 0x69, 0x73, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x4c, 0x69, 0x73, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8b, 0x01, 0x0a, 0x14, 0x53, 0x75, 0x62, + 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x4c, 0x69, 0x73, + 0x74, 0x12, 0x38, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, + 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, + 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, + 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x69, 0x6e, + 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x76, 0x0a, 0x0d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, + 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x31, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x76, 0x0a, 0x0d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x48, 0x69, 0x73, 0x74, - 0x6f, 0x72, 0x79, 0x12, 0x31, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, - 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, - 0x63, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, + 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x48, 0x69, 0x73, 0x74, + 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x69, 0x6e, 0x6a, + 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x48, + 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8a, + 0x01, 0x0a, 0x13, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x48, + 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x37, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x48, 0x69, 0x73, 0x74, 0x6f, - 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8a, 0x01, 0x0a, 0x13, 0x53, - 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x48, 0x69, 0x73, 0x74, 0x6f, - 0x72, 0x79, 0x12, 0x37, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, + 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, + 0x73, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x38, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, + 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, + 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, + 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x82, 0x01, 0x0a, 0x11, + 0x41, 0x74, 0x6f, 0x6d, 0x69, 0x63, 0x53, 0x77, 0x61, 0x70, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, + 0x79, 0x12, 0x35, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, + 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, + 0x41, 0x74, 0x6f, 0x6d, 0x69, 0x63, 0x53, 0x77, 0x61, 0x70, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, + 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, + 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x41, 0x74, 0x6f, 0x6d, 0x69, 0x63, 0x53, 0x77, 0x61, + 0x70, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x42, 0x20, 0x5a, 0x1e, 0x2f, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, - 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x48, 0x69, 0x73, - 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x69, 0x6e, - 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, - 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x82, 0x01, 0x0a, 0x11, 0x41, 0x74, 0x6f, 0x6d, - 0x69, 0x63, 0x53, 0x77, 0x61, 0x70, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x35, 0x2e, - 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, - 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x41, 0x74, 0x6f, 0x6d, - 0x69, 0x63, 0x53, 0x77, 0x61, 0x70, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, - 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, - 0x70, 0x63, 0x2e, 0x41, 0x74, 0x6f, 0x6d, 0x69, 0x63, 0x53, 0x77, 0x61, 0x70, 0x48, 0x69, 0x73, - 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x20, 0x5a, 0x1e, - 0x2f, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, - 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x70, 0x63, 0x70, 0x62, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/exchange/spot_exchange_rpc/pb/goadesign_goagen_injective_spot_exchange_rpc_grpc.pb.go b/exchange/spot_exchange_rpc/pb/goadesign_goagen_injective_spot_exchange_rpc_grpc.pb.go index e276906a..12b1c14e 100644 --- a/exchange/spot_exchange_rpc/pb/goadesign_goagen_injective_spot_exchange_rpc_grpc.pb.go +++ b/exchange/spot_exchange_rpc/pb/goadesign_goagen_injective_spot_exchange_rpc_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.2.0 -// - protoc v3.19.4 +// - protoc v3.21.12 // source: goadesign_goagen_injective_spot_exchange_rpc.proto package injective_spot_exchange_rpcpb diff --git a/exchange/spot_exchange_rpc/pb/injective_spot_exchange_rpc.proto b/exchange/spot_exchange_rpc/pb/injective_spot_exchange_rpc.proto index aa7b07f4..feba38c6 100644 --- a/exchange/spot_exchange_rpc/pb/injective_spot_exchange_rpc.proto +++ b/exchange/spot_exchange_rpc/pb/injective_spot_exchange_rpc.proto @@ -76,11 +76,11 @@ message SpotMarketInfo { string ticker = 3; // Coin denom used for the base asset. string base_denom = 4; - // Token metadata for base asset, only for Ethereum-based assets + // Token metadata for base asset TokenMeta base_token_meta = 5; // Coin denom used for the quote asset. string quote_denom = 6; - // Token metadata for quote asset, only for Ethereum-based assets + // Token metadata for quote asset TokenMeta quote_token_meta = 7; // Defines the fee percentage makers pay when trading (in quote asset) string maker_fee_rate = 8; @@ -99,7 +99,7 @@ message SpotMarketInfo { message TokenMeta { // Token full name string name = 1; - // Token Ethereum contract address + // Token contract address (native or not) string address = 2; // Token symbol short name string symbol = 3; @@ -384,6 +384,8 @@ message TradesRequest { string account_address = 13; // Client order ID string cid = 14; + // Fee recipient address + string fee_recipient = 15; } message TradesResponse { @@ -450,6 +452,8 @@ message StreamTradesRequest { string account_address = 13; // Client order ID string cid = 14; + // Fee recipient address + string fee_recipient = 15; } message StreamTradesResponse { @@ -491,6 +495,8 @@ message TradesV2Request { string account_address = 13; // Client order ID string cid = 14; + // Fee recipient address + string fee_recipient = 15; } message TradesV2Response { @@ -530,6 +536,8 @@ message StreamTradesV2Request { string account_address = 13; // Client order ID string cid = 14; + // Fee recipient address + string fee_recipient = 15; } message StreamTradesV2Response { diff --git a/exchange/trading_rpc/pb/goadesign_goagen_injective_trading_rpc.pb.go b/exchange/trading_rpc/pb/goadesign_goagen_injective_trading_rpc.pb.go index fa06c65a..1c19aa31 100644 --- a/exchange/trading_rpc/pb/goadesign_goagen_injective_trading_rpc.pb.go +++ b/exchange/trading_rpc/pb/goadesign_goagen_injective_trading_rpc.pb.go @@ -8,7 +8,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.30.0 -// protoc v4.25.3 +// protoc v3.21.12 // source: goadesign_goagen_injective_trading_rpc.proto package injective_trading_rpcpb @@ -53,6 +53,16 @@ type ListTradingStrategiesRequest struct { StrategyType []string `protobuf:"bytes,10,rep,name=strategy_type,json=strategyType,proto3" json:"strategy_type,omitempty"` // Filter by market type MarketType string `protobuf:"bytes,11,opt,name=market_type,json=marketType,proto3" json:"market_type,omitempty"` + // The last executed timestamp in UNIX milliseconds for the last executed time + // of the trading strategy + LastExecutedTime int64 `protobuf:"zigzag64,12,opt,name=last_executed_time,json=lastExecutedTime,proto3" json:"last_executed_time,omitempty"` + // Include TVL in the response + WithTvl bool `protobuf:"varint,13,opt,name=with_tvl,json=withTvl,proto3" json:"with_tvl,omitempty"` + // Indicates whether the trading strategy is a trailing strategy + IsTrailingStrategy bool `protobuf:"varint,14,opt,name=is_trailing_strategy,json=isTrailingStrategy,proto3" json:"is_trailing_strategy,omitempty"` + // Indicates whether the trading strategy performance should be included in the + // response + WithPerformance bool `protobuf:"varint,15,opt,name=with_performance,json=withPerformance,proto3" json:"with_performance,omitempty"` } func (x *ListTradingStrategiesRequest) Reset() { @@ -164,6 +174,34 @@ func (x *ListTradingStrategiesRequest) GetMarketType() string { return "" } +func (x *ListTradingStrategiesRequest) GetLastExecutedTime() int64 { + if x != nil { + return x.LastExecutedTime + } + return 0 +} + +func (x *ListTradingStrategiesRequest) GetWithTvl() bool { + if x != nil { + return x.WithTvl + } + return false +} + +func (x *ListTradingStrategiesRequest) GetIsTrailingStrategy() bool { + if x != nil { + return x.IsTrailingStrategy + } + return false +} + +func (x *ListTradingStrategiesRequest) GetWithPerformance() bool { + if x != nil { + return x.WithPerformance + } + return false +} + type ListTradingStrategiesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -291,6 +329,28 @@ type TradingStrategy struct { ContractName string `protobuf:"bytes,32,opt,name=contract_name,json=contractName,proto3" json:"contract_name,omitempty"` // Type of the market MarketType string `protobuf:"bytes,33,opt,name=market_type,json=marketType,proto3" json:"market_type,omitempty"` + // lastExecutedAt timestamp in UNIX millis. + LastExecutedAt int64 `protobuf:"zigzag64,34,opt,name=last_executed_at,json=lastExecutedAt,proto3" json:"last_executed_at,omitempty"` + // trailing up price + TrailUpPrice string `protobuf:"bytes,35,opt,name=trail_up_price,json=trailUpPrice,proto3" json:"trail_up_price,omitempty"` + // trailing down price + TrailDownPrice string `protobuf:"bytes,36,opt,name=trail_down_price,json=trailDownPrice,proto3" json:"trail_down_price,omitempty"` + // trailing up counter + TrailUpCounter int64 `protobuf:"zigzag64,37,opt,name=trail_up_counter,json=trailUpCounter,proto3" json:"trail_up_counter,omitempty"` + // trailing down counter + TrailDownCounter int64 `protobuf:"zigzag64,38,opt,name=trail_down_counter,json=trailDownCounter,proto3" json:"trail_down_counter,omitempty"` + // TVL of the trading strategy + Tvl string `protobuf:"bytes,39,opt,name=tvl,proto3" json:"tvl,omitempty"` + // PnL of the trading strategy + Pnl string `protobuf:"bytes,40,opt,name=pnl,proto3" json:"pnl,omitempty"` + // PnL percentage of the trading strategy + PnlPerc string `protobuf:"bytes,41,opt,name=pnl_perc,json=pnlPerc,proto3" json:"pnl_perc,omitempty"` + // pnlUpdatedAt timestamp in UNIX millis. + PnlUpdatedAt int64 `protobuf:"zigzag64,42,opt,name=pnl_updated_at,json=pnlUpdatedAt,proto3" json:"pnl_updated_at,omitempty"` + // Indicates the performance of the trading strategy + Performance string `protobuf:"bytes,43,opt,name=performance,proto3" json:"performance,omitempty"` + // Return on investment of the trading strategy + Roi string `protobuf:"bytes,44,opt,name=roi,proto3" json:"roi,omitempty"` } func (x *TradingStrategy) Reset() { @@ -556,6 +616,83 @@ func (x *TradingStrategy) GetMarketType() string { return "" } +func (x *TradingStrategy) GetLastExecutedAt() int64 { + if x != nil { + return x.LastExecutedAt + } + return 0 +} + +func (x *TradingStrategy) GetTrailUpPrice() string { + if x != nil { + return x.TrailUpPrice + } + return "" +} + +func (x *TradingStrategy) GetTrailDownPrice() string { + if x != nil { + return x.TrailDownPrice + } + return "" +} + +func (x *TradingStrategy) GetTrailUpCounter() int64 { + if x != nil { + return x.TrailUpCounter + } + return 0 +} + +func (x *TradingStrategy) GetTrailDownCounter() int64 { + if x != nil { + return x.TrailDownCounter + } + return 0 +} + +func (x *TradingStrategy) GetTvl() string { + if x != nil { + return x.Tvl + } + return "" +} + +func (x *TradingStrategy) GetPnl() string { + if x != nil { + return x.Pnl + } + return "" +} + +func (x *TradingStrategy) GetPnlPerc() string { + if x != nil { + return x.PnlPerc + } + return "" +} + +func (x *TradingStrategy) GetPnlUpdatedAt() int64 { + if x != nil { + return x.PnlUpdatedAt + } + return 0 +} + +func (x *TradingStrategy) GetPerformance() string { + if x != nil { + return x.Performance + } + return "" +} + +func (x *TradingStrategy) GetRoi() string { + if x != nil { + return x.Roi + } + return "" +} + type ExitConfig struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -698,6 +835,176 @@ func (x *Paging) GetNext() []string { return nil } +type GetTradingStatsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *GetTradingStatsRequest) Reset() { + *x = GetTradingStatsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_goadesign_goagen_injective_trading_rpc_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetTradingStatsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetTradingStatsRequest) ProtoMessage() {} + +func (x *GetTradingStatsRequest) ProtoReflect() protoreflect.Message { + mi := &file_goadesign_goagen_injective_trading_rpc_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetTradingStatsRequest.ProtoReflect.Descriptor instead. +func (*GetTradingStatsRequest) Descriptor() ([]byte, []int) { + return file_goadesign_goagen_injective_trading_rpc_proto_rawDescGZIP(), []int{5} +} + +type GetTradingStatsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Total of unique active trading strategies + ActiveTradingStrategies uint64 `protobuf:"varint,1,opt,name=active_trading_strategies,json=activeTradingStrategies,proto3" json:"active_trading_strategies,omitempty"` + // Total number of created trading strategies + TotalTradingStrategiesCreated uint64 `protobuf:"varint,2,opt,name=total_trading_strategies_created,json=totalTradingStrategiesCreated,proto3" json:"total_trading_strategies_created,omitempty"` + // Total TVL of all active trading strategies + TotalTvl string `protobuf:"bytes,3,opt,name=total_tvl,json=totalTvl,proto3" json:"total_tvl,omitempty"` + // Market stats + Markets []*Market `protobuf:"bytes,4,rep,name=markets,proto3" json:"markets,omitempty"` +} + +func (x *GetTradingStatsResponse) Reset() { + *x = GetTradingStatsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_goadesign_goagen_injective_trading_rpc_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetTradingStatsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetTradingStatsResponse) ProtoMessage() {} + +func (x *GetTradingStatsResponse) ProtoReflect() protoreflect.Message { + mi := &file_goadesign_goagen_injective_trading_rpc_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetTradingStatsResponse.ProtoReflect.Descriptor instead. +func (*GetTradingStatsResponse) Descriptor() ([]byte, []int) { + return file_goadesign_goagen_injective_trading_rpc_proto_rawDescGZIP(), []int{6} +} + +func (x *GetTradingStatsResponse) GetActiveTradingStrategies() uint64 { + if x != nil { + return x.ActiveTradingStrategies + } + return 0 +} + +func (x *GetTradingStatsResponse) GetTotalTradingStrategiesCreated() uint64 { + if x != nil { + return x.TotalTradingStrategiesCreated + } + return 0 +} + +func (x *GetTradingStatsResponse) GetTotalTvl() string { + if x != nil { + return x.TotalTvl + } + return "" +} + +func (x *GetTradingStatsResponse) GetMarkets() []*Market { + if x != nil { + return x.Markets + } + return nil +} + +type Market struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // MarketId of the trading strategy + MarketId string `protobuf:"bytes,1,opt,name=market_id,json=marketId,proto3" json:"market_id,omitempty"` + // Total of unique active trading strategies + ActiveTradingStrategies uint64 `protobuf:"varint,2,opt,name=active_trading_strategies,json=activeTradingStrategies,proto3" json:"active_trading_strategies,omitempty"` +} + +func (x *Market) Reset() { + *x = Market{} + if protoimpl.UnsafeEnabled { + mi := &file_goadesign_goagen_injective_trading_rpc_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Market) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Market) ProtoMessage() {} + +func (x *Market) ProtoReflect() protoreflect.Message { + mi := &file_goadesign_goagen_injective_trading_rpc_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Market.ProtoReflect.Descriptor instead. +func (*Market) Descriptor() ([]byte, []int) { + return file_goadesign_goagen_injective_trading_rpc_proto_rawDescGZIP(), []int{7} +} + +func (x *Market) GetMarketId() string { + if x != nil { + return x.MarketId + } + return "" +} + +func (x *Market) GetActiveTradingStrategies() uint64 { + if x != nil { + return x.ActiveTradingStrategies + } + return 0 +} + var File_goadesign_goagen_injective_trading_rpc_proto protoreflect.FileDescriptor var file_goadesign_goagen_injective_trading_rpc_proto_rawDesc = []byte{ @@ -705,7 +1012,7 @@ var file_goadesign_goagen_injective_trading_rpc_proto_rawDesc = []byte{ 0x65, 0x6e, 0x5f, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x15, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x64, 0x69, 0x6e, - 0x67, 0x5f, 0x72, 0x70, 0x63, 0x22, 0xf6, 0x02, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, + 0x67, 0x5f, 0x72, 0x70, 0x63, 0x22, 0x9c, 0x04, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1b, 0x0a, 0x09, @@ -728,128 +1035,192 @@ var file_goadesign_goagen_injective_trading_rpc_proto_rawDesc = []byte{ 0x74, 0x65, 0x67, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0b, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x22, 0x9e, - 0x01, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x74, - 0x72, 0x61, 0x74, 0x65, 0x67, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x46, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x69, 0x65, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, - 0x5f, 0x74, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x72, 0x61, - 0x64, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x52, 0x0a, 0x73, 0x74, - 0x72, 0x61, 0x74, 0x65, 0x67, 0x69, 0x65, 0x73, 0x12, 0x35, 0x0a, 0x06, 0x70, 0x61, 0x67, 0x69, - 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, - 0x74, 0x69, 0x76, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x70, 0x63, - 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x22, - 0xd9, 0x0a, 0x0a, 0x0f, 0x54, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x72, 0x61, 0x74, - 0x65, 0x67, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, - 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, - 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, - 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x61, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, - 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, - 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, - 0x27, 0x0a, 0x0f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x69, - 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x62, 0x61, 0x73, 0x65, - 0x5f, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0c, 0x62, 0x61, 0x73, 0x65, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x25, 0x0a, - 0x0e, 0x71, 0x75, 0x6f, 0x74, 0x65, 0x5f, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, - 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x71, 0x75, 0x6f, 0x74, 0x65, 0x51, 0x75, 0x61, 0x6e, - 0x74, 0x69, 0x74, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x5f, 0x62, 0x6f, - 0x75, 0x6e, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6c, 0x6f, 0x77, 0x65, 0x72, - 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x75, 0x70, 0x70, 0x65, 0x72, 0x5f, 0x62, - 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x75, 0x70, 0x70, 0x65, - 0x72, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x6c, - 0x6f, 0x73, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x74, 0x6f, 0x70, 0x4c, - 0x6f, 0x73, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x61, 0x6b, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x66, - 0x69, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x61, 0x6b, 0x65, 0x50, 0x72, - 0x6f, 0x66, 0x69, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x77, 0x61, 0x70, 0x5f, 0x66, 0x65, 0x65, - 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x77, 0x61, 0x70, 0x46, 0x65, 0x65, 0x12, - 0x21, 0x0a, 0x0c, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x18, - 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x62, 0x61, 0x73, 0x65, 0x44, 0x65, 0x70, 0x6f, 0x73, - 0x69, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x71, 0x75, 0x6f, 0x74, 0x65, 0x5f, 0x64, 0x65, 0x70, 0x6f, - 0x73, 0x69, 0x74, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x71, 0x75, 0x6f, 0x74, 0x65, - 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x6d, 0x61, 0x72, 0x6b, 0x65, - 0x74, 0x5f, 0x6d, 0x69, 0x64, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0e, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x4d, 0x69, 0x64, 0x50, 0x72, 0x69, 0x63, - 0x65, 0x12, 0x3e, 0x0a, 0x1b, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x71, 0x75, 0x6f, 0x74, 0x65, 0x5f, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, - 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x19, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x6f, 0x74, 0x65, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, - 0x79, 0x12, 0x3c, 0x0a, 0x1a, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, - 0x16, 0x20, 0x01, 0x28, 0x09, 0x52, 0x18, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x73, 0x65, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, - 0x31, 0x0a, 0x15, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x5f, 0x67, 0x72, 0x69, - 0x64, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x18, 0x17, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, - 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4f, 0x66, 0x47, 0x72, 0x69, 0x64, 0x4c, 0x65, 0x76, 0x65, - 0x6c, 0x73, 0x12, 0x3c, 0x0a, 0x1b, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x5f, 0x65, 0x78, 0x69, - 0x74, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x71, 0x75, 0x6f, 0x74, 0x65, 0x5f, 0x6f, 0x6e, 0x6c, - 0x79, 0x18, 0x18, 0x20, 0x01, 0x28, 0x08, 0x52, 0x17, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x45, - 0x78, 0x69, 0x74, 0x57, 0x69, 0x74, 0x68, 0x51, 0x75, 0x6f, 0x74, 0x65, 0x4f, 0x6e, 0x6c, 0x79, - 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, - 0x19, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, 0x6f, 0x70, 0x52, 0x65, 0x61, 0x73, 0x6f, - 0x6e, 0x12, 0x2b, 0x0a, 0x11, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x65, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x70, 0x65, - 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x25, - 0x0a, 0x0e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, - 0x18, 0x0d, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x48, - 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, - 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0d, 0x72, - 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1d, 0x0a, 0x0a, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x12, - 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x75, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x12, 0x52, - 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x78, - 0x69, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, - 0x78, 0x69, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x4b, 0x0a, 0x10, 0x73, 0x74, 0x6f, 0x70, 0x5f, - 0x6c, 0x6f, 0x73, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x1c, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x21, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x74, 0x72, - 0x61, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x45, 0x78, 0x69, 0x74, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0e, 0x73, 0x74, 0x6f, 0x70, 0x4c, 0x6f, 0x73, 0x73, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x12, 0x4f, 0x0a, 0x12, 0x74, 0x61, 0x6b, 0x65, 0x5f, 0x70, 0x72, 0x6f, - 0x66, 0x69, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x21, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x74, 0x72, 0x61, - 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x45, 0x78, 0x69, 0x74, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x52, 0x10, 0x74, 0x61, 0x6b, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x74, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, - 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x74, - 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x6f, - 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x1f, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x56, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, - 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x20, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6f, - 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x61, - 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x21, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x22, 0x48, 0x0a, 0x0a, 0x45, - 0x78, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x78, 0x69, - 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, - 0x69, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x78, 0x69, 0x74, 0x5f, 0x70, - 0x72, 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x65, 0x78, 0x69, 0x74, - 0x50, 0x72, 0x69, 0x63, 0x65, 0x22, 0x86, 0x01, 0x0a, 0x06, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, - 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x12, 0x52, - 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x11, 0x52, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x6f, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x11, 0x52, 0x02, 0x74, 0x6f, 0x12, 0x2e, 0x0a, 0x13, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x5f, 0x62, 0x79, 0x5f, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x12, 0x52, 0x11, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x79, - 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x65, - 0x78, 0x74, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x65, 0x78, 0x74, 0x32, 0x9a, - 0x01, 0x0a, 0x13, 0x49, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x54, 0x72, 0x61, 0x64, - 0x69, 0x6e, 0x67, 0x52, 0x50, 0x43, 0x12, 0x82, 0x01, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x54, - 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x69, 0x65, 0x73, - 0x12, 0x33, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x74, 0x72, 0x61, - 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, + 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2c, + 0x0a, 0x12, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x64, 0x5f, + 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x12, 0x52, 0x10, 0x6c, 0x61, 0x73, 0x74, + 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, + 0x77, 0x69, 0x74, 0x68, 0x5f, 0x74, 0x76, 0x6c, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, + 0x77, 0x69, 0x74, 0x68, 0x54, 0x76, 0x6c, 0x12, 0x30, 0x0a, 0x14, 0x69, 0x73, 0x5f, 0x74, 0x72, + 0x61, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x18, + 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x69, 0x73, 0x54, 0x72, 0x61, 0x69, 0x6c, 0x69, 0x6e, + 0x67, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, 0x29, 0x0a, 0x10, 0x77, 0x69, 0x74, + 0x68, 0x5f, 0x70, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x0f, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0f, 0x77, 0x69, 0x74, 0x68, 0x50, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, + 0x61, 0x6e, 0x63, 0x65, 0x22, 0x9e, 0x01, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x69, 0x65, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, + 0x67, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x69, 0x6e, 0x6a, + 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x72, + 0x70, 0x63, 0x2e, 0x54, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, + 0x67, 0x79, 0x52, 0x0a, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x69, 0x65, 0x73, 0x12, 0x35, + 0x0a, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, + 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x64, 0x69, + 0x6e, 0x67, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x70, + 0x61, 0x67, 0x69, 0x6e, 0x67, 0x22, 0xc4, 0x0d, 0x0a, 0x0f, 0x54, 0x72, 0x61, 0x64, 0x69, 0x6e, + 0x67, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, + 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, + 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, + 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, + 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x41, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, + 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x23, + 0x0a, 0x0d, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x62, 0x61, 0x73, 0x65, 0x51, 0x75, 0x61, 0x6e, 0x74, + 0x69, 0x74, 0x79, 0x12, 0x25, 0x0a, 0x0e, 0x71, 0x75, 0x6f, 0x74, 0x65, 0x5f, 0x71, 0x75, 0x61, + 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x71, 0x75, 0x6f, + 0x74, 0x65, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x6f, + 0x77, 0x65, 0x72, 0x5f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x75, + 0x70, 0x70, 0x65, 0x72, 0x5f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x75, 0x70, 0x70, 0x65, 0x72, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x1b, 0x0a, 0x09, + 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x6c, 0x6f, 0x73, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x73, 0x74, 0x6f, 0x70, 0x4c, 0x6f, 0x73, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x61, 0x6b, + 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x74, 0x61, 0x6b, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x77, + 0x61, 0x70, 0x5f, 0x66, 0x65, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x77, + 0x61, 0x70, 0x46, 0x65, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x64, 0x65, + 0x70, 0x6f, 0x73, 0x69, 0x74, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x62, 0x61, 0x73, + 0x65, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x71, 0x75, 0x6f, 0x74, + 0x65, 0x5f, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0c, 0x71, 0x75, 0x6f, 0x74, 0x65, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x12, 0x28, 0x0a, + 0x10, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x6d, 0x69, 0x64, 0x5f, 0x70, 0x72, 0x69, 0x63, + 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x4d, + 0x69, 0x64, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x3e, 0x0a, 0x1b, 0x73, 0x75, 0x62, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x71, 0x75, 0x6f, 0x74, 0x65, 0x5f, 0x71, 0x75, + 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x19, 0x73, 0x75, + 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x6f, 0x74, 0x65, 0x51, + 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x3c, 0x0a, 0x1a, 0x73, 0x75, 0x62, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x71, 0x75, 0x61, + 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x16, 0x20, 0x01, 0x28, 0x09, 0x52, 0x18, 0x73, 0x75, 0x62, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x73, 0x65, 0x51, 0x75, 0x61, + 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x31, 0x0a, 0x15, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f, + 0x6f, 0x66, 0x5f, 0x67, 0x72, 0x69, 0x64, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x18, 0x17, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4f, 0x66, 0x47, 0x72, + 0x69, 0x64, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x12, 0x3c, 0x0a, 0x1b, 0x73, 0x68, 0x6f, 0x75, + 0x6c, 0x64, 0x5f, 0x65, 0x78, 0x69, 0x74, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x71, 0x75, 0x6f, + 0x74, 0x65, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x18, 0x20, 0x01, 0x28, 0x08, 0x52, 0x17, 0x73, + 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x45, 0x78, 0x69, 0x74, 0x57, 0x69, 0x74, 0x68, 0x51, 0x75, 0x6f, + 0x74, 0x65, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x72, + 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x19, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, 0x6f, + 0x70, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x11, 0x70, 0x65, 0x6e, 0x64, 0x69, + 0x6e, 0x67, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x1a, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x10, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x45, 0x78, 0x65, 0x63, 0x75, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, + 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0d, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x64, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x72, + 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x0e, 0x20, + 0x01, 0x28, 0x12, 0x52, 0x0d, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x48, 0x65, 0x69, 0x67, + 0x68, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, + 0x18, 0x0f, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, + 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, + 0x10, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, + 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x78, 0x69, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x1b, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x69, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x4b, 0x0a, + 0x10, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x6c, 0x6f, 0x73, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, + 0x69, 0x76, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x70, 0x63, 0x2e, + 0x45, 0x78, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0e, 0x73, 0x74, 0x6f, 0x70, + 0x4c, 0x6f, 0x73, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x4f, 0x0a, 0x12, 0x74, 0x61, + 0x6b, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, + 0x76, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x45, + 0x78, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x10, 0x74, 0x61, 0x6b, 0x65, 0x50, + 0x72, 0x6f, 0x66, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x23, 0x0a, 0x0d, 0x73, + 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x1e, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0c, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x29, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x74, + 0x72, 0x61, 0x63, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x63, + 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x20, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x21, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x28, 0x0a, 0x10, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, + 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x22, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0e, 0x6c, 0x61, 0x73, + 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x24, 0x0a, 0x0e, 0x74, + 0x72, 0x61, 0x69, 0x6c, 0x5f, 0x75, 0x70, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x23, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0c, 0x74, 0x72, 0x61, 0x69, 0x6c, 0x55, 0x70, 0x50, 0x72, 0x69, 0x63, + 0x65, 0x12, 0x28, 0x0a, 0x10, 0x74, 0x72, 0x61, 0x69, 0x6c, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x5f, + 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x24, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x74, 0x72, 0x61, + 0x69, 0x6c, 0x44, 0x6f, 0x77, 0x6e, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x74, + 0x72, 0x61, 0x69, 0x6c, 0x5f, 0x75, 0x70, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x18, + 0x25, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0e, 0x74, 0x72, 0x61, 0x69, 0x6c, 0x55, 0x70, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x2c, 0x0a, 0x12, 0x74, 0x72, 0x61, 0x69, 0x6c, 0x5f, 0x64, + 0x6f, 0x77, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x18, 0x26, 0x20, 0x01, 0x28, + 0x12, 0x52, 0x10, 0x74, 0x72, 0x61, 0x69, 0x6c, 0x44, 0x6f, 0x77, 0x6e, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x76, 0x6c, 0x18, 0x27, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x74, 0x76, 0x6c, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x6e, 0x6c, 0x18, 0x28, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x70, 0x6e, 0x6c, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x6e, 0x6c, 0x5f, 0x70, + 0x65, 0x72, 0x63, 0x18, 0x29, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x6e, 0x6c, 0x50, 0x65, + 0x72, 0x63, 0x12, 0x24, 0x0a, 0x0e, 0x70, 0x6e, 0x6c, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x64, 0x5f, 0x61, 0x74, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0c, 0x70, 0x6e, 0x6c, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x65, 0x72, 0x66, + 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x2b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, + 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x72, 0x6f, + 0x69, 0x18, 0x2c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x72, 0x6f, 0x69, 0x22, 0x48, 0x0a, 0x0a, + 0x45, 0x78, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x78, + 0x69, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, + 0x78, 0x69, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x78, 0x69, 0x74, 0x5f, + 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x65, 0x78, 0x69, + 0x74, 0x50, 0x72, 0x69, 0x63, 0x65, 0x22, 0x86, 0x01, 0x0a, 0x06, 0x50, 0x61, 0x67, 0x69, 0x6e, + 0x67, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x12, + 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x11, 0x52, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x74, + 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x11, 0x52, 0x02, 0x74, 0x6f, 0x12, 0x2e, 0x0a, 0x13, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x62, 0x79, 0x5f, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x12, 0x52, 0x11, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, + 0x79, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x65, 0x78, 0x74, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x65, 0x78, 0x74, 0x22, + 0x18, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, + 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xf4, 0x01, 0x0a, 0x17, 0x47, 0x65, + 0x74, 0x54, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x19, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, + 0x74, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x69, + 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x17, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x54, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x69, 0x65, + 0x73, 0x12, 0x47, 0x0a, 0x20, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x74, 0x72, 0x61, 0x64, 0x69, + 0x6e, 0x67, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x69, 0x65, 0x73, 0x5f, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x1d, 0x74, 0x6f, 0x74, + 0x61, 0x6c, 0x54, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, + 0x69, 0x65, 0x73, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x6f, + 0x74, 0x61, 0x6c, 0x5f, 0x74, 0x76, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, + 0x6f, 0x74, 0x61, 0x6c, 0x54, 0x76, 0x6c, 0x12, 0x37, 0x0a, 0x07, 0x6d, 0x61, 0x72, 0x6b, 0x65, + 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, + 0x74, 0x69, 0x76, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x70, 0x63, + 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x52, 0x07, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, + 0x22, 0x61, 0x0a, 0x06, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, + 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, + 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x3a, 0x0a, 0x19, 0x61, 0x63, 0x74, 0x69, 0x76, + 0x65, 0x5f, 0x74, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, + 0x67, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x17, 0x61, 0x63, 0x74, 0x69, + 0x76, 0x65, 0x54, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, + 0x69, 0x65, 0x73, 0x32, 0x8c, 0x02, 0x0a, 0x13, 0x49, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, + 0x65, 0x54, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x50, 0x43, 0x12, 0x82, 0x01, 0x0a, 0x15, + 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x72, 0x61, 0x74, + 0x65, 0x67, 0x69, 0x65, 0x73, 0x12, 0x33, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, - 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x1a, 0x5a, 0x18, 0x2f, - 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x64, 0x69, 0x6e, - 0x67, 0x5f, 0x72, 0x70, 0x63, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x69, 0x6e, 0x6a, + 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x72, + 0x70, 0x63, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x74, + 0x72, 0x61, 0x74, 0x65, 0x67, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x70, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x74, + 0x61, 0x74, 0x73, 0x12, 0x2d, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, + 0x74, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x54, + 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x74, + 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, + 0x61, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x42, 0x1a, 0x5a, 0x18, 0x2f, 0x69, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x5f, 0x74, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x70, 0x63, 0x70, 0x62, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -864,26 +1235,32 @@ func file_goadesign_goagen_injective_trading_rpc_proto_rawDescGZIP() []byte { return file_goadesign_goagen_injective_trading_rpc_proto_rawDescData } -var file_goadesign_goagen_injective_trading_rpc_proto_msgTypes = make([]protoimpl.MessageInfo, 5) +var file_goadesign_goagen_injective_trading_rpc_proto_msgTypes = make([]protoimpl.MessageInfo, 8) var file_goadesign_goagen_injective_trading_rpc_proto_goTypes = []interface{}{ (*ListTradingStrategiesRequest)(nil), // 0: injective_trading_rpc.ListTradingStrategiesRequest (*ListTradingStrategiesResponse)(nil), // 1: injective_trading_rpc.ListTradingStrategiesResponse (*TradingStrategy)(nil), // 2: injective_trading_rpc.TradingStrategy (*ExitConfig)(nil), // 3: injective_trading_rpc.ExitConfig (*Paging)(nil), // 4: injective_trading_rpc.Paging + (*GetTradingStatsRequest)(nil), // 5: injective_trading_rpc.GetTradingStatsRequest + (*GetTradingStatsResponse)(nil), // 6: injective_trading_rpc.GetTradingStatsResponse + (*Market)(nil), // 7: injective_trading_rpc.Market } var file_goadesign_goagen_injective_trading_rpc_proto_depIdxs = []int32{ 2, // 0: injective_trading_rpc.ListTradingStrategiesResponse.strategies:type_name -> injective_trading_rpc.TradingStrategy 4, // 1: injective_trading_rpc.ListTradingStrategiesResponse.paging:type_name -> injective_trading_rpc.Paging 3, // 2: injective_trading_rpc.TradingStrategy.stop_loss_config:type_name -> injective_trading_rpc.ExitConfig 3, // 3: injective_trading_rpc.TradingStrategy.take_profit_config:type_name -> injective_trading_rpc.ExitConfig - 0, // 4: injective_trading_rpc.InjectiveTradingRPC.ListTradingStrategies:input_type -> injective_trading_rpc.ListTradingStrategiesRequest - 1, // 5: injective_trading_rpc.InjectiveTradingRPC.ListTradingStrategies:output_type -> injective_trading_rpc.ListTradingStrategiesResponse - 5, // [5:6] is the sub-list for method output_type - 4, // [4:5] is the sub-list for method input_type - 4, // [4:4] is the sub-list for extension type_name - 4, // [4:4] is the sub-list for extension extendee - 0, // [0:4] is the sub-list for field type_name + 7, // 4: injective_trading_rpc.GetTradingStatsResponse.markets:type_name -> injective_trading_rpc.Market + 0, // 5: injective_trading_rpc.InjectiveTradingRPC.ListTradingStrategies:input_type -> injective_trading_rpc.ListTradingStrategiesRequest + 5, // 6: injective_trading_rpc.InjectiveTradingRPC.GetTradingStats:input_type -> injective_trading_rpc.GetTradingStatsRequest + 1, // 7: injective_trading_rpc.InjectiveTradingRPC.ListTradingStrategies:output_type -> injective_trading_rpc.ListTradingStrategiesResponse + 6, // 8: injective_trading_rpc.InjectiveTradingRPC.GetTradingStats:output_type -> injective_trading_rpc.GetTradingStatsResponse + 7, // [7:9] is the sub-list for method output_type + 5, // [5:7] is the sub-list for method input_type + 5, // [5:5] is the sub-list for extension type_name + 5, // [5:5] is the sub-list for extension extendee + 0, // [0:5] is the sub-list for field type_name } func init() { file_goadesign_goagen_injective_trading_rpc_proto_init() } @@ -952,6 +1329,42 @@ func file_goadesign_goagen_injective_trading_rpc_proto_init() { return nil } } + file_goadesign_goagen_injective_trading_rpc_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetTradingStatsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_goadesign_goagen_injective_trading_rpc_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetTradingStatsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_goadesign_goagen_injective_trading_rpc_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Market); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } type x struct{} out := protoimpl.TypeBuilder{ @@ -959,7 +1372,7 @@ func file_goadesign_goagen_injective_trading_rpc_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_goadesign_goagen_injective_trading_rpc_proto_rawDesc, NumEnums: 0, - NumMessages: 5, + NumMessages: 8, NumExtensions: 0, NumServices: 1, }, diff --git a/exchange/trading_rpc/pb/goadesign_goagen_injective_trading_rpc_grpc.pb.go b/exchange/trading_rpc/pb/goadesign_goagen_injective_trading_rpc_grpc.pb.go index ec918fd5..db5c53ae 100644 --- a/exchange/trading_rpc/pb/goadesign_goagen_injective_trading_rpc_grpc.pb.go +++ b/exchange/trading_rpc/pb/goadesign_goagen_injective_trading_rpc_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.2.0 -// - protoc v4.25.3 +// - protoc v3.21.12 // source: goadesign_goagen_injective_trading_rpc.proto package injective_trading_rpcpb @@ -24,6 +24,8 @@ const _ = grpc.SupportPackageIsVersion7 type InjectiveTradingRPCClient interface { // Lists all trading strategies ListTradingStrategies(ctx context.Context, in *ListTradingStrategiesRequest, opts ...grpc.CallOption) (*ListTradingStrategiesResponse, error) + // GetStats returns global statistics in the last 24hs + GetTradingStats(ctx context.Context, in *GetTradingStatsRequest, opts ...grpc.CallOption) (*GetTradingStatsResponse, error) } type injectiveTradingRPCClient struct { @@ -43,12 +45,23 @@ func (c *injectiveTradingRPCClient) ListTradingStrategies(ctx context.Context, i return out, nil } +func (c *injectiveTradingRPCClient) GetTradingStats(ctx context.Context, in *GetTradingStatsRequest, opts ...grpc.CallOption) (*GetTradingStatsResponse, error) { + out := new(GetTradingStatsResponse) + err := c.cc.Invoke(ctx, "/injective_trading_rpc.InjectiveTradingRPC/GetTradingStats", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // InjectiveTradingRPCServer is the server API for InjectiveTradingRPC service. // All implementations must embed UnimplementedInjectiveTradingRPCServer // for forward compatibility type InjectiveTradingRPCServer interface { // Lists all trading strategies ListTradingStrategies(context.Context, *ListTradingStrategiesRequest) (*ListTradingStrategiesResponse, error) + // GetStats returns global statistics in the last 24hs + GetTradingStats(context.Context, *GetTradingStatsRequest) (*GetTradingStatsResponse, error) mustEmbedUnimplementedInjectiveTradingRPCServer() } @@ -59,6 +72,9 @@ type UnimplementedInjectiveTradingRPCServer struct { func (UnimplementedInjectiveTradingRPCServer) ListTradingStrategies(context.Context, *ListTradingStrategiesRequest) (*ListTradingStrategiesResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ListTradingStrategies not implemented") } +func (UnimplementedInjectiveTradingRPCServer) GetTradingStats(context.Context, *GetTradingStatsRequest) (*GetTradingStatsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetTradingStats not implemented") +} func (UnimplementedInjectiveTradingRPCServer) mustEmbedUnimplementedInjectiveTradingRPCServer() {} // UnsafeInjectiveTradingRPCServer may be embedded to opt out of forward compatibility for this service. @@ -90,6 +106,24 @@ func _InjectiveTradingRPC_ListTradingStrategies_Handler(srv interface{}, ctx con return interceptor(ctx, in, info, handler) } +func _InjectiveTradingRPC_GetTradingStats_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetTradingStatsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(InjectiveTradingRPCServer).GetTradingStats(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/injective_trading_rpc.InjectiveTradingRPC/GetTradingStats", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(InjectiveTradingRPCServer).GetTradingStats(ctx, req.(*GetTradingStatsRequest)) + } + return interceptor(ctx, in, info, handler) +} + // InjectiveTradingRPC_ServiceDesc is the grpc.ServiceDesc for InjectiveTradingRPC service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -101,6 +135,10 @@ var InjectiveTradingRPC_ServiceDesc = grpc.ServiceDesc{ MethodName: "ListTradingStrategies", Handler: _InjectiveTradingRPC_ListTradingStrategies_Handler, }, + { + MethodName: "GetTradingStats", + Handler: _InjectiveTradingRPC_GetTradingStats_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "goadesign_goagen_injective_trading_rpc.proto", diff --git a/exchange/trading_rpc/pb/injective_trading_rpc.pb.gw.go b/exchange/trading_rpc/pb/injective_trading_rpc.pb.gw.go index 6e6cf424..cbd4dcd2 100644 --- a/exchange/trading_rpc/pb/injective_trading_rpc.pb.gw.go +++ b/exchange/trading_rpc/pb/injective_trading_rpc.pb.gw.go @@ -65,6 +65,40 @@ func local_request_InjectiveTradingRPC_ListTradingStrategies_0(ctx context.Conte } +func request_InjectiveTradingRPC_GetTradingStats_0(ctx context.Context, marshaler runtime.Marshaler, client InjectiveTradingRPCClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetTradingStatsRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.GetTradingStats(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_InjectiveTradingRPC_GetTradingStats_0(ctx context.Context, marshaler runtime.Marshaler, server InjectiveTradingRPCServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetTradingStatsRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.GetTradingStats(ctx, &protoReq) + return msg, metadata, err + +} + // RegisterInjectiveTradingRPCHandlerServer registers the http handlers for service InjectiveTradingRPC to "mux". // UnaryRPC :call InjectiveTradingRPCServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. @@ -96,6 +130,31 @@ func RegisterInjectiveTradingRPCHandlerServer(ctx context.Context, mux *runtime. }) + mux.Handle("POST", pattern_InjectiveTradingRPC_GetTradingStats_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/injective_trading_rpc.InjectiveTradingRPC/GetTradingStats", runtime.WithHTTPPathPattern("/injective_trading_rpc.InjectiveTradingRPC/GetTradingStats")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_InjectiveTradingRPC_GetTradingStats_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_InjectiveTradingRPC_GetTradingStats_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + return nil } @@ -159,13 +218,39 @@ func RegisterInjectiveTradingRPCHandlerClient(ctx context.Context, mux *runtime. }) + mux.Handle("POST", pattern_InjectiveTradingRPC_GetTradingStats_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/injective_trading_rpc.InjectiveTradingRPC/GetTradingStats", runtime.WithHTTPPathPattern("/injective_trading_rpc.InjectiveTradingRPC/GetTradingStats")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_InjectiveTradingRPC_GetTradingStats_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_InjectiveTradingRPC_GetTradingStats_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + return nil } var ( pattern_InjectiveTradingRPC_ListTradingStrategies_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"injective_trading_rpc.InjectiveTradingRPC", "ListTradingStrategies"}, "")) + + pattern_InjectiveTradingRPC_GetTradingStats_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"injective_trading_rpc.InjectiveTradingRPC", "GetTradingStats"}, "")) ) var ( forward_InjectiveTradingRPC_ListTradingStrategies_0 = runtime.ForwardResponseMessage + + forward_InjectiveTradingRPC_GetTradingStats_0 = runtime.ForwardResponseMessage ) diff --git a/exchange/trading_rpc/pb/injective_trading_rpc.proto b/exchange/trading_rpc/pb/injective_trading_rpc.proto index 18b00922..681ff769 100644 --- a/exchange/trading_rpc/pb/injective_trading_rpc.proto +++ b/exchange/trading_rpc/pb/injective_trading_rpc.proto @@ -16,6 +16,8 @@ option go_package = "/injective_trading_rpcpb"; service InjectiveTradingRPC { // Lists all trading strategies rpc ListTradingStrategies (ListTradingStrategiesRequest) returns (ListTradingStrategiesResponse); + // GetStats returns global statistics in the last 24hs + rpc GetTradingStats (GetTradingStatsRequest) returns (GetTradingStatsResponse); } message ListTradingStrategiesRequest { @@ -40,6 +42,16 @@ message ListTradingStrategiesRequest { repeated string strategy_type = 10; // Filter by market type string market_type = 11; + // The last executed timestamp in UNIX milliseconds for the last executed time +// of the trading strategy + sint64 last_executed_time = 12; + // Include TVL in the response + bool with_tvl = 13; + // Indicates whether the trading strategy is a trailing strategy + bool is_trailing_strategy = 14; + // Indicates whether the trading strategy performance should be included in the +// response + bool with_performance = 15; } message ListTradingStrategiesResponse { @@ -115,6 +127,28 @@ message TradingStrategy { string contract_name = 32; // Type of the market string market_type = 33; + // lastExecutedAt timestamp in UNIX millis. + sint64 last_executed_at = 34; + // trailing up price + string trail_up_price = 35; + // trailing down price + string trail_down_price = 36; + // trailing up counter + sint64 trail_up_counter = 37; + // trailing down counter + sint64 trail_down_counter = 38; + // TVL of the trading strategy + string tvl = 39; + // PnL of the trading strategy + string pnl = 40; + // PnL percentage of the trading strategy + string pnl_perc = 41; + // pnlUpdatedAt timestamp in UNIX millis. + sint64 pnl_updated_at = 42; + // Indicates the performance of the trading strategy + string performance = 43; + // Return on investment of the trading strategy + string roi = 44; } message ExitConfig { @@ -136,3 +170,24 @@ message Paging { // array of tokens to navigate to the next pages repeated string next = 5; } + +message GetTradingStatsRequest { +} + +message GetTradingStatsResponse { + // Total of unique active trading strategies + uint64 active_trading_strategies = 1; + // Total number of created trading strategies + uint64 total_trading_strategies_created = 2; + // Total TVL of all active trading strategies + string total_tvl = 3; + // Market stats + repeated Market markets = 4; +} + +message Market { + // MarketId of the trading strategy + string market_id = 1; + // Total of unique active trading strategies + uint64 active_trading_strategies = 2; +} diff --git a/exchange/trading_rpc/pb/injective_trading_rpc_grpc.pb_mock.go b/exchange/trading_rpc/pb/injective_trading_rpc_grpc.pb_mock.go index 17ef5dbc..1a3cc73b 100644 --- a/exchange/trading_rpc/pb/injective_trading_rpc_grpc.pb_mock.go +++ b/exchange/trading_rpc/pb/injective_trading_rpc_grpc.pb_mock.go @@ -1,5 +1,10 @@ // Code generated by MockGen. DO NOT EDIT. // Source: api/gen/grpc/injective_trading_rpc/pb/goadesign_goagen_injective_trading_rpc_grpc.pb.go +// +// Generated by this command: +// +// mockgen -source=api/gen/grpc/injective_trading_rpc/pb/goadesign_goagen_injective_trading_rpc_grpc.pb.go -destination=api/gen/grpc/injective_trading_rpc/pb/injective_trading_rpc_grpc.pb_mock.go -package=injective_trading_rpcpb +// // Package injective_trading_rpcpb is a generated GoMock package. package injective_trading_rpcpb @@ -8,7 +13,7 @@ import ( context "context" reflect "reflect" - gomock "github.com/golang/mock/gomock" + gomock "go.uber.org/mock/gomock" grpc "google.golang.org/grpc" ) @@ -35,10 +40,30 @@ func (m *MockInjectiveTradingRPCClient) EXPECT() *MockInjectiveTradingRPCClientM return m.recorder } +// GetTradingStats mocks base method. +func (m *MockInjectiveTradingRPCClient) GetTradingStats(ctx context.Context, in *GetTradingStatsRequest, opts ...grpc.CallOption) (*GetTradingStatsResponse, error) { + m.ctrl.T.Helper() + varargs := []any{ctx, in} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "GetTradingStats", varargs...) + ret0, _ := ret[0].(*GetTradingStatsResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetTradingStats indicates an expected call of GetTradingStats. +func (mr *MockInjectiveTradingRPCClientMockRecorder) GetTradingStats(ctx, in any, opts ...any) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]any{ctx, in}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTradingStats", reflect.TypeOf((*MockInjectiveTradingRPCClient)(nil).GetTradingStats), varargs...) +} + // ListTradingStrategies mocks base method. func (m *MockInjectiveTradingRPCClient) ListTradingStrategies(ctx context.Context, in *ListTradingStrategiesRequest, opts ...grpc.CallOption) (*ListTradingStrategiesResponse, error) { m.ctrl.T.Helper() - varargs := []interface{}{ctx, in} + varargs := []any{ctx, in} for _, a := range opts { varargs = append(varargs, a) } @@ -49,9 +74,9 @@ func (m *MockInjectiveTradingRPCClient) ListTradingStrategies(ctx context.Contex } // ListTradingStrategies indicates an expected call of ListTradingStrategies. -func (mr *MockInjectiveTradingRPCClientMockRecorder) ListTradingStrategies(ctx, in interface{}, opts ...interface{}) *gomock.Call { +func (mr *MockInjectiveTradingRPCClientMockRecorder) ListTradingStrategies(ctx, in any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{ctx, in}, opts...) + varargs := append([]any{ctx, in}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListTradingStrategies", reflect.TypeOf((*MockInjectiveTradingRPCClient)(nil).ListTradingStrategies), varargs...) } @@ -78,6 +103,21 @@ func (m *MockInjectiveTradingRPCServer) EXPECT() *MockInjectiveTradingRPCServerM return m.recorder } +// GetTradingStats mocks base method. +func (m *MockInjectiveTradingRPCServer) GetTradingStats(arg0 context.Context, arg1 *GetTradingStatsRequest) (*GetTradingStatsResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetTradingStats", arg0, arg1) + ret0, _ := ret[0].(*GetTradingStatsResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetTradingStats indicates an expected call of GetTradingStats. +func (mr *MockInjectiveTradingRPCServerMockRecorder) GetTradingStats(arg0, arg1 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTradingStats", reflect.TypeOf((*MockInjectiveTradingRPCServer)(nil).GetTradingStats), arg0, arg1) +} + // ListTradingStrategies mocks base method. func (m *MockInjectiveTradingRPCServer) ListTradingStrategies(arg0 context.Context, arg1 *ListTradingStrategiesRequest) (*ListTradingStrategiesResponse, error) { m.ctrl.T.Helper() @@ -88,7 +128,7 @@ func (m *MockInjectiveTradingRPCServer) ListTradingStrategies(arg0 context.Conte } // ListTradingStrategies indicates an expected call of ListTradingStrategies. -func (mr *MockInjectiveTradingRPCServerMockRecorder) ListTradingStrategies(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockInjectiveTradingRPCServerMockRecorder) ListTradingStrategies(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListTradingStrategies", reflect.TypeOf((*MockInjectiveTradingRPCServer)(nil).ListTradingStrategies), arg0, arg1) } diff --git a/go.mod b/go.mod index 411a8b43..fdab5254 100644 --- a/go.mod +++ b/go.mod @@ -1,29 +1,28 @@ module github.com/InjectiveLabs/sdk-go -go 1.22 +go 1.22.2 + +toolchain go1.22.5 require ( cosmossdk.io/errors v1.0.1 cosmossdk.io/math v1.3.0 - cosmossdk.io/store v1.1.0 - cosmossdk.io/x/evidence v0.1.0 - cosmossdk.io/x/feegrant v0.1.0 - cosmossdk.io/x/tx v0.13.3 - cosmossdk.io/x/upgrade v0.1.1 + cosmossdk.io/x/evidence v0.1.1 + cosmossdk.io/x/feegrant v0.1.1 + cosmossdk.io/x/tx v0.13.4 + cosmossdk.io/x/upgrade v0.1.3 github.com/CosmWasm/wasmd v0.40.2 github.com/InjectiveLabs/suplog v1.3.3 - github.com/bandprotocol/bandchain-packet v0.0.4 + github.com/bandprotocol/bandchain-packet v0.0.0-00010101000000-000000000000 github.com/btcsuite/btcd v0.23.4 github.com/btcsuite/btcd/btcutil v1.1.3 - github.com/cometbft/cometbft v0.38.9 + github.com/cometbft/cometbft v0.38.10 github.com/cosmos/cosmos-proto v1.0.0-beta.5 github.com/cosmos/cosmos-sdk v0.50.7 github.com/cosmos/go-bip39 v1.0.0 github.com/cosmos/gogoproto v1.5.0 - github.com/cosmos/ibc-go/modules/capability v1.0.0 - github.com/cosmos/ibc-go/v8 v8.2.0 + github.com/cosmos/ibc-go/v8 v8.3.2 github.com/ethereum/go-ethereum v1.11.5 - github.com/golang/mock v1.6.0 github.com/golang/protobuf v1.5.4 github.com/google/uuid v1.6.0 github.com/grpc-ecosystem/grpc-gateway/v2 v2.11.3 @@ -33,25 +32,25 @@ require ( github.com/shopspring/decimal v1.2.0 github.com/stretchr/testify v1.9.0 github.com/tyler-smith/go-bip39 v1.1.0 - golang.org/x/crypto v0.24.0 - google.golang.org/genproto/googleapis/api v0.0.0-20240227224415-6ceb2ff114de - google.golang.org/grpc v1.63.2 - google.golang.org/protobuf v1.33.0 - gopkg.in/ini.v1 v1.67.0 - gopkg.in/yaml.v2 v2.4.0 + go.uber.org/mock v0.5.0 + golang.org/x/crypto v0.25.0 + google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237 + google.golang.org/grpc v1.64.1 + google.golang.org/protobuf v1.34.2 gotest.tools/v3 v3.5.1 ) require ( cosmossdk.io/api v0.7.5 // indirect cosmossdk.io/collections v0.4.0 // indirect - cosmossdk.io/core v0.11.0 // indirect - cosmossdk.io/depinject v1.0.0-alpha.4 // indirect + cosmossdk.io/core v0.11.1 // indirect + cosmossdk.io/depinject v1.0.0 // indirect cosmossdk.io/log v1.3.1 // indirect + cosmossdk.io/store v1.1.0 // 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/CosmWasm/wasmvm/v2 v2.0.0 // indirect + github.com/CosmWasm/wasmvm/v2 v2.1.2 // indirect github.com/DataDog/appsec-internal-go v1.5.0 // indirect github.com/DataDog/datadog-agent/pkg/obfuscate v0.48.0 // indirect github.com/DataDog/datadog-agent/pkg/remoteconfig/state v0.48.1 // indirect @@ -87,7 +86,8 @@ require ( github.com/cosmos/btcutil v1.0.5 // indirect github.com/cosmos/cosmos-db v1.0.2 // indirect github.com/cosmos/gogogateway v1.2.0 // indirect - github.com/cosmos/iavl v1.1.2 // indirect + github.com/cosmos/iavl v1.2.0 // indirect + github.com/cosmos/ibc-go/modules/capability v1.0.0 // indirect github.com/cosmos/ics23/go v0.10.0 // indirect github.com/cosmos/ledger-cosmos-go v0.13.3 // indirect github.com/danieljoos/wincred v1.1.2 // indirect @@ -164,11 +164,11 @@ require ( github.com/oklog/ulid v1.3.1 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect github.com/outcaste-io/ristretto v0.2.3 // indirect - github.com/pelletier/go-toml/v2 v2.1.0 // indirect + github.com/pelletier/go-toml/v2 v2.2.2 // indirect github.com/petermattis/goid v0.0.0-20231207134359-e60b3f734c67 // indirect github.com/philhofer/fwd v1.1.2 // 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 @@ -176,11 +176,12 @@ require ( github.com/rivo/uniseg v0.4.4 // 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/rs/zerolog v1.33.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/secure-systems-lab/go-securesystemslib v0.7.0 // indirect + github.com/shamaton/msgpack/v2 v2.2.0 // indirect github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible // indirect github.com/sirupsen/logrus v1.9.3 // indirect github.com/sourcegraph/conc v0.3.0 // indirect @@ -188,7 +189,7 @@ require ( github.com/spf13/cast v1.6.0 // indirect github.com/spf13/cobra v1.8.0 // indirect github.com/spf13/pflag v1.0.5 // indirect - github.com/spf13/viper v1.18.2 // indirect + github.com/spf13/viper v1.19.0 // indirect github.com/subosito/gotenv v1.6.0 // indirect github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect github.com/tendermint/go-amino v0.16.0 // indirect @@ -198,7 +199,7 @@ require ( github.com/tklauser/numcpus v0.4.0 // indirect github.com/zondax/hid v0.9.2 // indirect github.com/zondax/ledger-go v0.14.3 // indirect - go.etcd.io/bbolt v1.3.8 // indirect + go.etcd.io/bbolt v1.4.0-alpha.0.0.20240404170359-43604f3112c5 // 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 @@ -206,18 +207,20 @@ require ( go.uber.org/multierr v1.11.0 // indirect golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8 // indirect golang.org/x/mod v0.18.0 // indirect - golang.org/x/net v0.26.0 // indirect + golang.org/x/net v0.27.0 // indirect golang.org/x/sync v0.7.0 // indirect - golang.org/x/sys v0.21.0 // indirect - golang.org/x/term v0.21.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.22.0 // indirect - golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect + golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240401170217-c3f982113cda // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240709173604-40e1e62336c5 // indirect gopkg.in/DataDog/dd-trace-go.v1 v1.62.0 // 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 gopkg.in/yaml.v3 v3.0.1 // indirect nhooyr.io/websocket v1.8.6 // indirect pgregory.net/rapid v1.1.0 // indirect @@ -230,11 +233,11 @@ replace ( cosmossdk.io/x/feegrant => github.com/InjectiveLabs/cosmos-sdk/x/feegrant v0.50.6-inj-0 cosmossdk.io/x/upgrade => github.com/InjectiveLabs/cosmos-sdk/x/upgrade v0.50.6-inj-0 - github.com/CosmWasm/wasmd => github.com/InjectiveLabs/wasmd v0.51.0-inj-0 + github.com/CosmWasm/wasmd => github.com/InjectiveLabs/wasmd v0.52.0-inj-0 github.com/bandprotocol/bandchain-packet => github.com/InjectiveLabs/bandchain-packet v0.0.4-inj-1 - github.com/cometbft/cometbft => github.com/InjectiveLabs/cometbft v0.38.10-inj-1 + github.com/cometbft/cometbft => github.com/InjectiveLabs/cometbft v0.38.11-inj-0 - github.com/cosmos/cosmos-sdk => github.com/InjectiveLabs/cosmos-sdk v0.50.8-inj-0 + github.com/cosmos/cosmos-sdk => github.com/InjectiveLabs/cosmos-sdk v0.50.9-inj-2 github.com/cosmos/ibc-apps/modules/ibc-hooks/v8 => github.com/InjectiveLabs/ibc-apps/modules/ibc-hooks/v8 v8.0.0-inj-0 github.com/cosmos/ibc-go/v8 => github.com/InjectiveLabs/ibc-go/v8 v8.3.2-inj-0 github.com/miguelmota/go-ethereum-hdwallet => github.com/InjectiveLabs/go-ethereum-hdwallet v0.1.2 diff --git a/go.sum b/go.sum index a9b25d4b..fd1aaba9 100644 --- a/go.sum +++ b/go.sum @@ -1,35 +1,35 @@ 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.112.0 h1:tpFCD7hpHFlQ8yPwT3x+QeXqc2T6+n6T+hmABHfDUSM= -cloud.google.com/go v0.112.0/go.mod h1:3jEEVwZ/MHU4djK5t5RHuKOA/GbLddgTdVubX1qnPD4= -cloud.google.com/go/compute v1.24.0 h1:phWcR2eWzRJaL/kOiJwfFsPs4BaKq1j6vnpZrc1YlVg= -cloud.google.com/go/compute v1.24.0/go.mod h1:kw1/T+h/+tK2LJK0wiPPx1intgdAM3j/g3hFDlscY40= +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/compute v1.25.1 h1:ZRpHJedLtTpKgr3RV1Fx23NuaAEN1Zfx9hw1u4aJdjU= +cloud.google.com/go/compute v1.25.1/go.mod h1:oopOIR53ly6viBYxaDhBfJwzUAxf1zE//uf3IB011ls= cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= 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/storage v1.36.0 h1:P0mOkAcaJxhCTvAkMhxMfrTKiNcub4YmmPBtlhAyTr8= -cloud.google.com/go/storage v1.36.0/go.mod h1:M6M/3V/D3KpzMTJyPOR/HU6n2Si5QdaXYEsng2xgOs8= +cloud.google.com/go/storage v1.38.0 h1:Az68ZRGlnNTpIBbLjSMIV2BDcwwXYlRlQzis0llkpJg= +cloud.google.com/go/storage v1.38.0/go.mod h1:tlUADB0mAb9BgYls9lq+8MGkfzOXuLrnHXlpHmvFJoY= 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.0 h1:vtIafqUi+1ZNAE/oxLOQQ7Oek2n4S48SWLG8h/+wdbo= -cosmossdk.io/core v0.11.0/go.mod h1:LaTtayWBSoacF5xNzoF8tmLhehqlA9z1SWiPuNC6X1w= -cosmossdk.io/depinject v1.0.0-alpha.4 h1:PLNp8ZYAMPTUKyG9IK2hsbciDWqna2z1Wsl98okJopc= -cosmossdk.io/depinject v1.0.0-alpha.4/go.mod h1:HeDk7IkR5ckZ3lMGs/o91AVUc7E596vMaOmslGFM3yU= +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/x/circuit v0.1.0 h1:IAej8aRYeuOMritczqTlljbUVHq1E85CpBqaCTwYgXs= -cosmossdk.io/x/circuit v0.1.0/go.mod h1:YDzblVE8+E+urPYQq5kq5foRY/IzhXovSYXb4nwd39w= -cosmossdk.io/x/tx v0.13.3 h1:Ha4mNaHmxBc6RMun9aKuqul8yHiL78EKJQ8g23Zf73g= -cosmossdk.io/x/tx v0.13.3/go.mod h1:I8xaHv0rhUdIvIdptKIqzYy27+n2+zBVaxO6fscFhys= +cosmossdk.io/x/circuit v0.1.1 h1:KPJCnLChWrxD4jLwUiuQaf5mFD/1m7Omyo7oooefBVQ= +cosmossdk.io/x/circuit v0.1.1/go.mod h1:B6f/urRuQH8gjt4eLIXfZJucrbreuYrKh5CSjaOxr+Q= +cosmossdk.io/x/tx v0.13.4 h1:Eg0PbJgeO0gM8p5wx6xa0fKR7hIV6+8lC56UrsvSo0Y= +cosmossdk.io/x/tx v0.13.4/go.mod h1:BkFqrnGGgW50Y6cwTy+JvgAhiffbGEKW6KF9ufcDpvk= 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= @@ -39,8 +39,8 @@ github.com/99designs/keyring v1.2.2 h1:pZd3neh/EmUzWONb35LxQfvuY7kiSXAq3HQd97+XB github.com/99designs/keyring v1.2.2/go.mod h1:wes/FrByc8j7lFOAGLGSNEg8f/PaI3cgTBqhFkHUrPk= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/CosmWasm/wasmvm/v2 v2.0.0 h1:IqNCI2G0mvs7K6ej17/I28805rVqnu+Y1cWDqIdwb08= -github.com/CosmWasm/wasmvm/v2 v2.0.0/go.mod h1:su9lg5qLr7adV95eOfzjZWkGiky8WNaNIHDr7Fpu7Ck= +github.com/CosmWasm/wasmvm/v2 v2.1.2 h1:GkJ5bAsRlLHfIQVg/FY1VHwLyBwlCjAhDea0B8L+e20= +github.com/CosmWasm/wasmvm/v2 v2.1.2/go.mod h1:bMhLQL4Yp9CzJi9A83aR7VO9wockOsSlZbT4ztOl6bg= github.com/DataDog/appsec-internal-go v1.5.0 h1:8kS5zSx5T49uZ8dZTdT19QVAvC/B8ByyZdhQKYQWHno= github.com/DataDog/appsec-internal-go v1.5.0/go.mod h1:pEp8gjfNLtEOmz+iZqC8bXhu0h4k7NUsW/qiQb34k1U= github.com/DataDog/datadog-agent/pkg/obfuscate v0.48.0 h1:bUMSNsw1iofWiju9yc1f+kBd33E3hMJtq9GuU602Iy8= @@ -63,10 +63,10 @@ github.com/DataDog/zstd v1.5.5 h1:oWf5W7GtOLgp6bciQYDmhHHjdhYkALu6S/5Ni9ZgSvQ= github.com/DataDog/zstd v1.5.5/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= github.com/InjectiveLabs/bandchain-packet v0.0.4-inj-1 h1:ZnvCV/lzjWmBwuGbkAz+okucfJEyEzkU9GYK3tKU9cU= github.com/InjectiveLabs/bandchain-packet v0.0.4-inj-1/go.mod h1:QELTDYiwnbAqIgTF9zeKr+hVlK6eVyt6Nxmh6/1mmzQ= -github.com/InjectiveLabs/cometbft v0.38.10-inj-1 h1:k4I22d5KcXEluYFSVfuSepkibyUesMD+UGOpBwqjXbo= -github.com/InjectiveLabs/cometbft v0.38.10-inj-1/go.mod h1:jHPx9vQpWzPHEAiYI/7EDKaB1NXhK6o3SArrrY8ExKc= -github.com/InjectiveLabs/cosmos-sdk v0.50.8-inj-0 h1:Jf+0AEdUUNG1mNARompZWTFI/UltAUGX66owYks7TAs= -github.com/InjectiveLabs/cosmos-sdk v0.50.8-inj-0/go.mod h1:igpF5mgbiTmaS3hO/yoIIv7+ICbzMBIowFWSw5aOrKA= +github.com/InjectiveLabs/cometbft v0.38.11-inj-0 h1:yf+qvOtlvmLZCBkQCInApRy9icp8+TuSWFwZwWPA5NU= +github.com/InjectiveLabs/cometbft v0.38.11-inj-0/go.mod h1:jHPx9vQpWzPHEAiYI/7EDKaB1NXhK6o3SArrrY8ExKc= +github.com/InjectiveLabs/cosmos-sdk v0.50.9-inj-2 h1:E5YT12BFhar95RanHLyI3zw12yQTGGPbktGQlN1UYsk= +github.com/InjectiveLabs/cosmos-sdk v0.50.9-inj-2/go.mod h1:f7gwrwkQ0cXiqvdAvifcNACCota5CVBLA5Hwyti9V6Q= github.com/InjectiveLabs/cosmos-sdk/store v0.50.6-inj-0 h1:75YtRrju3R21u/VXttzuBoh49o28xABR2OUqioT9hMQ= github.com/InjectiveLabs/cosmos-sdk/store v0.50.6-inj-0/go.mod h1:ZW4eIE98wivInyQyhxU2nHqEielc/iZAcr41qNyWSrw= github.com/InjectiveLabs/cosmos-sdk/x/evidence v0.50.6-inj-0 h1:rb73cHJPCTwnBq96WC9L1ymqnHe5i4of1wjpXFAOUe4= @@ -81,8 +81,8 @@ github.com/InjectiveLabs/metrics v0.0.10 h1:BoOwXnCtRRIPmq06jcI20pXZYE758eusaCI5 github.com/InjectiveLabs/metrics v0.0.10/go.mod h1:eYu++0DVUjk/jjV9WgvCo8gQU+16Yoyhp1iu+ghKNME= github.com/InjectiveLabs/suplog v1.3.3 h1:ARIR3lWD9BxcrmqTwgcGBt8t7e10gwOqllUAXa/MfxI= github.com/InjectiveLabs/suplog v1.3.3/go.mod h1:+I9WRgUhzmo1V/n7IkW24kFBFB9ZTPAiXXXCogWxmTM= -github.com/InjectiveLabs/wasmd v0.51.0-inj-0 h1:5YvS+OWjein0p3APDqLok/DjLmxJ4XAi8FXrmzhjjXo= -github.com/InjectiveLabs/wasmd v0.51.0-inj-0/go.mod h1:CGIOxbGca/pOiZ+Q7e6aMoNnnSPXrV5/hV1dK3H8FUo= +github.com/InjectiveLabs/wasmd v0.52.0-inj-0 h1:2sJftrI2+kc27wfBP9TZuoqszZx7YU8WNkFO/vMeZqQ= +github.com/InjectiveLabs/wasmd v0.52.0-inj-0/go.mod h1:kWL0LDT6QPnxQin9T2OBoDgqZidtbC+mRm0kL3pO65k= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= github.com/Microsoft/go-winio v0.5.0/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= @@ -243,8 +243,8 @@ 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.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/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.0 h1:r/l++byFtn7jHYa09zlAdSeevo8ci1mVZNO9+V0xsLE= github.com/cosmos/ibc-go/modules/capability v1.0.0/go.mod h1:D81ZxzjZAe0ZO5ambnvn1qedsFQ8lOwtqicG6liLBco= github.com/cosmos/ics23/go v0.10.0 h1:iXqLLgp2Lp+EdpIuwXTYIQU+AiHj9mOC2X9ab++bZDM= @@ -472,8 +472,8 @@ 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.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.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas= -github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU= +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/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= @@ -509,8 +509,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.3 h1:bN2+Fw9XPFvOCjB0UOevFIMICZ7G2XSQHzfvLUyOM5E= -github.com/hashicorp/go-getter v1.7.3/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.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= @@ -746,8 +746,8 @@ github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0Mw 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.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= -github.com/pelletier/go-toml/v2 v2.1.0 h1:FnwAJ4oYMvbT/34k9zzHuZNrhlz48GB3/s6at6/MHO4= -github.com/pelletier/go-toml/v2 v2.1.0/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdUvyaeZurnPPDc= +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= @@ -774,8 +774,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= @@ -818,8 +818,8 @@ 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/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.5.2 h1:HyvC0ARfnZBqnXwABFeSZHpKvJHJJfPz81GNueLj0oo= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= @@ -836,6 +836,8 @@ github.com/sasha-s/go-deadlock v0.3.1/go.mod h1:F73l+cr82YSh10GxyRI6qZiCgK64VaZj github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/secure-systems-lab/go-securesystemslib v0.7.0 h1:OwvJ5jQf9LnIAS83waAjPbcMsODrTQUpJ02eNLUoxBg= github.com/secure-systems-lab/go-securesystemslib v0.7.0/go.mod h1:/2gYnlnHVQ6xeGtfIqFy7Do03K4cdCY0A/GlJLDKLHI= +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/shopspring/decimal v1.2.0 h1:abSATXmQEYyShuxI4/vyW3tV1MrKAJzCZ/0zLUXYbsQ= @@ -873,8 +875,8 @@ github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnIn 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.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= -github.com/spf13/viper v1.18.2 h1:LUXCnvUvSM6FXAsj6nnfc8Q2tp1dIgUfY9Kc8GsSOiQ= -github.com/spf13/viper v1.18.2/go.mod h1:EKmWIqdnk5lOcmR72yw6hS+8OPYcwD0jteitLMVB+yk= +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= @@ -945,18 +947,18 @@ 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.3.8 h1:xs88BrvEv273UsB79e0hcVrlUWmS0a8upikMFhSyAtA= -go.etcd.io/bbolt v1.3.8/go.mod h1:N9Mkw9X8x5fupy0IKsmuqVtoGDyxsaDlbk4Rd05IAQw= +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.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= 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.47.0 h1:UNQQKPfTDe1J81ViolILjTKPr9WetKW6uei2hFgJmFs= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.47.0/go.mod h1:r9vWsPS/3AQItv3OSlEJ/E4mbrhUbbw18meOjArPtKQ= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0 h1:sv9kVfal0MK0wBMCOGr+HeJm9v803BkJxGrk2au7j08= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0/go.mod h1:SK2UL73Zy1quvRPonmOmRDiWk1KBV3LyIeeIxcEApWw= +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= @@ -974,6 +976,8 @@ go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0 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.5.0 h1:KAMbZvZPyBPWgD14IrIQ38QCyjwpvVVV6K/bHl1IwQU= +go.uber.org/mock v0.5.0/go.mod h1:ge71pBPLYDk7QIi1LupWxdAykm7KIEFchiOqd6z7qMM= 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= @@ -996,8 +1000,8 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8U 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.24.0 h1:mnl8DM0o513X8fdIkmyFE/5hTYxbwYOjDS/+rK6qpRI= -golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM= +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-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= @@ -1053,8 +1057,8 @@ golang.org/x/net v0.0.0-20220517181318-183a9ca12b87/go.mod h1:CfG3xpIq0wQ8r1q4Su golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= golang.org/x/net v0.3.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= -golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ= -golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= +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-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1134,14 +1138,14 @@ golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws= -golang.org/x/sys v0.21.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/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.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA= -golang.org/x/term v0.21.0 h1:WVXCp+/EBEHOj53Rvu+7KiT/iElMrO8ACK16SMZ3jaA= -golang.org/x/term v0.21.0/go.mod h1:ooXLefLobQVslOqselCNF4SxFAaoS6KujMbsGzSDmX0= +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.3.0/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= @@ -1184,11 +1188,11 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T 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-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk= -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.162.0 h1:Vhs54HkaEpkMBdgGdOT2P6F0csGG/vxDS0hWHJzmmps= -google.golang.org/api v0.162.0/go.mod h1:6SulDkfoBIg4NFmCuZ39XeeAgSHCPecfSUuDyYlAHs0= +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= @@ -1207,10 +1211,10 @@ google.golang.org/genproto v0.0.0-20210126160654-44e461bb6506/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20220314164441-57ef72a4c106/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= 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-20240227224415-6ceb2ff114de h1:jFNzHPIeuzhdRwVhbZdiym9q0ory/xY3sA+v2wPg8I0= -google.golang.org/genproto/googleapis/api v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:5iCWqnniDlqZHrd3neWVTOwvh/v6s3232omMecelax8= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240401170217-c3f982113cda h1:LI5DOvAxUPMv/50agcLLoo+AdWc1irS9Rzz4vPuD1V4= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240401170217-c3f982113cda/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= +google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237 h1:RFiFrvy37/mpSpdySBDrUdipW/dHwsRwh3J3+A9VgT4= +google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237/go.mod h1:Z5Iiy3jtmioajWHDGFk7CeugTyHtPvMHA4UTmUkyalE= +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= @@ -1228,8 +1232,8 @@ google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTp google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.63.2 h1:MUeiw1B2maTVZthpU5xvASfTh3LDbxHd6IJ6QQVU+xM= -google.golang.org/grpc v1.63.2/go.mod h1:WAX/8DgncnokcFUldAxq7GeB5DXHDbMF+lLvDomNkRA= +google.golang.org/grpc v1.64.1 h1:LKtvyfbX3UGVPFcGqJ9ItpVWW6oN/2XqTxfAnwRRXiA= +google.golang.org/grpc v1.64.1/go.mod h1:hiQF4LFZelK2WKaP6W0L92zGHtiQdZxk8CrSdvyjeP0= 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= @@ -1245,8 +1249,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.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= -google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= +google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= gopkg.in/DataDog/dd-trace-go.v1 v1.62.0 h1:jeZxE4ZlfAc+R0zO5TEmJBwOLet3NThsOfYJeSQg1x0= gopkg.in/DataDog/dd-trace-go.v1 v1.62.0/go.mod h1:YTvYkk3PTsfw0OWrRFxV/IQ5Gy4nZ5TRvxTAP3JcIzs= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= From 8712c3134515a12f31ab3e34b0817f91e3068b96 Mon Sep 17 00:00:00 2001 From: Abel Armoa <30988000+aarmoa@users.noreply.github.com> Date: Tue, 10 Dec 2024 12:43:35 -0300 Subject: [PATCH 3/4] (fix) Fixed pre-commit issues --- .golangci.yml | 1 + Makefile | 2 +- client/chain/chain.go | 8 ++++---- client/exchange/exchange.go | 4 ++-- client/explorer/explorer.go | 4 ++-- 5 files changed, 10 insertions(+), 9 deletions(-) diff --git a/.golangci.yml b/.golangci.yml index d679ee99..cd3bcde3 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -47,6 +47,7 @@ ], "disabled-checks": [ "hugeParam", + "unnamedResult", ] } }, diff --git a/Makefile b/Makefile index f1fea3f6..5b884404 100644 --- a/Makefile +++ b/Makefile @@ -137,4 +137,4 @@ tests: coverage: go test -race -coverprofile=coverage.out -covermode=atomic ./client/... ./ethereum/... -.PHONY: copy-exchange-client tests coverage \ No newline at end of file +.PHONY: copy-exchange-client tests coverage diff --git a/client/chain/chain.go b/client/chain/chain.go index 26d50e5b..0ee9d14a 100644 --- a/client/chain/chain.go +++ b/client/chain/chain.go @@ -387,9 +387,9 @@ func NewChainClient( var err error stickySessionEnabled := true if opts.TLSCert != nil { - conn, err = grpc.Dial(network.ChainGrpcEndpoint, grpc.WithTransportCredentials(opts.TLSCert), grpc.WithContextDialer(common.DialerFunc)) + conn, err = grpc.NewClient(network.ChainGrpcEndpoint, grpc.WithTransportCredentials(opts.TLSCert), grpc.WithContextDialer(common.DialerFunc)) } else { - conn, err = grpc.Dial(network.ChainGrpcEndpoint, grpc.WithTransportCredentials(insecure.NewCredentials()), grpc.WithContextDialer(common.DialerFunc)) + conn, err = grpc.NewClient(network.ChainGrpcEndpoint, grpc.WithTransportCredentials(insecure.NewCredentials()), grpc.WithContextDialer(common.DialerFunc)) stickySessionEnabled = false } if err != nil { @@ -399,9 +399,9 @@ func NewChainClient( var chainStreamConn *grpc.ClientConn if opts.TLSCert != nil { - chainStreamConn, err = grpc.Dial(network.ChainStreamGrpcEndpoint, grpc.WithTransportCredentials(opts.TLSCert), grpc.WithContextDialer(common.DialerFunc)) + chainStreamConn, err = grpc.NewClient(network.ChainStreamGrpcEndpoint, grpc.WithTransportCredentials(opts.TLSCert), grpc.WithContextDialer(common.DialerFunc)) } else { - chainStreamConn, err = grpc.Dial(network.ChainStreamGrpcEndpoint, grpc.WithTransportCredentials(insecure.NewCredentials()), grpc.WithContextDialer(common.DialerFunc)) + chainStreamConn, err = grpc.NewClient(network.ChainStreamGrpcEndpoint, grpc.WithTransportCredentials(insecure.NewCredentials()), grpc.WithContextDialer(common.DialerFunc)) } if err != nil { err = errors.Wrapf(err, "failed to connect to the chain stream gRPC: %s", network.ChainStreamGrpcEndpoint) diff --git a/client/exchange/exchange.go b/client/exchange/exchange.go index cc4b3f3b..a93571ae 100644 --- a/client/exchange/exchange.go +++ b/client/exchange/exchange.go @@ -111,10 +111,10 @@ func NewExchangeClient(network common.Network, options ...common.ClientOption) ( var conn *grpc.ClientConn var err error if opts.TLSCert != nil { - conn, err = grpc.Dial(network.ExchangeGrpcEndpoint, grpc.WithTransportCredentials(opts.TLSCert), grpc.WithContextDialer(common.DialerFunc)) + conn, err = grpc.NewClient(network.ExchangeGrpcEndpoint, grpc.WithTransportCredentials(opts.TLSCert), grpc.WithContextDialer(common.DialerFunc)) } else { - conn, err = grpc.Dial(network.ExchangeGrpcEndpoint, grpc.WithTransportCredentials(insecure.NewCredentials()), grpc.WithContextDialer(common.DialerFunc)) + conn, err = grpc.NewClient(network.ExchangeGrpcEndpoint, grpc.WithTransportCredentials(insecure.NewCredentials()), grpc.WithContextDialer(common.DialerFunc)) } if err != nil { err := errors.Wrapf(err, "failed to connect to the gRPC: %s", network.ExchangeGrpcEndpoint) diff --git a/client/explorer/explorer.go b/client/explorer/explorer.go index 2dbe8ce8..ce9fff24 100644 --- a/client/explorer/explorer.go +++ b/client/explorer/explorer.go @@ -50,9 +50,9 @@ func NewExplorerClient(network common.Network, options ...common.ClientOption) ( var conn *grpc.ClientConn var err error if opts.TLSCert != nil { - conn, err = grpc.Dial(network.ExplorerGrpcEndpoint, grpc.WithTransportCredentials(opts.TLSCert), grpc.WithContextDialer(common.DialerFunc)) + conn, err = grpc.NewClient(network.ExplorerGrpcEndpoint, grpc.WithTransportCredentials(opts.TLSCert), grpc.WithContextDialer(common.DialerFunc)) } else { - conn, err = grpc.Dial(network.ExplorerGrpcEndpoint, grpc.WithTransportCredentials(insecure.NewCredentials()), grpc.WithContextDialer(common.DialerFunc)) + conn, err = grpc.NewClient(network.ExplorerGrpcEndpoint, grpc.WithTransportCredentials(insecure.NewCredentials()), grpc.WithContextDialer(common.DialerFunc)) } if err != nil { err := errors.Wrapf(err, "failed to connect to the gRPC: %s", network.ExplorerGrpcEndpoint) From 485932c8962f5b144e3c9451c3022c0bb149f067 Mon Sep 17 00:00:00 2001 From: Abel Armoa <30988000+aarmoa@users.noreply.github.com> Date: Thu, 19 Dec 2024 12:07:46 -0300 Subject: [PATCH 4/4] (fix) Updated devnet, devnet-1 and local Network configuration to solve an issue with the latest gRPC version (v1.64.1 vs v1.63.2) --- client/common/network.go | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/client/common/network.go b/client/common/network.go index 4714f997..15e5eb79 100644 --- a/client/common/network.go +++ b/client/common/network.go @@ -211,10 +211,10 @@ func LoadNetwork(name, node string) Network { return Network{ LcdEndpoint: "http://localhost:10337", TmEndpoint: "http://localhost:26657", - ChainGrpcEndpoint: "tcp://localhost:9900", - ChainStreamGrpcEndpoint: "tcp://localhost:9999", - ExchangeGrpcEndpoint: "tcp://localhost:9910", - ExplorerGrpcEndpoint: "tcp://localhost:9911", + ChainGrpcEndpoint: "localhost:9900", + ChainStreamGrpcEndpoint: "localhost:9999", + ExchangeGrpcEndpoint: "localhost:9910", + ExplorerGrpcEndpoint: "localhost:9911", ChainId: "injective-1", FeeDenom: "inj", Name: "local", @@ -228,10 +228,10 @@ func LoadNetwork(name, node string) Network { return Network{ LcdEndpoint: "https://devnet-1.lcd.injective.dev", TmEndpoint: "https://devnet-1.tm.injective.dev:443", - ChainGrpcEndpoint: "tcp://devnet-1.grpc.injective.dev:9900", - ChainStreamGrpcEndpoint: "tcp://devnet-1.grpc.injective.dev:9999", - ExchangeGrpcEndpoint: "tcp://devnet-1.api.injective.dev:9910", - ExplorerGrpcEndpoint: "tcp://devnet-1.api.injective.dev:9911", + ChainGrpcEndpoint: "devnet-1.grpc.injective.dev:9900", + ChainStreamGrpcEndpoint: "devnet-1.grpc.injective.dev:9999", + ExchangeGrpcEndpoint: "devnet-1.api.injective.dev:9910", + ExplorerGrpcEndpoint: "devnet-1.api.injective.dev:9911", ChainId: "injective-777", FeeDenom: "inj", Name: "devnet-1", @@ -244,10 +244,10 @@ func LoadNetwork(name, node string) Network { return Network{ LcdEndpoint: "https://devnet.lcd.injective.dev", TmEndpoint: "https://devnet.tm.injective.dev:443", - ChainGrpcEndpoint: "tcp://devnet.injective.dev:9900", - ChainStreamGrpcEndpoint: "tcp://devnet.injective.dev:9999", - ExchangeGrpcEndpoint: "tcp://devnet.injective.dev:9910", - ExplorerGrpcEndpoint: "tcp://devnet.api.injective.dev:9911", + ChainGrpcEndpoint: "devnet.injective.dev:9900", + ChainStreamGrpcEndpoint: "devnet.injective.dev:9999", + ExchangeGrpcEndpoint: "devnet.injective.dev:9910", + ExplorerGrpcEndpoint: "devnet.api.injective.dev:9911", ChainId: "injective-777", FeeDenom: "inj", Name: "devnet",