diff --git a/.gitignore b/.gitignore index 37182fc4..67652b55 100644 --- a/.gitignore +++ b/.gitignore @@ -24,3 +24,9 @@ coverage.txt dev.env .editorconfig + +# rust package +target + +# MacOS devices attributes +.DS_Store \ No newline at end of file diff --git a/README.md b/README.md index 2a2d2e20..f1887e16 100644 --- a/README.md +++ b/README.md @@ -7,19 +7,20 @@ This repository is a development gateway to the Akash Blockchain. It aims following: + - Define data types and API via [protobuf](./proto) - - Akash Blockchain and it's stores, aka [node](./proto/node) - - Akash Provider Interface, aka [provider](./proto/provider) + - Akash Blockchain and it's stores, aka [node](./proto/node) + - Akash Provider Interface, aka [provider](./proto/provider) - Define data types and API (both REST and GRPC) of Akash Provider Interface - Provide official reference clients for supported [programming languages](#supported-languages) - ## Supported languages ### Golang [This implementation](./go) provider all necessary code-generation as well as client defining Akash Blockchain There are a few packages this implementation exports. All packages available via Vanity URLs which are hosted as [Github Pages](https://github.com/akash-network/vanity). + #### Go package Source code is located within [go](./go) directory @@ -33,6 +34,7 @@ import "pkg.akt.dev/go" ##### Migrate package Depending on difference in API and stores between current and previous versions of the blockchain, there may be a **migrate** package. It is intended to be used by [node](https://github.com/akash-network/node) only. + ```go import "pkg.akt.dev/go/node/migrate" ``` @@ -40,13 +42,15 @@ import "pkg.akt.dev/go/node/migrate" #### SDL package Reference implementation of the SDL. + ```go import "pkg.akt.dev/go/sdl" ``` #### CLI package -CLI package which combines improved version of cli clients from node](https://github.com/akash-network/node) and [cosmos-sdk](https://github.com/cosmos/cosmos-sdk) +CLI package which combines improved version of cli clients from node]() and [cosmos-sdk](https://github.com/cosmos/cosmos-sdk) + ```go import "pkg.akt.dev/go/cli" ``` @@ -55,7 +59,6 @@ import "pkg.akt.dev/go/cli" Source code is located within [ts](./ts) directory - ## Protobuf All protobuf definitions are located within [proto](./proto) directory. @@ -63,10 +66,12 @@ All protobuf definitions are located within [proto](./proto) directory. This repository consolidates gRPC API definitions for the [Akash Node](https://github.com/akash-network/node) and [Akash Provider](https://github.com/akash-network/provider). It also includes related code generation. Currently, two `buf` packages are defined, with potential future publication to BSR based on demand: + - **Node Package**: `buf.build/pkg.akt.dev/node` - **Provider Package**: `buf.build/pkg.akt.dev/provider` Proto documentation is available for: + - [Node](docs/proto/node.md) - [Provider](docs/proto/provider.md) @@ -78,10 +83,13 @@ If there is a need to run regenerate protobuf (in case of API or documentation c 1. Install [direnv](https://direnv.net) and hook it to the [shell](https://direnv.net/docs/hook.html) - **MacOS** + ```shell brew install make direnv ``` + 2. Allow direnv within project + ```shell direnv allow ``` @@ -93,17 +101,44 @@ If there is a need to run regenerate protobuf (in case of API or documentation c ```shell make modvendor ``` - + - generate changes to all [supported programming languages](#supported-languages) ```shell make proto-gen ``` + - to run codegen for specific language use `make proto-gen-`. For example + ```shell make proto-gen-go ``` + +## Latest Proto Definition Versions + +| Module | Latest Version | Deprecated Version(s) | +|--------|---------------|----------------------| +| Audit | `akash/audit/v1` | `v1beta3` | +| Base: Attributes | `akash/base/attributes/v1` | - | +| Base: Deposit | `akash/base/deposit/v1` | - | +| Base: Offchain Sign | `akash/base/offchain/sign/v1` | - | +| Base: Resources | `akash/base/resources/v1beta4` | `v1beta3` | +| Bme | `akash/bme/v1` | - | +| Cert | `akash/cert/v1` | `v1beta3` | +| Deployment | `akash/deployment/v1beta4` | `v1beta3` | +| Discovery | `akash/discovery/v1` | - | +| Downtime Detector | `akash/downtimedetector/v1beta1` | - | +| Epochs | `akash/epochs/v1beta1` | - | +| Escrow | `akash/escrow/v1` | `v1beta3` | +| Market | `akash/market/v1beta5` | `v1beta4` | +| Oracle | `akash/oracle/v1` | - | +| Provider | `akash/provider/v1beta4` | `v1beta3` | +| Take | `akash/take/v1` | `v1beta3` | +| Wasm | `akash/wasm/v1` | - | + +For details on changes between deprecated and current versions, see the [Proto Migration Guide](docs/api-proto-migration-guide.md). + ## Releases Releases indicate changes to the repository itself. API versions are defined within each module. diff --git a/docs/proto/node.md b/docs/proto/node.md index c8ba3098..e5909f3d 100644 --- a/docs/proto/node.md +++ b/docs/proto/node.md @@ -91,6 +91,9 @@ - [EventMintStatusChange](#akash.bme.v1.EventMintStatusChange) - [EventVaultSeeded](#akash.bme.v1.EventVaultSeeded) + - [akash/bme/v1/filters.proto](#akash/bme/v1/filters.proto) + - [LedgerRecordFilters](#akash.bme.v1.LedgerRecordFilters) + - [akash/bme/v1/params.proto](#akash/bme/v1/params.proto) - [Params](#akash.bme.v1.Params) @@ -114,6 +117,9 @@ - [MsgUpdateParamsResponse](#akash.bme.v1.MsgUpdateParamsResponse) - [akash/bme/v1/query.proto](#akash/bme/v1/query.proto) + - [QueryLedgerRecordEntry](#akash.bme.v1.QueryLedgerRecordEntry) + - [QueryLedgerRecordsRequest](#akash.bme.v1.QueryLedgerRecordsRequest) + - [QueryLedgerRecordsResponse](#akash.bme.v1.QueryLedgerRecordsResponse) - [QueryParamsRequest](#akash.bme.v1.QueryParamsRequest) - [QueryParamsResponse](#akash.bme.v1.QueryParamsResponse) - [QueryStatusRequest](#akash.bme.v1.QueryStatusRequest) @@ -419,6 +425,7 @@ - [akash/oracle/v1/params.proto](#akash/oracle/v1/params.proto) - [Params](#akash.oracle.v1.Params) - [PythContractParams](#akash.oracle.v1.PythContractParams) + - [WormholeContractParams](#akash.oracle.v1.WormholeContractParams) - [akash/oracle/v1/genesis.proto](#akash/oracle/v1/genesis.proto) - [GenesisState](#akash.oracle.v1.GenesisState) @@ -1580,6 +1587,40 @@ if field is nil resource is not present in the given data-structure + + + + + + + + + + + +

Top

+ + ## akash/bme/v1/filters.proto + + + + + + ### LedgerRecordFilters + LedgerRecordFilters defines filters used to filter ledger records + + + | Field | Type | Label | Description | + | ----- | ---- | ----- | ----------- | + | `source` | [string](#string) | | source is the account address of the user who initiated the burn/mint | + | `denom` | [string](#string) | | denom filters by the burn denomination | + | `to_denom` | [string](#string) | | to_denom filters by the mint denomination | + | `status` | [string](#string) | | status filters by record status (pending or executed). Uses the string representation of LedgerRecordStatus enum values. If empty, returns both pending and executed records. | + + + + + @@ -1911,6 +1952,56 @@ This is used to provide an initial volatility buffer + + + ### QueryLedgerRecordEntry + QueryLedgerRecordEntry wraps a ledger record with its ID and status + + + | Field | Type | Label | Description | + | ----- | ---- | ----- | ----------- | + | `id` | [LedgerRecordID](#akash.bme.v1.LedgerRecordID) | | id is the unique identifier of the ledger record | + | `status` | [LedgerRecordStatus](#akash.bme.v1.LedgerRecordStatus) | | status indicates whether this record is pending or executed | + | `pending_record` | [LedgerPendingRecord](#akash.bme.v1.LedgerPendingRecord) | | pending_record is set when the record status is pending | + | `executed_record` | [LedgerRecord](#akash.bme.v1.LedgerRecord) | | executed_record is set when the record status is executed | + + + + + + + + + ### QueryLedgerRecordsRequest + QueryLedgerRecordsRequest is the request type for the Query/LedgerRecords RPC method + + + | Field | Type | Label | Description | + | ----- | ---- | ----- | ----------- | + | `filters` | [LedgerRecordFilters](#akash.bme.v1.LedgerRecordFilters) | | filters holds the ledger record fields to filter the request | + | `pagination` | [cosmos.base.query.v1beta1.PageRequest](#cosmos.base.query.v1beta1.PageRequest) | | pagination defines the pagination for the request | + + + + + + + + + ### QueryLedgerRecordsResponse + QueryLedgerRecordsResponse is the response type for the Query/LedgerRecords RPC method + + + | Field | Type | Label | Description | + | ----- | ---- | ----- | ----------- | + | `records` | [QueryLedgerRecordEntry](#akash.bme.v1.QueryLedgerRecordEntry) | repeated | records is a list of ledger records matching the filters | + | `pagination` | [cosmos.base.query.v1beta1.PageResponse](#cosmos.base.query.v1beta1.PageResponse) | | pagination contains the information about response pagination | + + + + + + ### QueryParamsRequest @@ -2007,6 +2098,7 @@ This is used to provide an initial volatility buffer | `Params` | [QueryParamsRequest](#akash.bme.v1.QueryParamsRequest) | [QueryParamsResponse](#akash.bme.v1.QueryParamsResponse) | Params returns the module parameters | GET|/akash/bme/v1/params| | `VaultState` | [QueryVaultStateRequest](#akash.bme.v1.QueryVaultStateRequest) | [QueryVaultStateResponse](#akash.bme.v1.QueryVaultStateResponse) | VaultState returns the current vault state | GET|/akash/bme/v1/vault| | `Status` | [QueryStatusRequest](#akash.bme.v1.QueryStatusRequest) | [QueryStatusResponse](#akash.bme.v1.QueryStatusResponse) | Status returns the current circuit breaker status | GET|/akash/bme/v1/status| + | `LedgerRecords` | [QueryLedgerRecordsRequest](#akash.bme.v1.QueryLedgerRecordsRequest) | [QueryLedgerRecordsResponse](#akash.bme.v1.QueryLedgerRecordsResponse) | LedgerRecords queries ledger records with optional filters for status, source, denom, to_denom | GET|/akash/bme/v1/ledger| @@ -5585,6 +5677,23 @@ It also represents a single data point in TWAP history + + + + ### WormholeContractParams + WormholeContractParams contains configuration for Wormhole guardian set. +This allows the Wormhole contract to pull guardian public keys from x/oracle +module params, enabling guardian set updates via Akash governance. + + + | Field | Type | Label | Description | + | ----- | ---- | ----- | ----------- | + | `guardian_addresses` | [string](#string) | repeated | guardian_addresses is the list of Wormhole guardian addresses. Each address is a 20-byte Ethereum-style address, hex-encoded. The Wormhole contract uses these to verify VAA signatures. | + + + + + diff --git a/go/node/bme/v1/query.pb.go b/go/node/bme/v1/query.pb.go index a8419fc9..e069652e 100644 --- a/go/node/bme/v1/query.pb.go +++ b/go/node/bme/v1/query.pb.go @@ -609,7 +609,7 @@ type QueryClient interface { VaultState(ctx context.Context, in *QueryVaultStateRequest, opts ...grpc.CallOption) (*QueryVaultStateResponse, error) // Status returns the current circuit breaker status Status(ctx context.Context, in *QueryStatusRequest, opts ...grpc.CallOption) (*QueryStatusResponse, error) - // LedgerRecords queries ledger records with optional filters for status, source, denom + // LedgerRecords queries ledger records with optional filters for status, source, denom, to_denom LedgerRecords(ctx context.Context, in *QueryLedgerRecordsRequest, opts ...grpc.CallOption) (*QueryLedgerRecordsResponse, error) } @@ -665,7 +665,7 @@ type QueryServer interface { VaultState(context.Context, *QueryVaultStateRequest) (*QueryVaultStateResponse, error) // Status returns the current circuit breaker status Status(context.Context, *QueryStatusRequest) (*QueryStatusResponse, error) - // LedgerRecords queries ledger records with optional filters for status, source, denom + // LedgerRecords queries ledger records with optional filters for status, source, denom, to_denom LedgerRecords(context.Context, *QueryLedgerRecordsRequest) (*QueryLedgerRecordsResponse, error) } diff --git a/proto/node/akash/cert/v1beta3/cert.proto b/proto/node/akash/cert/v1beta3/cert.proto index c9ea49c6..c1ded2c0 100644 --- a/proto/node/akash/cert/v1beta3/cert.proto +++ b/proto/node/akash/cert/v1beta3/cert.proto @@ -7,6 +7,7 @@ option go_package = "pkg.akt.dev/go/node/cert/v1beta3"; // CertificateID stores owner and sequence number message CertificateID { + option deprecated = true; option (gogoproto.equal) = false; option (gogoproto.goproto_stringer) = false; @@ -23,6 +24,7 @@ message CertificateID { // Certificate stores state, certificate and it's public key message Certificate { + option deprecated = true; // State is an enum which refers to state of deployment enum State { option (gogoproto.goproto_enum_prefix) = false; @@ -53,6 +55,7 @@ message Certificate { // CertificateFilter defines filters used to filter certificates message CertificateFilter { + option deprecated = true; option (gogoproto.equal) = false; string owner = 1 [ @@ -73,6 +76,7 @@ message CertificateFilter { // MsgCreateCertificate defines an SDK message for creating certificate message MsgCreateCertificate { + option deprecated = true; option (gogoproto.equal) = false; string owner = 1 [ @@ -92,10 +96,13 @@ message MsgCreateCertificate { } // MsgCreateCertificateResponse defines the Msg/CreateCertificate response type. -message MsgCreateCertificateResponse {} +message MsgCreateCertificateResponse { + option deprecated = true; +} // MsgRevokeCertificate defines an SDK message for revoking certificate message MsgRevokeCertificate { + option deprecated = true; option (gogoproto.equal) = false; CertificateID id = 1 [ @@ -107,4 +114,6 @@ message MsgRevokeCertificate { } // MsgRevokeCertificateResponse defines the Msg/RevokeCertificate response type. -message MsgRevokeCertificateResponse {} +message MsgRevokeCertificateResponse { + option deprecated = true; +} diff --git a/proto/node/akash/deployment/v1beta3/deployment.proto b/proto/node/akash/deployment/v1beta3/deployment.proto index cc6808ea..ab228499 100644 --- a/proto/node/akash/deployment/v1beta3/deployment.proto +++ b/proto/node/akash/deployment/v1beta3/deployment.proto @@ -7,6 +7,7 @@ option go_package = "pkg.akt.dev/go/node/deployment/v1beta3"; // DeploymentID stores owner and sequence number message DeploymentID { + option deprecated = true; option (gogoproto.equal) = false; option (gogoproto.goproto_stringer) = false; @@ -23,6 +24,7 @@ message DeploymentID { // Deployment stores deploymentID, state and version details message Deployment { + option deprecated = true; option (gogoproto.equal) = false; DeploymentID deployment_id = 1 [ @@ -57,6 +59,7 @@ message Deployment { // DeploymentFilters defines filters used to filter deployments message DeploymentFilters { + option deprecated = true; option (gogoproto.equal) = false; string owner = 1 [ diff --git a/proto/node/akash/deployment/v1beta3/deploymentmsg.proto b/proto/node/akash/deployment/v1beta3/deploymentmsg.proto index 41e1309d..0a5a27c7 100644 --- a/proto/node/akash/deployment/v1beta3/deploymentmsg.proto +++ b/proto/node/akash/deployment/v1beta3/deploymentmsg.proto @@ -12,6 +12,7 @@ option go_package = "pkg.akt.dev/go/node/deployment/v1beta3"; // MsgCreateDeployment defines an SDK message for creating deployment message MsgCreateDeployment { + option deprecated = true; option (gogoproto.equal) = false; DeploymentID id = 1 [ @@ -42,10 +43,13 @@ message MsgCreateDeployment { } // MsgCreateDeploymentResponse defines the Msg/CreateDeployment response type. -message MsgCreateDeploymentResponse {} +message MsgCreateDeploymentResponse { + option deprecated = true; +} // MsgDepositDeployment deposits more funds into the deposit account message MsgDepositDeployment { + option deprecated = true; option (gogoproto.equal) = false; DeploymentID id = 1 [ @@ -69,10 +73,13 @@ message MsgDepositDeployment { } // MsgCreateDeploymentResponse defines the Msg/CreateDeployment response type. -message MsgDepositDeploymentResponse {} +message MsgDepositDeploymentResponse { + option deprecated = true; +} // MsgUpdateDeployment defines an SDK message for updating deployment message MsgUpdateDeployment { + option deprecated = true; option (gogoproto.equal) = false; DeploymentID id = 1 [ @@ -88,10 +95,13 @@ message MsgUpdateDeployment { } // MsgUpdateDeploymentResponse defines the Msg/UpdateDeployment response type. -message MsgUpdateDeploymentResponse {} +message MsgUpdateDeploymentResponse { + option deprecated = true; +} // MsgCloseDeployment defines an SDK message for closing deployment message MsgCloseDeployment { + option deprecated = true; option (gogoproto.equal) = false; DeploymentID id = 1 [ @@ -103,4 +113,6 @@ message MsgCloseDeployment { } // MsgCloseDeploymentResponse defines the Msg/CloseDeployment response type. -message MsgCloseDeploymentResponse {} +message MsgCloseDeploymentResponse { + option deprecated = true; +} diff --git a/proto/node/akash/deployment/v1beta3/groupmsg.proto b/proto/node/akash/deployment/v1beta3/groupmsg.proto index ad78a8d0..bfccbdd7 100644 --- a/proto/node/akash/deployment/v1beta3/groupmsg.proto +++ b/proto/node/akash/deployment/v1beta3/groupmsg.proto @@ -8,6 +8,7 @@ option go_package = "pkg.akt.dev/go/node/deployment/v1beta3"; // MsgCloseGroup defines SDK message to close a single Group within a Deployment. message MsgCloseGroup { + option deprecated = true; option (gogoproto.equal) = false; GroupID id = 1 [ @@ -19,10 +20,13 @@ message MsgCloseGroup { } // MsgCloseGroupResponse defines the Msg/CloseGroup response type. -message MsgCloseGroupResponse {} +message MsgCloseGroupResponse { + option deprecated = true; +} // MsgPauseGroup defines SDK message to close a single Group within a Deployment. message MsgPauseGroup { + option deprecated = true; option (gogoproto.equal) = false; GroupID id = 1 [ @@ -34,10 +38,13 @@ message MsgPauseGroup { } // MsgPauseGroupResponse defines the Msg/PauseGroup response type. -message MsgPauseGroupResponse {} +message MsgPauseGroupResponse { + option deprecated = true; +} // MsgStartGroup defines SDK message to close a single Group within a Deployment. message MsgStartGroup { + option deprecated = true; option (gogoproto.equal) = false; GroupID id = 1 [ @@ -49,4 +56,6 @@ message MsgStartGroup { } // MsgStartGroupResponse defines the Msg/StartGroup response type. -message MsgStartGroupResponse {} +message MsgStartGroupResponse { + option deprecated = true; +} diff --git a/proto/node/akash/market/v1beta4/bid.proto b/proto/node/akash/market/v1beta4/bid.proto index 392d54d0..b3650906 100644 --- a/proto/node/akash/market/v1beta4/bid.proto +++ b/proto/node/akash/market/v1beta4/bid.proto @@ -12,6 +12,7 @@ option go_package = "pkg.akt.dev/go/node/market/v1beta4"; // ResourceOffer describes resources that provider is offering // for deployment message ResourceOffer { + option deprecated = true; option (gogoproto.equal) = true; akash.base.v1beta3.Resources resources = 1 [ (gogoproto.nullable) = false, @@ -26,6 +27,7 @@ message ResourceOffer { // MsgCreateBid defines an SDK message for creating Bid message MsgCreateBid { + option deprecated = true; option (gogoproto.equal) = false; OrderID order = 1 [ @@ -58,10 +60,13 @@ message MsgCreateBid { } // MsgCreateBidResponse defines the Msg/CreateBid response type. -message MsgCreateBidResponse {} +message MsgCreateBidResponse { + option deprecated = true; +} // MsgCloseBid defines an SDK message for closing bid message MsgCloseBid { + option deprecated = true; option (gogoproto.equal) = false; BidID bid_id = 1 [ @@ -73,7 +78,9 @@ message MsgCloseBid { } // MsgCloseBidResponse defines the Msg/CloseBid response type. -message MsgCloseBidResponse {} +message MsgCloseBidResponse { + option deprecated = true; +} // BidID stores owner and all other seq numbers // A successful bid becomes a Lease(ID). diff --git a/proto/node/akash/market/v1beta4/lease.proto b/proto/node/akash/market/v1beta4/lease.proto index 2085f50f..4e735e7a 100644 --- a/proto/node/akash/market/v1beta4/lease.proto +++ b/proto/node/akash/market/v1beta4/lease.proto @@ -119,6 +119,7 @@ message LeaseFilters { // MsgCreateLease is sent to create a lease message MsgCreateLease { + option deprecated = true; option (gogoproto.equal) = false; BidID bid_id = 1 [ @@ -130,10 +131,13 @@ message MsgCreateLease { } // MsgCreateLeaseResponse is the response from creating a lease -message MsgCreateLeaseResponse {} +message MsgCreateLeaseResponse { + option deprecated = true; +} // MsgWithdrawLease defines an SDK message for closing bid message MsgWithdrawLease { + option deprecated = true; option (gogoproto.equal) = false; LeaseID bid_id = 1 [ @@ -145,11 +149,14 @@ message MsgWithdrawLease { } // MsgWithdrawLeaseResponse defines the Msg/WithdrawLease response type. -message MsgWithdrawLeaseResponse {} +message MsgWithdrawLeaseResponse { + option deprecated = true; +} // MsgCloseLease defines an SDK message for closing order message MsgCloseLease { + option deprecated = true; option (gogoproto.equal) = false; LeaseID lease_id = 1 [ @@ -161,4 +168,6 @@ message MsgCloseLease { } // MsgCloseLeaseResponse defines the Msg/CloseLease response type. -message MsgCloseLeaseResponse {} +message MsgCloseLeaseResponse { + option deprecated = true; +} diff --git a/proto/node/akash/provider/v1beta3/provider.proto b/proto/node/akash/provider/v1beta3/provider.proto index a4440c9b..eb81d330 100644 --- a/proto/node/akash/provider/v1beta3/provider.proto +++ b/proto/node/akash/provider/v1beta3/provider.proto @@ -8,6 +8,7 @@ option go_package = "pkg.akt.dev/go/node/provider/v1beta3"; // ProviderInfo message ProviderInfo { + option deprecated = true; string email = 1 [ (gogoproto.customname) = "EMail", (gogoproto.jsontag) = "email", @@ -21,6 +22,7 @@ message ProviderInfo { // MsgCreateProvider defines an SDK message for creating a provider message MsgCreateProvider { + option deprecated = true; option (gogoproto.equal) = false; string owner = 1 [(gogoproto.jsontag) = "owner", (gogoproto.moretags) = "yaml:\"owner\""]; @@ -44,10 +46,13 @@ message MsgCreateProvider { } // MsgCreateProviderResponse defines the Msg/CreateProvider response type. -message MsgCreateProviderResponse {} +message MsgCreateProviderResponse { + option deprecated = true; +} // MsgUpdateProvider defines an SDK message for updating a provider message MsgUpdateProvider { + option deprecated = true; option (gogoproto.equal) = false; string owner = 1 [(gogoproto.jsontag) = "owner", (gogoproto.moretags) = "yaml:\"owner\""]; @@ -70,20 +75,26 @@ message MsgUpdateProvider { } // MsgUpdateProviderResponse defines the Msg/UpdateProvider response type. -message MsgUpdateProviderResponse {} +message MsgUpdateProviderResponse { + option deprecated = true; +} // MsgDeleteProvider defines an SDK message for deleting a provider message MsgDeleteProvider { + option deprecated = true; option (gogoproto.equal) = false; string owner = 1 [(gogoproto.jsontag) = "owner", (gogoproto.moretags) = "yaml:\"owner\""]; } // MsgDeleteProviderResponse defines the Msg/DeleteProvider response type. -message MsgDeleteProviderResponse {} +message MsgDeleteProviderResponse { + option deprecated = true; +} // Provider stores owner and host details message Provider { + option deprecated = true; option (gogoproto.equal) = false; option (gogoproto.goproto_stringer) = false; diff --git a/rs/src/gen/node/akash.bme.v1.rs b/rs/src/gen/node/akash.bme.v1.rs index b18e02bd..59ac6b4e 100644 --- a/rs/src/gen/node/akash.bme.v1.rs +++ b/rs/src/gen/node/akash.bme.v1.rs @@ -258,6 +258,25 @@ pub struct EventLedgerRecordExecuted { #[prost(message, optional, tag="1")] pub id: ::core::option::Option, } +/// LedgerRecordFilters defines filters used to filter ledger records +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct LedgerRecordFilters { + /// source is the account address of the user who initiated the burn/mint + #[prost(string, tag="1")] + pub source: ::prost::alloc::string::String, + /// denom filters by the burn denomination + #[prost(string, tag="2")] + pub denom: ::prost::alloc::string::String, + /// to_denom filters by the mint denomination + #[prost(string, tag="3")] + pub to_denom: ::prost::alloc::string::String, + /// status filters by record status (pending or executed). + /// Uses the string representation of LedgerRecordStatus enum values. + /// If empty, returns both pending and executed records. + #[prost(string, tag="4")] + pub status: ::prost::alloc::string::String, +} /// Params defines the parameters for the BME module #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, Copy, PartialEq, ::prost::Message)] @@ -518,6 +537,56 @@ pub struct QueryStatusResponse { #[prost(bool, tag="6")] pub refunds_allowed: bool, } +/// QueryLedgerRecordEntry wraps a ledger record with its ID and status +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct QueryLedgerRecordEntry { + /// id is the unique identifier of the ledger record + #[prost(message, optional, tag="1")] + pub id: ::core::option::Option, + /// status indicates whether this record is pending or executed + #[prost(enumeration="LedgerRecordStatus", tag="2")] + pub status: i32, + /// record contains either a pending or executed record + #[prost(oneof="query_ledger_record_entry::Record", tags="3, 4")] + pub record: ::core::option::Option, +} +/// Nested message and enum types in `QueryLedgerRecordEntry`. +pub mod query_ledger_record_entry { + /// record contains either a pending or executed record + #[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Oneof)] + pub enum Record { + /// pending_record is set when the record status is pending + #[prost(message, tag="3")] + PendingRecord(super::LedgerPendingRecord), + /// executed_record is set when the record status is executed + #[prost(message, tag="4")] + ExecutedRecord(super::LedgerRecord), + } +} +/// QueryLedgerRecordsRequest is the request type for the Query/LedgerRecords RPC method +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct QueryLedgerRecordsRequest { + /// filters holds the ledger record fields to filter the request + #[prost(message, optional, tag="1")] + pub filters: ::core::option::Option, + /// pagination defines the pagination for the request + #[prost(message, optional, tag="2")] + pub pagination: ::core::option::Option, +} +/// QueryLedgerRecordsResponse is the response type for the Query/LedgerRecords RPC method +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct QueryLedgerRecordsResponse { + /// records is a list of ledger records matching the filters + #[prost(message, repeated, tag="1")] + pub records: ::prost::alloc::vec::Vec, + /// pagination contains the information about response pagination + #[prost(message, optional, tag="2")] + pub pagination: ::core::option::Option, +} /// Encoded file descriptor set for the `akash.bme.v1` package pub const FILE_DESCRIPTOR_SET: &[u8] = &[ 0x0a, 0xec, 0x57, 0x0a, 0x18, 0x61, 0x6b, 0x61, 0x73, 0x68, 0x2f, 0x62, 0x6d, 0x65, 0x2f, 0x76, @@ -1358,6 +1427,99 @@ pub const FILE_DESCRIPTOR_SET: &[u8] = &[ 0x08, 0x04, 0x02, 0x02, 0x00, 0x08, 0xec, 0xfb, 0x03, 0x12, 0x03, 0x30, 0x04, 0x21, 0x0a, 0x0f, 0x0a, 0x08, 0x04, 0x02, 0x02, 0x00, 0x08, 0xed, 0xfb, 0x03, 0x12, 0x03, 0x31, 0x04, 0x20, 0x0a, 0x0f, 0x0a, 0x08, 0x04, 0x02, 0x02, 0x00, 0x08, 0xee, 0xfb, 0x03, 0x12, 0x03, 0x32, 0x04, 0x34, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x0a, 0xcd, 0x0b, 0x0a, 0x1a, 0x61, 0x6b, 0x61, + 0x73, 0x68, 0x2f, 0x62, 0x6d, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0c, 0x61, 0x6b, 0x61, 0x73, 0x68, 0x2e, 0x62, + 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x63, 0x6f, 0x73, + 0x6d, 0x6f, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x8a, 0x02, 0x0a, 0x13, 0x4c, 0x65, 0x64, 0x67, 0x65, + 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x4b, + 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x33, + 0xea, 0xde, 0x1f, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0xf2, 0xde, 0x1f, 0x0d, 0x79, 0x61, + 0x6d, 0x6c, 0x3a, 0x22, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0xd2, 0xb4, 0x2d, 0x14, 0x63, + 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, + 0x69, 0x6e, 0x67, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x2f, 0x0a, 0x05, 0x64, + 0x65, 0x6e, 0x6f, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x19, 0xea, 0xde, 0x1f, 0x05, + 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0xf2, 0xde, 0x1f, 0x0c, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x64, + 0x65, 0x6e, 0x6f, 0x6d, 0x22, 0x52, 0x05, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x12, 0x3a, 0x0a, 0x08, + 0x74, 0x6f, 0x5f, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1f, + 0xea, 0xde, 0x1f, 0x08, 0x74, 0x6f, 0x5f, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0xf2, 0xde, 0x1f, 0x0f, + 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x74, 0x6f, 0x5f, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x22, 0x52, + 0x07, 0x74, 0x6f, 0x44, 0x65, 0x6e, 0x6f, 0x6d, 0x12, 0x33, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1b, 0xea, 0xde, 0x1f, 0x06, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0xf2, 0xde, 0x1f, 0x0d, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x22, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x3a, 0x04, 0xe8, + 0xa0, 0x1f, 0x00, 0x42, 0x8e, 0x01, 0x0a, 0x10, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x61, 0x73, + 0x68, 0x2e, 0x62, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x42, 0x0c, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x1a, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x6b, + 0x74, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x67, 0x6f, 0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x2f, 0x62, 0x6d, + 0x65, 0x2f, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x41, 0x42, 0x58, 0xaa, 0x02, 0x0c, 0x41, 0x6b, 0x61, + 0x73, 0x68, 0x2e, 0x42, 0x6d, 0x65, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0c, 0x41, 0x6b, 0x61, 0x73, + 0x68, 0x5c, 0x42, 0x6d, 0x65, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x18, 0x41, 0x6b, 0x61, 0x73, 0x68, + 0x5c, 0x42, 0x6d, 0x65, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0xea, 0x02, 0x0e, 0x41, 0x6b, 0x61, 0x73, 0x68, 0x3a, 0x3a, 0x42, 0x6d, 0x65, + 0x3a, 0x3a, 0x56, 0x31, 0x4a, 0xc9, 0x07, 0x0a, 0x06, 0x12, 0x04, 0x00, 0x00, 0x26, 0x01, 0x0a, + 0x08, 0x0a, 0x01, 0x0c, 0x12, 0x03, 0x00, 0x00, 0x12, 0x0a, 0x08, 0x0a, 0x01, 0x02, 0x12, 0x03, + 0x01, 0x00, 0x15, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x00, 0x12, 0x03, 0x03, 0x00, 0x1e, 0x0a, 0x09, + 0x0a, 0x02, 0x03, 0x01, 0x12, 0x03, 0x04, 0x00, 0x23, 0x0a, 0x08, 0x0a, 0x01, 0x08, 0x12, 0x03, + 0x06, 0x00, 0x31, 0x0a, 0x09, 0x0a, 0x02, 0x08, 0x0b, 0x12, 0x03, 0x06, 0x00, 0x31, 0x0a, 0x4f, + 0x0a, 0x02, 0x04, 0x00, 0x12, 0x04, 0x09, 0x00, 0x26, 0x01, 0x1a, 0x43, 0x20, 0x4c, 0x65, 0x64, + 0x67, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, + 0x20, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x73, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, + 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x20, + 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x20, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x0a, 0x0a, + 0x0a, 0x0a, 0x03, 0x04, 0x00, 0x01, 0x12, 0x03, 0x09, 0x08, 0x1b, 0x0a, 0x0a, 0x0a, 0x03, 0x04, + 0x00, 0x07, 0x12, 0x03, 0x0a, 0x02, 0x23, 0x0a, 0x0d, 0x0a, 0x06, 0x04, 0x00, 0x07, 0x8d, 0xf4, + 0x03, 0x12, 0x03, 0x0a, 0x02, 0x23, 0x0a, 0x55, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x00, 0x12, 0x04, + 0x0d, 0x02, 0x11, 0x04, 0x1a, 0x47, 0x20, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x69, 0x73, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x20, 0x61, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x73, 0x65, 0x72, + 0x20, 0x77, 0x68, 0x6f, 0x20, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x65, 0x64, 0x20, 0x74, + 0x68, 0x65, 0x20, 0x62, 0x75, 0x72, 0x6e, 0x2f, 0x6d, 0x69, 0x6e, 0x74, 0x0a, 0x0a, 0x0c, 0x0a, + 0x05, 0x04, 0x00, 0x02, 0x00, 0x05, 0x12, 0x03, 0x0d, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, + 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x0d, 0x09, 0x0f, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, + 0x00, 0x03, 0x12, 0x03, 0x0d, 0x12, 0x13, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x08, + 0x12, 0x04, 0x0d, 0x14, 0x11, 0x03, 0x0a, 0x0f, 0x0a, 0x08, 0x04, 0x00, 0x02, 0x00, 0x08, 0xca, + 0xd6, 0x05, 0x12, 0x03, 0x0e, 0x04, 0x32, 0x0a, 0x0f, 0x0a, 0x08, 0x04, 0x00, 0x02, 0x00, 0x08, + 0xed, 0xfb, 0x03, 0x12, 0x03, 0x0f, 0x04, 0x24, 0x0a, 0x0f, 0x0a, 0x08, 0x04, 0x00, 0x02, 0x00, + 0x08, 0xee, 0xfb, 0x03, 0x12, 0x03, 0x10, 0x04, 0x2d, 0x0a, 0x36, 0x0a, 0x04, 0x04, 0x00, 0x02, + 0x01, 0x12, 0x04, 0x14, 0x02, 0x17, 0x04, 0x1a, 0x28, 0x20, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x20, + 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, + 0x75, 0x72, 0x6e, 0x20, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x05, 0x12, 0x03, 0x14, 0x02, 0x08, 0x0a, + 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x01, 0x12, 0x03, 0x14, 0x09, 0x0e, 0x0a, 0x0c, 0x0a, + 0x05, 0x04, 0x00, 0x02, 0x01, 0x03, 0x12, 0x03, 0x14, 0x11, 0x12, 0x0a, 0x0d, 0x0a, 0x05, 0x04, + 0x00, 0x02, 0x01, 0x08, 0x12, 0x04, 0x14, 0x13, 0x17, 0x03, 0x0a, 0x0f, 0x0a, 0x08, 0x04, 0x00, + 0x02, 0x01, 0x08, 0xed, 0xfb, 0x03, 0x12, 0x03, 0x15, 0x04, 0x22, 0x0a, 0x0f, 0x0a, 0x08, 0x04, + 0x00, 0x02, 0x01, 0x08, 0xee, 0xfb, 0x03, 0x12, 0x03, 0x16, 0x04, 0x2b, 0x0a, 0x39, 0x0a, 0x04, + 0x04, 0x00, 0x02, 0x02, 0x12, 0x04, 0x1a, 0x02, 0x1d, 0x04, 0x1a, 0x2b, 0x20, 0x74, 0x6f, 0x5f, + 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x20, 0x62, 0x79, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x6d, 0x69, 0x6e, 0x74, 0x20, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x69, + 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x02, 0x05, + 0x12, 0x03, 0x1a, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x02, 0x01, 0x12, 0x03, + 0x1a, 0x09, 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x02, 0x03, 0x12, 0x03, 0x1a, 0x14, + 0x15, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x02, 0x08, 0x12, 0x04, 0x1a, 0x16, 0x1d, 0x03, + 0x0a, 0x0f, 0x0a, 0x08, 0x04, 0x00, 0x02, 0x02, 0x08, 0xed, 0xfb, 0x03, 0x12, 0x03, 0x1b, 0x04, + 0x25, 0x0a, 0x0f, 0x0a, 0x08, 0x04, 0x00, 0x02, 0x02, 0x08, 0xee, 0xfb, 0x03, 0x12, 0x03, 0x1c, + 0x04, 0x2e, 0x0a, 0xc0, 0x01, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x03, 0x12, 0x04, 0x22, 0x02, 0x25, + 0x04, 0x1a, 0xb1, 0x01, 0x20, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x20, 0x66, 0x69, 0x6c, 0x74, + 0x65, 0x72, 0x73, 0x20, 0x62, 0x79, 0x20, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x20, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x20, 0x28, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x6f, 0x72, + 0x20, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x64, 0x29, 0x2e, 0x0a, 0x20, 0x55, 0x73, 0x65, + 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x20, 0x72, 0x65, 0x70, + 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x20, 0x4c, + 0x65, 0x64, 0x67, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x20, 0x65, 0x6e, 0x75, 0x6d, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x2e, 0x0a, 0x20, + 0x49, 0x66, 0x20, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2c, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, + 0x73, 0x20, 0x62, 0x6f, 0x74, 0x68, 0x20, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x61, + 0x6e, 0x64, 0x20, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x64, 0x20, 0x72, 0x65, 0x63, 0x6f, + 0x72, 0x64, 0x73, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x03, 0x05, 0x12, 0x03, + 0x22, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x03, 0x01, 0x12, 0x03, 0x22, 0x09, + 0x0f, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x03, 0x03, 0x12, 0x03, 0x22, 0x12, 0x13, 0x0a, + 0x0d, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x03, 0x08, 0x12, 0x04, 0x22, 0x14, 0x25, 0x03, 0x0a, 0x0f, + 0x0a, 0x08, 0x04, 0x00, 0x02, 0x03, 0x08, 0xed, 0xfb, 0x03, 0x12, 0x03, 0x23, 0x04, 0x23, 0x0a, + 0x0f, 0x0a, 0x08, 0x04, 0x00, 0x02, 0x03, 0x08, 0xee, 0xfb, 0x03, 0x12, 0x03, 0x24, 0x04, 0x2c, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x0a, 0xca, 0x0f, 0x0a, 0x19, 0x61, 0x6b, 0x61, 0x73, 0x68, 0x2f, 0x62, 0x6d, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0c, 0x61, 0x6b, 0x61, 0x73, 0x68, 0x2e, 0x62, 0x6d, @@ -2166,343 +2328,503 @@ pub const FILE_DESCRIPTOR_SET: &[u8] = &[ 0x05, 0x04, 0x09, 0x02, 0x01, 0x06, 0x12, 0x04, 0xc0, 0x01, 0x02, 0x14, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x01, 0x01, 0x12, 0x04, 0xc0, 0x01, 0x15, 0x1b, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x01, 0x03, 0x12, 0x04, 0xc0, 0x01, 0x1e, 0x1f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x33, 0x0a, 0xc0, 0x1b, 0x0a, 0x18, 0x61, 0x6b, 0x61, 0x73, 0x68, 0x2f, 0x62, 0x6d, 0x65, + 0x6f, 0x33, 0x0a, 0xc8, 0x2f, 0x0a, 0x18, 0x61, 0x6b, 0x61, 0x73, 0x68, 0x2f, 0x62, 0x6d, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0c, 0x61, 0x6b, 0x61, 0x73, 0x68, 0x2e, 0x62, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x1a, 0x19, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x61, 0x6b, - 0x61, 0x73, 0x68, 0x2f, 0x62, 0x6d, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x61, 0x72, 0x61, 0x6d, - 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x18, 0x61, 0x6b, 0x61, 0x73, 0x68, 0x2f, 0x62, - 0x6d, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x22, 0x14, 0x0a, 0x12, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x49, 0x0a, 0x13, 0x51, 0x75, 0x65, 0x72, 0x79, - 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, - 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, - 0x2e, 0x61, 0x6b, 0x61, 0x73, 0x68, 0x2e, 0x62, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, - 0x72, 0x61, 0x6d, 0x73, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, - 0x6d, 0x73, 0x22, 0x18, 0x0a, 0x16, 0x51, 0x75, 0x65, 0x72, 0x79, 0x56, 0x61, 0x75, 0x6c, 0x74, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x55, 0x0a, 0x17, - 0x51, 0x75, 0x65, 0x72, 0x79, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x0b, 0x76, 0x61, 0x75, 0x6c, 0x74, - 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61, - 0x6b, 0x61, 0x73, 0x68, 0x2e, 0x62, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x74, - 0x65, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x0a, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x53, 0x74, - 0x61, 0x74, 0x65, 0x22, 0x14, 0x0a, 0x12, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xa7, 0x03, 0x0a, 0x13, 0x51, 0x75, - 0x65, 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x30, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x18, 0x2e, 0x61, 0x6b, 0x61, 0x73, 0x68, 0x2e, 0x62, 0x6d, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x4d, 0x69, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x12, 0x5c, 0x0a, 0x10, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, - 0x6c, 0x5f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x31, 0xc8, - 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x1b, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, - 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x44, - 0x65, 0x63, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, - 0x52, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x52, 0x61, 0x74, 0x69, - 0x6f, 0x12, 0x58, 0x0a, 0x0e, 0x77, 0x61, 0x72, 0x6e, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, - 0x6f, 0x6c, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x31, 0xc8, 0xde, 0x1f, 0x00, 0xda, - 0xde, 0x1f, 0x1b, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, - 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x44, 0x65, 0x63, 0xd2, 0xb4, - 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x0d, 0x77, 0x61, - 0x72, 0x6e, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x58, 0x0a, 0x0e, 0x68, - 0x61, 0x6c, 0x74, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x31, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x1b, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x4c, - 0x65, 0x67, 0x61, 0x63, 0x79, 0x44, 0x65, 0x63, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x0d, 0x68, 0x61, 0x6c, 0x74, 0x54, 0x68, 0x72, 0x65, - 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x61, - 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x6d, 0x69, - 0x6e, 0x74, 0x73, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, - 0x66, 0x75, 0x6e, 0x64, 0x73, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x0e, 0x72, 0x65, 0x66, 0x75, 0x6e, 0x64, 0x73, 0x41, 0x6c, 0x6c, 0x6f, - 0x77, 0x65, 0x64, 0x32, 0xd9, 0x02, 0x0a, 0x05, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x6b, 0x0a, - 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x20, 0x2e, 0x61, 0x6b, 0x61, 0x73, 0x68, 0x2e, + 0x6f, 0x1a, 0x2a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x70, 0x61, 0x67, + 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x63, + 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x61, 0x6b, 0x61, 0x73, 0x68, 0x2f, + 0x62, 0x6d, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x18, 0x61, 0x6b, 0x61, 0x73, 0x68, 0x2f, 0x62, 0x6d, 0x65, 0x2f, 0x76, + 0x31, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1a, 0x61, + 0x6b, 0x61, 0x73, 0x68, 0x2f, 0x62, 0x6d, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x66, 0x69, 0x6c, 0x74, + 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x14, 0x0a, 0x12, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, + 0x49, 0x0a, 0x13, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x6b, 0x61, 0x73, 0x68, 0x2e, 0x62, + 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x04, 0xc8, 0xde, + 0x1f, 0x00, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x18, 0x0a, 0x16, 0x51, 0x75, + 0x65, 0x72, 0x79, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x22, 0x55, 0x0a, 0x17, 0x51, 0x75, 0x65, 0x72, 0x79, 0x56, 0x61, 0x75, + 0x6c, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x3a, 0x0a, 0x0b, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61, 0x6b, 0x61, 0x73, 0x68, 0x2e, 0x62, 0x6d, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, + 0x0a, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0x14, 0x0a, 0x12, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x22, 0xa7, 0x03, 0x0a, 0x13, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x06, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x61, 0x6b, 0x61, 0x73, + 0x68, 0x2e, 0x62, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x69, 0x6e, 0x74, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x5c, 0x0a, 0x10, 0x63, + 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x5f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x31, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x1b, 0x63, + 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, + 0x2e, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x44, 0x65, 0x63, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x74, + 0x65, 0x72, 0x61, 0x6c, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x12, 0x58, 0x0a, 0x0e, 0x77, 0x61, 0x72, + 0x6e, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x31, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x1b, 0x63, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x4c, 0x65, 0x67, + 0x61, 0x63, 0x79, 0x44, 0x65, 0x63, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x2e, 0x44, 0x65, 0x63, 0x52, 0x0d, 0x77, 0x61, 0x72, 0x6e, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, + 0x6f, 0x6c, 0x64, 0x12, 0x58, 0x0a, 0x0e, 0x68, 0x61, 0x6c, 0x74, 0x5f, 0x74, 0x68, 0x72, 0x65, + 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x31, 0xc8, 0xde, 0x1f, + 0x00, 0xda, 0xde, 0x1f, 0x1b, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, + 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x44, 0x65, 0x63, + 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x0d, + 0x68, 0x61, 0x6c, 0x74, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x23, 0x0a, + 0x0d, 0x6d, 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x6d, 0x69, 0x6e, 0x74, 0x73, 0x41, 0x6c, 0x6c, 0x6f, 0x77, + 0x65, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x66, 0x75, 0x6e, 0x64, 0x73, 0x5f, 0x61, 0x6c, + 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x72, 0x65, 0x66, + 0x75, 0x6e, 0x64, 0x73, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x22, 0xbc, 0x02, 0x0a, 0x16, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, + 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x4b, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x6b, 0x61, 0x73, 0x68, 0x2e, 0x62, 0x6d, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x49, 0x44, + 0x42, 0x1d, 0xc8, 0xde, 0x1f, 0x00, 0xe2, 0xde, 0x1f, 0x02, 0x49, 0x44, 0xea, 0xde, 0x1f, 0x02, + 0x69, 0x64, 0xf2, 0xde, 0x1f, 0x09, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x69, 0x64, 0x22, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x38, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x61, 0x6b, 0x61, 0x73, 0x68, 0x2e, 0x62, 0x6d, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x4a, 0x0a, + 0x0e, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x61, 0x6b, 0x61, 0x73, 0x68, 0x2e, 0x62, 0x6d, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x50, 0x65, 0x6e, 0x64, 0x69, + 0x6e, 0x67, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x48, 0x00, 0x52, 0x0d, 0x70, 0x65, 0x6e, 0x64, + 0x69, 0x6e, 0x67, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x45, 0x0a, 0x0f, 0x65, 0x78, 0x65, + 0x63, 0x75, 0x74, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x6b, 0x61, 0x73, 0x68, 0x2e, 0x62, 0x6d, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x48, 0x00, + 0x52, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, + 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x22, 0xa6, 0x01, 0x0a, 0x19, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x41, 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x74, + 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x61, 0x6b, 0x61, 0x73, + 0x68, 0x2e, 0x62, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x52, + 0x65, 0x63, 0x6f, 0x72, 0x64, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x42, 0x04, 0xc8, 0xde, + 0x1f, 0x00, 0x52, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x46, 0x0a, 0x0a, 0x70, + 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x26, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x22, 0xab, 0x01, 0x0a, 0x1a, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4c, 0x65, 0x64, + 0x67, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x44, 0x0a, 0x07, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x61, 0x6b, 0x61, 0x73, 0x68, 0x2e, 0x62, 0x6d, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x52, 0x65, + 0x63, 0x6f, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, + 0x07, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x47, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, + 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x63, + 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x32, 0xdc, 0x03, 0x0a, 0x05, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x6b, 0x0a, 0x06, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x20, 0x2e, 0x61, 0x6b, 0x61, 0x73, 0x68, 0x2e, 0x62, 0x6d, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x61, 0x6b, 0x61, 0x73, 0x68, 0x2e, 0x62, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, - 0x6d, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x61, 0x6b, 0x61, 0x73, - 0x68, 0x2e, 0x62, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, - 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1c, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x16, 0x12, 0x14, 0x2f, 0x61, 0x6b, 0x61, 0x73, 0x68, 0x2f, 0x62, 0x6d, 0x65, - 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x76, 0x0a, 0x0a, 0x56, 0x61, - 0x75, 0x6c, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x24, 0x2e, 0x61, 0x6b, 0x61, 0x73, 0x68, - 0x2e, 0x62, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x56, 0x61, 0x75, - 0x6c, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, - 0x2e, 0x61, 0x6b, 0x61, 0x73, 0x68, 0x2e, 0x62, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, - 0x65, 0x72, 0x79, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x12, 0x13, 0x2f, - 0x61, 0x6b, 0x61, 0x73, 0x68, 0x2f, 0x62, 0x6d, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x76, 0x61, 0x75, - 0x6c, 0x74, 0x12, 0x6b, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x20, 0x2e, 0x61, + 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1c, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x16, 0x12, 0x14, 0x2f, 0x61, 0x6b, 0x61, 0x73, 0x68, 0x2f, 0x62, 0x6d, 0x65, 0x2f, 0x76, + 0x31, 0x2f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x76, 0x0a, 0x0a, 0x56, 0x61, 0x75, 0x6c, + 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x24, 0x2e, 0x61, 0x6b, 0x61, 0x73, 0x68, 0x2e, 0x62, + 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x56, 0x61, 0x75, 0x6c, 0x74, + 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x61, 0x6b, 0x61, 0x73, 0x68, 0x2e, 0x62, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, - 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, - 0x2e, 0x61, 0x6b, 0x61, 0x73, 0x68, 0x2e, 0x62, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, - 0x65, 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x1c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x12, 0x14, 0x2f, 0x61, 0x6b, 0x61, 0x73, - 0x68, 0x2f, 0x62, 0x6d, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, - 0x8c, 0x01, 0x0a, 0x10, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x61, 0x73, 0x68, 0x2e, 0x62, 0x6d, - 0x65, 0x2e, 0x76, 0x31, 0x42, 0x0a, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, - 0x50, 0x01, 0x5a, 0x1a, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x6b, 0x74, 0x2e, 0x64, 0x65, 0x76, 0x2f, - 0x67, 0x6f, 0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x2f, 0x62, 0x6d, 0x65, 0x2f, 0x76, 0x31, 0xa2, 0x02, - 0x03, 0x41, 0x42, 0x58, 0xaa, 0x02, 0x0c, 0x41, 0x6b, 0x61, 0x73, 0x68, 0x2e, 0x42, 0x6d, 0x65, - 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0c, 0x41, 0x6b, 0x61, 0x73, 0x68, 0x5c, 0x42, 0x6d, 0x65, 0x5c, - 0x56, 0x31, 0xe2, 0x02, 0x18, 0x41, 0x6b, 0x61, 0x73, 0x68, 0x5c, 0x42, 0x6d, 0x65, 0x5c, 0x56, - 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0e, - 0x41, 0x6b, 0x61, 0x73, 0x68, 0x3a, 0x3a, 0x42, 0x6d, 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x4a, 0x8c, - 0x11, 0x0a, 0x06, 0x12, 0x04, 0x00, 0x00, 0x51, 0x01, 0x0a, 0x08, 0x0a, 0x01, 0x0c, 0x12, 0x03, - 0x00, 0x00, 0x12, 0x0a, 0x08, 0x0a, 0x01, 0x02, 0x12, 0x03, 0x01, 0x00, 0x15, 0x0a, 0x09, 0x0a, - 0x02, 0x03, 0x00, 0x12, 0x03, 0x03, 0x00, 0x1e, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x01, 0x12, 0x03, - 0x04, 0x00, 0x26, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x02, 0x12, 0x03, 0x06, 0x00, 0x23, 0x0a, 0x09, - 0x0a, 0x02, 0x03, 0x03, 0x12, 0x03, 0x08, 0x00, 0x23, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x04, 0x12, - 0x03, 0x09, 0x00, 0x22, 0x0a, 0x08, 0x0a, 0x01, 0x08, 0x12, 0x03, 0x0b, 0x00, 0x31, 0x0a, 0x09, - 0x0a, 0x02, 0x08, 0x0b, 0x12, 0x03, 0x0b, 0x00, 0x31, 0x0a, 0x47, 0x0a, 0x02, 0x06, 0x00, 0x12, - 0x04, 0x0e, 0x00, 0x1d, 0x01, 0x1a, 0x3b, 0x20, 0x51, 0x75, 0x65, 0x72, 0x79, 0x20, 0x64, 0x65, - 0x66, 0x69, 0x6e, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x67, 0x52, 0x50, 0x43, 0x20, 0x71, - 0x75, 0x65, 0x72, 0x69, 0x65, 0x72, 0x20, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x20, 0x66, - 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x42, 0x4d, 0x45, 0x20, 0x6d, 0x6f, 0x64, 0x75, 0x6c, - 0x65, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x06, 0x00, 0x01, 0x12, 0x03, 0x0e, 0x08, 0x0d, 0x0a, 0x34, - 0x0a, 0x04, 0x06, 0x00, 0x02, 0x00, 0x12, 0x04, 0x10, 0x02, 0x12, 0x03, 0x1a, 0x26, 0x20, 0x50, - 0x61, 0x72, 0x61, 0x6d, 0x73, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, 0x74, 0x68, - 0x65, 0x20, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, - 0x65, 0x72, 0x73, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x10, - 0x06, 0x0c, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x02, 0x12, 0x03, 0x10, 0x0d, 0x1f, - 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, 0x10, 0x2a, 0x3d, 0x0a, 0x0c, - 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x04, 0x12, 0x03, 0x11, 0x04, 0x3a, 0x0a, 0x11, 0x0a, 0x0a, - 0x06, 0x00, 0x02, 0x00, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x02, 0x12, 0x03, 0x11, 0x04, 0x3a, 0x0a, - 0x3a, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x01, 0x12, 0x04, 0x15, 0x02, 0x17, 0x03, 0x1a, 0x2c, 0x20, - 0x56, 0x61, 0x75, 0x6c, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, - 0x6e, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x76, - 0x61, 0x75, 0x6c, 0x74, 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, - 0x00, 0x02, 0x01, 0x01, 0x12, 0x03, 0x15, 0x06, 0x10, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, - 0x01, 0x02, 0x12, 0x03, 0x15, 0x11, 0x27, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, 0x03, - 0x12, 0x03, 0x15, 0x32, 0x49, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, 0x04, 0x12, 0x03, - 0x16, 0x04, 0x39, 0x0a, 0x11, 0x0a, 0x0a, 0x06, 0x00, 0x02, 0x01, 0x04, 0xb0, 0xca, 0xbc, 0x22, - 0x02, 0x12, 0x03, 0x16, 0x04, 0x39, 0x0a, 0x41, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x02, 0x12, 0x04, - 0x1a, 0x02, 0x1c, 0x03, 0x1a, 0x33, 0x20, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x20, 0x72, 0x65, - 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, - 0x74, 0x20, 0x63, 0x69, 0x72, 0x63, 0x75, 0x69, 0x74, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x65, - 0x72, 0x20, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, - 0x02, 0x01, 0x12, 0x03, 0x1a, 0x06, 0x0c, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, 0x02, - 0x12, 0x03, 0x1a, 0x0d, 0x1f, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, 0x03, 0x12, 0x03, - 0x1a, 0x2a, 0x3d, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, 0x04, 0x12, 0x03, 0x1b, 0x04, - 0x3a, 0x0a, 0x11, 0x0a, 0x0a, 0x06, 0x00, 0x02, 0x02, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x02, 0x12, - 0x03, 0x1b, 0x04, 0x3a, 0x0a, 0x53, 0x0a, 0x02, 0x04, 0x00, 0x12, 0x03, 0x20, 0x00, 0x1d, 0x1a, - 0x48, 0x20, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, - 0x20, 0x51, 0x75, 0x65, 0x72, 0x79, 0x2f, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x20, 0x52, 0x50, - 0x43, 0x20, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x00, 0x01, - 0x12, 0x03, 0x20, 0x08, 0x1a, 0x0a, 0x56, 0x0a, 0x02, 0x04, 0x01, 0x12, 0x04, 0x23, 0x00, 0x25, - 0x01, 0x1a, 0x4a, 0x20, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x66, 0x6f, 0x72, - 0x20, 0x74, 0x68, 0x65, 0x20, 0x51, 0x75, 0x65, 0x72, 0x79, 0x2f, 0x50, 0x61, 0x72, 0x61, 0x6d, - 0x73, 0x20, 0x52, 0x50, 0x43, 0x20, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x0a, 0x0a, 0x0a, 0x0a, - 0x03, 0x04, 0x01, 0x01, 0x12, 0x03, 0x23, 0x08, 0x1b, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x01, 0x02, - 0x00, 0x12, 0x03, 0x24, 0x02, 0x33, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x06, 0x12, - 0x03, 0x24, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x01, 0x12, 0x03, 0x24, - 0x09, 0x0f, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x03, 0x12, 0x03, 0x24, 0x12, 0x13, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x08, 0x12, 0x03, 0x24, 0x14, 0x32, 0x0a, 0x0f, - 0x0a, 0x08, 0x04, 0x01, 0x02, 0x00, 0x08, 0xe9, 0xfb, 0x03, 0x12, 0x03, 0x24, 0x15, 0x31, 0x0a, - 0x5b, 0x0a, 0x02, 0x04, 0x02, 0x12, 0x03, 0x28, 0x00, 0x21, 0x1a, 0x50, 0x20, 0x51, 0x75, 0x65, - 0x72, 0x79, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, - 0x51, 0x75, 0x65, 0x72, 0x79, 0x2f, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x79, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x12, 0x13, 0x2f, 0x61, 0x6b, + 0x61, 0x73, 0x68, 0x2f, 0x62, 0x6d, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x76, 0x61, 0x75, 0x6c, 0x74, + 0x12, 0x6b, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x20, 0x2e, 0x61, 0x6b, 0x61, + 0x73, 0x68, 0x2e, 0x62, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x61, + 0x6b, 0x61, 0x73, 0x68, 0x2e, 0x62, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, + 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x1c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x12, 0x14, 0x2f, 0x61, 0x6b, 0x61, 0x73, 0x68, 0x2f, + 0x62, 0x6d, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x80, 0x01, + 0x0a, 0x0d, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x12, + 0x27, 0x2e, 0x61, 0x6b, 0x61, 0x73, 0x68, 0x2e, 0x62, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x61, 0x6b, 0x61, 0x73, 0x68, + 0x2e, 0x62, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4c, 0x65, 0x64, + 0x67, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x1c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x12, 0x14, 0x2f, 0x61, 0x6b, 0x61, + 0x73, 0x68, 0x2f, 0x62, 0x6d, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, + 0x42, 0x8c, 0x01, 0x0a, 0x10, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x61, 0x73, 0x68, 0x2e, 0x62, + 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x42, 0x0a, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x72, 0x6f, 0x74, + 0x6f, 0x50, 0x01, 0x5a, 0x1a, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x6b, 0x74, 0x2e, 0x64, 0x65, 0x76, + 0x2f, 0x67, 0x6f, 0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x2f, 0x62, 0x6d, 0x65, 0x2f, 0x76, 0x31, 0xa2, + 0x02, 0x03, 0x41, 0x42, 0x58, 0xaa, 0x02, 0x0c, 0x41, 0x6b, 0x61, 0x73, 0x68, 0x2e, 0x42, 0x6d, + 0x65, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0c, 0x41, 0x6b, 0x61, 0x73, 0x68, 0x5c, 0x42, 0x6d, 0x65, + 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x18, 0x41, 0x6b, 0x61, 0x73, 0x68, 0x5c, 0x42, 0x6d, 0x65, 0x5c, + 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, + 0x0e, 0x41, 0x6b, 0x61, 0x73, 0x68, 0x3a, 0x3a, 0x42, 0x6d, 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x4a, + 0xb3, 0x1e, 0x0a, 0x07, 0x12, 0x05, 0x00, 0x00, 0x85, 0x01, 0x01, 0x0a, 0x08, 0x0a, 0x01, 0x0c, + 0x12, 0x03, 0x00, 0x00, 0x12, 0x0a, 0x08, 0x0a, 0x01, 0x02, 0x12, 0x03, 0x01, 0x00, 0x15, 0x0a, + 0x09, 0x0a, 0x02, 0x03, 0x00, 0x12, 0x03, 0x03, 0x00, 0x1e, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x01, + 0x12, 0x03, 0x04, 0x00, 0x26, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x02, 0x12, 0x03, 0x05, 0x00, 0x34, + 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x03, 0x12, 0x03, 0x07, 0x00, 0x23, 0x0a, 0x09, 0x0a, 0x02, 0x03, + 0x04, 0x12, 0x03, 0x09, 0x00, 0x23, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x05, 0x12, 0x03, 0x0a, 0x00, + 0x22, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x06, 0x12, 0x03, 0x0b, 0x00, 0x24, 0x0a, 0x08, 0x0a, 0x01, + 0x08, 0x12, 0x03, 0x0d, 0x00, 0x31, 0x0a, 0x09, 0x0a, 0x02, 0x08, 0x0b, 0x12, 0x03, 0x0d, 0x00, + 0x31, 0x0a, 0x47, 0x0a, 0x02, 0x06, 0x00, 0x12, 0x04, 0x10, 0x00, 0x24, 0x01, 0x1a, 0x3b, 0x20, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x73, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x67, 0x52, 0x50, 0x43, 0x20, 0x71, 0x75, 0x65, 0x72, 0x69, 0x65, 0x72, 0x20, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x42, + 0x4d, 0x45, 0x20, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x06, 0x00, + 0x01, 0x12, 0x03, 0x10, 0x08, 0x0d, 0x0a, 0x34, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x00, 0x12, 0x04, + 0x12, 0x02, 0x14, 0x03, 0x1a, 0x26, 0x20, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x20, 0x72, 0x65, + 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, + 0x20, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, + 0x06, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x12, 0x06, 0x0c, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, + 0x02, 0x00, 0x02, 0x12, 0x03, 0x12, 0x0d, 0x1f, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, + 0x03, 0x12, 0x03, 0x12, 0x2a, 0x3d, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x04, 0x12, + 0x03, 0x13, 0x04, 0x3a, 0x0a, 0x11, 0x0a, 0x0a, 0x06, 0x00, 0x02, 0x00, 0x04, 0xb0, 0xca, 0xbc, + 0x22, 0x02, 0x12, 0x03, 0x13, 0x04, 0x3a, 0x0a, 0x3a, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x01, 0x12, + 0x04, 0x17, 0x02, 0x19, 0x03, 0x1a, 0x2c, 0x20, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, + 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x20, 0x73, 0x74, 0x61, + 0x74, 0x65, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, 0x01, 0x12, 0x03, 0x17, 0x06, + 0x10, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, 0x02, 0x12, 0x03, 0x17, 0x11, 0x27, 0x0a, + 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, 0x03, 0x12, 0x03, 0x17, 0x32, 0x49, 0x0a, 0x0c, 0x0a, + 0x05, 0x06, 0x00, 0x02, 0x01, 0x04, 0x12, 0x03, 0x18, 0x04, 0x39, 0x0a, 0x11, 0x0a, 0x0a, 0x06, + 0x00, 0x02, 0x01, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x02, 0x12, 0x03, 0x18, 0x04, 0x39, 0x0a, 0x41, + 0x0a, 0x04, 0x06, 0x00, 0x02, 0x02, 0x12, 0x04, 0x1c, 0x02, 0x1e, 0x03, 0x1a, 0x33, 0x20, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x63, 0x69, 0x72, 0x63, 0x75, 0x69, + 0x74, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x65, 0x72, 0x20, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, 0x01, 0x12, 0x03, 0x1c, 0x06, 0x0c, 0x0a, + 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, 0x02, 0x12, 0x03, 0x1c, 0x0d, 0x1f, 0x0a, 0x0c, 0x0a, + 0x05, 0x06, 0x00, 0x02, 0x02, 0x03, 0x12, 0x03, 0x1c, 0x2a, 0x3d, 0x0a, 0x0c, 0x0a, 0x05, 0x06, + 0x00, 0x02, 0x02, 0x04, 0x12, 0x03, 0x1d, 0x04, 0x3a, 0x0a, 0x11, 0x0a, 0x0a, 0x06, 0x00, 0x02, + 0x02, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x02, 0x12, 0x03, 0x1d, 0x04, 0x3a, 0x0a, 0x6e, 0x0a, 0x04, + 0x06, 0x00, 0x02, 0x03, 0x12, 0x04, 0x21, 0x02, 0x23, 0x03, 0x1a, 0x60, 0x20, 0x4c, 0x65, 0x64, + 0x67, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x20, 0x71, 0x75, 0x65, 0x72, 0x69, + 0x65, 0x73, 0x20, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x20, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, + 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x20, + 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x2c, 0x20, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2c, 0x20, 0x64, 0x65, 0x6e, 0x6f, + 0x6d, 0x2c, 0x20, 0x74, 0x6f, 0x5f, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, + 0x06, 0x00, 0x02, 0x03, 0x01, 0x12, 0x03, 0x21, 0x06, 0x13, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, + 0x02, 0x03, 0x02, 0x12, 0x03, 0x21, 0x14, 0x2d, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x03, + 0x03, 0x12, 0x03, 0x21, 0x38, 0x52, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x03, 0x04, 0x12, + 0x03, 0x22, 0x04, 0x3a, 0x0a, 0x11, 0x0a, 0x0a, 0x06, 0x00, 0x02, 0x03, 0x04, 0xb0, 0xca, 0xbc, + 0x22, 0x02, 0x12, 0x03, 0x22, 0x04, 0x3a, 0x0a, 0x53, 0x0a, 0x02, 0x04, 0x00, 0x12, 0x03, 0x27, + 0x00, 0x1d, 0x1a, 0x48, 0x20, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x51, 0x75, 0x65, 0x72, 0x79, 0x2f, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x20, 0x52, 0x50, 0x43, 0x20, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, - 0x04, 0x02, 0x01, 0x12, 0x03, 0x28, 0x08, 0x1e, 0x0a, 0x5e, 0x0a, 0x02, 0x04, 0x03, 0x12, 0x04, - 0x2b, 0x00, 0x2d, 0x01, 0x1a, 0x52, 0x20, 0x51, 0x75, 0x65, 0x72, 0x79, 0x56, 0x61, 0x75, 0x6c, - 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x69, - 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x74, - 0x79, 0x70, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x51, 0x75, 0x65, 0x72, - 0x79, 0x2f, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x20, 0x52, 0x50, 0x43, - 0x20, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x03, 0x01, 0x12, - 0x03, 0x2b, 0x08, 0x1f, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x03, 0x02, 0x00, 0x12, 0x03, 0x2c, 0x02, - 0x37, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x00, 0x06, 0x12, 0x03, 0x2c, 0x02, 0x07, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x00, 0x01, 0x12, 0x03, 0x2c, 0x08, 0x13, 0x0a, 0x0c, 0x0a, - 0x05, 0x04, 0x03, 0x02, 0x00, 0x03, 0x12, 0x03, 0x2c, 0x16, 0x17, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x03, 0x02, 0x00, 0x08, 0x12, 0x03, 0x2c, 0x18, 0x36, 0x0a, 0x0f, 0x0a, 0x08, 0x04, 0x03, 0x02, - 0x00, 0x08, 0xe9, 0xfb, 0x03, 0x12, 0x03, 0x2c, 0x19, 0x35, 0x0a, 0x52, 0x0a, 0x02, 0x04, 0x04, - 0x12, 0x03, 0x30, 0x00, 0x1d, 0x1a, 0x47, 0x20, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, - 0x65, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x66, - 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x69, 0x72, 0x63, 0x75, 0x69, 0x74, 0x20, 0x62, - 0x72, 0x65, 0x61, 0x6b, 0x65, 0x72, 0x20, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x0a, 0x0a, 0x0a, - 0x0a, 0x03, 0x04, 0x04, 0x01, 0x12, 0x03, 0x30, 0x08, 0x1a, 0x0a, 0x59, 0x0a, 0x02, 0x04, 0x05, - 0x12, 0x04, 0x33, 0x00, 0x51, 0x01, 0x1a, 0x4d, 0x20, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4d, 0x69, - 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x69, - 0x72, 0x63, 0x75, 0x69, 0x74, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x65, 0x72, 0x20, 0x73, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x05, 0x01, 0x12, 0x03, 0x33, 0x08, - 0x1b, 0x0a, 0x3b, 0x0a, 0x04, 0x04, 0x05, 0x02, 0x00, 0x12, 0x03, 0x35, 0x02, 0x18, 0x1a, 0x2e, - 0x20, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, - 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x63, 0x69, 0x72, 0x63, 0x75, 0x69, 0x74, 0x20, 0x62, - 0x72, 0x65, 0x61, 0x6b, 0x65, 0x72, 0x20, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x0a, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x05, 0x02, 0x00, 0x06, 0x12, 0x03, 0x35, 0x02, 0x0c, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x05, 0x02, 0x00, 0x01, 0x12, 0x03, 0x35, 0x0d, 0x13, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, - 0x02, 0x00, 0x03, 0x12, 0x03, 0x35, 0x16, 0x17, 0x0a, 0x32, 0x0a, 0x04, 0x04, 0x05, 0x02, 0x01, - 0x12, 0x04, 0x38, 0x02, 0x3c, 0x04, 0x1a, 0x24, 0x20, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, - 0x72, 0x61, 0x6c, 0x5f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, - 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x43, 0x52, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x05, 0x02, 0x01, 0x05, 0x12, 0x03, 0x38, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, - 0x02, 0x01, 0x01, 0x12, 0x03, 0x38, 0x09, 0x19, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x01, - 0x03, 0x12, 0x03, 0x38, 0x1c, 0x1d, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x01, 0x08, 0x12, - 0x04, 0x38, 0x1e, 0x3c, 0x03, 0x0a, 0x0f, 0x0a, 0x08, 0x04, 0x05, 0x02, 0x01, 0x08, 0xca, 0xd6, - 0x05, 0x12, 0x03, 0x39, 0x04, 0x28, 0x0a, 0x0f, 0x0a, 0x08, 0x04, 0x05, 0x02, 0x01, 0x08, 0xeb, - 0xfb, 0x03, 0x12, 0x03, 0x3a, 0x04, 0x3a, 0x0a, 0x0f, 0x0a, 0x08, 0x04, 0x05, 0x02, 0x01, 0x08, - 0xe9, 0xfb, 0x03, 0x12, 0x03, 0x3b, 0x04, 0x20, 0x0a, 0x37, 0x0a, 0x04, 0x04, 0x05, 0x02, 0x02, - 0x12, 0x04, 0x3f, 0x02, 0x43, 0x04, 0x1a, 0x29, 0x20, 0x77, 0x61, 0x72, 0x6e, 0x5f, 0x74, 0x68, - 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x77, - 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, - 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x02, 0x05, 0x12, 0x03, 0x3f, 0x02, 0x08, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x02, 0x01, 0x12, 0x03, 0x3f, 0x09, 0x17, 0x0a, 0x0c, 0x0a, - 0x05, 0x04, 0x05, 0x02, 0x02, 0x03, 0x12, 0x03, 0x3f, 0x1a, 0x1b, 0x0a, 0x0d, 0x0a, 0x05, 0x04, - 0x05, 0x02, 0x02, 0x08, 0x12, 0x04, 0x3f, 0x1c, 0x43, 0x03, 0x0a, 0x0f, 0x0a, 0x08, 0x04, 0x05, - 0x02, 0x02, 0x08, 0xca, 0xd6, 0x05, 0x12, 0x03, 0x40, 0x04, 0x28, 0x0a, 0x0f, 0x0a, 0x08, 0x04, - 0x05, 0x02, 0x02, 0x08, 0xeb, 0xfb, 0x03, 0x12, 0x03, 0x41, 0x04, 0x3a, 0x0a, 0x0f, 0x0a, 0x08, - 0x04, 0x05, 0x02, 0x02, 0x08, 0xe9, 0xfb, 0x03, 0x12, 0x03, 0x42, 0x04, 0x20, 0x0a, 0x34, 0x0a, - 0x04, 0x04, 0x05, 0x02, 0x03, 0x12, 0x04, 0x46, 0x02, 0x4a, 0x04, 0x1a, 0x26, 0x20, 0x68, 0x61, - 0x6c, 0x74, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x20, 0x69, 0x73, 0x20, - 0x74, 0x68, 0x65, 0x20, 0x68, 0x61, 0x6c, 0x74, 0x20, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, - 0x6c, 0x64, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x03, 0x05, 0x12, 0x03, 0x46, 0x02, - 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x03, 0x01, 0x12, 0x03, 0x46, 0x09, 0x17, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x03, 0x03, 0x12, 0x03, 0x46, 0x1a, 0x1b, 0x0a, 0x0d, 0x0a, - 0x05, 0x04, 0x05, 0x02, 0x03, 0x08, 0x12, 0x04, 0x46, 0x1c, 0x4a, 0x03, 0x0a, 0x0f, 0x0a, 0x08, - 0x04, 0x05, 0x02, 0x03, 0x08, 0xca, 0xd6, 0x05, 0x12, 0x03, 0x47, 0x04, 0x28, 0x0a, 0x0f, 0x0a, - 0x08, 0x04, 0x05, 0x02, 0x03, 0x08, 0xeb, 0xfb, 0x03, 0x12, 0x03, 0x48, 0x04, 0x3a, 0x0a, 0x0f, - 0x0a, 0x08, 0x04, 0x05, 0x02, 0x03, 0x08, 0xe9, 0xfb, 0x03, 0x12, 0x03, 0x49, 0x04, 0x20, 0x0a, - 0x43, 0x0a, 0x04, 0x04, 0x05, 0x02, 0x04, 0x12, 0x03, 0x4d, 0x02, 0x19, 0x1a, 0x36, 0x20, 0x6d, - 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x64, - 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x20, 0x69, 0x66, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x41, 0x43, - 0x54, 0x20, 0x6d, 0x69, 0x6e, 0x74, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x61, 0x6c, 0x6c, 0x6f, - 0x77, 0x65, 0x64, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x04, 0x05, 0x12, 0x03, 0x4d, - 0x02, 0x06, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x04, 0x01, 0x12, 0x03, 0x4d, 0x07, 0x14, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x04, 0x03, 0x12, 0x03, 0x4d, 0x17, 0x18, 0x0a, 0x43, - 0x0a, 0x04, 0x04, 0x05, 0x02, 0x05, 0x12, 0x03, 0x50, 0x02, 0x1b, 0x1a, 0x36, 0x20, 0x72, 0x65, - 0x66, 0x75, 0x6e, 0x64, 0x73, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x20, 0x69, 0x6e, - 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x20, 0x69, 0x66, 0x20, 0x41, 0x43, 0x54, 0x20, 0x72, - 0x65, 0x66, 0x75, 0x6e, 0x64, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x61, 0x6c, 0x6c, 0x6f, 0x77, - 0x65, 0x64, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x05, 0x05, 0x12, 0x03, 0x50, 0x02, - 0x06, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x05, 0x01, 0x12, 0x03, 0x50, 0x07, 0x16, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x05, 0x03, 0x12, 0x03, 0x50, 0x19, 0x1a, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x0a, 0xb9, 0x0e, 0x0a, 0x1a, 0x61, 0x6b, 0x61, 0x73, 0x68, 0x2f, - 0x62, 0x6d, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0c, 0x61, 0x6b, 0x61, 0x73, 0x68, 0x2e, 0x62, 0x6d, 0x65, 0x2e, - 0x76, 0x31, 0x1a, 0x17, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x6d, 0x73, 0x67, 0x2f, 0x76, - 0x31, 0x2f, 0x6d, 0x73, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x61, 0x6b, 0x61, - 0x73, 0x68, 0x2f, 0x62, 0x6d, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x73, 0x67, 0x73, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x32, 0xba, 0x02, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x12, 0x54, 0x0a, 0x0c, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1d, 0x2e, 0x61, - 0x6b, 0x61, 0x73, 0x68, 0x2e, 0x62, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x25, 0x2e, 0x61, 0x6b, - 0x61, 0x73, 0x68, 0x2e, 0x62, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x48, 0x0a, 0x08, 0x42, 0x75, 0x72, 0x6e, 0x4d, 0x69, 0x6e, 0x74, 0x12, 0x19, - 0x2e, 0x61, 0x6b, 0x61, 0x73, 0x68, 0x2e, 0x62, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, - 0x67, 0x42, 0x75, 0x72, 0x6e, 0x4d, 0x69, 0x6e, 0x74, 0x1a, 0x21, 0x2e, 0x61, 0x6b, 0x61, 0x73, - 0x68, 0x2e, 0x62, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x42, 0x75, 0x72, 0x6e, - 0x4d, 0x69, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, 0x07, - 0x4d, 0x69, 0x6e, 0x74, 0x41, 0x43, 0x54, 0x12, 0x18, 0x2e, 0x61, 0x6b, 0x61, 0x73, 0x68, 0x2e, - 0x62, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x4d, 0x69, 0x6e, 0x74, 0x41, 0x43, - 0x54, 0x1a, 0x20, 0x2e, 0x61, 0x6b, 0x61, 0x73, 0x68, 0x2e, 0x62, 0x6d, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x4d, 0x73, 0x67, 0x4d, 0x69, 0x6e, 0x74, 0x41, 0x43, 0x54, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, 0x07, 0x42, 0x75, 0x72, 0x6e, 0x41, 0x43, 0x54, 0x12, 0x18, - 0x2e, 0x61, 0x6b, 0x61, 0x73, 0x68, 0x2e, 0x62, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, - 0x67, 0x42, 0x75, 0x72, 0x6e, 0x41, 0x43, 0x54, 0x1a, 0x20, 0x2e, 0x61, 0x6b, 0x61, 0x73, 0x68, - 0x2e, 0x62, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x42, 0x75, 0x72, 0x6e, 0x41, - 0x43, 0x54, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x1a, 0x05, 0x80, 0xe7, 0xb0, 0x2a, - 0x01, 0x42, 0x8e, 0x01, 0x0a, 0x10, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x61, 0x73, 0x68, 0x2e, - 0x62, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x42, 0x0c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, - 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x1a, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x6b, 0x74, 0x2e, - 0x64, 0x65, 0x76, 0x2f, 0x67, 0x6f, 0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x2f, 0x62, 0x6d, 0x65, 0x2f, - 0x76, 0x31, 0xa2, 0x02, 0x03, 0x41, 0x42, 0x58, 0xaa, 0x02, 0x0c, 0x41, 0x6b, 0x61, 0x73, 0x68, - 0x2e, 0x42, 0x6d, 0x65, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0c, 0x41, 0x6b, 0x61, 0x73, 0x68, 0x5c, - 0x42, 0x6d, 0x65, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x18, 0x41, 0x6b, 0x61, 0x73, 0x68, 0x5c, 0x42, - 0x6d, 0x65, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0xea, 0x02, 0x0e, 0x41, 0x6b, 0x61, 0x73, 0x68, 0x3a, 0x3a, 0x42, 0x6d, 0x65, 0x3a, 0x3a, - 0x56, 0x31, 0x4a, 0x84, 0x0a, 0x0a, 0x06, 0x12, 0x04, 0x00, 0x00, 0x21, 0x01, 0x0a, 0x08, 0x0a, - 0x01, 0x0c, 0x12, 0x03, 0x00, 0x00, 0x12, 0x0a, 0x08, 0x0a, 0x01, 0x02, 0x12, 0x03, 0x01, 0x00, - 0x15, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x00, 0x12, 0x03, 0x03, 0x00, 0x21, 0x0a, 0x09, 0x0a, 0x02, - 0x03, 0x01, 0x12, 0x03, 0x05, 0x00, 0x21, 0x0a, 0x08, 0x0a, 0x01, 0x08, 0x12, 0x03, 0x07, 0x00, - 0x31, 0x0a, 0x09, 0x0a, 0x02, 0x08, 0x0b, 0x12, 0x03, 0x07, 0x00, 0x31, 0x0a, 0xd3, 0x01, 0x0a, - 0x02, 0x06, 0x00, 0x12, 0x04, 0x0c, 0x00, 0x21, 0x01, 0x1a, 0xc6, 0x01, 0x20, 0x4d, 0x73, 0x67, - 0x20, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x42, 0x4d, 0x45, - 0x20, 0x28, 0x42, 0x75, 0x72, 0x6e, 0x2f, 0x4d, 0x69, 0x6e, 0x74, 0x20, 0x45, 0x6e, 0x67, 0x69, - 0x6e, 0x65, 0x29, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x0a, 0x20, 0x54, 0x68, 0x65, 0x20, 0x42, 0x4d, - 0x45, 0x20, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x20, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x73, - 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x75, 0x72, 0x6e, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6d, 0x69, - 0x6e, 0x74, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x66, 0x6f, - 0x72, 0x20, 0x41, 0x43, 0x54, 0x20, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x2c, 0x0a, 0x20, 0x6d, - 0x61, 0x69, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x6c, 0x6c, 0x61, - 0x74, 0x65, 0x72, 0x61, 0x6c, 0x20, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x73, 0x20, 0x61, 0x6e, 0x64, - 0x20, 0x65, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x69, 0x72, 0x63, 0x75, - 0x69, 0x74, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x65, 0x72, 0x20, 0x72, 0x75, 0x6c, 0x65, 0x73, - 0x2e, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x06, 0x00, 0x01, 0x12, 0x03, 0x0c, 0x08, 0x0b, 0x0a, 0x0a, - 0x0a, 0x03, 0x06, 0x00, 0x03, 0x12, 0x03, 0x0d, 0x02, 0x28, 0x0a, 0x0e, 0x0a, 0x07, 0x06, 0x00, - 0x03, 0xf0, 0x8c, 0xa6, 0x05, 0x12, 0x03, 0x0d, 0x02, 0x28, 0x0a, 0x7e, 0x0a, 0x04, 0x06, 0x00, - 0x02, 0x00, 0x12, 0x03, 0x11, 0x02, 0x46, 0x1a, 0x71, 0x20, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x20, 0x74, - 0x68, 0x65, 0x20, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, - 0x74, 0x65, 0x72, 0x73, 0x2e, 0x0a, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x6f, 0x70, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x62, - 0x65, 0x20, 0x70, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x65, 0x64, 0x20, 0x74, 0x68, 0x72, 0x6f, - 0x75, 0x67, 0x68, 0x20, 0x67, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x70, - 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x73, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, - 0x02, 0x00, 0x01, 0x12, 0x03, 0x11, 0x06, 0x12, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, - 0x02, 0x12, 0x03, 0x11, 0x13, 0x22, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x03, 0x12, - 0x03, 0x11, 0x2d, 0x44, 0x0a, 0xe4, 0x01, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x01, 0x12, 0x03, 0x16, - 0x02, 0x3a, 0x1a, 0xd6, 0x01, 0x20, 0x42, 0x75, 0x72, 0x6e, 0x4d, 0x69, 0x6e, 0x74, 0x20, 0x61, - 0x6c, 0x6c, 0x6f, 0x77, 0x73, 0x20, 0x75, 0x73, 0x65, 0x72, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x62, - 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x6e, 0x65, 0x20, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x20, 0x61, 0x6e, - 0x64, 0x20, 0x6d, 0x69, 0x6e, 0x74, 0x20, 0x61, 0x6e, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x20, 0x61, - 0x74, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, - 0x20, 0x70, 0x72, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x0a, 0x20, 0x54, 0x79, 0x70, 0x69, 0x63, 0x61, - 0x6c, 0x6c, 0x79, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x62, 0x75, 0x72, 0x6e, - 0x20, 0x75, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x20, 0x41, 0x43, 0x54, 0x20, 0x74, 0x6f, 0x6b, 0x65, - 0x6e, 0x73, 0x20, 0x62, 0x61, 0x63, 0x6b, 0x20, 0x74, 0x6f, 0x20, 0x41, 0x4b, 0x54, 0x2e, 0x0a, - 0x20, 0x54, 0x68, 0x65, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6d, - 0x61, 0x79, 0x20, 0x62, 0x65, 0x20, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x20, 0x6f, 0x72, - 0x20, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x62, 0x61, 0x73, 0x65, 0x64, 0x20, - 0x6f, 0x6e, 0x20, 0x63, 0x69, 0x72, 0x63, 0x75, 0x69, 0x74, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6b, - 0x65, 0x72, 0x20, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, - 0x00, 0x02, 0x01, 0x01, 0x12, 0x03, 0x16, 0x06, 0x0e, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, - 0x01, 0x02, 0x12, 0x03, 0x16, 0x0f, 0x1a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, 0x03, - 0x12, 0x03, 0x16, 0x25, 0x38, 0x0a, 0xd7, 0x01, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x02, 0x12, 0x03, - 0x1b, 0x02, 0x37, 0x1a, 0xc9, 0x01, 0x20, 0x4d, 0x69, 0x6e, 0x74, 0x41, 0x43, 0x54, 0x20, 0x6d, - 0x69, 0x6e, 0x74, 0x73, 0x20, 0x41, 0x43, 0x54, 0x20, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x20, - 0x62, 0x79, 0x20, 0x62, 0x75, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, - 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, - 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x0a, 0x20, 0x54, 0x68, 0x65, 0x20, 0x6d, 0x69, 0x6e, 0x74, - 0x20, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x20, 0x69, 0x73, 0x20, 0x63, 0x61, 0x6c, 0x63, 0x75, - 0x6c, 0x61, 0x74, 0x65, 0x64, 0x20, 0x62, 0x61, 0x73, 0x65, 0x64, 0x20, 0x6f, 0x6e, 0x20, 0x63, - 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x20, 0x70, 0x72, - 0x69, 0x63, 0x65, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x0a, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6f, - 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x20, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x2e, 0x20, - 0x4d, 0x61, 0x79, 0x20, 0x62, 0x65, 0x20, 0x68, 0x61, 0x6c, 0x74, 0x65, 0x64, 0x20, 0x69, 0x66, + 0x04, 0x00, 0x01, 0x12, 0x03, 0x27, 0x08, 0x1a, 0x0a, 0x56, 0x0a, 0x02, 0x04, 0x01, 0x12, 0x04, + 0x2a, 0x00, 0x2c, 0x01, 0x1a, 0x4a, 0x20, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, + 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x51, 0x75, 0x65, 0x72, 0x79, 0x2f, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x73, 0x20, 0x52, 0x50, 0x43, 0x20, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x0a, + 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x01, 0x01, 0x12, 0x03, 0x2a, 0x08, 0x1b, 0x0a, 0x0b, 0x0a, 0x04, + 0x04, 0x01, 0x02, 0x00, 0x12, 0x03, 0x2b, 0x02, 0x33, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, + 0x00, 0x06, 0x12, 0x03, 0x2b, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x01, + 0x12, 0x03, 0x2b, 0x09, 0x0f, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x03, 0x12, 0x03, + 0x2b, 0x12, 0x13, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x08, 0x12, 0x03, 0x2b, 0x14, + 0x32, 0x0a, 0x0f, 0x0a, 0x08, 0x04, 0x01, 0x02, 0x00, 0x08, 0xe9, 0xfb, 0x03, 0x12, 0x03, 0x2b, + 0x15, 0x31, 0x0a, 0x5b, 0x0a, 0x02, 0x04, 0x02, 0x12, 0x03, 0x2f, 0x00, 0x21, 0x1a, 0x50, 0x20, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, + 0x68, 0x65, 0x20, 0x51, 0x75, 0x65, 0x72, 0x79, 0x2f, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x20, 0x52, 0x50, 0x43, 0x20, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x0a, 0x0a, + 0x0a, 0x0a, 0x03, 0x04, 0x02, 0x01, 0x12, 0x03, 0x2f, 0x08, 0x1e, 0x0a, 0x5e, 0x0a, 0x02, 0x04, + 0x03, 0x12, 0x04, 0x32, 0x00, 0x34, 0x01, 0x1a, 0x52, 0x20, 0x51, 0x75, 0x65, 0x72, 0x79, 0x56, + 0x61, 0x75, 0x6c, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x2f, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x20, + 0x52, 0x50, 0x43, 0x20, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, + 0x03, 0x01, 0x12, 0x03, 0x32, 0x08, 0x1f, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x03, 0x02, 0x00, 0x12, + 0x03, 0x33, 0x02, 0x37, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x00, 0x06, 0x12, 0x03, 0x33, + 0x02, 0x07, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x00, 0x01, 0x12, 0x03, 0x33, 0x08, 0x13, + 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x00, 0x03, 0x12, 0x03, 0x33, 0x16, 0x17, 0x0a, 0x0c, + 0x0a, 0x05, 0x04, 0x03, 0x02, 0x00, 0x08, 0x12, 0x03, 0x33, 0x18, 0x36, 0x0a, 0x0f, 0x0a, 0x08, + 0x04, 0x03, 0x02, 0x00, 0x08, 0xe9, 0xfb, 0x03, 0x12, 0x03, 0x33, 0x19, 0x35, 0x0a, 0x52, 0x0a, + 0x02, 0x04, 0x04, 0x12, 0x03, 0x37, 0x00, 0x1d, 0x1a, 0x47, 0x20, 0x51, 0x75, 0x65, 0x72, 0x79, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x69, 0x73, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x74, 0x79, 0x70, + 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x69, 0x72, 0x63, 0x75, 0x69, + 0x74, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x65, 0x72, 0x20, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x04, 0x01, 0x12, 0x03, 0x37, 0x08, 0x1a, 0x0a, 0x59, 0x0a, + 0x02, 0x04, 0x05, 0x12, 0x04, 0x3a, 0x00, 0x58, 0x01, 0x1a, 0x4d, 0x20, 0x51, 0x75, 0x65, 0x72, + 0x79, 0x4d, 0x69, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x69, 0x72, 0x63, 0x75, 0x69, 0x74, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x65, 0x72, - 0x20, 0x69, 0x73, 0x20, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x65, 0x64, 0x2e, 0x0a, 0x0a, - 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, 0x01, 0x12, 0x03, 0x1b, 0x06, 0x0d, 0x0a, 0x0c, 0x0a, - 0x05, 0x06, 0x00, 0x02, 0x02, 0x02, 0x12, 0x03, 0x1b, 0x0e, 0x18, 0x0a, 0x0c, 0x0a, 0x05, 0x06, - 0x00, 0x02, 0x02, 0x03, 0x12, 0x03, 0x1b, 0x23, 0x35, 0x0a, 0xd3, 0x01, 0x0a, 0x04, 0x06, 0x00, - 0x02, 0x03, 0x12, 0x03, 0x20, 0x02, 0x37, 0x1a, 0xc5, 0x01, 0x20, 0x42, 0x75, 0x72, 0x6e, 0x41, - 0x43, 0x54, 0x20, 0x62, 0x75, 0x72, 0x6e, 0x73, 0x20, 0x41, 0x43, 0x54, 0x20, 0x74, 0x6f, 0x6b, - 0x65, 0x6e, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6d, 0x69, 0x6e, 0x74, 0x73, 0x20, 0x74, 0x68, - 0x65, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x64, 0x65, 0x73, 0x74, - 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x0a, 0x20, - 0x54, 0x68, 0x65, 0x20, 0x62, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x20, 0x75, 0x73, 0x65, 0x73, 0x20, 0x72, 0x65, 0x6d, 0x69, 0x6e, 0x74, 0x20, 0x63, - 0x72, 0x65, 0x64, 0x69, 0x74, 0x73, 0x20, 0x77, 0x68, 0x65, 0x6e, 0x20, 0x61, 0x76, 0x61, 0x69, - 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x2c, 0x20, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 0x65, - 0x0a, 0x20, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x20, 0x61, 0x64, 0x65, 0x71, 0x75, - 0x61, 0x74, 0x65, 0x20, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x20, 0x62, - 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x20, 0x62, 0x61, 0x73, 0x65, 0x64, 0x20, 0x6f, 0x6e, 0x20, - 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x20, 0x70, 0x72, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x0a, 0x0a, - 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x03, 0x01, 0x12, 0x03, 0x20, 0x06, 0x0d, 0x0a, 0x0c, 0x0a, - 0x05, 0x06, 0x00, 0x02, 0x03, 0x02, 0x12, 0x03, 0x20, 0x0e, 0x18, 0x0a, 0x0c, 0x0a, 0x05, 0x06, - 0x00, 0x02, 0x03, 0x03, 0x12, 0x03, 0x20, 0x23, 0x35, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x33, + 0x20, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x05, 0x01, 0x12, + 0x03, 0x3a, 0x08, 0x1b, 0x0a, 0x3b, 0x0a, 0x04, 0x04, 0x05, 0x02, 0x00, 0x12, 0x03, 0x3c, 0x02, + 0x18, 0x1a, 0x2e, 0x20, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x63, 0x69, 0x72, 0x63, 0x75, 0x69, + 0x74, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x65, 0x72, 0x20, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x00, 0x06, 0x12, 0x03, 0x3c, 0x02, 0x0c, 0x0a, + 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x00, 0x01, 0x12, 0x03, 0x3c, 0x0d, 0x13, 0x0a, 0x0c, 0x0a, + 0x05, 0x04, 0x05, 0x02, 0x00, 0x03, 0x12, 0x03, 0x3c, 0x16, 0x17, 0x0a, 0x32, 0x0a, 0x04, 0x04, + 0x05, 0x02, 0x01, 0x12, 0x04, 0x3f, 0x02, 0x43, 0x04, 0x1a, 0x24, 0x20, 0x63, 0x6f, 0x6c, 0x6c, + 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x5f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x20, 0x69, 0x73, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x43, 0x52, 0x0a, 0x0a, + 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x01, 0x05, 0x12, 0x03, 0x3f, 0x02, 0x08, 0x0a, 0x0c, 0x0a, + 0x05, 0x04, 0x05, 0x02, 0x01, 0x01, 0x12, 0x03, 0x3f, 0x09, 0x19, 0x0a, 0x0c, 0x0a, 0x05, 0x04, + 0x05, 0x02, 0x01, 0x03, 0x12, 0x03, 0x3f, 0x1c, 0x1d, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x05, 0x02, + 0x01, 0x08, 0x12, 0x04, 0x3f, 0x1e, 0x43, 0x03, 0x0a, 0x0f, 0x0a, 0x08, 0x04, 0x05, 0x02, 0x01, + 0x08, 0xca, 0xd6, 0x05, 0x12, 0x03, 0x40, 0x04, 0x28, 0x0a, 0x0f, 0x0a, 0x08, 0x04, 0x05, 0x02, + 0x01, 0x08, 0xeb, 0xfb, 0x03, 0x12, 0x03, 0x41, 0x04, 0x3a, 0x0a, 0x0f, 0x0a, 0x08, 0x04, 0x05, + 0x02, 0x01, 0x08, 0xe9, 0xfb, 0x03, 0x12, 0x03, 0x42, 0x04, 0x20, 0x0a, 0x37, 0x0a, 0x04, 0x04, + 0x05, 0x02, 0x02, 0x12, 0x04, 0x46, 0x02, 0x4a, 0x04, 0x1a, 0x29, 0x20, 0x77, 0x61, 0x72, 0x6e, + 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, + 0x6f, 0x6c, 0x64, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x02, 0x05, 0x12, 0x03, 0x46, + 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x02, 0x01, 0x12, 0x03, 0x46, 0x09, 0x17, + 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x02, 0x03, 0x12, 0x03, 0x46, 0x1a, 0x1b, 0x0a, 0x0d, + 0x0a, 0x05, 0x04, 0x05, 0x02, 0x02, 0x08, 0x12, 0x04, 0x46, 0x1c, 0x4a, 0x03, 0x0a, 0x0f, 0x0a, + 0x08, 0x04, 0x05, 0x02, 0x02, 0x08, 0xca, 0xd6, 0x05, 0x12, 0x03, 0x47, 0x04, 0x28, 0x0a, 0x0f, + 0x0a, 0x08, 0x04, 0x05, 0x02, 0x02, 0x08, 0xeb, 0xfb, 0x03, 0x12, 0x03, 0x48, 0x04, 0x3a, 0x0a, + 0x0f, 0x0a, 0x08, 0x04, 0x05, 0x02, 0x02, 0x08, 0xe9, 0xfb, 0x03, 0x12, 0x03, 0x49, 0x04, 0x20, + 0x0a, 0x34, 0x0a, 0x04, 0x04, 0x05, 0x02, 0x03, 0x12, 0x04, 0x4d, 0x02, 0x51, 0x04, 0x1a, 0x26, + 0x20, 0x68, 0x61, 0x6c, 0x74, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x20, + 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x68, 0x61, 0x6c, 0x74, 0x20, 0x74, 0x68, 0x72, 0x65, + 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x03, 0x05, 0x12, + 0x03, 0x4d, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x03, 0x01, 0x12, 0x03, 0x4d, + 0x09, 0x17, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x03, 0x03, 0x12, 0x03, 0x4d, 0x1a, 0x1b, + 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x03, 0x08, 0x12, 0x04, 0x4d, 0x1c, 0x51, 0x03, 0x0a, + 0x0f, 0x0a, 0x08, 0x04, 0x05, 0x02, 0x03, 0x08, 0xca, 0xd6, 0x05, 0x12, 0x03, 0x4e, 0x04, 0x28, + 0x0a, 0x0f, 0x0a, 0x08, 0x04, 0x05, 0x02, 0x03, 0x08, 0xeb, 0xfb, 0x03, 0x12, 0x03, 0x4f, 0x04, + 0x3a, 0x0a, 0x0f, 0x0a, 0x08, 0x04, 0x05, 0x02, 0x03, 0x08, 0xe9, 0xfb, 0x03, 0x12, 0x03, 0x50, + 0x04, 0x20, 0x0a, 0x43, 0x0a, 0x04, 0x04, 0x05, 0x02, 0x04, 0x12, 0x03, 0x54, 0x02, 0x19, 0x1a, + 0x36, 0x20, 0x6d, 0x69, 0x6e, 0x74, 0x73, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x20, + 0x69, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x20, 0x69, 0x66, 0x20, 0x6e, 0x65, 0x77, + 0x20, 0x41, 0x43, 0x54, 0x20, 0x6d, 0x69, 0x6e, 0x74, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x61, + 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x04, 0x05, + 0x12, 0x03, 0x54, 0x02, 0x06, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x04, 0x01, 0x12, 0x03, + 0x54, 0x07, 0x14, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x04, 0x03, 0x12, 0x03, 0x54, 0x17, + 0x18, 0x0a, 0x43, 0x0a, 0x04, 0x04, 0x05, 0x02, 0x05, 0x12, 0x03, 0x57, 0x02, 0x1b, 0x1a, 0x36, + 0x20, 0x72, 0x65, 0x66, 0x75, 0x6e, 0x64, 0x73, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, + 0x20, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x20, 0x69, 0x66, 0x20, 0x41, 0x43, + 0x54, 0x20, 0x72, 0x65, 0x66, 0x75, 0x6e, 0x64, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x61, 0x6c, + 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x05, 0x05, 0x12, + 0x03, 0x57, 0x02, 0x06, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x05, 0x01, 0x12, 0x03, 0x57, + 0x07, 0x16, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x05, 0x03, 0x12, 0x03, 0x57, 0x19, 0x1a, + 0x0a, 0x51, 0x0a, 0x02, 0x04, 0x06, 0x12, 0x04, 0x5b, 0x00, 0x6f, 0x01, 0x1a, 0x45, 0x20, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x20, 0x77, 0x72, 0x61, 0x70, 0x73, 0x20, 0x61, 0x20, 0x6c, 0x65, + 0x64, 0x67, 0x65, 0x72, 0x20, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, + 0x20, 0x69, 0x74, 0x73, 0x20, 0x49, 0x44, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x06, 0x01, 0x12, 0x03, 0x5b, 0x08, 0x1e, 0x0a, + 0x40, 0x0a, 0x04, 0x04, 0x06, 0x02, 0x00, 0x12, 0x04, 0x5d, 0x02, 0x62, 0x04, 0x1a, 0x32, 0x20, + 0x69, 0x64, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, + 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x20, 0x6f, 0x66, 0x20, 0x74, + 0x68, 0x65, 0x20, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x20, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, + 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x06, 0x02, 0x00, 0x06, 0x12, 0x03, 0x5d, 0x02, 0x10, 0x0a, + 0x0c, 0x0a, 0x05, 0x04, 0x06, 0x02, 0x00, 0x01, 0x12, 0x03, 0x5d, 0x11, 0x13, 0x0a, 0x0c, 0x0a, + 0x05, 0x04, 0x06, 0x02, 0x00, 0x03, 0x12, 0x03, 0x5d, 0x16, 0x17, 0x0a, 0x0d, 0x0a, 0x05, 0x04, + 0x06, 0x02, 0x00, 0x08, 0x12, 0x04, 0x5d, 0x18, 0x62, 0x03, 0x0a, 0x0f, 0x0a, 0x08, 0x04, 0x06, + 0x02, 0x00, 0x08, 0xe9, 0xfb, 0x03, 0x12, 0x03, 0x5e, 0x04, 0x22, 0x0a, 0x0f, 0x0a, 0x08, 0x04, + 0x06, 0x02, 0x00, 0x08, 0xec, 0xfb, 0x03, 0x12, 0x03, 0x5f, 0x04, 0x21, 0x0a, 0x0f, 0x0a, 0x08, + 0x04, 0x06, 0x02, 0x00, 0x08, 0xed, 0xfb, 0x03, 0x12, 0x03, 0x60, 0x04, 0x21, 0x0a, 0x0f, 0x0a, + 0x08, 0x04, 0x06, 0x02, 0x00, 0x08, 0xee, 0xfb, 0x03, 0x12, 0x03, 0x61, 0x04, 0x2a, 0x0a, 0x4a, + 0x0a, 0x04, 0x04, 0x06, 0x02, 0x01, 0x12, 0x03, 0x65, 0x02, 0x20, 0x1a, 0x3d, 0x20, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x20, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x20, 0x77, + 0x68, 0x65, 0x74, 0x68, 0x65, 0x72, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x72, 0x65, 0x63, 0x6f, + 0x72, 0x64, 0x20, 0x69, 0x73, 0x20, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x6f, 0x72, + 0x20, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x64, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x06, + 0x02, 0x01, 0x06, 0x12, 0x03, 0x65, 0x02, 0x14, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x06, 0x02, 0x01, + 0x01, 0x12, 0x03, 0x65, 0x15, 0x1b, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x06, 0x02, 0x01, 0x03, 0x12, + 0x03, 0x65, 0x1e, 0x1f, 0x0a, 0x43, 0x0a, 0x04, 0x04, 0x06, 0x08, 0x00, 0x12, 0x04, 0x68, 0x02, + 0x6e, 0x03, 0x1a, 0x35, 0x20, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x20, 0x63, 0x6f, 0x6e, 0x74, + 0x61, 0x69, 0x6e, 0x73, 0x20, 0x65, 0x69, 0x74, 0x68, 0x65, 0x72, 0x20, 0x61, 0x20, 0x70, 0x65, + 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x6f, 0x72, 0x20, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, + 0x64, 0x20, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x06, 0x08, + 0x00, 0x01, 0x12, 0x03, 0x68, 0x08, 0x0e, 0x0a, 0x46, 0x0a, 0x04, 0x04, 0x06, 0x02, 0x02, 0x12, + 0x03, 0x6a, 0x04, 0x2b, 0x1a, 0x39, 0x20, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x72, + 0x65, 0x63, 0x6f, 0x72, 0x64, 0x20, 0x69, 0x73, 0x20, 0x73, 0x65, 0x74, 0x20, 0x77, 0x68, 0x65, + 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x20, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x20, 0x69, 0x73, 0x20, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x0a, 0x0a, + 0x0c, 0x0a, 0x05, 0x04, 0x06, 0x02, 0x02, 0x06, 0x12, 0x03, 0x6a, 0x04, 0x17, 0x0a, 0x0c, 0x0a, + 0x05, 0x04, 0x06, 0x02, 0x02, 0x01, 0x12, 0x03, 0x6a, 0x18, 0x26, 0x0a, 0x0c, 0x0a, 0x05, 0x04, + 0x06, 0x02, 0x02, 0x03, 0x12, 0x03, 0x6a, 0x29, 0x2a, 0x0a, 0x48, 0x0a, 0x04, 0x04, 0x06, 0x02, + 0x03, 0x12, 0x03, 0x6d, 0x04, 0x25, 0x1a, 0x3b, 0x20, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, + 0x64, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x20, 0x69, 0x73, 0x20, 0x73, 0x65, 0x74, 0x20, + 0x77, 0x68, 0x65, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x20, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x20, 0x69, 0x73, 0x20, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, + 0x65, 0x64, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x06, 0x02, 0x03, 0x06, 0x12, 0x03, 0x6d, 0x04, + 0x10, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x06, 0x02, 0x03, 0x01, 0x12, 0x03, 0x6d, 0x11, 0x20, 0x0a, + 0x0c, 0x0a, 0x05, 0x04, 0x06, 0x02, 0x03, 0x03, 0x12, 0x03, 0x6d, 0x23, 0x24, 0x0a, 0x62, 0x0a, + 0x02, 0x04, 0x07, 0x12, 0x04, 0x72, 0x00, 0x7a, 0x01, 0x1a, 0x56, 0x20, 0x51, 0x75, 0x65, 0x72, + 0x79, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x51, 0x75, 0x65, 0x72, 0x79, 0x2f, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x52, 0x65, + 0x63, 0x6f, 0x72, 0x64, 0x73, 0x20, 0x52, 0x50, 0x43, 0x20, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, + 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x07, 0x01, 0x12, 0x03, 0x72, 0x08, 0x21, 0x0a, 0x4c, 0x0a, + 0x04, 0x04, 0x07, 0x02, 0x00, 0x12, 0x04, 0x74, 0x02, 0x76, 0x04, 0x1a, 0x3e, 0x20, 0x66, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x73, 0x20, 0x68, 0x6f, 0x6c, 0x64, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x20, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x20, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x20, 0x74, + 0x68, 0x65, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, + 0x07, 0x02, 0x00, 0x06, 0x12, 0x03, 0x74, 0x02, 0x15, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, 0x02, + 0x00, 0x01, 0x12, 0x03, 0x74, 0x16, 0x1d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x00, 0x03, + 0x12, 0x03, 0x74, 0x20, 0x21, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x00, 0x08, 0x12, 0x04, + 0x74, 0x22, 0x76, 0x03, 0x0a, 0x0f, 0x0a, 0x08, 0x04, 0x07, 0x02, 0x00, 0x08, 0xe9, 0xfb, 0x03, + 0x12, 0x03, 0x75, 0x04, 0x20, 0x0a, 0x40, 0x0a, 0x04, 0x04, 0x07, 0x02, 0x01, 0x12, 0x03, 0x79, + 0x02, 0x37, 0x1a, 0x33, 0x20, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, + 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x67, 0x69, + 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x01, 0x06, + 0x12, 0x03, 0x79, 0x02, 0x27, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x01, 0x01, 0x12, 0x03, + 0x79, 0x28, 0x32, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x01, 0x03, 0x12, 0x03, 0x79, 0x35, + 0x36, 0x0a, 0x65, 0x0a, 0x02, 0x04, 0x08, 0x12, 0x05, 0x7d, 0x00, 0x85, 0x01, 0x01, 0x1a, 0x58, + 0x20, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, + 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x69, 0x73, 0x20, 0x74, + 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x74, 0x79, 0x70, 0x65, + 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x51, 0x75, 0x65, 0x72, 0x79, 0x2f, 0x4c, + 0x65, 0x64, 0x67, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x20, 0x52, 0x50, 0x43, + 0x20, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x08, 0x01, 0x12, + 0x03, 0x7d, 0x08, 0x22, 0x0a, 0x49, 0x0a, 0x04, 0x04, 0x08, 0x02, 0x00, 0x12, 0x05, 0x7f, 0x02, + 0x81, 0x01, 0x04, 0x1a, 0x3a, 0x20, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x20, 0x69, 0x73, + 0x20, 0x61, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x6c, 0x65, 0x64, 0x67, 0x65, + 0x72, 0x20, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x20, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x69, + 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x0a, 0x0a, + 0x0c, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x00, 0x04, 0x12, 0x03, 0x7f, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, + 0x05, 0x04, 0x08, 0x02, 0x00, 0x06, 0x12, 0x03, 0x7f, 0x0b, 0x21, 0x0a, 0x0c, 0x0a, 0x05, 0x04, + 0x08, 0x02, 0x00, 0x01, 0x12, 0x03, 0x7f, 0x22, 0x29, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x08, 0x02, + 0x00, 0x03, 0x12, 0x03, 0x7f, 0x2c, 0x2d, 0x0a, 0x0e, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x00, 0x08, + 0x12, 0x05, 0x7f, 0x2e, 0x81, 0x01, 0x03, 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x08, 0x02, 0x00, 0x08, + 0xe9, 0xfb, 0x03, 0x12, 0x04, 0x80, 0x01, 0x04, 0x20, 0x0a, 0x4d, 0x0a, 0x04, 0x04, 0x08, 0x02, + 0x01, 0x12, 0x04, 0x84, 0x01, 0x02, 0x38, 0x1a, 0x3f, 0x20, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x62, + 0x6f, 0x75, 0x74, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x70, 0x61, 0x67, + 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x01, + 0x06, 0x12, 0x04, 0x84, 0x01, 0x02, 0x28, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x01, 0x01, + 0x12, 0x04, 0x84, 0x01, 0x29, 0x33, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x01, 0x03, 0x12, + 0x04, 0x84, 0x01, 0x36, 0x37, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x0a, 0xb9, 0x0e, + 0x0a, 0x1a, 0x61, 0x6b, 0x61, 0x73, 0x68, 0x2f, 0x62, 0x6d, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0c, 0x61, 0x6b, + 0x61, 0x73, 0x68, 0x2e, 0x62, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x1a, 0x17, 0x63, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x2f, 0x6d, 0x73, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x73, 0x67, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x61, 0x6b, 0x61, 0x73, 0x68, 0x2f, 0x62, 0x6d, 0x65, 0x2f, 0x76, + 0x31, 0x2f, 0x6d, 0x73, 0x67, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0xba, 0x02, 0x0a, + 0x03, 0x4d, 0x73, 0x67, 0x12, 0x54, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1d, 0x2e, 0x61, 0x6b, 0x61, 0x73, 0x68, 0x2e, 0x62, 0x6d, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x73, 0x1a, 0x25, 0x2e, 0x61, 0x6b, 0x61, 0x73, 0x68, 0x2e, 0x62, 0x6d, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x08, 0x42, 0x75, + 0x72, 0x6e, 0x4d, 0x69, 0x6e, 0x74, 0x12, 0x19, 0x2e, 0x61, 0x6b, 0x61, 0x73, 0x68, 0x2e, 0x62, + 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x42, 0x75, 0x72, 0x6e, 0x4d, 0x69, 0x6e, + 0x74, 0x1a, 0x21, 0x2e, 0x61, 0x6b, 0x61, 0x73, 0x68, 0x2e, 0x62, 0x6d, 0x65, 0x2e, 0x76, 0x31, + 0x2e, 0x4d, 0x73, 0x67, 0x42, 0x75, 0x72, 0x6e, 0x4d, 0x69, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, 0x07, 0x4d, 0x69, 0x6e, 0x74, 0x41, 0x43, 0x54, 0x12, + 0x18, 0x2e, 0x61, 0x6b, 0x61, 0x73, 0x68, 0x2e, 0x62, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, + 0x73, 0x67, 0x4d, 0x69, 0x6e, 0x74, 0x41, 0x43, 0x54, 0x1a, 0x20, 0x2e, 0x61, 0x6b, 0x61, 0x73, + 0x68, 0x2e, 0x62, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x4d, 0x69, 0x6e, 0x74, + 0x41, 0x43, 0x54, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, 0x07, 0x42, + 0x75, 0x72, 0x6e, 0x41, 0x43, 0x54, 0x12, 0x18, 0x2e, 0x61, 0x6b, 0x61, 0x73, 0x68, 0x2e, 0x62, + 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x42, 0x75, 0x72, 0x6e, 0x41, 0x43, 0x54, + 0x1a, 0x20, 0x2e, 0x61, 0x6b, 0x61, 0x73, 0x68, 0x2e, 0x62, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, + 0x4d, 0x73, 0x67, 0x42, 0x75, 0x72, 0x6e, 0x41, 0x43, 0x54, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x1a, 0x05, 0x80, 0xe7, 0xb0, 0x2a, 0x01, 0x42, 0x8e, 0x01, 0x0a, 0x10, 0x63, 0x6f, + 0x6d, 0x2e, 0x61, 0x6b, 0x61, 0x73, 0x68, 0x2e, 0x62, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x42, 0x0c, + 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x1a, + 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x6b, 0x74, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x67, 0x6f, 0x2f, 0x6e, + 0x6f, 0x64, 0x65, 0x2f, 0x62, 0x6d, 0x65, 0x2f, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x41, 0x42, 0x58, + 0xaa, 0x02, 0x0c, 0x41, 0x6b, 0x61, 0x73, 0x68, 0x2e, 0x42, 0x6d, 0x65, 0x2e, 0x56, 0x31, 0xca, + 0x02, 0x0c, 0x41, 0x6b, 0x61, 0x73, 0x68, 0x5c, 0x42, 0x6d, 0x65, 0x5c, 0x56, 0x31, 0xe2, 0x02, + 0x18, 0x41, 0x6b, 0x61, 0x73, 0x68, 0x5c, 0x42, 0x6d, 0x65, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, + 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0e, 0x41, 0x6b, 0x61, 0x73, + 0x68, 0x3a, 0x3a, 0x42, 0x6d, 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x4a, 0x84, 0x0a, 0x0a, 0x06, 0x12, + 0x04, 0x00, 0x00, 0x21, 0x01, 0x0a, 0x08, 0x0a, 0x01, 0x0c, 0x12, 0x03, 0x00, 0x00, 0x12, 0x0a, + 0x08, 0x0a, 0x01, 0x02, 0x12, 0x03, 0x01, 0x00, 0x15, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x00, 0x12, + 0x03, 0x03, 0x00, 0x21, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x01, 0x12, 0x03, 0x05, 0x00, 0x21, 0x0a, + 0x08, 0x0a, 0x01, 0x08, 0x12, 0x03, 0x07, 0x00, 0x31, 0x0a, 0x09, 0x0a, 0x02, 0x08, 0x0b, 0x12, + 0x03, 0x07, 0x00, 0x31, 0x0a, 0xd3, 0x01, 0x0a, 0x02, 0x06, 0x00, 0x12, 0x04, 0x0c, 0x00, 0x21, + 0x01, 0x1a, 0xc6, 0x01, 0x20, 0x4d, 0x73, 0x67, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x73, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x42, 0x4d, 0x45, 0x20, 0x28, 0x42, 0x75, 0x72, 0x6e, 0x2f, 0x4d, + 0x69, 0x6e, 0x74, 0x20, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x29, 0x20, 0x74, 0x72, 0x61, 0x6e, + 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x0a, 0x20, 0x54, 0x68, 0x65, 0x20, 0x42, 0x4d, 0x45, 0x20, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, + 0x20, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x75, 0x72, + 0x6e, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6d, 0x69, 0x6e, 0x74, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x41, 0x43, 0x54, 0x20, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x73, 0x2c, 0x0a, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x69, + 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x20, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x65, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x69, + 0x6e, 0x67, 0x20, 0x63, 0x69, 0x72, 0x63, 0x75, 0x69, 0x74, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6b, + 0x65, 0x72, 0x20, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x2e, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x06, 0x00, + 0x01, 0x12, 0x03, 0x0c, 0x08, 0x0b, 0x0a, 0x0a, 0x0a, 0x03, 0x06, 0x00, 0x03, 0x12, 0x03, 0x0d, + 0x02, 0x28, 0x0a, 0x0e, 0x0a, 0x07, 0x06, 0x00, 0x03, 0xf0, 0x8c, 0xa6, 0x05, 0x12, 0x03, 0x0d, + 0x02, 0x28, 0x0a, 0x7e, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x00, 0x12, 0x03, 0x11, 0x02, 0x46, 0x1a, + 0x71, 0x20, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x20, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6d, 0x6f, 0x64, 0x75, 0x6c, + 0x65, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x0a, 0x20, 0x54, + 0x68, 0x69, 0x73, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x63, 0x61, + 0x6e, 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x62, 0x65, 0x20, 0x70, 0x65, 0x72, 0x66, 0x6f, 0x72, + 0x6d, 0x65, 0x64, 0x20, 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x20, 0x67, 0x6f, 0x76, 0x65, + 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x73, + 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x11, 0x06, 0x12, + 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x02, 0x12, 0x03, 0x11, 0x13, 0x22, 0x0a, 0x0c, + 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, 0x11, 0x2d, 0x44, 0x0a, 0xe4, 0x01, 0x0a, + 0x04, 0x06, 0x00, 0x02, 0x01, 0x12, 0x03, 0x16, 0x02, 0x3a, 0x1a, 0xd6, 0x01, 0x20, 0x42, 0x75, + 0x72, 0x6e, 0x4d, 0x69, 0x6e, 0x74, 0x20, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x73, 0x20, 0x75, 0x73, + 0x65, 0x72, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x62, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x6e, 0x65, 0x20, + 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6d, 0x69, 0x6e, 0x74, 0x20, 0x61, + 0x6e, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x20, 0x61, 0x74, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, + 0x74, 0x20, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x20, 0x70, 0x72, 0x69, 0x63, 0x65, 0x73, 0x2e, + 0x0a, 0x20, 0x54, 0x79, 0x70, 0x69, 0x63, 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x75, 0x73, 0x65, 0x64, + 0x20, 0x74, 0x6f, 0x20, 0x62, 0x75, 0x72, 0x6e, 0x20, 0x75, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x20, + 0x41, 0x43, 0x54, 0x20, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x20, 0x62, 0x61, 0x63, 0x6b, 0x20, + 0x74, 0x6f, 0x20, 0x41, 0x4b, 0x54, 0x2e, 0x0a, 0x20, 0x54, 0x68, 0x65, 0x20, 0x6f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x61, 0x79, 0x20, 0x62, 0x65, 0x20, 0x64, 0x65, + 0x6c, 0x61, 0x79, 0x65, 0x64, 0x20, 0x6f, 0x72, 0x20, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, + 0x64, 0x20, 0x62, 0x61, 0x73, 0x65, 0x64, 0x20, 0x6f, 0x6e, 0x20, 0x63, 0x69, 0x72, 0x63, 0x75, + 0x69, 0x74, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x65, 0x72, 0x20, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, 0x01, 0x12, 0x03, 0x16, 0x06, + 0x0e, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, 0x02, 0x12, 0x03, 0x16, 0x0f, 0x1a, 0x0a, + 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, 0x03, 0x12, 0x03, 0x16, 0x25, 0x38, 0x0a, 0xd7, 0x01, + 0x0a, 0x04, 0x06, 0x00, 0x02, 0x02, 0x12, 0x03, 0x1b, 0x02, 0x37, 0x1a, 0xc9, 0x01, 0x20, 0x4d, + 0x69, 0x6e, 0x74, 0x41, 0x43, 0x54, 0x20, 0x6d, 0x69, 0x6e, 0x74, 0x73, 0x20, 0x41, 0x43, 0x54, + 0x20, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x20, 0x62, 0x79, 0x20, 0x62, 0x75, 0x72, 0x6e, 0x69, + 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, + 0x20, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x0a, 0x20, + 0x54, 0x68, 0x65, 0x20, 0x6d, 0x69, 0x6e, 0x74, 0x20, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x20, + 0x69, 0x73, 0x20, 0x63, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x20, 0x62, 0x61, + 0x73, 0x65, 0x64, 0x20, 0x6f, 0x6e, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x6f, + 0x72, 0x61, 0x63, 0x6c, 0x65, 0x20, 0x70, 0x72, 0x69, 0x63, 0x65, 0x73, 0x20, 0x61, 0x6e, 0x64, + 0x0a, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, + 0x20, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x2e, 0x20, 0x4d, 0x61, 0x79, 0x20, 0x62, 0x65, 0x20, 0x68, + 0x61, 0x6c, 0x74, 0x65, 0x64, 0x20, 0x69, 0x66, 0x20, 0x63, 0x69, 0x72, 0x63, 0x75, 0x69, 0x74, + 0x20, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x65, 0x72, 0x20, 0x69, 0x73, 0x20, 0x74, 0x72, 0x69, 0x67, + 0x67, 0x65, 0x72, 0x65, 0x64, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, 0x01, + 0x12, 0x03, 0x1b, 0x06, 0x0d, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, 0x02, 0x12, 0x03, + 0x1b, 0x0e, 0x18, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, 0x03, 0x12, 0x03, 0x1b, 0x23, + 0x35, 0x0a, 0xd3, 0x01, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x03, 0x12, 0x03, 0x20, 0x02, 0x37, 0x1a, + 0xc5, 0x01, 0x20, 0x42, 0x75, 0x72, 0x6e, 0x41, 0x43, 0x54, 0x20, 0x62, 0x75, 0x72, 0x6e, 0x73, + 0x20, 0x41, 0x43, 0x54, 0x20, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, + 0x6d, 0x69, 0x6e, 0x74, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, + 0x69, 0x65, 0x64, 0x20, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, + 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x0a, 0x20, 0x54, 0x68, 0x65, 0x20, 0x62, 0x75, 0x72, 0x6e, + 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x75, 0x73, 0x65, 0x73, 0x20, + 0x72, 0x65, 0x6d, 0x69, 0x6e, 0x74, 0x20, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x73, 0x20, 0x77, + 0x68, 0x65, 0x6e, 0x20, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x2c, 0x20, 0x6f, + 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x0a, 0x20, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, + 0x65, 0x73, 0x20, 0x61, 0x64, 0x65, 0x71, 0x75, 0x61, 0x74, 0x65, 0x20, 0x63, 0x6f, 0x6c, 0x6c, + 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x20, 0x62, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x20, 0x62, + 0x61, 0x73, 0x65, 0x64, 0x20, 0x6f, 0x6e, 0x20, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x20, 0x70, + 0x72, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x03, 0x01, + 0x12, 0x03, 0x20, 0x06, 0x0d, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x03, 0x02, 0x12, 0x03, + 0x20, 0x0e, 0x18, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x03, 0x03, 0x12, 0x03, 0x20, 0x23, + 0x35, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, ]; include!("akash.bme.v1.tonic.rs"); // @@protoc_insertion_point(module) \ No newline at end of file diff --git a/rs/src/gen/node/akash.bme.v1.serde.rs b/rs/src/gen/node/akash.bme.v1.serde.rs index f421a32c..5dfff3d6 100644 --- a/rs/src/gen/node/akash.bme.v1.serde.rs +++ b/rs/src/gen/node/akash.bme.v1.serde.rs @@ -1744,6 +1744,149 @@ impl<'de> serde::Deserialize<'de> for LedgerRecord { deserializer.deserialize_struct("akash.bme.v1.LedgerRecord", FIELDS, GeneratedVisitor) } } +impl serde::Serialize for LedgerRecordFilters { + #[allow(deprecated)] + fn serialize(&self, serializer: S) -> std::result::Result + where + S: serde::Serializer, + { + use serde::ser::SerializeStruct; + let mut len = 0; + if !self.source.is_empty() { + len += 1; + } + if !self.denom.is_empty() { + len += 1; + } + if !self.to_denom.is_empty() { + len += 1; + } + if !self.status.is_empty() { + len += 1; + } + let mut struct_ser = serializer.serialize_struct("akash.bme.v1.LedgerRecordFilters", len)?; + if !self.source.is_empty() { + struct_ser.serialize_field("source", &self.source)?; + } + if !self.denom.is_empty() { + struct_ser.serialize_field("denom", &self.denom)?; + } + if !self.to_denom.is_empty() { + struct_ser.serialize_field("toDenom", &self.to_denom)?; + } + if !self.status.is_empty() { + struct_ser.serialize_field("status", &self.status)?; + } + struct_ser.end() + } +} +impl<'de> serde::Deserialize<'de> for LedgerRecordFilters { + #[allow(deprecated)] + fn deserialize(deserializer: D) -> std::result::Result + where + D: serde::Deserializer<'de>, + { + const FIELDS: &[&str] = &[ + "source", + "denom", + "to_denom", + "toDenom", + "status", + ]; + + #[allow(clippy::enum_variant_names)] + enum GeneratedField { + Source, + Denom, + ToDenom, + Status, + } + impl<'de> serde::Deserialize<'de> for GeneratedField { + fn deserialize(deserializer: D) -> std::result::Result + where + D: serde::Deserializer<'de>, + { + struct GeneratedVisitor; + + impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { + type Value = GeneratedField; + + fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(formatter, "expected one of: {:?}", &FIELDS) + } + + #[allow(unused_variables)] + fn visit_str(self, value: &str) -> std::result::Result + where + E: serde::de::Error, + { + match value { + "source" => Ok(GeneratedField::Source), + "denom" => Ok(GeneratedField::Denom), + "toDenom" | "to_denom" => Ok(GeneratedField::ToDenom), + "status" => Ok(GeneratedField::Status), + _ => Err(serde::de::Error::unknown_field(value, FIELDS)), + } + } + } + deserializer.deserialize_identifier(GeneratedVisitor) + } + } + struct GeneratedVisitor; + impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { + type Value = LedgerRecordFilters; + + fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + formatter.write_str("struct akash.bme.v1.LedgerRecordFilters") + } + + fn visit_map(self, mut map_: V) -> std::result::Result + where + V: serde::de::MapAccess<'de>, + { + let mut source__ = None; + let mut denom__ = None; + let mut to_denom__ = None; + let mut status__ = None; + while let Some(k) = map_.next_key()? { + match k { + GeneratedField::Source => { + if source__.is_some() { + return Err(serde::de::Error::duplicate_field("source")); + } + source__ = Some(map_.next_value()?); + } + GeneratedField::Denom => { + if denom__.is_some() { + return Err(serde::de::Error::duplicate_field("denom")); + } + denom__ = Some(map_.next_value()?); + } + GeneratedField::ToDenom => { + if to_denom__.is_some() { + return Err(serde::de::Error::duplicate_field("toDenom")); + } + to_denom__ = Some(map_.next_value()?); + } + GeneratedField::Status => { + if status__.is_some() { + return Err(serde::de::Error::duplicate_field("status")); + } + status__ = Some(map_.next_value()?); + } + } + } + Ok(LedgerRecordFilters { + source: source__.unwrap_or_default(), + denom: denom__.unwrap_or_default(), + to_denom: to_denom__.unwrap_or_default(), + status: status__.unwrap_or_default(), + }) + } + } + deserializer.deserialize_struct("akash.bme.v1.LedgerRecordFilters", FIELDS, GeneratedVisitor) + } +} impl serde::Serialize for LedgerRecordId { #[allow(deprecated)] fn serialize(&self, serializer: S) -> std::result::Result @@ -3480,6 +3623,369 @@ impl<'de> serde::Deserialize<'de> for Params { deserializer.deserialize_struct("akash.bme.v1.Params", FIELDS, GeneratedVisitor) } } +impl serde::Serialize for QueryLedgerRecordEntry { + #[allow(deprecated)] + fn serialize(&self, serializer: S) -> std::result::Result + where + S: serde::Serializer, + { + use serde::ser::SerializeStruct; + let mut len = 0; + if self.id.is_some() { + len += 1; + } + if self.status != 0 { + len += 1; + } + if self.record.is_some() { + len += 1; + } + let mut struct_ser = serializer.serialize_struct("akash.bme.v1.QueryLedgerRecordEntry", len)?; + if let Some(v) = self.id.as_ref() { + struct_ser.serialize_field("id", v)?; + } + if self.status != 0 { + let v = LedgerRecordStatus::try_from(self.status) + .map_err(|_| serde::ser::Error::custom(format!("Invalid variant {}", self.status)))?; + struct_ser.serialize_field("status", &v)?; + } + if let Some(v) = self.record.as_ref() { + match v { + query_ledger_record_entry::Record::PendingRecord(v) => { + struct_ser.serialize_field("pendingRecord", v)?; + } + query_ledger_record_entry::Record::ExecutedRecord(v) => { + struct_ser.serialize_field("executedRecord", v)?; + } + } + } + struct_ser.end() + } +} +impl<'de> serde::Deserialize<'de> for QueryLedgerRecordEntry { + #[allow(deprecated)] + fn deserialize(deserializer: D) -> std::result::Result + where + D: serde::Deserializer<'de>, + { + const FIELDS: &[&str] = &[ + "id", + "status", + "pending_record", + "pendingRecord", + "executed_record", + "executedRecord", + ]; + + #[allow(clippy::enum_variant_names)] + enum GeneratedField { + Id, + Status, + PendingRecord, + ExecutedRecord, + } + impl<'de> serde::Deserialize<'de> for GeneratedField { + fn deserialize(deserializer: D) -> std::result::Result + where + D: serde::Deserializer<'de>, + { + struct GeneratedVisitor; + + impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { + type Value = GeneratedField; + + fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(formatter, "expected one of: {:?}", &FIELDS) + } + + #[allow(unused_variables)] + fn visit_str(self, value: &str) -> std::result::Result + where + E: serde::de::Error, + { + match value { + "id" => Ok(GeneratedField::Id), + "status" => Ok(GeneratedField::Status), + "pendingRecord" | "pending_record" => Ok(GeneratedField::PendingRecord), + "executedRecord" | "executed_record" => Ok(GeneratedField::ExecutedRecord), + _ => Err(serde::de::Error::unknown_field(value, FIELDS)), + } + } + } + deserializer.deserialize_identifier(GeneratedVisitor) + } + } + struct GeneratedVisitor; + impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { + type Value = QueryLedgerRecordEntry; + + fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + formatter.write_str("struct akash.bme.v1.QueryLedgerRecordEntry") + } + + fn visit_map(self, mut map_: V) -> std::result::Result + where + V: serde::de::MapAccess<'de>, + { + let mut id__ = None; + let mut status__ = None; + let mut record__ = None; + while let Some(k) = map_.next_key()? { + match k { + GeneratedField::Id => { + if id__.is_some() { + return Err(serde::de::Error::duplicate_field("id")); + } + id__ = map_.next_value()?; + } + GeneratedField::Status => { + if status__.is_some() { + return Err(serde::de::Error::duplicate_field("status")); + } + status__ = Some(map_.next_value::()? as i32); + } + GeneratedField::PendingRecord => { + if record__.is_some() { + return Err(serde::de::Error::duplicate_field("pendingRecord")); + } + record__ = map_.next_value::<::std::option::Option<_>>()?.map(query_ledger_record_entry::Record::PendingRecord) +; + } + GeneratedField::ExecutedRecord => { + if record__.is_some() { + return Err(serde::de::Error::duplicate_field("executedRecord")); + } + record__ = map_.next_value::<::std::option::Option<_>>()?.map(query_ledger_record_entry::Record::ExecutedRecord) +; + } + } + } + Ok(QueryLedgerRecordEntry { + id: id__, + status: status__.unwrap_or_default(), + record: record__, + }) + } + } + deserializer.deserialize_struct("akash.bme.v1.QueryLedgerRecordEntry", FIELDS, GeneratedVisitor) + } +} +impl serde::Serialize for QueryLedgerRecordsRequest { + #[allow(deprecated)] + fn serialize(&self, serializer: S) -> std::result::Result + where + S: serde::Serializer, + { + use serde::ser::SerializeStruct; + let mut len = 0; + if self.filters.is_some() { + len += 1; + } + if self.pagination.is_some() { + len += 1; + } + let mut struct_ser = serializer.serialize_struct("akash.bme.v1.QueryLedgerRecordsRequest", len)?; + if let Some(v) = self.filters.as_ref() { + struct_ser.serialize_field("filters", v)?; + } + if let Some(v) = self.pagination.as_ref() { + struct_ser.serialize_field("pagination", v)?; + } + struct_ser.end() + } +} +impl<'de> serde::Deserialize<'de> for QueryLedgerRecordsRequest { + #[allow(deprecated)] + fn deserialize(deserializer: D) -> std::result::Result + where + D: serde::Deserializer<'de>, + { + const FIELDS: &[&str] = &[ + "filters", + "pagination", + ]; + + #[allow(clippy::enum_variant_names)] + enum GeneratedField { + Filters, + Pagination, + } + impl<'de> serde::Deserialize<'de> for GeneratedField { + fn deserialize(deserializer: D) -> std::result::Result + where + D: serde::Deserializer<'de>, + { + struct GeneratedVisitor; + + impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { + type Value = GeneratedField; + + fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(formatter, "expected one of: {:?}", &FIELDS) + } + + #[allow(unused_variables)] + fn visit_str(self, value: &str) -> std::result::Result + where + E: serde::de::Error, + { + match value { + "filters" => Ok(GeneratedField::Filters), + "pagination" => Ok(GeneratedField::Pagination), + _ => Err(serde::de::Error::unknown_field(value, FIELDS)), + } + } + } + deserializer.deserialize_identifier(GeneratedVisitor) + } + } + struct GeneratedVisitor; + impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { + type Value = QueryLedgerRecordsRequest; + + fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + formatter.write_str("struct akash.bme.v1.QueryLedgerRecordsRequest") + } + + fn visit_map(self, mut map_: V) -> std::result::Result + where + V: serde::de::MapAccess<'de>, + { + let mut filters__ = None; + let mut pagination__ = None; + while let Some(k) = map_.next_key()? { + match k { + GeneratedField::Filters => { + if filters__.is_some() { + return Err(serde::de::Error::duplicate_field("filters")); + } + filters__ = map_.next_value()?; + } + GeneratedField::Pagination => { + if pagination__.is_some() { + return Err(serde::de::Error::duplicate_field("pagination")); + } + pagination__ = map_.next_value()?; + } + } + } + Ok(QueryLedgerRecordsRequest { + filters: filters__, + pagination: pagination__, + }) + } + } + deserializer.deserialize_struct("akash.bme.v1.QueryLedgerRecordsRequest", FIELDS, GeneratedVisitor) + } +} +impl serde::Serialize for QueryLedgerRecordsResponse { + #[allow(deprecated)] + fn serialize(&self, serializer: S) -> std::result::Result + where + S: serde::Serializer, + { + use serde::ser::SerializeStruct; + let mut len = 0; + if !self.records.is_empty() { + len += 1; + } + if self.pagination.is_some() { + len += 1; + } + let mut struct_ser = serializer.serialize_struct("akash.bme.v1.QueryLedgerRecordsResponse", len)?; + if !self.records.is_empty() { + struct_ser.serialize_field("records", &self.records)?; + } + if let Some(v) = self.pagination.as_ref() { + struct_ser.serialize_field("pagination", v)?; + } + struct_ser.end() + } +} +impl<'de> serde::Deserialize<'de> for QueryLedgerRecordsResponse { + #[allow(deprecated)] + fn deserialize(deserializer: D) -> std::result::Result + where + D: serde::Deserializer<'de>, + { + const FIELDS: &[&str] = &[ + "records", + "pagination", + ]; + + #[allow(clippy::enum_variant_names)] + enum GeneratedField { + Records, + Pagination, + } + impl<'de> serde::Deserialize<'de> for GeneratedField { + fn deserialize(deserializer: D) -> std::result::Result + where + D: serde::Deserializer<'de>, + { + struct GeneratedVisitor; + + impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { + type Value = GeneratedField; + + fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(formatter, "expected one of: {:?}", &FIELDS) + } + + #[allow(unused_variables)] + fn visit_str(self, value: &str) -> std::result::Result + where + E: serde::de::Error, + { + match value { + "records" => Ok(GeneratedField::Records), + "pagination" => Ok(GeneratedField::Pagination), + _ => Err(serde::de::Error::unknown_field(value, FIELDS)), + } + } + } + deserializer.deserialize_identifier(GeneratedVisitor) + } + } + struct GeneratedVisitor; + impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { + type Value = QueryLedgerRecordsResponse; + + fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + formatter.write_str("struct akash.bme.v1.QueryLedgerRecordsResponse") + } + + fn visit_map(self, mut map_: V) -> std::result::Result + where + V: serde::de::MapAccess<'de>, + { + let mut records__ = None; + let mut pagination__ = None; + while let Some(k) = map_.next_key()? { + match k { + GeneratedField::Records => { + if records__.is_some() { + return Err(serde::de::Error::duplicate_field("records")); + } + records__ = Some(map_.next_value()?); + } + GeneratedField::Pagination => { + if pagination__.is_some() { + return Err(serde::de::Error::duplicate_field("pagination")); + } + pagination__ = map_.next_value()?; + } + } + } + Ok(QueryLedgerRecordsResponse { + records: records__.unwrap_or_default(), + pagination: pagination__, + }) + } + } + deserializer.deserialize_struct("akash.bme.v1.QueryLedgerRecordsResponse", FIELDS, GeneratedVisitor) + } +} impl serde::Serialize for QueryParamsRequest { #[allow(deprecated)] fn serialize(&self, serializer: S) -> std::result::Result diff --git a/rs/src/gen/node/akash.bme.v1.tonic.rs b/rs/src/gen/node/akash.bme.v1.tonic.rs index 7fc8f9c5..1e4082bb 100644 --- a/rs/src/gen/node/akash.bme.v1.tonic.rs +++ b/rs/src/gen/node/akash.bme.v1.tonic.rs @@ -157,6 +157,31 @@ pub mod query_client { req.extensions_mut().insert(GrpcMethod::new("akash.bme.v1.Query", "Status")); self.inner.unary(req, path, codec).await } + pub async fn ledger_records( + &mut self, + request: impl tonic::IntoRequest, + ) -> std::result::Result< + tonic::Response, + tonic::Status, + > { + self.inner + .ready() + .await + .map_err(|e| { + tonic::Status::new( + tonic::Code::Unknown, + format!("Service was not ready: {}", e.into()), + ) + })?; + let codec = tonic::codec::ProstCodec::default(); + let path = http::uri::PathAndQuery::from_static( + "/akash.bme.v1.Query/LedgerRecords", + ); + let mut req = request.into_request(); + req.extensions_mut() + .insert(GrpcMethod::new("akash.bme.v1.Query", "LedgerRecords")); + self.inner.unary(req, path, codec).await + } } } /// Generated server implementations. @@ -187,6 +212,13 @@ pub mod query_server { tonic::Response, tonic::Status, >; + async fn ledger_records( + &self, + request: tonic::Request, + ) -> std::result::Result< + tonic::Response, + tonic::Status, + >; } #[derive(Debug)] pub struct QueryServer { @@ -395,6 +427,51 @@ pub mod query_server { }; Box::pin(fut) } + "/akash.bme.v1.Query/LedgerRecords" => { + #[allow(non_camel_case_types)] + struct LedgerRecordsSvc(pub Arc); + impl< + T: Query, + > tonic::server::UnaryService + for LedgerRecordsSvc { + type Response = super::QueryLedgerRecordsResponse; + type Future = BoxFuture< + tonic::Response, + tonic::Status, + >; + fn call( + &mut self, + request: tonic::Request, + ) -> Self::Future { + let inner = Arc::clone(&self.0); + let fut = async move { + ::ledger_records(&inner, request).await + }; + Box::pin(fut) + } + } + let accept_compression_encodings = self.accept_compression_encodings; + let send_compression_encodings = self.send_compression_encodings; + let max_decoding_message_size = self.max_decoding_message_size; + let max_encoding_message_size = self.max_encoding_message_size; + let inner = self.inner.clone(); + let fut = async move { + let method = LedgerRecordsSvc(inner); + let codec = tonic::codec::ProstCodec::default(); + let mut grpc = tonic::server::Grpc::new(codec) + .apply_compression_config( + accept_compression_encodings, + send_compression_encodings, + ) + .apply_max_message_size_config( + max_decoding_message_size, + max_encoding_message_size, + ); + let res = grpc.unary(method, req).await; + Ok(res) + }; + Box::pin(fut) + } _ => { Box::pin(async move { Ok( diff --git a/ts/src/generated/createNodeSDK.ts b/ts/src/generated/createNodeSDK.ts index 2f0df6ec..af1c640e 100644 --- a/ts/src/generated/createNodeSDK.ts +++ b/ts/src/generated/createNodeSDK.ts @@ -131,6 +131,13 @@ export function createSDK(queryTransport: Transport, txTransport: Transport) { const service = await serviceLoader.loadAt(2); return getClient(service).status(input, options); }, { path: [2, 2] }), + /** + * getLedgerRecords queries ledger records with optional filters for status, source, denom, to_denom + */ + getLedgerRecords: withMetadata(async function getLedgerRecords(input: DeepPartial, options?: CallOptions) { + const service = await serviceLoader.loadAt(2); + return getClient(service).ledgerRecords(input, options); + }, { path: [2, 3] }), /** * updateParams updates the module parameters. * This operation can only be performed through governance proposals. diff --git a/ts/src/generated/protos/akash/bme/v1/filters.ts b/ts/src/generated/protos/akash/bme/v1/filters.ts new file mode 100644 index 00000000..7bfbb7b0 --- /dev/null +++ b/ts/src/generated/protos/akash/bme/v1/filters.ts @@ -0,0 +1,155 @@ +import { isSet } from "../../../../../encoding/typeEncodingHelpers.ts" +import type { DeepPartial, MessageFns } from "../../../../../encoding/typeEncodingHelpers.ts" +// Code generated by protoc-gen-ts_proto. DO NOT EDIT. +// versions: +// protoc-gen-ts_proto v2.7.7 +// protoc unknown +// source: akash/bme/v1/filters.proto + +/* eslint-disable */ +import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire"; +import Long from "long"; + +/** LedgerRecordFilters defines filters used to filter ledger records */ +export interface LedgerRecordFilters { + /** source is the account address of the user who initiated the burn/mint */ + source: string; + /** denom filters by the burn denomination */ + denom: string; + /** to_denom filters by the mint denomination */ + toDenom: string; + /** + * status filters by record status (pending or executed). + * Uses the string representation of LedgerRecordStatus enum values. + * If empty, returns both pending and executed records. + */ + status: string; +} + +function createBaseLedgerRecordFilters(): LedgerRecordFilters { + return { source: "", denom: "", toDenom: "", status: "" }; +} + +export const LedgerRecordFilters: MessageFns = { + $type: "akash.bme.v1.LedgerRecordFilters" as const, + + encode(message: LedgerRecordFilters, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + if (message.source !== "") { + writer.uint32(10).string(message.source); + } + if (message.denom !== "") { + writer.uint32(18).string(message.denom); + } + if (message.toDenom !== "") { + writer.uint32(26).string(message.toDenom); + } + if (message.status !== "") { + writer.uint32(34).string(message.status); + } + return writer; + }, + + decode(input: BinaryReader | Uint8Array, length?: number): LedgerRecordFilters { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + const end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseLedgerRecordFilters(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + + message.source = reader.string(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + + message.denom = reader.string(); + continue; + } + case 3: { + if (tag !== 26) { + break; + } + + message.toDenom = reader.string(); + continue; + } + case 4: { + if (tag !== 34) { + break; + } + + message.status = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + + fromJSON(object: any): LedgerRecordFilters { + return { + source: isSet(object.source) ? globalThis.String(object.source) : "", + denom: isSet(object.denom) ? globalThis.String(object.denom) : "", + toDenom: isSet(object.to_denom) ? globalThis.String(object.to_denom) : "", + status: isSet(object.status) ? globalThis.String(object.status) : "", + }; + }, + + toJSON(message: LedgerRecordFilters): unknown { + const obj: any = {}; + if (message.source !== "") { + obj.source = message.source; + } + if (message.denom !== "") { + obj.denom = message.denom; + } + if (message.toDenom !== "") { + obj.to_denom = message.toDenom; + } + if (message.status !== "") { + obj.status = message.status; + } + return obj; + }, + fromPartial(object: DeepPartial): LedgerRecordFilters { + const message = createBaseLedgerRecordFilters(); + message.source = object.source ?? ""; + message.denom = object.denom ?? ""; + message.toDenom = object.toDenom ?? ""; + message.status = object.status ?? ""; + return message; + }, +}; + +type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined; + +type _unused_DeepPartial = T extends Builtin ? T + : T extends Long ? string | number | Long : T extends globalThis.Array ? globalThis.Array> + : T extends ReadonlyArray ? ReadonlyArray> + : T extends {} ? { [K in keyof T]?: DeepPartial } + : Partial; + +function _unused_isSet(value: any): boolean { + return value !== null && value !== undefined; +} + +interface _unused_MessageFns { + readonly $type: V; + encode(message: T, writer?: BinaryWriter): BinaryWriter; + decode(input: BinaryReader | Uint8Array, length?: number): T; + fromJSON(object: any): T; + toJSON(message: T): unknown; + create(base?: DeepPartial): T; + fromPartial(object: DeepPartial): T; +} diff --git a/ts/src/generated/protos/akash/bme/v1/query.ts b/ts/src/generated/protos/akash/bme/v1/query.ts index 36ea80c9..75a6ac14 100644 --- a/ts/src/generated/protos/akash/bme/v1/query.ts +++ b/ts/src/generated/protos/akash/bme/v1/query.ts @@ -10,8 +10,21 @@ import type { DeepPartial, MessageFns } from "../../../../../encoding/typeEncodi /* eslint-disable */ import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire"; import Long from "long"; +import { PageRequest, PageResponse } from "../../../cosmos/base/query/v1beta1/pagination.ts"; +import { LedgerRecordFilters } from "./filters.ts"; import { Params } from "./params.ts"; -import { MintStatus, mintStatusFromJSON, mintStatusToJSON, State } from "./types.ts"; +import { + LedgerPendingRecord, + LedgerRecord, + LedgerRecordID, + LedgerRecordStatus, + ledgerRecordStatusFromJSON, + ledgerRecordStatusToJSON, + MintStatus, + mintStatusFromJSON, + mintStatusToJSON, + State, +} from "./types.ts"; /** QueryParamsRequest is the request type for the Query/Params RPC method */ export interface QueryParamsRequest { @@ -51,6 +64,40 @@ export interface QueryStatusResponse { refundsAllowed: boolean; } +/** QueryLedgerRecordEntry wraps a ledger record with its ID and status */ +export interface QueryLedgerRecordEntry { + /** id is the unique identifier of the ledger record */ + id: + | LedgerRecordID + | undefined; + /** status indicates whether this record is pending or executed */ + status: LedgerRecordStatus; + /** pending_record is set when the record status is pending */ + pendingRecord?: + | LedgerPendingRecord + | undefined; + /** executed_record is set when the record status is executed */ + executedRecord?: LedgerRecord | undefined; +} + +/** QueryLedgerRecordsRequest is the request type for the Query/LedgerRecords RPC method */ +export interface QueryLedgerRecordsRequest { + /** filters holds the ledger record fields to filter the request */ + filters: + | LedgerRecordFilters + | undefined; + /** pagination defines the pagination for the request */ + pagination: PageRequest | undefined; +} + +/** QueryLedgerRecordsResponse is the response type for the Query/LedgerRecords RPC method */ +export interface QueryLedgerRecordsResponse { + /** records is a list of ledger records matching the filters */ + records: QueryLedgerRecordEntry[]; + /** pagination contains the information about response pagination */ + pagination: PageResponse | undefined; +} + function createBaseQueryParamsRequest(): QueryParamsRequest { return {}; } @@ -435,6 +482,278 @@ const _QueryStatusResponse: MessageFns = { + $type: "akash.bme.v1.QueryLedgerRecordEntry" as const, + + encode(message: QueryLedgerRecordEntry, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + if (message.id !== undefined) { + LedgerRecordID.encode(message.id, writer.uint32(10).fork()).join(); + } + if (message.status !== 0) { + writer.uint32(16).int32(message.status); + } + if (message.pendingRecord !== undefined) { + LedgerPendingRecord.encode(message.pendingRecord, writer.uint32(26).fork()).join(); + } + if (message.executedRecord !== undefined) { + LedgerRecord.encode(message.executedRecord, writer.uint32(34).fork()).join(); + } + return writer; + }, + + decode(input: BinaryReader | Uint8Array, length?: number): QueryLedgerRecordEntry { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + const end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseQueryLedgerRecordEntry(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + + message.id = LedgerRecordID.decode(reader, reader.uint32()); + continue; + } + case 2: { + if (tag !== 16) { + break; + } + + message.status = reader.int32() as any; + continue; + } + case 3: { + if (tag !== 26) { + break; + } + + message.pendingRecord = LedgerPendingRecord.decode(reader, reader.uint32()); + continue; + } + case 4: { + if (tag !== 34) { + break; + } + + message.executedRecord = LedgerRecord.decode(reader, reader.uint32()); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + + fromJSON(object: any): QueryLedgerRecordEntry { + return { + id: isSet(object.id) ? LedgerRecordID.fromJSON(object.id) : undefined, + status: isSet(object.status) ? ledgerRecordStatusFromJSON(object.status) : 0, + pendingRecord: isSet(object.pending_record) ? LedgerPendingRecord.fromJSON(object.pending_record) : undefined, + executedRecord: isSet(object.executed_record) ? LedgerRecord.fromJSON(object.executed_record) : undefined, + }; + }, + + toJSON(message: QueryLedgerRecordEntry): unknown { + const obj: any = {}; + if (message.id !== undefined) { + obj.id = LedgerRecordID.toJSON(message.id); + } + if (message.status !== 0) { + obj.status = ledgerRecordStatusToJSON(message.status); + } + if (message.pendingRecord !== undefined) { + obj.pending_record = LedgerPendingRecord.toJSON(message.pendingRecord); + } + if (message.executedRecord !== undefined) { + obj.executed_record = LedgerRecord.toJSON(message.executedRecord); + } + return obj; + }, + fromPartial(object: DeepPartial): QueryLedgerRecordEntry { + const message = createBaseQueryLedgerRecordEntry(); + message.id = (object.id !== undefined && object.id !== null) ? LedgerRecordID.fromPartial(object.id) : undefined; + message.status = object.status ?? 0; + message.pendingRecord = (object.pendingRecord !== undefined && object.pendingRecord !== null) + ? LedgerPendingRecord.fromPartial(object.pendingRecord) + : undefined; + message.executedRecord = (object.executedRecord !== undefined && object.executedRecord !== null) + ? LedgerRecord.fromPartial(object.executedRecord) + : undefined; + return message; + }, +}; + +function createBaseQueryLedgerRecordsRequest(): QueryLedgerRecordsRequest { + return { filters: undefined, pagination: undefined }; +} + +export const QueryLedgerRecordsRequest: MessageFns< + QueryLedgerRecordsRequest, + "akash.bme.v1.QueryLedgerRecordsRequest" +> = { + $type: "akash.bme.v1.QueryLedgerRecordsRequest" as const, + + encode(message: QueryLedgerRecordsRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + if (message.filters !== undefined) { + LedgerRecordFilters.encode(message.filters, writer.uint32(10).fork()).join(); + } + if (message.pagination !== undefined) { + PageRequest.encode(message.pagination, writer.uint32(18).fork()).join(); + } + return writer; + }, + + decode(input: BinaryReader | Uint8Array, length?: number): QueryLedgerRecordsRequest { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + const end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseQueryLedgerRecordsRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + + message.filters = LedgerRecordFilters.decode(reader, reader.uint32()); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + + message.pagination = PageRequest.decode(reader, reader.uint32()); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + + fromJSON(object: any): QueryLedgerRecordsRequest { + return { + filters: isSet(object.filters) ? LedgerRecordFilters.fromJSON(object.filters) : undefined, + pagination: isSet(object.pagination) ? PageRequest.fromJSON(object.pagination) : undefined, + }; + }, + + toJSON(message: QueryLedgerRecordsRequest): unknown { + const obj: any = {}; + if (message.filters !== undefined) { + obj.filters = LedgerRecordFilters.toJSON(message.filters); + } + if (message.pagination !== undefined) { + obj.pagination = PageRequest.toJSON(message.pagination); + } + return obj; + }, + fromPartial(object: DeepPartial): QueryLedgerRecordsRequest { + const message = createBaseQueryLedgerRecordsRequest(); + message.filters = (object.filters !== undefined && object.filters !== null) + ? LedgerRecordFilters.fromPartial(object.filters) + : undefined; + message.pagination = (object.pagination !== undefined && object.pagination !== null) + ? PageRequest.fromPartial(object.pagination) + : undefined; + return message; + }, +}; + +function createBaseQueryLedgerRecordsResponse(): QueryLedgerRecordsResponse { + return { records: [], pagination: undefined }; +} + +export const QueryLedgerRecordsResponse: MessageFns< + QueryLedgerRecordsResponse, + "akash.bme.v1.QueryLedgerRecordsResponse" +> = { + $type: "akash.bme.v1.QueryLedgerRecordsResponse" as const, + + encode(message: QueryLedgerRecordsResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + for (const v of message.records) { + QueryLedgerRecordEntry.encode(v!, writer.uint32(10).fork()).join(); + } + if (message.pagination !== undefined) { + PageResponse.encode(message.pagination, writer.uint32(18).fork()).join(); + } + return writer; + }, + + decode(input: BinaryReader | Uint8Array, length?: number): QueryLedgerRecordsResponse { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + const end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseQueryLedgerRecordsResponse(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + + message.records.push(QueryLedgerRecordEntry.decode(reader, reader.uint32())); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + + message.pagination = PageResponse.decode(reader, reader.uint32()); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + + fromJSON(object: any): QueryLedgerRecordsResponse { + return { + records: globalThis.Array.isArray(object?.records) + ? object.records.map((e: any) => QueryLedgerRecordEntry.fromJSON(e)) + : [], + pagination: isSet(object.pagination) ? PageResponse.fromJSON(object.pagination) : undefined, + }; + }, + + toJSON(message: QueryLedgerRecordsResponse): unknown { + const obj: any = {}; + if (message.records?.length) { + obj.records = message.records.map((e) => QueryLedgerRecordEntry.toJSON(e)); + } + if (message.pagination !== undefined) { + obj.pagination = PageResponse.toJSON(message.pagination); + } + return obj; + }, + fromPartial(object: DeepPartial): QueryLedgerRecordsResponse { + const message = createBaseQueryLedgerRecordsResponse(); + message.records = object.records?.map((e) => QueryLedgerRecordEntry.fromPartial(e)) || []; + message.pagination = (object.pagination !== undefined && object.pagination !== null) + ? PageResponse.fromPartial(object.pagination) + : undefined; + return message; + }, +}; + type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined; type _unused_DeepPartial = T extends Builtin ? T diff --git a/ts/src/generated/protos/akash/bme/v1/query_akash.ts b/ts/src/generated/protos/akash/bme/v1/query_akash.ts index 11f231a2..b200a439 100644 --- a/ts/src/generated/protos/akash/bme/v1/query_akash.ts +++ b/ts/src/generated/protos/akash/bme/v1/query_akash.ts @@ -1,4 +1,4 @@ -import { QueryParamsRequest, QueryParamsResponse, QueryStatusRequest, QueryStatusResponse, QueryVaultStateRequest, QueryVaultStateResponse } from "./query.ts"; +import { QueryLedgerRecordsRequest, QueryLedgerRecordsResponse, QueryParamsRequest, QueryParamsResponse, QueryStatusRequest, QueryStatusResponse, QueryVaultStateRequest, QueryVaultStateResponse } from "./query.ts"; export const Query = { typeName: "akash.bme.v1.Query", @@ -24,5 +24,12 @@ export const Query = { output: QueryStatusResponse, get parent() { return Query; }, }, + ledgerRecords: { + name: "LedgerRecords", + httpPath: "/akash/bme/v1/ledger", + input: QueryLedgerRecordsRequest, + output: QueryLedgerRecordsResponse, + get parent() { return Query; }, + }, }, } as const; diff --git a/ts/src/generated/protos/akash/oracle/v1/params.ts b/ts/src/generated/protos/akash/oracle/v1/params.ts index ad0ac1ee..18e1d4e3 100644 --- a/ts/src/generated/protos/akash/oracle/v1/params.ts +++ b/ts/src/generated/protos/akash/oracle/v1/params.ts @@ -17,6 +17,20 @@ export interface PythContractParams { aktPriceFeedId: string; } +/** + * WormholeContractParams contains configuration for Wormhole guardian set. + * This allows the Wormhole contract to pull guardian public keys from x/oracle + * module params, enabling guardian set updates via Akash governance. + */ +export interface WormholeContractParams { + /** + * guardian_addresses is the list of Wormhole guardian addresses. + * Each address is a 20-byte Ethereum-style address, hex-encoded. + * The Wormhole contract uses these to verify VAA signatures. + */ + guardianAddresses: string[]; +} + /** Params defines the parameters for the oracle module */ export interface Params { /** @@ -92,6 +106,66 @@ export const PythContractParams: MessageFns = { + $type: "akash.oracle.v1.WormholeContractParams" as const, + + encode(message: WormholeContractParams, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + for (const v of message.guardianAddresses) { + writer.uint32(10).string(v!); + } + return writer; + }, + + decode(input: BinaryReader | Uint8Array, length?: number): WormholeContractParams { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + const end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseWormholeContractParams(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + + message.guardianAddresses.push(reader.string()); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + + fromJSON(object: any): WormholeContractParams { + return { + guardianAddresses: globalThis.Array.isArray(object?.guardian_addresses) + ? object.guardian_addresses.map((e: any) => globalThis.String(e)) + : [], + }; + }, + + toJSON(message: WormholeContractParams): unknown { + const obj: any = {}; + if (message.guardianAddresses?.length) { + obj.guardian_addresses = message.guardianAddresses; + } + return obj; + }, + fromPartial(object: DeepPartial): WormholeContractParams { + const message = createBaseWormholeContractParams(); + message.guardianAddresses = object.guardianAddresses?.map((e) => e) || []; + return message; + }, +}; + function createBaseParams(): Params { return { sources: [], diff --git a/ts/src/generated/protos/index.akash.v1.ts b/ts/src/generated/protos/index.akash.v1.ts index 77e9251a..8c01c6f2 100644 --- a/ts/src/generated/protos/index.akash.v1.ts +++ b/ts/src/generated/protos/index.akash.v1.ts @@ -8,10 +8,11 @@ export { Deposit, Source } from "./akash/base/deposit/v1/deposit.ts"; export { MsgSignData } from "./akash/base/offchain/sign/v1/sign.ts"; export { LedgerID, CollateralRatio, State, CoinPrice, BurnMintPair, LedgerRecordID, LedgerPendingRecord, LedgerRecord, Status, MintEpoch, MintStatus, LedgerRecordStatus } from "./akash/bme/v1/types.ts"; export { EventMintStatusChange, EventVaultSeeded, EventLedgerRecordExecuted } from "./akash/bme/v1/events.ts"; +export { LedgerRecordFilters } from "./akash/bme/v1/filters.ts"; export { Params } from "./akash/bme/v1/params.ts"; export { GenesisLedgerRecord, GenesisLedgerPendingRecord, GenesisLedgerState, GenesisVaultState, GenesisState as Bme_GenesisState } from "./akash/bme/v1/genesis.ts"; export { MsgUpdateParams, MsgUpdateParamsResponse, MsgSeedVault, MsgSeedVaultResponse, MsgBurnMint, MsgMintACT, MsgBurnACT, MsgBurnMintResponse, MsgMintACTResponse, MsgBurnACTResponse } from "./akash/bme/v1/msgs.ts"; -export { QueryParamsRequest, QueryParamsResponse, QueryVaultStateRequest, QueryVaultStateResponse, QueryStatusRequest, QueryStatusResponse } from "./akash/bme/v1/query.ts"; +export { QueryParamsRequest, QueryParamsResponse, QueryVaultStateRequest, QueryVaultStateResponse, QueryStatusRequest, QueryStatusResponse, QueryLedgerRecordEntry, QueryLedgerRecordsRequest, QueryLedgerRecordsResponse } from "./akash/bme/v1/query.ts"; export { ID, Certificate, State as Cert_State } from "./akash/cert/v1/cert.ts"; export { CertificateFilter } from "./akash/cert/v1/filters.ts"; export { GenesisCertificate, GenesisState as Cert_GenesisState } from "./akash/cert/v1/genesis.ts"; @@ -40,7 +41,7 @@ export { EventOrderCreated, EventOrderClosed, EventBidCreated, EventBidClosed, E export { LeaseFilters } from "./akash/market/v1/filters.ts"; export { DataID, PriceDataID, PriceDataRecordID, PriceDataState, PriceData, AggregatedPrice, PriceHealth, PricesFilter, QueryPricesRequest, QueryPricesResponse } from "./akash/oracle/v1/prices.ts"; export { EventPriceData, EventPriceStaleWarning, EventPriceStaled, EventPriceRecovered } from "./akash/oracle/v1/events.ts"; -export { PythContractParams, Params as Oracle_Params } from "./akash/oracle/v1/params.ts"; +export { PythContractParams, WormholeContractParams, Params as Oracle_Params } from "./akash/oracle/v1/params.ts"; export { GenesisState as Oracle_GenesisState } from "./akash/oracle/v1/genesis.ts"; export { MsgAddPriceEntry, MsgAddPriceEntryResponse, MsgUpdateParams as Oracle_MsgUpdateParams, MsgUpdateParamsResponse as Oracle_MsgUpdateParamsResponse } from "./akash/oracle/v1/msgs.ts"; export { QueryParamsRequest as Oracle_QueryParamsRequest, QueryParamsResponse as Oracle_QueryParamsResponse, QueryPriceFeedConfigRequest, QueryPriceFeedConfigResponse, QueryAggregatedPriceRequest, QueryAggregatedPriceResponse } from "./akash/oracle/v1/query.ts";