diff --git a/proto/interchain_security/ccv/provider/v1/query.proto b/proto/interchain_security/ccv/provider/v1/query.proto index f6d2f406aa..42c5f40974 100644 --- a/proto/interchain_security/ccv/provider/v1/query.proto +++ b/proto/interchain_security/ccv/provider/v1/query.proto @@ -64,11 +64,11 @@ service Query { "/interchain_security/ccv/provider/registered_consumer_reward_denoms"; } - // QueryAllPairsValConAddrByConsumerChainID returns a list of pair valconsensus address + // QueryAllPairsValConsAddrByConsumer returns a list of pair valconsensus address // between provider and consumer chain - rpc QueryAllPairsValConAddrByConsumerChainID ( - QueryAllPairsValConAddrByConsumerChainIDRequest) - returns (QueryAllPairsValConAddrByConsumerChainIDResponse) { + rpc QueryAllPairsValConsAddrByConsumer ( + QueryAllPairsValConsAddrByConsumerRequest) + returns (QueryAllPairsValConsAddrByConsumerResponse) { option (google.api.http) = { get: "/interchain_security/ccv/provider/address_pairs/{consumer_id}"; }; @@ -110,7 +110,7 @@ service Query { }; } - // QueryConsumerValidators returns the latest set consumer-validator set for a given chainID + // QueryConsumerValidators returns the latest set consumer-validator set for a given consumer ID // Note that this does not necessarily mean that the consumer chain is using this validator set at this exact moment // because a VSCPacket could be delayed to be delivered on the consumer chain. rpc QueryConsumerValidators(QueryConsumerValidatorsRequest) @@ -168,7 +168,6 @@ message QueryConsumerChainsResponse { repeated Chain chains = 1; } message Chain { string chain_id = 1; string client_id = 2; - // If chain with `chainID` is a Top-N chain, i.e., enforces at least one validator to validate chain `chainID` uint32 top_N = 3; // If the chain is a Top-N chain, this is the minimum power required to be in the top N. // Otherwise, this is -1. @@ -184,13 +183,14 @@ message Chain { // Corresponds to a list of provider consensus addresses of validators that CANNOT validate the consumer chain. repeated string denylist = 8; // The phase the consumer chain (Registered=0|Initialized=1|FailedToLaunch=2|Launched=3|Stopped=4) - ConsumerPhase phase = 9; + string phase = 9; // The metadata of the consumer chain ConsumerMetadata metadata = 10 [(gogoproto.nullable) = false ]; // Corresponds to the minimal amount of (provider chain) stake required to validate on the consumer chain. uint64 min_stake = 11; // Corresponds to whether inactive validators are allowed to validate the consumer chain. bool allow_inactive_vals = 12; + string consumer_id = 13; } message QueryValidatorConsumerAddrRequest { @@ -241,12 +241,12 @@ message QueryRegisteredConsumerRewardDenomsResponse { repeated string denoms = 1; } -message QueryAllPairsValConAddrByConsumerChainIDRequest { +message QueryAllPairsValConsAddrByConsumerRequest { // The id of the consumer chain string consumer_id = 1; } -message QueryAllPairsValConAddrByConsumerChainIDResponse { +message QueryAllPairsValConsAddrByConsumerResponse { repeated PairValConAddrProviderAndConsumer pair_val_con_addr = 1; } @@ -332,7 +332,7 @@ message QueryConsumerChainsValidatorHasToValidateRequest { } message QueryConsumerChainsValidatorHasToValidateResponse { - repeated string consumer_chain_ids = 1; + repeated string consumer_ids = 1; } message QueryValidatorConsumerCommissionRateRequest { diff --git a/x/ccv/provider/client/cli/query.go b/x/ccv/provider/client/cli/query.go index be516d584f..c249aa5264 100644 --- a/x/ccv/provider/client/cli/query.go +++ b/x/ccv/provider/client/cli/query.go @@ -31,7 +31,7 @@ func NewQueryCmd() *cobra.Command { cmd.AddCommand(CmdProviderValidatorKey()) cmd.AddCommand(CmdThrottleState()) cmd.AddCommand(CmdRegisteredConsumerRewardDenoms()) - cmd.AddCommand(CmdAllPairsValConAddrByConsumerChainID()) + cmd.AddCommand(CmdAllPairsValConsAddrByConsumer()) cmd.AddCommand(CmdProviderParameters()) cmd.AddCommand(CmdConsumerChainOptedInValidators()) cmd.AddCommand(CmdConsumerValidators()) @@ -123,13 +123,13 @@ func CmdConsumerChains() *cobra.Command { func CmdConsumerValidatorKeyAssignment() *cobra.Command { bech32PrefixConsAddr := sdk.GetConfig().GetBech32ConsensusAddrPrefix() cmd := &cobra.Command{ - Use: "validator-consumer-key [chainid] [provider-validator-address]", + Use: "validator-consumer-key [consumerId] [provider-validator-address]", Short: "Query assigned validator consensus public key for a consumer chain", Long: strings.TrimSpace( fmt.Sprintf(`Returns the currently assigned validator consensus public key for a consumer chain, if one has been assigned. Example: -$ %s query provider validator-consumer-key foochain %s1gghjut3ccd8ay0zduzj64hwre2fxs9ldmqhffj +$ %s query provider validator-consumer-key 3 %s1gghjut3ccd8ay0zduzj64hwre2fxs9ldmqhffj `, version.AppName, bech32PrefixConsAddr, ), @@ -285,10 +285,10 @@ $ %s query provider registered-consumer-reward-denoms return cmd } -func CmdAllPairsValConAddrByConsumerChainID() *cobra.Command { +func CmdAllPairsValConsAddrByConsumer() *cobra.Command { cmd := &cobra.Command{ - Use: "all-pairs-valconsensus-address [consumer-chain-id]", - Short: "Query all pairs of valconsensus address by consumer chainId.", + Use: "all-pairs-valconsensus-address [consumer-id]", + Short: "Query all pairs of valconsensus address by consumer ID.", Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { clientCtx, err := client.GetClientQueryContext(cmd) @@ -297,8 +297,8 @@ func CmdAllPairsValConAddrByConsumerChainID() *cobra.Command { } queryClient := types.NewQueryClient(clientCtx) - req := types.QueryAllPairsValConAddrByConsumerChainIDRequest{ConsumerId: args[0]} - res, err := queryClient.QueryAllPairsValConAddrByConsumerChainID(cmd.Context(), &req) + req := types.QueryAllPairsValConsAddrByConsumerRequest{ConsumerId: args[0]} + res, err := queryClient.QueryAllPairsValConsAddrByConsumer(cmd.Context(), &req) if err != nil { return err } @@ -346,15 +346,15 @@ $ %s query provider params return cmd } -// Command to query opted-in validators by consumer chain ID +// Command to query opted-in validators by consumer ID func CmdConsumerChainOptedInValidators() *cobra.Command { cmd := &cobra.Command{ - Use: "consumer-opted-in-validators [chainid]", + Use: "consumer-opted-in-validators [consumer-id]", Short: "Query opted-in validators for a given consumer chain", Long: strings.TrimSpace( fmt.Sprintf(`Query opted-in validators for a given consumer chain. Example: -$ %s consumer-opted-in-validators foochain +$ %s consumer-opted-in-validators 3 `, version.AppName), ), Args: cobra.ExactArgs(1), @@ -380,16 +380,16 @@ $ %s consumer-opted-in-validators foochain return cmd } -// Command to query the consumer validators by consumer chain ID +// Command to query the consumer validators by consumer ID func CmdConsumerValidators() *cobra.Command { cmd := &cobra.Command{ - Use: "consumer-validators [chainid]", + Use: "consumer-validators [consumer-id]", Short: "Query the last set consumer-validator set for a given consumer chain", Long: strings.TrimSpace( fmt.Sprintf(`Query the last set consumer-validator set for a given consumer chain. Note that this does not necessarily mean that the consumer chain is currently using this validator set because a VSCPacket could be delayed, etc. Example: -$ %s consumer-validators foochain +$ %s consumer-validators 3 `, version.AppName), ), Args: cobra.ExactArgs(1), @@ -462,12 +462,12 @@ $ %s has-to-validate %s1gghjut3ccd8ay0zduzj64hwre2fxs9ldmqhffj func CmdValidatorConsumerCommissionRate() *cobra.Command { bech32PrefixConsAddr := sdk.GetConfig().GetBech32ConsensusAddrPrefix() cmd := &cobra.Command{ - Use: "validator-consumer-commission-rate [chainid] [provider-validator-address]", + Use: "validator-consumer-commission-rate [consumer-id] [provider-validator-address]", Short: "Query the consumer commission rate a validator charges on a consumer chain", Long: strings.TrimSpace( fmt.Sprintf(`Query the consumer commission rate a validator charges on a consumer chain. Example: -$ %s validator-consumer-commission-rate foochain %s1gghjut3ccd8ay0zduzj64hwre2fxs9ldmqhffj +$ %s validator-consumer-commission-rate 3 %s1gghjut3ccd8ay0zduzj64hwre2fxs9ldmqhffj `, version.AppName, bech32PrefixConsAddr), ), Args: cobra.ExactArgs(2), diff --git a/x/ccv/provider/keeper/grpc_query.go b/x/ccv/provider/keeper/grpc_query.go index 57dd6ce317..08c93fae08 100644 --- a/x/ccv/provider/keeper/grpc_query.go +++ b/x/ccv/provider/keeper/grpc_query.go @@ -5,14 +5,12 @@ import ( "context" "fmt" "sort" - "strconv" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" errorsmod "cosmossdk.io/errors" - "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/interchain-security/v5/x/ccv/provider/types" ccvtypes "github.com/cosmos/interchain-security/v5/x/ccv/types" @@ -51,31 +49,13 @@ func (k Keeper) QueryConsumerChains(goCtx context.Context, req *types.QueryConsu ctx := sdk.UnwrapSDKContext(goCtx) consumerIds := []string{} - phaseFilter := req.Phase - - // if the phase filter is set Launched get consumer from the state directly - if phaseFilter == types.ConsumerPhase_CONSUMER_PHASE_LAUNCHED { - consumerIds = append(consumerIds, k.GetAllRegisteredConsumerIds(ctx)...) - // otherwise iterate over all the consumer using the last unused consumer Id - } else { - firstUnusedConsumerId, ok := k.GetConsumerId(ctx) - if !ok { - return &types.QueryConsumerChainsResponse{}, nil - } - for i := uint64(0); i < firstUnusedConsumerId; i++ { - // if the phase filter is set, verify that the consumer has the same phase - if phaseFilter != types.ConsumerPhase_CONSUMER_PHASE_UNSPECIFIED { - p := k.GetConsumerPhase(ctx, strconv.FormatInt(int64(i), 10)) - if p == types.ConsumerPhase_CONSUMER_PHASE_UNSPECIFIED { - return nil, status.Error(codes.Internal, fmt.Sprintf("cannot retrieve phase for consumer id: %d", i)) - } - if p != phaseFilter { - continue - } - } - - consumerIds = append(consumerIds, strconv.FormatInt(int64(i), 10)) + for _, consumerID := range k.GetAllConsumerIds(ctx) { + phase := k.GetConsumerPhase(ctx, consumerID) + if req.Phase != types.ConsumerPhase_CONSUMER_PHASE_UNSPECIFIED && req.Phase != phase { + // ignore consumer chain + continue } + consumerIds = append(consumerIds, consumerID) } // set limit to default value @@ -84,12 +64,12 @@ func (k Keeper) QueryConsumerChains(goCtx context.Context, req *types.QueryConsu // update limit if specified limit = int(req.Limit) } + if len(consumerIds) > limit { + consumerIds = consumerIds[:limit] + } - chains := make([]*types.Chain, math.Min(len(consumerIds), limit)) + chains := make([]*types.Chain, len(consumerIds)) for i, cID := range consumerIds { - if i == limit { - break - } c, err := k.GetConsumerChain(ctx, cID) if err != nil { return nil, status.Error(codes.Internal, err.Error()) @@ -108,6 +88,7 @@ func (k Keeper) GetConsumerChain(ctx sdk.Context, consumerId string) (types.Chai } clientID, _ := k.GetConsumerClientId(ctx, consumerId) + powerShapingParameters, err := k.GetConsumerPowerShapingParameters(ctx, consumerId) if err != nil { return types.Chain{}, fmt.Errorf("cannot find power shaping parameters for consumer (%s): %s", consumerId, err.Error()) @@ -116,15 +97,9 @@ func (k Keeper) GetConsumerChain(ctx sdk.Context, consumerId string) (types.Chai // Get the minimal power in the top N for the consumer chain minPowerInTopN, found := k.GetMinimumPowerInTopN(ctx, consumerId) if !found { - k.Logger(ctx).Error("failed to get minimum power in top N, treating as -1", "chain", consumerId) minPowerInTopN = -1 } - phase := k.GetConsumerPhase(ctx, consumerId) - if phase == types.ConsumerPhase_CONSUMER_PHASE_UNSPECIFIED { - return types.Chain{}, fmt.Errorf("cannot find phase for consumer (%s)", consumerId) - } - allowlist := k.GetAllowList(ctx, consumerId) strAllowlist := make([]string, len(allowlist)) for i, addr := range allowlist { @@ -148,10 +123,11 @@ func (k Keeper) GetConsumerChain(ctx sdk.Context, consumerId string) (types.Chai ValidatorsPowerCap: powerShapingParameters.ValidatorsPowerCap, Allowlist: strAllowlist, Denylist: strDenylist, - Phase: phase, + Phase: k.GetConsumerPhase(ctx, consumerId).String(), Metadata: metadata, AllowInactiveVals: powerShapingParameters.AllowInactiveVals, MinStake: powerShapingParameters.MinStake, + ConsumerId: consumerId, }, nil } @@ -243,7 +219,10 @@ func (k Keeper) QueryRegisteredConsumerRewardDenoms(goCtx context.Context, req * }, nil } -func (k Keeper) QueryAllPairsValConAddrByConsumerChainID(goCtx context.Context, req *types.QueryAllPairsValConAddrByConsumerChainIDRequest) (*types.QueryAllPairsValConAddrByConsumerChainIDResponse, error) { +func (k Keeper) QueryAllPairsValConsAddrByConsumer( + goCtx context.Context, + req *types.QueryAllPairsValConsAddrByConsumerRequest, +) (*types.QueryAllPairsValConsAddrByConsumerResponse, error) { if req == nil { return nil, status.Errorf(codes.InvalidArgument, "empty request") } @@ -270,7 +249,7 @@ func (k Keeper) QueryAllPairsValConAddrByConsumerChainID(goCtx context.Context, }) } - return &types.QueryAllPairsValConAddrByConsumerChainIDResponse{ + return &types.QueryAllPairsValConsAddrByConsumerResponse{ PairValConAddr: pairValConAddrs, }, nil } @@ -445,14 +424,14 @@ func (k Keeper) QueryConsumerChainsValidatorHasToValidate(goCtx context.Context, // get all the consumer chains for which the validator is either already // opted-in, currently a consumer validator or if its voting power is within the TopN validators consumersToValidate := []string{} - for _, consumerChainID := range k.GetAllRegisteredConsumerIds(ctx) { - if hasToValidate, err := k.hasToValidate(ctx, provAddr, consumerChainID); err == nil && hasToValidate { - consumersToValidate = append(consumersToValidate, consumerChainID) + for _, consumerId := range k.GetAllLaunchedConsumerIds(ctx) { + if hasToValidate, err := k.hasToValidate(ctx, provAddr, consumerId); err == nil && hasToValidate { + consumersToValidate = append(consumersToValidate, consumerId) } } return &types.QueryConsumerChainsValidatorHasToValidateResponse{ - ConsumerChainIds: consumersToValidate, + ConsumerIds: consumersToValidate, }, nil } diff --git a/x/ccv/provider/keeper/grpc_query_test.go b/x/ccv/provider/keeper/grpc_query_test.go index 9d91bd25f7..5c55979dfa 100644 --- a/x/ccv/provider/keeper/grpc_query_test.go +++ b/x/ccv/provider/keeper/grpc_query_test.go @@ -6,7 +6,6 @@ import ( "sort" "strconv" "testing" - "time" "github.com/golang/mock/gomock" "github.com/stretchr/testify/require" @@ -25,7 +24,7 @@ import ( ccvtypes "github.com/cosmos/interchain-security/v5/x/ccv/types" ) -func TestQueryAllPairsValConAddrByConsumerChainID(t *testing.T) { +func TestQueryAllPairsValConsAddrByConsumer(t *testing.T) { consumerId := "0" providerConsAddress, err := sdk.ConsAddressFromBech32("cosmosvalcons1wpex7anfv3jhystyv3eq20r35a") @@ -47,19 +46,19 @@ func TestQueryAllPairsValConAddrByConsumerChainID(t *testing.T) { require.Equal(t, consumerPubKey, consumerKey) // Request is nil - _, err = pk.QueryAllPairsValConAddrByConsumerChainID(ctx, nil) + _, err = pk.QueryAllPairsValConsAddrByConsumer(ctx, nil) require.Error(t, err) // Request with empty consumer id - _, err = pk.QueryAllPairsValConAddrByConsumerChainID(ctx, &types.QueryAllPairsValConAddrByConsumerChainIDRequest{}) + _, err = pk.QueryAllPairsValConsAddrByConsumer(ctx, &types.QueryAllPairsValConsAddrByConsumerRequest{}) require.Error(t, err) // Request with invalid consumer id - _, err = pk.QueryAllPairsValConAddrByConsumerChainID(ctx, &types.QueryAllPairsValConAddrByConsumerChainIDRequest{ConsumerId: "invalidConsumerId"}) + _, err = pk.QueryAllPairsValConsAddrByConsumer(ctx, &types.QueryAllPairsValConsAddrByConsumerRequest{ConsumerId: "invalidConsumerId"}) require.Error(t, err) // Request is valid - response, err := pk.QueryAllPairsValConAddrByConsumerChainID(ctx, &types.QueryAllPairsValConAddrByConsumerChainIDRequest{ConsumerId: consumerId}) + response, err := pk.QueryAllPairsValConsAddrByConsumer(ctx, &types.QueryAllPairsValConsAddrByConsumerRequest{ConsumerId: consumerId}) require.NoError(t, err) expectedResult := types.PairValConAddrProviderAndConsumer{ @@ -304,16 +303,28 @@ func TestQueryConsumerChainsValidatorHasToValidate(t *testing.T) { ProviderAddress: providerAddr.String(), } + consumerNum := 4 + consumerIds := make([]string, consumerNum) + + msgServer := keeper.NewMsgServerImpl(&pk) + // set up some consumer chains - consumerIDs := []string{"1", "23", "456", "6789"} - for _, cID := range consumerIDs { - pk.SetConsumerClientId(ctx, cID, "clientID") - err := pk.SetConsumerPowerShapingParameters(ctx, cID, types.PowerShapingParameters{}) + for i := 0; i < consumerNum; i++ { + chainID := "consumer-" + strconv.Itoa(i) + metadata := types.ConsumerMetadata{Name: chainID} + msg := types.MsgCreateConsumer{ + ChainId: chainID, + Metadata: metadata, + } + resp, err := msgServer.CreateConsumer(ctx, &msg) require.NoError(t, err) + consumerId := resp.ConsumerId + pk.SetConsumerPhase(ctx, consumerId, types.ConsumerPhase_CONSUMER_PHASE_LAUNCHED) + consumerIds[i] = consumerId } // set `providerAddr` as a consumer validator on first consumer chain - pk.SetConsumerValidator(ctx, consumerIDs[0], types.ConsensusValidator{ + pk.SetConsumerValidator(ctx, consumerIds[0], types.ConsensusValidator{ ProviderConsAddr: providerAddr.ToSdkConsAddr(), Power: 1, PublicKey: &crypto.PublicKey{ @@ -324,7 +335,7 @@ func TestQueryConsumerChainsValidatorHasToValidate(t *testing.T) { }) // set `providerAddr` as an opted-in validator on third consumer chain - pk.SetOptedIn(ctx, consumerIDs[2], providerAddr) + pk.SetOptedIn(ctx, consumerIds[2], providerAddr) // set max provider consensus vals to include all validators params := pk.GetParams(ctx) @@ -334,11 +345,11 @@ func TestQueryConsumerChainsValidatorHasToValidate(t *testing.T) { // `providerAddr` has to validate // - first consumer because it is a consumer validator in this chain, // - third consumer because it opted in - expectedChains := []string{consumerIDs[0], consumerIDs[2]} + expectedChains := []string{consumerIds[0], consumerIds[2]} res, err := pk.QueryConsumerChainsValidatorHasToValidate(ctx, &req) require.NoError(t, err) - require.Equal(t, expectedChains, res.ConsumerChainIds) + require.Equal(t, expectedChains, res.ConsumerIds) } func TestQueryValidatorConsumerCommissionRate(t *testing.T) { @@ -487,10 +498,11 @@ func TestGetConsumerChain(t *testing.T) { ValidatorsPowerCap: validatorPowerCaps[i], Allowlist: strAllowlist, Denylist: strDenylist, - Phase: phase, + Phase: phase.String(), Metadata: metadataLists[i], AllowInactiveVals: allowInactiveVals[i], MinStake: minStakes[i].Uint64(), + ConsumerId: consumerIDs[i], }) } @@ -603,10 +615,28 @@ func TestQueryConsumerChains(t *testing.T) { require.NoError(t, err) require.Len(t, res.Chains, 0) + msgServer := keeper.NewMsgServerImpl(&pk) + + phases := []types.ConsumerPhase{ + types.ConsumerPhase_CONSUMER_PHASE_REGISTERED, + types.ConsumerPhase_CONSUMER_PHASE_INITIALIZED, + types.ConsumerPhase_CONSUMER_PHASE_LAUNCHED, + types.ConsumerPhase_CONSUMER_PHASE_STOPPED, + } + // create four consumer chains in different phase for i := 0; i < consumerNum; i++ { - cID := pk.FetchAndIncrementConsumerId(ctx) chainID := "consumer-" + strconv.Itoa(i) + metadata := types.ConsumerMetadata{Name: chainID} + msg := types.MsgCreateConsumer{ + ChainId: chainID, + Metadata: metadata, + } + resp, err := msgServer.CreateConsumer(ctx, &msg) + require.NoError(t, err) + consumerId := resp.ConsumerId + + pk.SetConsumerPhase(ctx, consumerId, phases[i]) c := types.Chain{ ChainId: chainID, MinPowerInTop_N: -1, @@ -614,17 +644,11 @@ func TestQueryConsumerChains(t *testing.T) { ValidatorSetCap: 0, Allowlist: []string{}, Denylist: []string{}, - Phase: types.ConsumerPhase(i + 1), - Metadata: types.ConsumerMetadata{Name: chainID}, + Phase: phases[i].String(), + Metadata: metadata, + ConsumerId: consumerId, } - pk.SetConsumerPhase(ctx, cID, c.Phase) - err := pk.SetConsumerMetadata(ctx, cID, c.Metadata) - require.NoError(t, err) - err = pk.SetConsumerPowerShapingParameters(ctx, cID, types.PowerShapingParameters{}) - require.NoError(t, err) - pk.SetConsumerChainId(ctx, cID, chainID) - - consumerIds[i] = cID + consumerIds[i] = consumerId consumers[i] = &c } @@ -649,7 +673,7 @@ func TestQueryConsumerChains(t *testing.T) { { name: "expect registered consumers when phase filter is set to Registered", setup: func(ctx sdk.Context, pk keeper.Keeper) { - consumers[0].Phase = types.ConsumerPhase_CONSUMER_PHASE_REGISTERED + consumers[0].Phase = types.ConsumerPhase_CONSUMER_PHASE_REGISTERED.String() pk.SetConsumerPhase(ctx, consumerIds[0], types.ConsumerPhase_CONSUMER_PHASE_REGISTERED) }, phase_filter: types.ConsumerPhase_CONSUMER_PHASE_REGISTERED, @@ -658,9 +682,7 @@ func TestQueryConsumerChains(t *testing.T) { { name: "expect initialized consumers when phase is set to Initialized", setup: func(ctx sdk.Context, pk keeper.Keeper) { - consumers[1].Phase = types.ConsumerPhase_CONSUMER_PHASE_INITIALIZED - err := pk.AppendConsumerToBeLaunched(ctx, consumerIds[1], time.Now()) - require.NoError(t, err) + consumers[1].Phase = types.ConsumerPhase_CONSUMER_PHASE_INITIALIZED.String() pk.SetConsumerPhase(ctx, consumerIds[1], types.ConsumerPhase_CONSUMER_PHASE_INITIALIZED) }, phase_filter: types.ConsumerPhase_CONSUMER_PHASE_INITIALIZED, @@ -669,9 +691,7 @@ func TestQueryConsumerChains(t *testing.T) { { name: "expect launched consumers when phase is set to Launched", setup: func(ctx sdk.Context, pk keeper.Keeper) { - consumers[2].Phase = types.ConsumerPhase_CONSUMER_PHASE_LAUNCHED - consumers[2].ClientId = "ClientID" - pk.SetConsumerClientId(ctx, consumerIds[2], consumers[2].ClientId) + consumers[2].Phase = types.ConsumerPhase_CONSUMER_PHASE_LAUNCHED.String() pk.SetConsumerPhase(ctx, consumerIds[2], types.ConsumerPhase_CONSUMER_PHASE_LAUNCHED) }, phase_filter: types.ConsumerPhase_CONSUMER_PHASE_LAUNCHED, @@ -680,7 +700,7 @@ func TestQueryConsumerChains(t *testing.T) { { name: "expect stopped consumers when phase is set to Stopped", setup: func(ctx sdk.Context, pk keeper.Keeper) { - consumers[3].Phase = types.ConsumerPhase_CONSUMER_PHASE_STOPPED + consumers[3].Phase = types.ConsumerPhase_CONSUMER_PHASE_STOPPED.String() pk.SetConsumerPhase(ctx, consumerIds[3], types.ConsumerPhase_CONSUMER_PHASE_STOPPED) }, phase_filter: types.ConsumerPhase_CONSUMER_PHASE_STOPPED, @@ -700,7 +720,7 @@ func TestQueryConsumerChains(t *testing.T) { } res, err := pk.QueryConsumerChains(ctx, &req) require.NoError(t, err) - require.Equal(t, &expectedResponse, res) + require.Equal(t, &expectedResponse, res, tc.name) }) } } diff --git a/x/ccv/provider/keeper/keeper.go b/x/ccv/provider/keeper/keeper.go index b4c037c0c3..5274753f31 100644 --- a/x/ccv/provider/keeper/keeper.go +++ b/x/ccv/provider/keeper/keeper.go @@ -712,8 +712,8 @@ func (k Keeper) BondDenom(ctx sdk.Context) (string, error) { return k.stakingKeeper.BondDenom(ctx) } -// GetAllActiveConsumerIds returns all the consumer ids of chains that are registered, initialized, or launched -func (k Keeper) GetAllActiveConsumerIds(ctx sdk.Context) []string { +// GetAllConsumerIds returns all the existing consumer ids +func (k Keeper) GetAllConsumerIds(ctx sdk.Context) []string { latestConsumerId, found := k.GetConsumerId(ctx) if !found { return []string{} @@ -722,12 +722,33 @@ func (k Keeper) GetAllActiveConsumerIds(ctx sdk.Context) []string { consumerIds := []string{} for i := uint64(0); i < latestConsumerId; i++ { consumerId := fmt.Sprintf("%d", i) + consumerIds = append(consumerIds, consumerId) + } + + return consumerIds +} + +// GetAllActiveConsumerIds returns all the consumer ids of chains that are registered, initialized, or launched +func (k Keeper) GetAllActiveConsumerIds(ctx sdk.Context) []string { + consumerIds := []string{} + for _, consumerId := range k.GetAllConsumerIds(ctx) { if !k.IsConsumerActive(ctx, consumerId) { continue } consumerIds = append(consumerIds, consumerId) } + return consumerIds +} +// GetAllLaunchedConsumerIds returns all the consumer ids of chains that are launched +func (k Keeper) GetAllLaunchedConsumerIds(ctx sdk.Context) []string { + consumerIds := []string{} + for _, consumerId := range k.GetAllConsumerIds(ctx) { + if phase := k.GetConsumerPhase(ctx, consumerId); phase != types.ConsumerPhase_CONSUMER_PHASE_LAUNCHED { + continue + } + consumerIds = append(consumerIds, consumerId) + } return consumerIds } diff --git a/x/ccv/provider/types/query.pb.go b/x/ccv/provider/types/query.pb.go index 161c4e70f9..88d4b2ac69 100644 --- a/x/ccv/provider/types/query.pb.go +++ b/x/ccv/provider/types/query.pb.go @@ -229,8 +229,7 @@ func (m *QueryConsumerChainsResponse) GetChains() []*Chain { type Chain struct { ChainId string `protobuf:"bytes,1,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"` ClientId string `protobuf:"bytes,2,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"` - // If chain with `chainID` is a Top-N chain, i.e., enforces at least one validator to validate chain `chainID` - Top_N uint32 `protobuf:"varint,3,opt,name=top_N,json=topN,proto3" json:"top_N,omitempty"` + Top_N uint32 `protobuf:"varint,3,opt,name=top_N,json=topN,proto3" json:"top_N,omitempty"` // If the chain is a Top-N chain, this is the minimum power required to be in the top N. // Otherwise, this is -1. MinPowerInTop_N int64 `protobuf:"varint,4,opt,name=min_power_in_top_N,json=minPowerInTopN,proto3" json:"min_power_in_top_N,omitempty"` @@ -245,13 +244,14 @@ type Chain struct { // Corresponds to a list of provider consensus addresses of validators that CANNOT validate the consumer chain. Denylist []string `protobuf:"bytes,8,rep,name=denylist,proto3" json:"denylist,omitempty"` // The phase the consumer chain (Registered=0|Initialized=1|FailedToLaunch=2|Launched=3|Stopped=4) - Phase ConsumerPhase `protobuf:"varint,9,opt,name=phase,proto3,enum=interchain_security.ccv.provider.v1.ConsumerPhase" json:"phase,omitempty"` + Phase string `protobuf:"bytes,9,opt,name=phase,proto3" json:"phase,omitempty"` // The metadata of the consumer chain Metadata ConsumerMetadata `protobuf:"bytes,10,opt,name=metadata,proto3" json:"metadata"` // Corresponds to the minimal amount of (provider chain) stake required to validate on the consumer chain. MinStake uint64 `protobuf:"varint,11,opt,name=min_stake,json=minStake,proto3" json:"min_stake,omitempty"` // Corresponds to whether inactive validators are allowed to validate the consumer chain. - AllowInactiveVals bool `protobuf:"varint,12,opt,name=allow_inactive_vals,json=allowInactiveVals,proto3" json:"allow_inactive_vals,omitempty"` + AllowInactiveVals bool `protobuf:"varint,12,opt,name=allow_inactive_vals,json=allowInactiveVals,proto3" json:"allow_inactive_vals,omitempty"` + ConsumerId string `protobuf:"bytes,13,opt,name=consumer_id,json=consumerId,proto3" json:"consumer_id,omitempty"` } func (m *Chain) Reset() { *m = Chain{} } @@ -343,11 +343,11 @@ func (m *Chain) GetDenylist() []string { return nil } -func (m *Chain) GetPhase() ConsumerPhase { +func (m *Chain) GetPhase() string { if m != nil { return m.Phase } - return ConsumerPhase_CONSUMER_PHASE_UNSPECIFIED + return "" } func (m *Chain) GetMetadata() ConsumerMetadata { @@ -371,6 +371,13 @@ func (m *Chain) GetAllowInactiveVals() bool { return false } +func (m *Chain) GetConsumerId() string { + if m != nil { + return m.ConsumerId + } + return "" +} + type QueryValidatorConsumerAddrRequest struct { // The consensus address of the validator on the provider chain ProviderAddress string `protobuf:"bytes,1,opt,name=provider_address,json=providerAddress,proto3" json:"provider_address,omitempty" yaml:"address"` @@ -730,27 +737,27 @@ func (m *QueryRegisteredConsumerRewardDenomsResponse) GetDenoms() []string { return nil } -type QueryAllPairsValConAddrByConsumerChainIDRequest struct { +type QueryAllPairsValConsAddrByConsumerRequest struct { // The id of the consumer chain ConsumerId string `protobuf:"bytes,1,opt,name=consumer_id,json=consumerId,proto3" json:"consumer_id,omitempty"` } -func (m *QueryAllPairsValConAddrByConsumerChainIDRequest) Reset() { - *m = QueryAllPairsValConAddrByConsumerChainIDRequest{} +func (m *QueryAllPairsValConsAddrByConsumerRequest) Reset() { + *m = QueryAllPairsValConsAddrByConsumerRequest{} } -func (m *QueryAllPairsValConAddrByConsumerChainIDRequest) String() string { +func (m *QueryAllPairsValConsAddrByConsumerRequest) String() string { return proto.CompactTextString(m) } -func (*QueryAllPairsValConAddrByConsumerChainIDRequest) ProtoMessage() {} -func (*QueryAllPairsValConAddrByConsumerChainIDRequest) Descriptor() ([]byte, []int) { +func (*QueryAllPairsValConsAddrByConsumerRequest) ProtoMessage() {} +func (*QueryAllPairsValConsAddrByConsumerRequest) Descriptor() ([]byte, []int) { return fileDescriptor_422512d7b7586cd7, []int{13} } -func (m *QueryAllPairsValConAddrByConsumerChainIDRequest) XXX_Unmarshal(b []byte) error { +func (m *QueryAllPairsValConsAddrByConsumerRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *QueryAllPairsValConAddrByConsumerChainIDRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *QueryAllPairsValConsAddrByConsumerRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_QueryAllPairsValConAddrByConsumerChainIDRequest.Marshal(b, m, deterministic) + return xxx_messageInfo_QueryAllPairsValConsAddrByConsumerRequest.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -760,45 +767,45 @@ func (m *QueryAllPairsValConAddrByConsumerChainIDRequest) XXX_Marshal(b []byte, return b[:n], nil } } -func (m *QueryAllPairsValConAddrByConsumerChainIDRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryAllPairsValConAddrByConsumerChainIDRequest.Merge(m, src) +func (m *QueryAllPairsValConsAddrByConsumerRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryAllPairsValConsAddrByConsumerRequest.Merge(m, src) } -func (m *QueryAllPairsValConAddrByConsumerChainIDRequest) XXX_Size() int { +func (m *QueryAllPairsValConsAddrByConsumerRequest) XXX_Size() int { return m.Size() } -func (m *QueryAllPairsValConAddrByConsumerChainIDRequest) XXX_DiscardUnknown() { - xxx_messageInfo_QueryAllPairsValConAddrByConsumerChainIDRequest.DiscardUnknown(m) +func (m *QueryAllPairsValConsAddrByConsumerRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryAllPairsValConsAddrByConsumerRequest.DiscardUnknown(m) } -var xxx_messageInfo_QueryAllPairsValConAddrByConsumerChainIDRequest proto.InternalMessageInfo +var xxx_messageInfo_QueryAllPairsValConsAddrByConsumerRequest proto.InternalMessageInfo -func (m *QueryAllPairsValConAddrByConsumerChainIDRequest) GetConsumerId() string { +func (m *QueryAllPairsValConsAddrByConsumerRequest) GetConsumerId() string { if m != nil { return m.ConsumerId } return "" } -type QueryAllPairsValConAddrByConsumerChainIDResponse struct { +type QueryAllPairsValConsAddrByConsumerResponse struct { PairValConAddr []*PairValConAddrProviderAndConsumer `protobuf:"bytes,1,rep,name=pair_val_con_addr,json=pairValConAddr,proto3" json:"pair_val_con_addr,omitempty"` } -func (m *QueryAllPairsValConAddrByConsumerChainIDResponse) Reset() { - *m = QueryAllPairsValConAddrByConsumerChainIDResponse{} +func (m *QueryAllPairsValConsAddrByConsumerResponse) Reset() { + *m = QueryAllPairsValConsAddrByConsumerResponse{} } -func (m *QueryAllPairsValConAddrByConsumerChainIDResponse) String() string { +func (m *QueryAllPairsValConsAddrByConsumerResponse) String() string { return proto.CompactTextString(m) } -func (*QueryAllPairsValConAddrByConsumerChainIDResponse) ProtoMessage() {} -func (*QueryAllPairsValConAddrByConsumerChainIDResponse) Descriptor() ([]byte, []int) { +func (*QueryAllPairsValConsAddrByConsumerResponse) ProtoMessage() {} +func (*QueryAllPairsValConsAddrByConsumerResponse) Descriptor() ([]byte, []int) { return fileDescriptor_422512d7b7586cd7, []int{14} } -func (m *QueryAllPairsValConAddrByConsumerChainIDResponse) XXX_Unmarshal(b []byte) error { +func (m *QueryAllPairsValConsAddrByConsumerResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *QueryAllPairsValConAddrByConsumerChainIDResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *QueryAllPairsValConsAddrByConsumerResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_QueryAllPairsValConAddrByConsumerChainIDResponse.Marshal(b, m, deterministic) + return xxx_messageInfo_QueryAllPairsValConsAddrByConsumerResponse.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -808,19 +815,19 @@ func (m *QueryAllPairsValConAddrByConsumerChainIDResponse) XXX_Marshal(b []byte, return b[:n], nil } } -func (m *QueryAllPairsValConAddrByConsumerChainIDResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryAllPairsValConAddrByConsumerChainIDResponse.Merge(m, src) +func (m *QueryAllPairsValConsAddrByConsumerResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryAllPairsValConsAddrByConsumerResponse.Merge(m, src) } -func (m *QueryAllPairsValConAddrByConsumerChainIDResponse) XXX_Size() int { +func (m *QueryAllPairsValConsAddrByConsumerResponse) XXX_Size() int { return m.Size() } -func (m *QueryAllPairsValConAddrByConsumerChainIDResponse) XXX_DiscardUnknown() { - xxx_messageInfo_QueryAllPairsValConAddrByConsumerChainIDResponse.DiscardUnknown(m) +func (m *QueryAllPairsValConsAddrByConsumerResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryAllPairsValConsAddrByConsumerResponse.DiscardUnknown(m) } -var xxx_messageInfo_QueryAllPairsValConAddrByConsumerChainIDResponse proto.InternalMessageInfo +var xxx_messageInfo_QueryAllPairsValConsAddrByConsumerResponse proto.InternalMessageInfo -func (m *QueryAllPairsValConAddrByConsumerChainIDResponse) GetPairValConAddr() []*PairValConAddrProviderAndConsumer { +func (m *QueryAllPairsValConsAddrByConsumerResponse) GetPairValConAddr() []*PairValConAddrProviderAndConsumer { if m != nil { return m.PairValConAddr } @@ -1339,7 +1346,7 @@ func (m *QueryConsumerChainsValidatorHasToValidateRequest) GetProviderAddress() } type QueryConsumerChainsValidatorHasToValidateResponse struct { - ConsumerChainIds []string `protobuf:"bytes,1,rep,name=consumer_chain_ids,json=consumerChainIds,proto3" json:"consumer_chain_ids,omitempty"` + ConsumerIds []string `protobuf:"bytes,1,rep,name=consumer_ids,json=consumerIds,proto3" json:"consumer_ids,omitempty"` } func (m *QueryConsumerChainsValidatorHasToValidateResponse) Reset() { @@ -1379,9 +1386,9 @@ func (m *QueryConsumerChainsValidatorHasToValidateResponse) XXX_DiscardUnknown() var xxx_messageInfo_QueryConsumerChainsValidatorHasToValidateResponse proto.InternalMessageInfo -func (m *QueryConsumerChainsValidatorHasToValidateResponse) GetConsumerChainIds() []string { +func (m *QueryConsumerChainsValidatorHasToValidateResponse) GetConsumerIds() []string { if m != nil { - return m.ConsumerChainIds + return m.ConsumerIds } return nil } @@ -1799,8 +1806,8 @@ func init() { proto.RegisterType((*QueryThrottleStateResponse)(nil), "interchain_security.ccv.provider.v1.QueryThrottleStateResponse") proto.RegisterType((*QueryRegisteredConsumerRewardDenomsRequest)(nil), "interchain_security.ccv.provider.v1.QueryRegisteredConsumerRewardDenomsRequest") proto.RegisterType((*QueryRegisteredConsumerRewardDenomsResponse)(nil), "interchain_security.ccv.provider.v1.QueryRegisteredConsumerRewardDenomsResponse") - proto.RegisterType((*QueryAllPairsValConAddrByConsumerChainIDRequest)(nil), "interchain_security.ccv.provider.v1.QueryAllPairsValConAddrByConsumerChainIDRequest") - proto.RegisterType((*QueryAllPairsValConAddrByConsumerChainIDResponse)(nil), "interchain_security.ccv.provider.v1.QueryAllPairsValConAddrByConsumerChainIDResponse") + proto.RegisterType((*QueryAllPairsValConsAddrByConsumerRequest)(nil), "interchain_security.ccv.provider.v1.QueryAllPairsValConsAddrByConsumerRequest") + proto.RegisterType((*QueryAllPairsValConsAddrByConsumerResponse)(nil), "interchain_security.ccv.provider.v1.QueryAllPairsValConsAddrByConsumerResponse") proto.RegisterType((*PairValConAddrProviderAndConsumer)(nil), "interchain_security.ccv.provider.v1.PairValConAddrProviderAndConsumer") proto.RegisterType((*QueryParamsRequest)(nil), "interchain_security.ccv.provider.v1.QueryParamsRequest") proto.RegisterType((*QueryParamsResponse)(nil), "interchain_security.ccv.provider.v1.QueryParamsResponse") @@ -1826,155 +1833,156 @@ func init() { } var fileDescriptor_422512d7b7586cd7 = []byte{ - // 2368 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x5a, 0xcd, 0x6f, 0xdb, 0xc8, - 0x15, 0x37, 0xe5, 0x8f, 0xc8, 0xe3, 0xc4, 0xbb, 0x99, 0x38, 0x89, 0x22, 0x27, 0x96, 0xc3, 0x6c, - 0x00, 0x6f, 0x3e, 0x44, 0x5b, 0x45, 0xba, 0xbb, 0xd9, 0xe6, 0xc3, 0x52, 0xec, 0x44, 0x48, 0x93, - 0x78, 0x69, 0x27, 0x0b, 0x64, 0x91, 0xb2, 0x63, 0x72, 0x56, 0x9a, 0x9a, 0x22, 0x19, 0xce, 0x48, - 0x89, 0xea, 0xfa, 0xd2, 0x53, 0x2e, 0x05, 0xb6, 0x28, 0x7a, 0x2d, 0x16, 0x05, 0x7a, 0x2f, 0x8a, - 0x45, 0x81, 0xfe, 0x07, 0x7b, 0xeb, 0x76, 0x7b, 0x29, 0x0a, 0x34, 0x2d, 0x92, 0x16, 0xe8, 0xa5, - 0x40, 0xbb, 0xed, 0x1f, 0x50, 0x70, 0x38, 0xa4, 0x44, 0x86, 0x96, 0x49, 0xcb, 0x37, 0x71, 0xe6, - 0xbd, 0xdf, 0xfb, 0x98, 0x37, 0x6f, 0xde, 0x7b, 0x36, 0x50, 0x88, 0xc5, 0xb0, 0xab, 0x37, 0x11, - 0xb1, 0x34, 0x8a, 0xf5, 0xb6, 0x4b, 0x58, 0x57, 0xd1, 0xf5, 0x8e, 0xe2, 0xb8, 0x76, 0x87, 0x18, - 0xd8, 0x55, 0x3a, 0x4b, 0xca, 0xd3, 0x36, 0x76, 0xbb, 0x65, 0xc7, 0xb5, 0x99, 0x0d, 0xcf, 0x25, - 0x30, 0x94, 0x75, 0xbd, 0x53, 0x0e, 0x18, 0xca, 0x9d, 0xa5, 0xe2, 0xe9, 0x86, 0x6d, 0x37, 0x4c, - 0xac, 0x20, 0x87, 0x28, 0xc8, 0xb2, 0x6c, 0x86, 0x18, 0xb1, 0x2d, 0xea, 0x43, 0x14, 0x67, 0x1a, - 0x76, 0xc3, 0xe6, 0x3f, 0x15, 0xef, 0x97, 0x58, 0x2d, 0x09, 0x1e, 0xfe, 0xb5, 0xd9, 0xfe, 0x54, - 0x61, 0xa4, 0x85, 0x29, 0x43, 0x2d, 0x47, 0x10, 0x54, 0xd2, 0xa8, 0x1a, 0x6a, 0xe1, 0xf3, 0x2c, - 0xee, 0xc6, 0xd3, 0x59, 0x52, 0x68, 0x13, 0xb9, 0xd8, 0xd0, 0x74, 0xdb, 0xa2, 0xed, 0x56, 0xc8, - 0x71, 0x7e, 0x00, 0xc7, 0x33, 0xe2, 0x62, 0x41, 0x76, 0x9a, 0x61, 0xcb, 0xc0, 0x6e, 0x8b, 0x58, - 0x4c, 0xd1, 0xdd, 0xae, 0xc3, 0x6c, 0x65, 0x0b, 0x77, 0x03, 0x0b, 0x4f, 0xe9, 0x36, 0x6d, 0xd9, - 0x54, 0xf3, 0x8d, 0xf4, 0x3f, 0xc4, 0xd6, 0x3b, 0xfe, 0x97, 0x42, 0x19, 0xda, 0x22, 0x56, 0x43, - 0xe9, 0x2c, 0x6d, 0x62, 0x86, 0x96, 0x82, 0x6f, 0x9f, 0x4a, 0xbe, 0x0e, 0x66, 0x3f, 0xf2, 0x9c, - 0x5e, 0x13, 0xca, 0xdd, 0xc6, 0x16, 0xa6, 0x84, 0xaa, 0xf8, 0x69, 0x1b, 0x53, 0x06, 0x4b, 0x60, - 0x2a, 0x50, 0x5b, 0x23, 0x46, 0x41, 0x9a, 0x97, 0x16, 0x26, 0x55, 0x10, 0x2c, 0xd5, 0x0d, 0x79, - 0x1b, 0x9c, 0x4e, 0xe6, 0xa7, 0x8e, 0x6d, 0x51, 0x0c, 0x3f, 0x01, 0x47, 0x1a, 0xfe, 0x92, 0x46, - 0x19, 0x62, 0x98, 0x43, 0x4c, 0x55, 0x16, 0xcb, 0xbb, 0x9d, 0x6e, 0x67, 0xa9, 0x1c, 0xc3, 0x5a, - 0xf7, 0xf8, 0xaa, 0x63, 0x5f, 0xbe, 0x2c, 0x8d, 0xa8, 0x87, 0x1b, 0x7d, 0x6b, 0xf2, 0x8f, 0x40, - 0x31, 0x22, 0xbc, 0xe6, 0xc1, 0x85, 0xba, 0xdf, 0x01, 0xe3, 0x4e, 0x13, 0x51, 0x5f, 0xe4, 0x74, - 0xa5, 0x52, 0x4e, 0x11, 0x50, 0xa1, 0xec, 0x35, 0x8f, 0x53, 0xf5, 0x01, 0xe0, 0x0c, 0x18, 0x37, - 0x49, 0x8b, 0xb0, 0x42, 0x6e, 0x5e, 0x5a, 0x18, 0x57, 0xfd, 0x0f, 0x19, 0xc5, 0x5c, 0x17, 0x48, - 0x17, 0x96, 0x57, 0xc1, 0x04, 0x97, 0x45, 0x0b, 0xd2, 0xfc, 0xe8, 0xc2, 0x54, 0xe5, 0x42, 0x3a, - 0xf9, 0xde, 0xb6, 0x2a, 0x38, 0xe5, 0x17, 0x63, 0x60, 0x9c, 0xaf, 0xc0, 0x53, 0x20, 0xef, 0x73, - 0x86, 0xa7, 0x70, 0x88, 0x7f, 0xd7, 0x0d, 0x38, 0x0b, 0x26, 0x75, 0x93, 0x60, 0x8b, 0x79, 0x7b, - 0x39, 0xbe, 0x97, 0xf7, 0x17, 0xea, 0x06, 0x3c, 0x06, 0xc6, 0x99, 0xed, 0x68, 0xf7, 0x0b, 0xa3, - 0xf3, 0xd2, 0xc2, 0x11, 0x75, 0x8c, 0xd9, 0xce, 0x7d, 0x78, 0x01, 0xc0, 0x16, 0xb1, 0x34, 0xc7, - 0x7e, 0xe6, 0x1d, 0xab, 0xa5, 0xf9, 0x14, 0x63, 0xf3, 0xd2, 0xc2, 0xa8, 0x3a, 0xdd, 0x22, 0xd6, - 0x9a, 0xb7, 0x51, 0xb7, 0x36, 0x3c, 0xda, 0x45, 0x30, 0xd3, 0x41, 0x26, 0x31, 0x10, 0xb3, 0x5d, - 0x2a, 0x58, 0x74, 0xe4, 0x14, 0xc6, 0x39, 0x1e, 0xec, 0xed, 0x71, 0xa6, 0x1a, 0x72, 0xe0, 0x05, - 0x70, 0x34, 0x5c, 0xd5, 0x28, 0x66, 0x9c, 0x7c, 0x82, 0x93, 0xbf, 0x15, 0x6e, 0xac, 0x63, 0xe6, - 0xd1, 0x9e, 0x06, 0x93, 0xc8, 0x34, 0xed, 0x67, 0x26, 0xa1, 0xac, 0x70, 0x68, 0x7e, 0x74, 0x61, - 0x52, 0xed, 0x2d, 0xc0, 0x22, 0xc8, 0x1b, 0xd8, 0xea, 0xf2, 0xcd, 0x3c, 0xdf, 0x0c, 0xbf, 0x7b, - 0xa7, 0x3b, 0x39, 0xec, 0xe9, 0x7e, 0x0c, 0xf2, 0x2d, 0xcc, 0x90, 0x81, 0x18, 0x2a, 0x00, 0x1e, - 0x9d, 0x57, 0x32, 0x81, 0xdd, 0x13, 0xcc, 0x22, 0x44, 0x43, 0x30, 0xef, 0x60, 0x3c, 0x37, 0x7b, - 0x17, 0x0e, 0x17, 0xa6, 0xe6, 0xa5, 0x85, 0x31, 0x35, 0xdf, 0x22, 0xd6, 0xba, 0xf7, 0x0d, 0xcb, - 0xe0, 0x18, 0x37, 0x54, 0x23, 0x16, 0xd2, 0x19, 0xe9, 0x60, 0xad, 0x83, 0x4c, 0x5a, 0x38, 0x3c, - 0x2f, 0x2d, 0xe4, 0xd5, 0xa3, 0x7c, 0xab, 0x2e, 0x76, 0x1e, 0x21, 0x93, 0xca, 0x3f, 0x91, 0xc0, - 0x59, 0x1e, 0x6e, 0x8f, 0x02, 0x17, 0x06, 0xf2, 0x97, 0x0d, 0xc3, 0x0d, 0x62, 0xfe, 0x1a, 0x78, - 0x3b, 0x50, 0x51, 0x43, 0x86, 0xe1, 0x62, 0x4a, 0xfd, 0x70, 0xa9, 0xc2, 0x6f, 0x5e, 0x96, 0xa6, - 0xbb, 0xa8, 0x65, 0x5e, 0x95, 0xc5, 0x86, 0xac, 0xbe, 0x15, 0xd0, 0x2e, 0xfb, 0x2b, 0xf1, 0xeb, - 0x9e, 0x8b, 0x5f, 0xf7, 0xab, 0xf9, 0x17, 0x9f, 0x97, 0x46, 0xfe, 0xf9, 0x79, 0x69, 0x44, 0x7e, - 0x00, 0xe4, 0x41, 0xea, 0x88, 0x4b, 0xf0, 0x2e, 0x78, 0x3b, 0x04, 0x8c, 0xe8, 0xa3, 0xbe, 0xa5, - 0xf7, 0xd1, 0x7b, 0xda, 0xbc, 0x69, 0xe0, 0x5a, 0x9f, 0x76, 0x7d, 0x06, 0x26, 0x03, 0x26, 0x1b, - 0x18, 0x13, 0x32, 0x94, 0x81, 0x51, 0x75, 0x7a, 0x06, 0x26, 0x3b, 0xfc, 0x0d, 0xe7, 0xca, 0xb3, - 0xe0, 0x14, 0x07, 0xdc, 0x68, 0xba, 0x36, 0x63, 0x26, 0xe6, 0x39, 0x4c, 0xd8, 0x25, 0xff, 0x41, - 0x12, 0xb9, 0x2c, 0xb6, 0x2b, 0xc4, 0x94, 0xc0, 0x14, 0x35, 0x11, 0x6d, 0x6a, 0x2d, 0xcc, 0xb0, - 0xcb, 0x25, 0x8c, 0xaa, 0x80, 0x2f, 0xdd, 0xf3, 0x56, 0x60, 0x05, 0x1c, 0xef, 0x23, 0xd0, 0x78, - 0xfc, 0x20, 0x4b, 0xc7, 0xdc, 0xc4, 0x51, 0xf5, 0x58, 0x8f, 0x74, 0x39, 0xd8, 0x82, 0xdf, 0x03, - 0x05, 0x0b, 0x3f, 0x67, 0x9a, 0x8b, 0x1d, 0x13, 0x5b, 0x84, 0x36, 0x35, 0x1d, 0x59, 0x86, 0x67, - 0x2c, 0xe6, 0xe9, 0x62, 0xaa, 0x52, 0x2c, 0xfb, 0x6f, 0x65, 0x39, 0x78, 0x2b, 0xcb, 0x1b, 0xc1, - 0x5b, 0x59, 0xcd, 0x7b, 0xd1, 0xfe, 0xd9, 0x5f, 0x4b, 0x92, 0x7a, 0xc2, 0x43, 0x51, 0x03, 0x90, - 0x5a, 0x80, 0x21, 0x5f, 0x02, 0x17, 0xb8, 0x49, 0x2a, 0x6e, 0x10, 0xca, 0xb0, 0x8b, 0x8d, 0x20, - 0x46, 0x54, 0xfc, 0x0c, 0xb9, 0xc6, 0x2d, 0x6c, 0xd9, 0xad, 0x20, 0x5d, 0xcb, 0x2b, 0xe0, 0x62, - 0x2a, 0x6a, 0xe1, 0x91, 0x13, 0x60, 0xc2, 0xe0, 0x2b, 0x3c, 0xbd, 0x4e, 0xaa, 0xe2, 0x4b, 0x56, - 0x81, 0xc2, 0x61, 0x96, 0x4d, 0x73, 0x0d, 0x11, 0x97, 0x3e, 0x42, 0x66, 0xcd, 0xb6, 0xbc, 0x33, - 0xa8, 0x46, 0x33, 0x75, 0xfd, 0x56, 0xea, 0x47, 0xee, 0x57, 0x12, 0x58, 0x4c, 0x0f, 0x2a, 0x14, - 0x7c, 0x0a, 0x8e, 0x3a, 0x88, 0xb8, 0xde, 0xb5, 0xf6, 0x9e, 0x7e, 0x1e, 0x1d, 0xe2, 0x29, 0x58, - 0x4d, 0x95, 0x5f, 0x3c, 0x49, 0x3d, 0x41, 0x61, 0xf4, 0x59, 0x3d, 0xbf, 0x4c, 0x3b, 0x11, 0x12, - 0xf9, 0x7f, 0x12, 0x38, 0xbb, 0x27, 0x17, 0x5c, 0xdd, 0x35, 0x47, 0xcc, 0x7e, 0xf3, 0xb2, 0x74, - 0xd2, 0xbf, 0x42, 0x71, 0x8a, 0x84, 0x64, 0xb1, 0x9a, 0x70, 0x15, 0x73, 0x71, 0x9c, 0x38, 0x45, - 0xc2, 0x9d, 0xbc, 0x01, 0x0e, 0x87, 0x54, 0x5b, 0xb8, 0x2b, 0x42, 0xef, 0x74, 0xb9, 0x57, 0xf8, - 0x94, 0xfd, 0xc2, 0xa7, 0xbc, 0xd6, 0xde, 0x34, 0x89, 0x7e, 0x17, 0x77, 0xd5, 0xf0, 0xc0, 0xee, - 0xe2, 0xae, 0x3c, 0x03, 0x20, 0x3f, 0x9d, 0x35, 0xe4, 0xa2, 0x5e, 0x3c, 0x7d, 0x1f, 0x1c, 0x8b, - 0xac, 0x8a, 0x63, 0xa9, 0x83, 0x09, 0x87, 0xaf, 0x88, 0x4a, 0xe4, 0x62, 0xca, 0xb3, 0xf0, 0x58, - 0x44, 0x86, 0x17, 0x00, 0xf2, 0x3d, 0x11, 0xdf, 0x91, 0x08, 0x78, 0xe0, 0x30, 0x6c, 0xd4, 0xad, - 0x30, 0x6b, 0xa4, 0x2f, 0xa5, 0x9e, 0x8a, 0x0b, 0xb0, 0x17, 0x5c, 0x58, 0x5f, 0x9c, 0xe9, 0x7f, - 0x98, 0x63, 0xe7, 0x85, 0x83, 0x7b, 0x31, 0xdb, 0xf7, 0x42, 0x47, 0x0f, 0x10, 0x53, 0x79, 0x19, - 0xcc, 0x45, 0x44, 0xee, 0x43, 0xeb, 0x9f, 0x1e, 0x02, 0xf3, 0xbb, 0x60, 0x84, 0xbf, 0x86, 0x7d, - 0x96, 0xe2, 0x11, 0x92, 0xcb, 0x18, 0x21, 0xb0, 0x00, 0xc6, 0x79, 0xe5, 0xc2, 0x63, 0x6b, 0xb4, - 0x9a, 0x2b, 0x48, 0xaa, 0xbf, 0x00, 0x3f, 0x00, 0x63, 0xae, 0x97, 0xef, 0xc6, 0xb8, 0x36, 0xe7, - 0xbd, 0xf3, 0xfd, 0xf3, 0xcb, 0xd2, 0xac, 0x5f, 0x3b, 0x53, 0x63, 0xab, 0x4c, 0x6c, 0xa5, 0x85, - 0x58, 0xb3, 0xfc, 0x5d, 0xdc, 0x40, 0x7a, 0xf7, 0x16, 0xd6, 0x0b, 0x92, 0xca, 0x59, 0xe0, 0x79, - 0x30, 0x1d, 0x6a, 0xe5, 0xa3, 0x8f, 0xf3, 0x5c, 0x7b, 0x24, 0x58, 0xe5, 0x15, 0x11, 0x7c, 0x02, - 0x0a, 0x21, 0x99, 0x6e, 0xb7, 0x5a, 0x84, 0x52, 0x62, 0x5b, 0x1a, 0x97, 0x3a, 0xc1, 0xa5, 0x9e, - 0x4b, 0x21, 0x55, 0x3d, 0x11, 0x80, 0xd4, 0x42, 0x0c, 0xd5, 0xd3, 0xe2, 0x09, 0x28, 0x84, 0xae, - 0x8d, 0xc3, 0x1f, 0xca, 0x00, 0x1f, 0x80, 0xc4, 0xe0, 0xef, 0x82, 0x29, 0x03, 0x53, 0xdd, 0x25, - 0x8e, 0xd7, 0x58, 0x15, 0xf2, 0xdc, 0xf3, 0xe7, 0xca, 0xa2, 0xd3, 0x08, 0x7a, 0x09, 0xd1, 0x5b, - 0x94, 0x6f, 0xf5, 0x48, 0xc5, 0x5d, 0xe9, 0xe7, 0x86, 0x4f, 0xc0, 0xa9, 0x50, 0x57, 0xdb, 0xc1, - 0x2e, 0xaf, 0x10, 0x83, 0x78, 0x98, 0xe4, 0xca, 0x9e, 0xfd, 0xfa, 0x8b, 0xcb, 0x67, 0x04, 0x7a, - 0x18, 0x3f, 0x22, 0x0e, 0xd6, 0x99, 0x4b, 0xac, 0x86, 0x7a, 0x32, 0xc0, 0x78, 0x20, 0x20, 0x82, - 0x30, 0x39, 0x01, 0x26, 0x7e, 0x80, 0x88, 0x89, 0x0d, 0x5e, 0xc6, 0xe5, 0x55, 0xf1, 0x05, 0xaf, - 0x82, 0x09, 0xaf, 0xf7, 0x68, 0x53, 0x5e, 0x84, 0x4d, 0x57, 0xe4, 0xdd, 0xd4, 0xaf, 0xda, 0x96, - 0xb1, 0xce, 0x29, 0x55, 0xc1, 0x01, 0x37, 0x40, 0x18, 0x8d, 0x1a, 0xb3, 0xb7, 0xb0, 0xe5, 0x97, - 0x68, 0x93, 0xd5, 0x8b, 0xc2, 0xab, 0xc7, 0xdf, 0xf4, 0x6a, 0xdd, 0x62, 0x5f, 0x7f, 0x71, 0x19, - 0x08, 0x21, 0x75, 0x8b, 0xa9, 0xd3, 0x01, 0xc6, 0x06, 0x87, 0xf0, 0x42, 0x27, 0x44, 0xf5, 0x43, - 0xe7, 0x88, 0x1f, 0x3a, 0xc1, 0xaa, 0x1f, 0x3a, 0xdf, 0x06, 0x27, 0xc5, 0xed, 0xc5, 0x54, 0xd3, - 0xdb, 0xae, 0xeb, 0x15, 0xf9, 0xd8, 0xb1, 0xf5, 0x66, 0x61, 0x9a, 0x5b, 0x78, 0x3c, 0xdc, 0xae, - 0xf9, 0xbb, 0x2b, 0xde, 0xa6, 0xfc, 0x42, 0x02, 0xa5, 0x5d, 0xef, 0xb5, 0x48, 0x1f, 0x18, 0x80, - 0x5e, 0x66, 0x10, 0xef, 0xd2, 0x4a, 0xaa, 0x5c, 0xb8, 0xd7, 0x6d, 0x57, 0xfb, 0x80, 0xe5, 0xa7, - 0xe2, 0xe5, 0x8c, 0x36, 0x49, 0x21, 0xed, 0x1d, 0x44, 0x37, 0x6c, 0xf1, 0x85, 0x0f, 0xa6, 0x88, - 0x95, 0x11, 0x58, 0xca, 0x20, 0x52, 0xb8, 0xe3, 0x12, 0x80, 0xbd, 0x5b, 0x2a, 0x1a, 0xad, 0x20, - 0x85, 0x86, 0xcf, 0x9c, 0xff, 0xc4, 0x1b, 0xbc, 0x56, 0xbd, 0x98, 0x5c, 0xfd, 0x46, 0xaf, 0x4f, - 0xda, 0x2c, 0x9a, 0x68, 0x72, 0x2e, 0xbd, 0xc9, 0x0d, 0x70, 0x29, 0x9d, 0x3a, 0xc2, 0xda, 0xf7, - 0x44, 0xd6, 0x93, 0xd2, 0x27, 0x08, 0xce, 0x20, 0xcb, 0x22, 0xd9, 0x57, 0x4d, 0x5b, 0xdf, 0xa2, - 0x0f, 0x2d, 0x46, 0xcc, 0xfb, 0xf8, 0xb9, 0x1f, 0x76, 0xc1, 0xc3, 0xfb, 0x58, 0xd4, 0xf1, 0xc9, - 0x34, 0x42, 0x83, 0x2b, 0xe0, 0xe4, 0x26, 0xdf, 0xd7, 0xda, 0x1e, 0x81, 0xc6, 0x0b, 0x51, 0x3f, - 0xb4, 0x25, 0xde, 0x29, 0xcd, 0x6c, 0x26, 0xb0, 0xcb, 0xcb, 0xa2, 0x28, 0xaf, 0x85, 0xae, 0x5b, - 0x75, 0xed, 0x56, 0x4d, 0x74, 0xbb, 0x81, 0xbb, 0x23, 0x1d, 0xb1, 0x14, 0xed, 0x88, 0xe5, 0x55, - 0x70, 0x6e, 0x20, 0x44, 0xaf, 0xe2, 0x1e, 0xfc, 0xf0, 0x7d, 0x47, 0x94, 0xf3, 0x91, 0x30, 0x4b, - 0xfd, 0x6c, 0xfe, 0x72, 0x34, 0x69, 0x76, 0x11, 0x4a, 0x1f, 0xd0, 0xee, 0x9f, 0x03, 0x47, 0xec, - 0x67, 0x56, 0x3c, 0x4e, 0xd4, 0xc3, 0x7c, 0x31, 0x48, 0x85, 0x33, 0x41, 0x77, 0x3c, 0xca, 0x37, - 0x13, 0x3a, 0xdd, 0xb1, 0x83, 0xec, 0x74, 0x3f, 0x05, 0x53, 0xc4, 0x22, 0x4c, 0x13, 0x95, 0xd5, - 0x38, 0xc7, 0x5e, 0xc9, 0x84, 0x5d, 0xb7, 0x08, 0x23, 0xc8, 0x24, 0x3f, 0xe4, 0x13, 0x3c, 0x5e, - 0x6f, 0x79, 0xdd, 0x0a, 0x55, 0x81, 0x87, 0xec, 0xd7, 0x5f, 0xb0, 0x05, 0x66, 0xfc, 0x09, 0x04, - 0x6d, 0x22, 0x87, 0x58, 0x8d, 0x40, 0xe0, 0x04, 0x17, 0xf8, 0x61, 0xba, 0x52, 0xce, 0x03, 0x58, - 0xf7, 0xf9, 0xfb, 0xc4, 0x40, 0x27, 0xbe, 0x4e, 0x2b, 0xbf, 0x3b, 0x03, 0xc6, 0xf9, 0x21, 0xc1, - 0x7f, 0x48, 0x60, 0x26, 0x69, 0xce, 0x05, 0x6f, 0x66, 0x4f, 0x99, 0xd1, 0x11, 0x5b, 0x71, 0x79, - 0x08, 0x04, 0x3f, 0x5a, 0xe4, 0x3b, 0x3f, 0xfe, 0xe3, 0xdf, 0x7f, 0x96, 0xab, 0xc2, 0x9b, 0x7b, - 0x0f, 0x59, 0xc3, 0xa8, 0x14, 0x83, 0x34, 0x65, 0xbb, 0x2f, 0x4e, 0x77, 0xe0, 0x6b, 0x49, 0x54, - 0xcd, 0xd1, 0xe4, 0x09, 0x6f, 0x64, 0x57, 0x32, 0x32, 0x8c, 0x2b, 0xde, 0xdc, 0x3f, 0x80, 0x30, - 0xb2, 0xce, 0x8d, 0xac, 0xc1, 0xe5, 0x0c, 0x46, 0xfa, 0x63, 0x34, 0x65, 0x9b, 0x87, 0xff, 0x8e, - 0xb2, 0xcd, 0x07, 0x77, 0x3b, 0xf0, 0xdf, 0x41, 0xb3, 0x9d, 0x38, 0xbc, 0x80, 0xab, 0xe9, 0x75, - 0x1d, 0x34, 0x8c, 0x29, 0xde, 0x1e, 0x1a, 0x47, 0x98, 0xbe, 0xcc, 0x4d, 0xff, 0x10, 0x7e, 0x90, - 0x62, 0x88, 0x1e, 0x4e, 0xde, 0x22, 0x9d, 0x57, 0x82, 0xc9, 0xfd, 0xdd, 0xc0, 0xbe, 0x4c, 0x4e, - 0x18, 0xcf, 0xec, 0xcb, 0xe4, 0xa4, 0xb9, 0xca, 0xfe, 0x4c, 0x8e, 0x3c, 0xa1, 0xf0, 0xf7, 0x92, - 0xe8, 0x0b, 0x23, 0x23, 0x15, 0x78, 0x3d, 0xbd, 0x8a, 0x49, 0x93, 0x9a, 0xe2, 0x8d, 0x7d, 0xf3, - 0x0b, 0xd3, 0xde, 0xe7, 0xa6, 0x55, 0xe0, 0xe2, 0xde, 0xa6, 0x31, 0x01, 0xe0, 0xcf, 0xce, 0xe1, - 0xcf, 0x73, 0xe2, 0xed, 0x1a, 0x3c, 0x23, 0x81, 0x0f, 0xd2, 0xab, 0x98, 0x6a, 0x36, 0x53, 0x5c, - 0x3b, 0x38, 0x40, 0xe1, 0x84, 0xbb, 0xdc, 0x09, 0x2b, 0xb0, 0xb6, 0xb7, 0x13, 0xdc, 0x10, 0xb1, - 0x17, 0xd3, 0x2e, 0xc7, 0xd4, 0xfc, 0x99, 0x0f, 0xfc, 0x45, 0x0e, 0x2c, 0xa4, 0x9d, 0xcf, 0xc0, - 0x8d, 0xf4, 0xb6, 0xa4, 0x9f, 0x21, 0x15, 0x1f, 0x1e, 0x30, 0xaa, 0x70, 0xd3, 0x0a, 0x77, 0xd3, - 0x0d, 0x78, 0x6d, 0x6f, 0x37, 0x89, 0x72, 0x40, 0x73, 0x3c, 0xec, 0x58, 0x5a, 0xff, 0x8d, 0x04, - 0xa6, 0xfa, 0x86, 0x21, 0xf0, 0xbd, 0xf4, 0xda, 0x46, 0x86, 0x2a, 0xc5, 0xf7, 0xb3, 0x33, 0x0a, - 0x4b, 0x16, 0xb9, 0x25, 0x17, 0xe0, 0xc2, 0xde, 0x96, 0xf8, 0x8f, 0x7a, 0x2f, 0xda, 0x07, 0x0f, - 0x44, 0xb2, 0x44, 0x7b, 0xaa, 0x49, 0x4d, 0x96, 0x68, 0x4f, 0x37, 0xab, 0xc9, 0x12, 0xed, 0xb6, - 0x07, 0xa2, 0x11, 0x4b, 0xeb, 0x35, 0x51, 0xb1, 0xc3, 0xfc, 0x6d, 0x0e, 0xbc, 0x9b, 0xba, 0xc1, - 0x81, 0x0f, 0xf7, 0xfb, 0xf0, 0x0e, 0xec, 0xd1, 0x8a, 0x8f, 0x0e, 0x1a, 0x56, 0x78, 0xea, 0x31, - 0xf7, 0xd4, 0x06, 0x54, 0x33, 0xbf, 0xf2, 0x9a, 0x83, 0xdd, 0x9e, 0xd3, 0x94, 0xed, 0x78, 0x3f, - 0xb5, 0x03, 0x7f, 0x9d, 0x03, 0xef, 0xa4, 0x69, 0x93, 0xe0, 0xda, 0x10, 0x0f, 0x77, 0x62, 0x03, - 0x58, 0xfc, 0xe8, 0x00, 0x11, 0x85, 0xa7, 0x74, 0xee, 0xa9, 0x27, 0xf0, 0x93, 0x2c, 0x9e, 0x8a, - 0x0e, 0x88, 0xa2, 0x81, 0x95, 0xe4, 0xb2, 0xff, 0x48, 0xe0, 0xe4, 0x2e, 0xfd, 0x3e, 0xac, 0x0d, - 0x33, 0x2d, 0x08, 0x1c, 0x73, 0x6b, 0x38, 0x90, 0xec, 0xf7, 0x2b, 0xb4, 0x78, 0xd7, 0xfb, 0xf5, - 0x2f, 0x49, 0x74, 0x76, 0x49, 0x0d, 0x2c, 0xcc, 0x30, 0x23, 0x19, 0xd0, 0x24, 0x17, 0x57, 0x87, - 0x85, 0xc9, 0x5e, 0x27, 0xed, 0xd2, 0x6f, 0xc3, 0xff, 0x4a, 0xb1, 0x3f, 0x64, 0x47, 0x3b, 0x62, - 0x78, 0x3b, 0xfb, 0x11, 0x25, 0xb6, 0xe5, 0xc5, 0x3b, 0xc3, 0x03, 0x65, 0xb7, 0xba, 0xef, 0x68, - 0x95, 0xed, 0x70, 0x2a, 0xb0, 0x03, 0xff, 0x12, 0x54, 0x87, 0x91, 0xf4, 0x94, 0xa5, 0x3a, 0x4c, - 0x6a, 0xfc, 0x8b, 0x37, 0xf6, 0xcd, 0x2f, 0x4c, 0x5b, 0xe5, 0xa6, 0xdd, 0x84, 0xd7, 0xb3, 0x26, - 0xc0, 0x68, 0x14, 0x57, 0x3f, 0xfe, 0xf2, 0xd5, 0x9c, 0xf4, 0xd5, 0xab, 0x39, 0xe9, 0x6f, 0xaf, - 0xe6, 0xa4, 0xcf, 0x5e, 0xcf, 0x8d, 0x7c, 0xf5, 0x7a, 0x6e, 0xe4, 0x4f, 0xaf, 0xe7, 0x46, 0x1e, - 0x5f, 0x6b, 0x10, 0xd6, 0x6c, 0x6f, 0x96, 0x75, 0xbb, 0x25, 0xfe, 0x63, 0xa4, 0x4f, 0xd4, 0xe5, - 0x50, 0x54, 0xe7, 0x8a, 0xf2, 0x3c, 0x56, 0x8d, 0x76, 0x1d, 0x4c, 0x37, 0x27, 0xf8, 0xdf, 0x02, - 0xbf, 0xf5, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xca, 0xad, 0x83, 0x18, 0xd1, 0x23, 0x00, 0x00, + // 2371 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x5a, 0xcd, 0x6f, 0xdc, 0xc6, + 0x15, 0x17, 0x57, 0x1f, 0x5e, 0x8d, 0x2c, 0x25, 0x1e, 0xcb, 0xf6, 0x7a, 0x65, 0x6b, 0x65, 0x3a, + 0x06, 0x14, 0x3b, 0x5e, 0x4a, 0x5b, 0xb8, 0x49, 0x9c, 0xfa, 0x43, 0xbb, 0x96, 0xec, 0x85, 0x63, + 0x5b, 0xa1, 0x14, 0x07, 0x70, 0xe0, 0xb2, 0x14, 0x39, 0xd9, 0x9d, 0x8a, 0x4b, 0xd2, 0x9c, 0xd9, + 0xb5, 0xb7, 0xaa, 0x2e, 0x3d, 0xe5, 0xd0, 0x02, 0x29, 0x8a, 0x9e, 0x1b, 0xf4, 0xd2, 0x6b, 0x51, + 0x04, 0xfd, 0x1b, 0x72, 0x6b, 0x9a, 0x5e, 0x8a, 0x02, 0x75, 0x0b, 0xbb, 0x05, 0x7a, 0x29, 0xd0, + 0xa6, 0xed, 0xbd, 0x98, 0xe1, 0x90, 0xbb, 0xa4, 0xb9, 0x2b, 0x52, 0xd2, 0x6d, 0x39, 0xf3, 0xde, + 0xef, 0x7d, 0xcc, 0x9b, 0x37, 0xef, 0x3d, 0x09, 0x28, 0xd8, 0xa6, 0xc8, 0x33, 0x9a, 0x3a, 0xb6, + 0x35, 0x82, 0x8c, 0xb6, 0x87, 0x69, 0x57, 0x31, 0x8c, 0x8e, 0xe2, 0x7a, 0x4e, 0x07, 0x9b, 0xc8, + 0x53, 0x3a, 0xcb, 0xca, 0x93, 0x36, 0xf2, 0xba, 0x65, 0xd7, 0x73, 0xa8, 0x03, 0xcf, 0x27, 0x30, + 0x94, 0x0d, 0xa3, 0x53, 0x0e, 0x18, 0xca, 0x9d, 0xe5, 0xe2, 0x99, 0x86, 0xe3, 0x34, 0x2c, 0xa4, + 0xe8, 0x2e, 0x56, 0x74, 0xdb, 0x76, 0xa8, 0x4e, 0xb1, 0x63, 0x13, 0x1f, 0xa2, 0x38, 0xdb, 0x70, + 0x1a, 0x0e, 0xff, 0xa9, 0xb0, 0x5f, 0x62, 0xb5, 0x24, 0x78, 0xf8, 0xd7, 0x56, 0xfb, 0x13, 0x85, + 0xe2, 0x16, 0x22, 0x54, 0x6f, 0xb9, 0x82, 0xa0, 0x92, 0x46, 0xd5, 0x50, 0x0b, 0x9f, 0x67, 0x69, + 0x10, 0x4f, 0x67, 0x59, 0x21, 0x4d, 0xdd, 0x43, 0xa6, 0x66, 0x38, 0x36, 0x69, 0xb7, 0x42, 0x8e, + 0x0b, 0x43, 0x38, 0x9e, 0x62, 0x0f, 0x09, 0xb2, 0x33, 0x14, 0xd9, 0x26, 0xf2, 0x5a, 0xd8, 0xa6, + 0x8a, 0xe1, 0x75, 0x5d, 0xea, 0x28, 0xdb, 0xa8, 0x1b, 0x58, 0x78, 0xda, 0x70, 0x48, 0xcb, 0x21, + 0x9a, 0x6f, 0xa4, 0xff, 0x21, 0xb6, 0xde, 0xf0, 0xbf, 0x14, 0x42, 0xf5, 0x6d, 0x6c, 0x37, 0x94, + 0xce, 0xf2, 0x16, 0xa2, 0xfa, 0x72, 0xf0, 0xed, 0x53, 0xc9, 0xd7, 0xc1, 0xdc, 0x07, 0xcc, 0xe9, + 0x35, 0xa1, 0xdc, 0x6d, 0x64, 0x23, 0x82, 0x89, 0x8a, 0x9e, 0xb4, 0x11, 0xa1, 0xb0, 0x04, 0xa6, + 0x02, 0xb5, 0x35, 0x6c, 0x16, 0xa4, 0x05, 0x69, 0x71, 0x52, 0x05, 0xc1, 0x52, 0xdd, 0x94, 0x77, + 0xc0, 0x99, 0x64, 0x7e, 0xe2, 0x3a, 0x36, 0x41, 0xf0, 0x63, 0x30, 0xdd, 0xf0, 0x97, 0x34, 0x42, + 0x75, 0x8a, 0x38, 0xc4, 0x54, 0x65, 0xa9, 0x3c, 0xe8, 0x74, 0x3b, 0xcb, 0xe5, 0x18, 0xd6, 0x06, + 0xe3, 0xab, 0x8e, 0x7d, 0xf9, 0xbc, 0x34, 0xa2, 0x1e, 0x6d, 0xf4, 0xad, 0xc9, 0x3f, 0x04, 0xc5, + 0x88, 0xf0, 0x1a, 0x83, 0x0b, 0x75, 0xbf, 0x03, 0xc6, 0xdd, 0xa6, 0x4e, 0x7c, 0x91, 0x33, 0x95, + 0x4a, 0x39, 0x45, 0x40, 0x85, 0xb2, 0xd7, 0x19, 0xa7, 0xea, 0x03, 0xc0, 0x59, 0x30, 0x6e, 0xe1, + 0x16, 0xa6, 0x85, 0xdc, 0x82, 0xb4, 0x38, 0xae, 0xfa, 0x1f, 0xb2, 0x1e, 0x73, 0x5d, 0x20, 0x5d, + 0x58, 0x5e, 0x05, 0x13, 0x5c, 0x16, 0x29, 0x48, 0x0b, 0xa3, 0x8b, 0x53, 0x95, 0x8b, 0xe9, 0xe4, + 0xb3, 0x6d, 0x55, 0x70, 0xca, 0xff, 0x1b, 0x05, 0xe3, 0x7c, 0x05, 0x9e, 0x06, 0x79, 0x9f, 0x33, + 0x3c, 0x85, 0x23, 0xfc, 0xbb, 0x6e, 0xc2, 0x39, 0x30, 0x69, 0x58, 0x18, 0xd9, 0x94, 0xed, 0xe5, + 0xf8, 0x5e, 0xde, 0x5f, 0xa8, 0x9b, 0xf0, 0x38, 0x18, 0xa7, 0x8e, 0xab, 0xdd, 0x2f, 0x8c, 0x2e, + 0x48, 0x8b, 0xd3, 0xea, 0x18, 0x75, 0xdc, 0xfb, 0xf0, 0x22, 0x80, 0x2d, 0x6c, 0x6b, 0xae, 0xf3, + 0x94, 0x1d, 0xab, 0xad, 0xf9, 0x14, 0x63, 0x0b, 0xd2, 0xe2, 0xa8, 0x3a, 0xd3, 0xc2, 0xf6, 0x3a, + 0xdb, 0xa8, 0xdb, 0x9b, 0x8c, 0x76, 0x09, 0xcc, 0x76, 0x74, 0x0b, 0x9b, 0x3a, 0x75, 0x3c, 0x22, + 0x58, 0x0c, 0xdd, 0x2d, 0x8c, 0x73, 0x3c, 0xd8, 0xdb, 0xe3, 0x4c, 0x35, 0xdd, 0x85, 0x17, 0xc1, + 0xb1, 0x70, 0x55, 0x23, 0x88, 0x72, 0xf2, 0x09, 0x4e, 0xfe, 0x5a, 0xb8, 0xb1, 0x81, 0x28, 0xa3, + 0x3d, 0x03, 0x26, 0x75, 0xcb, 0x72, 0x9e, 0x5a, 0x98, 0xd0, 0xc2, 0x91, 0x85, 0xd1, 0xc5, 0x49, + 0xb5, 0xb7, 0x00, 0x8b, 0x20, 0x6f, 0x22, 0xbb, 0xcb, 0x37, 0xf3, 0x7c, 0x33, 0xfc, 0x66, 0x67, + 0xe2, 0x9f, 0xee, 0x24, 0xb7, 0x58, 0x9c, 0xd4, 0x47, 0x20, 0xdf, 0x42, 0x54, 0x37, 0x75, 0xaa, + 0x17, 0x00, 0x8f, 0xb4, 0x2b, 0x99, 0x8e, 0xfd, 0x9e, 0x60, 0x16, 0xe1, 0x16, 0x82, 0x31, 0x27, + 0x33, 0x97, 0xb1, 0xcb, 0x83, 0x0a, 0x53, 0x0b, 0xd2, 0xe2, 0x98, 0x9a, 0x6f, 0x61, 0x7b, 0x83, + 0x7d, 0xc3, 0x32, 0x38, 0xce, 0x95, 0xd6, 0xb0, 0xad, 0x1b, 0x14, 0x77, 0x90, 0xd6, 0xd1, 0x2d, + 0x52, 0x38, 0xba, 0x20, 0x2d, 0xe6, 0xd5, 0x63, 0x7c, 0xab, 0x2e, 0x76, 0x1e, 0xea, 0x16, 0x89, + 0xdf, 0xaa, 0xe9, 0x57, 0x6e, 0xd5, 0x4f, 0x24, 0x70, 0x8e, 0xc7, 0xd6, 0xc3, 0xc0, 0x5f, 0x81, + 0x82, 0x2b, 0xa6, 0xe9, 0x05, 0x01, 0x7e, 0x0d, 0xbc, 0x1e, 0xd8, 0xa0, 0xe9, 0xa6, 0xe9, 0x21, + 0x42, 0xfc, 0xd8, 0xa8, 0xc2, 0x6f, 0x9e, 0x97, 0x66, 0xba, 0x7a, 0xcb, 0xba, 0x2a, 0x8b, 0x0d, + 0x59, 0x7d, 0x2d, 0xa0, 0x5d, 0xf1, 0x57, 0xe2, 0x5a, 0xe4, 0xe2, 0x5a, 0x5c, 0xcd, 0x7f, 0xfa, + 0x79, 0x69, 0xe4, 0x1f, 0x9f, 0x97, 0x46, 0xe4, 0x07, 0x40, 0x1e, 0xa6, 0x8e, 0x88, 0xf8, 0x37, + 0xc1, 0xeb, 0x21, 0x60, 0x44, 0x1f, 0xf5, 0x35, 0xa3, 0x8f, 0x9e, 0x69, 0xf3, 0xaa, 0x81, 0xeb, + 0x7d, 0xda, 0xf5, 0x19, 0x98, 0x0c, 0x98, 0x6c, 0x60, 0x4c, 0xc8, 0x81, 0x0c, 0x8c, 0xaa, 0xd3, + 0x33, 0x30, 0xd9, 0xe1, 0xaf, 0x38, 0x57, 0x9e, 0x03, 0xa7, 0x39, 0xe0, 0x66, 0xd3, 0x73, 0x28, + 0xb5, 0x10, 0x4f, 0x58, 0xc2, 0x2e, 0xf9, 0xf7, 0x92, 0x48, 0x5c, 0xb1, 0x5d, 0x21, 0xa6, 0x04, + 0xa6, 0x88, 0xa5, 0x93, 0xa6, 0xd6, 0x42, 0x14, 0x79, 0x5c, 0xc2, 0xa8, 0x0a, 0xf8, 0xd2, 0x3d, + 0xb6, 0x02, 0x2b, 0xe0, 0x44, 0x1f, 0x81, 0xc6, 0x03, 0x4c, 0xb7, 0x0d, 0xc4, 0x4d, 0x1c, 0x55, + 0x8f, 0xf7, 0x48, 0x57, 0x82, 0x2d, 0xf8, 0x5d, 0x50, 0xb0, 0xd1, 0x33, 0xaa, 0x79, 0xc8, 0xb5, + 0x90, 0x8d, 0x49, 0x53, 0x33, 0x74, 0xdb, 0x64, 0xc6, 0x22, 0x9e, 0x1b, 0xa6, 0x2a, 0xc5, 0xb2, + 0xff, 0x30, 0x96, 0x83, 0x87, 0xb1, 0xbc, 0x19, 0x3c, 0x8c, 0xd5, 0x3c, 0xbb, 0x0e, 0x9f, 0xfd, + 0xa5, 0x24, 0xa9, 0x27, 0x19, 0x8a, 0x1a, 0x80, 0xd4, 0x02, 0x0c, 0xf9, 0x2d, 0x70, 0x91, 0x9b, + 0xa4, 0xa2, 0x06, 0x26, 0x14, 0x79, 0xc8, 0x0c, 0x62, 0x44, 0x45, 0x4f, 0x75, 0xcf, 0xbc, 0x85, + 0x6c, 0xa7, 0x15, 0xe4, 0x66, 0x79, 0x15, 0x5c, 0x4a, 0x45, 0x2d, 0x3c, 0x72, 0x12, 0x4c, 0x98, + 0x7c, 0x85, 0xe7, 0xd2, 0x49, 0x55, 0x7c, 0xc9, 0xef, 0x83, 0x37, 0x39, 0xcc, 0x8a, 0x65, 0xad, + 0xeb, 0xd8, 0x23, 0x0f, 0x75, 0x8b, 0xe1, 0xb0, 0x43, 0xa8, 0x76, 0x7b, 0x88, 0x29, 0xdf, 0xb2, + 0x5f, 0x48, 0xc2, 0x86, 0x3d, 0xe0, 0x84, 0x52, 0x4f, 0xc0, 0x31, 0x57, 0xc7, 0x1e, 0xbb, 0xeb, + 0xec, 0x6d, 0xe7, 0x11, 0x21, 0x72, 0xfd, 0x5a, 0xaa, 0xa4, 0xc3, 0x64, 0xf8, 0x22, 0x98, 0x84, + 0x30, 0xe2, 0xec, 0x9e, 0x2f, 0x66, 0xdc, 0x08, 0x89, 0xfc, 0x5f, 0x09, 0x9c, 0xdb, 0x93, 0x0b, + 0xae, 0x0d, 0xcc, 0x0b, 0x73, 0xdf, 0x3c, 0x2f, 0x9d, 0xf2, 0xaf, 0x4d, 0x9c, 0x22, 0x21, 0x41, + 0xac, 0x25, 0x5c, 0xbf, 0x5c, 0x1c, 0x27, 0x4e, 0x91, 0x70, 0x0f, 0x6f, 0x80, 0xa3, 0x21, 0xd5, + 0x36, 0xea, 0x8a, 0x70, 0x3b, 0x53, 0xee, 0x55, 0x36, 0x65, 0xbf, 0xb2, 0x29, 0xaf, 0xb7, 0xb7, + 0x2c, 0x6c, 0xdc, 0x45, 0x5d, 0x35, 0x3c, 0xaa, 0xbb, 0xa8, 0x2b, 0xcf, 0x02, 0xc8, 0xcf, 0x65, + 0x5d, 0xf7, 0xf4, 0x5e, 0x0c, 0x7d, 0x0f, 0x1c, 0x8f, 0xac, 0x8a, 0x63, 0xa9, 0x83, 0x09, 0x97, + 0xaf, 0x88, 0x52, 0xe3, 0x52, 0xca, 0xb3, 0x60, 0x2c, 0x22, 0xed, 0x0b, 0x00, 0xf9, 0x9e, 0x88, + 0x87, 0xc8, 0x0b, 0xff, 0xc0, 0xa5, 0xc8, 0xac, 0xdb, 0x61, 0xa6, 0x48, 0x5f, 0x2b, 0x3d, 0x11, + 0x41, 0xbf, 0x17, 0x5c, 0x58, 0x40, 0x9c, 0xed, 0x7f, 0x79, 0x63, 0xe7, 0x85, 0x82, 0xbb, 0x30, + 0xd7, 0xf7, 0x04, 0x47, 0x0f, 0x10, 0x11, 0x79, 0x05, 0xcc, 0x47, 0x44, 0xee, 0x43, 0xeb, 0x9f, + 0x1e, 0x01, 0x0b, 0x03, 0x30, 0xc2, 0x5f, 0x07, 0x7d, 0x8a, 0xe2, 0x11, 0x92, 0xcb, 0x18, 0x21, + 0xb0, 0x00, 0xc6, 0x79, 0x69, 0xc2, 0x63, 0x6b, 0xb4, 0x9a, 0x2b, 0x48, 0xaa, 0xbf, 0x00, 0xdf, + 0x05, 0x63, 0x1e, 0xcb, 0x71, 0x63, 0x5c, 0x9b, 0x0b, 0xec, 0x7c, 0xff, 0xf4, 0xbc, 0x34, 0xe7, + 0x17, 0xc7, 0xc4, 0xdc, 0x2e, 0x63, 0x47, 0x69, 0xe9, 0xb4, 0x59, 0x7e, 0x1f, 0x35, 0x74, 0xa3, + 0x7b, 0x0b, 0x19, 0x05, 0x49, 0xe5, 0x2c, 0xf0, 0x02, 0x98, 0x09, 0xb5, 0xf2, 0xd1, 0xc7, 0x79, + 0x7e, 0x9d, 0x0e, 0x56, 0x79, 0xc9, 0x03, 0x1f, 0x83, 0x42, 0x48, 0x66, 0x38, 0xad, 0x16, 0x26, + 0x04, 0x3b, 0xb6, 0xc6, 0xa5, 0x4e, 0x70, 0xa9, 0xe7, 0x53, 0x48, 0x55, 0x4f, 0x06, 0x20, 0xb5, + 0x10, 0x43, 0x65, 0x5a, 0x3c, 0x06, 0x85, 0xd0, 0xb5, 0x71, 0xf8, 0x23, 0x19, 0xe0, 0x03, 0x90, + 0x18, 0xfc, 0x5d, 0x30, 0x65, 0x22, 0x62, 0x78, 0xd8, 0x65, 0x9d, 0x53, 0x21, 0xcf, 0x3d, 0x7f, + 0xbe, 0x2c, 0x5a, 0x89, 0xa0, 0x59, 0x10, 0xcd, 0x43, 0xf9, 0x56, 0x8f, 0x54, 0xdc, 0x95, 0x7e, + 0x6e, 0xf8, 0x18, 0x9c, 0x0e, 0x75, 0x75, 0x5c, 0xe4, 0xf1, 0x12, 0x30, 0x88, 0x07, 0x5e, 0xa8, + 0x55, 0xcf, 0x7d, 0xfd, 0xc5, 0xe5, 0xb3, 0x02, 0x3d, 0x8c, 0x1f, 0x11, 0x07, 0x1b, 0xd4, 0xc3, + 0x76, 0x43, 0x3d, 0x15, 0x60, 0x3c, 0x10, 0x10, 0x41, 0x98, 0x9c, 0x04, 0x13, 0xdf, 0xd7, 0xb1, + 0x85, 0x4c, 0x5e, 0xdb, 0xe5, 0x55, 0xf1, 0x05, 0xaf, 0x82, 0x09, 0xd6, 0x5c, 0xb4, 0x09, 0xaf, + 0xcc, 0x66, 0x2a, 0xf2, 0x20, 0xf5, 0xab, 0x8e, 0x6d, 0x6e, 0x70, 0x4a, 0x55, 0x70, 0xc0, 0x4d, + 0x10, 0x46, 0xa3, 0x46, 0x9d, 0x6d, 0x64, 0xfb, 0x75, 0xdb, 0x64, 0xf5, 0x92, 0xf0, 0xea, 0x89, + 0x57, 0xbd, 0x5a, 0xb7, 0xe9, 0xd7, 0x5f, 0x5c, 0x06, 0x42, 0x48, 0xdd, 0xa6, 0xea, 0x4c, 0x80, + 0xb1, 0xc9, 0x21, 0x58, 0xe8, 0x84, 0xa8, 0x7e, 0xe8, 0x4c, 0xfb, 0xa1, 0x13, 0xac, 0xfa, 0xa1, + 0xf3, 0x6d, 0x70, 0x4a, 0xdc, 0x5e, 0x44, 0x34, 0xa3, 0xed, 0x79, 0xac, 0x8a, 0x47, 0xae, 0x63, + 0x34, 0x0b, 0x33, 0xdc, 0xc2, 0x13, 0xe1, 0x76, 0xcd, 0xdf, 0x5d, 0x65, 0x9b, 0xf2, 0xa7, 0x12, + 0x28, 0x0d, 0xbc, 0xd7, 0x22, 0x7d, 0x20, 0x00, 0x7a, 0x99, 0x41, 0xbc, 0x4b, 0xab, 0xa9, 0x72, + 0xe1, 0x5e, 0xb7, 0x5d, 0xed, 0x03, 0x96, 0x9f, 0x80, 0xa5, 0x84, 0x2e, 0x28, 0xa4, 0xbd, 0xa3, + 0x93, 0x4d, 0x47, 0x7c, 0xa1, 0xc3, 0x29, 0x5c, 0xe5, 0x87, 0x60, 0x39, 0x83, 0x48, 0xe1, 0x8e, + 0x73, 0x7d, 0x29, 0x06, 0x9b, 0x41, 0xf2, 0x9c, 0xea, 0x25, 0x3a, 0x5e, 0x94, 0x5e, 0x4a, 0x2e, + 0x73, 0xa3, 0x77, 0x26, 0x6d, 0xea, 0x4c, 0xb4, 0x33, 0x97, 0xde, 0xce, 0x06, 0x78, 0x2b, 0x9d, + 0x3a, 0xc2, 0xc4, 0xb7, 0x45, 0xaa, 0x93, 0xd2, 0x67, 0x05, 0xce, 0x20, 0xcb, 0x22, 0xc3, 0x57, + 0x2d, 0xc7, 0xd8, 0x26, 0x1f, 0xda, 0x14, 0x5b, 0xf7, 0xd1, 0x33, 0x3f, 0xd6, 0x82, 0xd7, 0xf6, + 0x91, 0x28, 0xd8, 0x93, 0x69, 0x84, 0x06, 0x57, 0xc0, 0xa9, 0x2d, 0xbe, 0xaf, 0xb5, 0x19, 0x81, + 0xc6, 0x2b, 0x4e, 0x3f, 0x9e, 0x25, 0xde, 0x33, 0xcd, 0x6e, 0x25, 0xb0, 0xcb, 0x2b, 0xa2, 0xfa, + 0xae, 0x85, 0xae, 0x5b, 0xf3, 0x9c, 0x56, 0x4d, 0xf4, 0xb0, 0x81, 0xbb, 0x23, 0x7d, 0xae, 0x14, + 0xed, 0x73, 0xe5, 0x35, 0x70, 0x7e, 0x28, 0x44, 0xaf, 0xb4, 0x1e, 0xfe, 0xda, 0x7d, 0x47, 0xd4, + 0xed, 0x91, 0xd8, 0x4a, 0xfd, 0x56, 0xfe, 0x72, 0x34, 0x69, 0x22, 0x11, 0x4a, 0x1f, 0xd2, 0xc4, + 0x9f, 0x07, 0xd3, 0xce, 0x53, 0x3b, 0x1e, 0x27, 0xea, 0x51, 0xbe, 0x18, 0xe4, 0xbf, 0xb0, 0xe7, + 0x1d, 0x1d, 0xd4, 0xf3, 0x8e, 0x1d, 0x66, 0xcf, 0xfb, 0x09, 0x98, 0xc2, 0x36, 0xa6, 0x9a, 0x28, + 0xa7, 0xc6, 0x39, 0xf6, 0x6a, 0x26, 0xec, 0xba, 0x8d, 0x29, 0xd6, 0x2d, 0xfc, 0x03, 0x3e, 0x97, + 0xe3, 0x45, 0x16, 0x6b, 0x4b, 0x88, 0x0a, 0x18, 0xb2, 0x5f, 0x74, 0xc1, 0x16, 0x98, 0xf5, 0xe7, + 0x0a, 0xa4, 0xa9, 0xbb, 0xd8, 0x6e, 0x04, 0x02, 0x27, 0xb8, 0xc0, 0xf7, 0xd2, 0xd5, 0x6f, 0x0c, + 0x60, 0xc3, 0xe7, 0xef, 0x13, 0x03, 0xdd, 0xf8, 0x3a, 0xa9, 0xfc, 0xea, 0x2c, 0x18, 0xe7, 0x87, + 0x04, 0xff, 0x2e, 0x81, 0xd9, 0xa4, 0xe9, 0x15, 0xbc, 0x99, 0x3d, 0x4f, 0x46, 0x07, 0x67, 0xc5, + 0x95, 0x03, 0x20, 0xf8, 0xd1, 0x22, 0xdf, 0xf9, 0xd1, 0x1f, 0xfe, 0xf6, 0xb3, 0x5c, 0x15, 0xde, + 0xdc, 0x7b, 0x74, 0x1a, 0x46, 0xa5, 0x18, 0x8f, 0x29, 0x3b, 0x7d, 0x71, 0xba, 0x0b, 0x5f, 0x4a, + 0xa2, 0x54, 0x8e, 0x66, 0x4c, 0x78, 0x23, 0xbb, 0x92, 0x91, 0x11, 0x5b, 0xf1, 0xe6, 0xfe, 0x01, + 0x84, 0x91, 0x75, 0x6e, 0x64, 0x0d, 0xae, 0x64, 0x30, 0xd2, 0x1f, 0x8e, 0x29, 0x3b, 0x3c, 0xfc, + 0x77, 0x95, 0x1d, 0x3e, 0x8e, 0xdb, 0x85, 0xff, 0x0a, 0xba, 0xea, 0xc4, 0x29, 0x05, 0x5c, 0x4b, + 0xaf, 0xeb, 0xb0, 0xa9, 0x4b, 0xf1, 0xf6, 0x81, 0x71, 0x84, 0xe9, 0x2b, 0xdc, 0xf4, 0xf7, 0xe0, + 0xbb, 0x29, 0x46, 0xe3, 0xe1, 0x3c, 0x2d, 0xd2, 0x6e, 0x25, 0x98, 0xdc, 0xdf, 0x02, 0xec, 0xcb, + 0xe4, 0x84, 0x39, 0xcc, 0xbe, 0x4c, 0x4e, 0x1a, 0xa0, 0xec, 0xcf, 0xe4, 0xc8, 0x13, 0x0a, 0x7f, + 0x27, 0x89, 0x66, 0x30, 0x32, 0x3b, 0x81, 0xd7, 0xd3, 0xab, 0x98, 0x34, 0x92, 0x29, 0xde, 0xd8, + 0x37, 0xbf, 0x30, 0xed, 0x1d, 0x6e, 0x5a, 0x05, 0x2e, 0xed, 0x6d, 0x1a, 0x15, 0x00, 0xfe, 0x44, + 0x1c, 0xfe, 0x3c, 0x27, 0xde, 0xae, 0xe1, 0xc3, 0x10, 0xf8, 0x20, 0xbd, 0x8a, 0xa9, 0x86, 0x30, + 0xc5, 0xf5, 0xc3, 0x03, 0x14, 0x4e, 0xb8, 0xcb, 0x9d, 0xb0, 0x0a, 0x6b, 0x7b, 0x3b, 0xc1, 0x0b, + 0x11, 0x7b, 0x31, 0xed, 0x71, 0x4c, 0xcd, 0x1f, 0xee, 0xc0, 0x1f, 0xe7, 0x44, 0x59, 0x30, 0x74, + 0x1c, 0x03, 0xef, 0xa7, 0xb7, 0x22, 0xcd, 0x98, 0xa8, 0xf8, 0xe0, 0xd0, 0xf0, 0x84, 0x53, 0x56, + 0xb9, 0x53, 0x6e, 0xc0, 0x6b, 0x7b, 0x3b, 0x45, 0x3c, 0xfe, 0x9a, 0xcb, 0x50, 0x63, 0x49, 0xfc, + 0x37, 0x12, 0x98, 0xea, 0x9b, 0x77, 0xc0, 0xb7, 0xd3, 0xeb, 0x19, 0x99, 0x9b, 0x14, 0xdf, 0xc9, + 0xce, 0x28, 0x2c, 0x59, 0xe2, 0x96, 0x5c, 0x84, 0x8b, 0x7b, 0x5b, 0xe2, 0x3f, 0xe1, 0xbd, 0xd8, + 0x1e, 0x3e, 0xf3, 0xc8, 0x12, 0xdb, 0xa9, 0x86, 0x31, 0x59, 0x62, 0x3b, 0xdd, 0x38, 0x26, 0x4b, + 0x6c, 0x3b, 0x0c, 0x44, 0xc3, 0xb6, 0xd6, 0xeb, 0x93, 0x62, 0x87, 0xf9, 0xdb, 0x9c, 0x98, 0x5c, + 0xa6, 0xe9, 0x61, 0xe0, 0x87, 0xfb, 0x7d, 0x66, 0x87, 0xb6, 0x61, 0xc5, 0x87, 0x87, 0x0d, 0x2b, + 0x3c, 0xf5, 0x88, 0x7b, 0x6a, 0x13, 0xaa, 0x99, 0xdf, 0x74, 0xcd, 0x45, 0x5e, 0xcf, 0x69, 0xca, + 0x4e, 0xbc, 0x7b, 0xda, 0x85, 0xbf, 0xce, 0x81, 0x37, 0xd2, 0x34, 0x45, 0x70, 0xfd, 0x00, 0xcf, + 0x74, 0x62, 0xbb, 0x57, 0xfc, 0xe0, 0x10, 0x11, 0x85, 0xa7, 0x0c, 0xee, 0xa9, 0xc7, 0xf0, 0xe3, + 0x2c, 0x9e, 0x8a, 0xce, 0x80, 0xa2, 0x81, 0x95, 0xe4, 0xb2, 0x7f, 0x4b, 0xe0, 0xd4, 0x80, 0x96, + 0x1e, 0xd6, 0x0e, 0x32, 0x10, 0x08, 0x1c, 0x73, 0xeb, 0x60, 0x20, 0xd9, 0xef, 0x57, 0x68, 0xf1, + 0xc0, 0xfb, 0xf5, 0x4f, 0x49, 0xf4, 0x71, 0x49, 0xed, 0x2a, 0xcc, 0x30, 0x06, 0x19, 0xd2, 0x12, + 0x17, 0xd7, 0x0e, 0x0a, 0x93, 0xbd, 0x2a, 0x1a, 0xd0, 0x5d, 0xc3, 0xff, 0x48, 0xb1, 0x3f, 0x46, + 0x47, 0xfb, 0x5f, 0x78, 0x3b, 0xfb, 0x11, 0x25, 0x36, 0xe1, 0xc5, 0x3b, 0x07, 0x07, 0xca, 0x6e, + 0x75, 0xdf, 0xd1, 0x2a, 0x3b, 0xe1, 0x0c, 0x60, 0x17, 0xfe, 0x39, 0xa8, 0x05, 0x23, 0xe9, 0x29, + 0x4b, 0x2d, 0x98, 0xd4, 0xe6, 0x17, 0x6f, 0xec, 0x9b, 0x5f, 0x98, 0xb6, 0xc6, 0x4d, 0xbb, 0x09, + 0xaf, 0x67, 0x4d, 0x80, 0xd1, 0x28, 0xae, 0x7e, 0xf4, 0xe5, 0x8b, 0x79, 0xe9, 0xab, 0x17, 0xf3, + 0xd2, 0x5f, 0x5f, 0xcc, 0x4b, 0x9f, 0xbd, 0x9c, 0x1f, 0xf9, 0xea, 0xe5, 0xfc, 0xc8, 0x1f, 0x5f, + 0xce, 0x8f, 0x3c, 0xba, 0xd6, 0xc0, 0xb4, 0xd9, 0xde, 0x2a, 0x1b, 0x4e, 0x4b, 0xfc, 0xd7, 0x47, + 0x9f, 0xa8, 0xcb, 0xa1, 0xa8, 0xce, 0x15, 0xe5, 0x59, 0xac, 0xf6, 0xec, 0xba, 0x88, 0x6c, 0x4d, + 0xf0, 0x3f, 0xf1, 0x7d, 0xeb, 0xff, 0x01, 0x00, 0x00, 0xff, 0xff, 0xbe, 0x1f, 0xf9, 0xd9, 0x95, + 0x23, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -2007,9 +2015,9 @@ type QueryClient interface { // QueryRegisteredConsumerRewardDenoms returns a list of consumer reward // denoms that are registered QueryRegisteredConsumerRewardDenoms(ctx context.Context, in *QueryRegisteredConsumerRewardDenomsRequest, opts ...grpc.CallOption) (*QueryRegisteredConsumerRewardDenomsResponse, error) - // QueryAllPairsValConAddrByConsumerChainID returns a list of pair valconsensus address + // QueryAllPairsValConsAddrByConsumer returns a list of pair valconsensus address // between provider and consumer chain - QueryAllPairsValConAddrByConsumerChainID(ctx context.Context, in *QueryAllPairsValConAddrByConsumerChainIDRequest, opts ...grpc.CallOption) (*QueryAllPairsValConAddrByConsumerChainIDResponse, error) + QueryAllPairsValConsAddrByConsumer(ctx context.Context, in *QueryAllPairsValConsAddrByConsumerRequest, opts ...grpc.CallOption) (*QueryAllPairsValConsAddrByConsumerResponse, error) // QueryParams returns all current values of provider parameters QueryParams(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) // QueryConsumerChainOptedInValidators returns a list of validators consensus addresses @@ -2021,7 +2029,7 @@ type QueryClient interface { // QueryValidatorConsumerCommissionRate returns the commission rate a given // validator charges on a given consumer chain QueryValidatorConsumerCommissionRate(ctx context.Context, in *QueryValidatorConsumerCommissionRateRequest, opts ...grpc.CallOption) (*QueryValidatorConsumerCommissionRateResponse, error) - // QueryConsumerValidators returns the latest set consumer-validator set for a given chainID + // QueryConsumerValidators returns the latest set consumer-validator set for a given consumer ID // Note that this does not necessarily mean that the consumer chain is using this validator set at this exact moment // because a VSCPacket could be delayed to be delivered on the consumer chain. QueryConsumerValidators(ctx context.Context, in *QueryConsumerValidatorsRequest, opts ...grpc.CallOption) (*QueryConsumerValidatorsResponse, error) @@ -2098,9 +2106,9 @@ func (c *queryClient) QueryRegisteredConsumerRewardDenoms(ctx context.Context, i return out, nil } -func (c *queryClient) QueryAllPairsValConAddrByConsumerChainID(ctx context.Context, in *QueryAllPairsValConAddrByConsumerChainIDRequest, opts ...grpc.CallOption) (*QueryAllPairsValConAddrByConsumerChainIDResponse, error) { - out := new(QueryAllPairsValConAddrByConsumerChainIDResponse) - err := c.cc.Invoke(ctx, "/interchain_security.ccv.provider.v1.Query/QueryAllPairsValConAddrByConsumerChainID", in, out, opts...) +func (c *queryClient) QueryAllPairsValConsAddrByConsumer(ctx context.Context, in *QueryAllPairsValConsAddrByConsumerRequest, opts ...grpc.CallOption) (*QueryAllPairsValConsAddrByConsumerResponse, error) { + out := new(QueryAllPairsValConsAddrByConsumerResponse) + err := c.cc.Invoke(ctx, "/interchain_security.ccv.provider.v1.Query/QueryAllPairsValConsAddrByConsumer", in, out, opts...) if err != nil { return nil, err } @@ -2199,9 +2207,9 @@ type QueryServer interface { // QueryRegisteredConsumerRewardDenoms returns a list of consumer reward // denoms that are registered QueryRegisteredConsumerRewardDenoms(context.Context, *QueryRegisteredConsumerRewardDenomsRequest) (*QueryRegisteredConsumerRewardDenomsResponse, error) - // QueryAllPairsValConAddrByConsumerChainID returns a list of pair valconsensus address + // QueryAllPairsValConsAddrByConsumer returns a list of pair valconsensus address // between provider and consumer chain - QueryAllPairsValConAddrByConsumerChainID(context.Context, *QueryAllPairsValConAddrByConsumerChainIDRequest) (*QueryAllPairsValConAddrByConsumerChainIDResponse, error) + QueryAllPairsValConsAddrByConsumer(context.Context, *QueryAllPairsValConsAddrByConsumerRequest) (*QueryAllPairsValConsAddrByConsumerResponse, error) // QueryParams returns all current values of provider parameters QueryParams(context.Context, *QueryParamsRequest) (*QueryParamsResponse, error) // QueryConsumerChainOptedInValidators returns a list of validators consensus addresses @@ -2213,7 +2221,7 @@ type QueryServer interface { // QueryValidatorConsumerCommissionRate returns the commission rate a given // validator charges on a given consumer chain QueryValidatorConsumerCommissionRate(context.Context, *QueryValidatorConsumerCommissionRateRequest) (*QueryValidatorConsumerCommissionRateResponse, error) - // QueryConsumerValidators returns the latest set consumer-validator set for a given chainID + // QueryConsumerValidators returns the latest set consumer-validator set for a given consumer ID // Note that this does not necessarily mean that the consumer chain is using this validator set at this exact moment // because a VSCPacket could be delayed to be delivered on the consumer chain. QueryConsumerValidators(context.Context, *QueryConsumerValidatorsRequest) (*QueryConsumerValidatorsResponse, error) @@ -2250,8 +2258,8 @@ func (*UnimplementedQueryServer) QueryThrottleState(ctx context.Context, req *Qu func (*UnimplementedQueryServer) QueryRegisteredConsumerRewardDenoms(ctx context.Context, req *QueryRegisteredConsumerRewardDenomsRequest) (*QueryRegisteredConsumerRewardDenomsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method QueryRegisteredConsumerRewardDenoms not implemented") } -func (*UnimplementedQueryServer) QueryAllPairsValConAddrByConsumerChainID(ctx context.Context, req *QueryAllPairsValConAddrByConsumerChainIDRequest) (*QueryAllPairsValConAddrByConsumerChainIDResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method QueryAllPairsValConAddrByConsumerChainID not implemented") +func (*UnimplementedQueryServer) QueryAllPairsValConsAddrByConsumer(ctx context.Context, req *QueryAllPairsValConsAddrByConsumerRequest) (*QueryAllPairsValConsAddrByConsumerResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method QueryAllPairsValConsAddrByConsumer not implemented") } func (*UnimplementedQueryServer) QueryParams(ctx context.Context, req *QueryParamsRequest) (*QueryParamsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method QueryParams not implemented") @@ -2390,20 +2398,20 @@ func _Query_QueryRegisteredConsumerRewardDenoms_Handler(srv interface{}, ctx con return interceptor(ctx, in, info, handler) } -func _Query_QueryAllPairsValConAddrByConsumerChainID_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(QueryAllPairsValConAddrByConsumerChainIDRequest) +func _Query_QueryAllPairsValConsAddrByConsumer_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryAllPairsValConsAddrByConsumerRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(QueryServer).QueryAllPairsValConAddrByConsumerChainID(ctx, in) + return srv.(QueryServer).QueryAllPairsValConsAddrByConsumer(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/interchain_security.ccv.provider.v1.Query/QueryAllPairsValConAddrByConsumerChainID", + FullMethod: "/interchain_security.ccv.provider.v1.Query/QueryAllPairsValConsAddrByConsumer", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(QueryServer).QueryAllPairsValConAddrByConsumerChainID(ctx, req.(*QueryAllPairsValConAddrByConsumerChainIDRequest)) + return srv.(QueryServer).QueryAllPairsValConsAddrByConsumer(ctx, req.(*QueryAllPairsValConsAddrByConsumerRequest)) } return interceptor(ctx, in, info, handler) } @@ -2581,8 +2589,8 @@ var _Query_serviceDesc = grpc.ServiceDesc{ Handler: _Query_QueryRegisteredConsumerRewardDenoms_Handler, }, { - MethodName: "QueryAllPairsValConAddrByConsumerChainID", - Handler: _Query_QueryAllPairsValConAddrByConsumerChainID_Handler, + MethodName: "QueryAllPairsValConsAddrByConsumer", + Handler: _Query_QueryAllPairsValConsAddrByConsumer_Handler, }, { MethodName: "QueryParams", @@ -2774,6 +2782,13 @@ func (m *Chain) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if len(m.ConsumerId) > 0 { + i -= len(m.ConsumerId) + copy(dAtA[i:], m.ConsumerId) + i = encodeVarintQuery(dAtA, i, uint64(len(m.ConsumerId))) + i-- + dAtA[i] = 0x6a + } if m.AllowInactiveVals { i-- if m.AllowInactiveVals { @@ -2799,10 +2814,12 @@ func (m *Chain) MarshalToSizedBuffer(dAtA []byte) (int, error) { } i-- dAtA[i] = 0x52 - if m.Phase != 0 { - i = encodeVarintQuery(dAtA, i, uint64(m.Phase)) + if len(m.Phase) > 0 { + i -= len(m.Phase) + copy(dAtA[i:], m.Phase) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Phase))) i-- - dAtA[i] = 0x48 + dAtA[i] = 0x4a } if len(m.Denylist) > 0 { for iNdEx := len(m.Denylist) - 1; iNdEx >= 0; iNdEx-- { @@ -3112,7 +3129,7 @@ func (m *QueryRegisteredConsumerRewardDenomsResponse) MarshalToSizedBuffer(dAtA return len(dAtA) - i, nil } -func (m *QueryAllPairsValConAddrByConsumerChainIDRequest) Marshal() (dAtA []byte, err error) { +func (m *QueryAllPairsValConsAddrByConsumerRequest) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -3122,12 +3139,12 @@ func (m *QueryAllPairsValConAddrByConsumerChainIDRequest) Marshal() (dAtA []byte return dAtA[:n], nil } -func (m *QueryAllPairsValConAddrByConsumerChainIDRequest) MarshalTo(dAtA []byte) (int, error) { +func (m *QueryAllPairsValConsAddrByConsumerRequest) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *QueryAllPairsValConAddrByConsumerChainIDRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *QueryAllPairsValConsAddrByConsumerRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -3142,7 +3159,7 @@ func (m *QueryAllPairsValConAddrByConsumerChainIDRequest) MarshalToSizedBuffer(d return len(dAtA) - i, nil } -func (m *QueryAllPairsValConAddrByConsumerChainIDResponse) Marshal() (dAtA []byte, err error) { +func (m *QueryAllPairsValConsAddrByConsumerResponse) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -3152,12 +3169,12 @@ func (m *QueryAllPairsValConAddrByConsumerChainIDResponse) Marshal() (dAtA []byt return dAtA[:n], nil } -func (m *QueryAllPairsValConAddrByConsumerChainIDResponse) MarshalTo(dAtA []byte) (int, error) { +func (m *QueryAllPairsValConsAddrByConsumerResponse) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *QueryAllPairsValConAddrByConsumerChainIDResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *QueryAllPairsValConsAddrByConsumerResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -3602,11 +3619,11 @@ func (m *QueryConsumerChainsValidatorHasToValidateResponse) MarshalToSizedBuffer _ = i var l int _ = l - if len(m.ConsumerChainIds) > 0 { - for iNdEx := len(m.ConsumerChainIds) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.ConsumerChainIds[iNdEx]) - copy(dAtA[i:], m.ConsumerChainIds[iNdEx]) - i = encodeVarintQuery(dAtA, i, uint64(len(m.ConsumerChainIds[iNdEx]))) + if len(m.ConsumerIds) > 0 { + for iNdEx := len(m.ConsumerIds) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.ConsumerIds[iNdEx]) + copy(dAtA[i:], m.ConsumerIds[iNdEx]) + i = encodeVarintQuery(dAtA, i, uint64(len(m.ConsumerIds[iNdEx]))) i-- dAtA[i] = 0xa } @@ -4006,8 +4023,9 @@ func (m *Chain) Size() (n int) { n += 1 + l + sovQuery(uint64(l)) } } - if m.Phase != 0 { - n += 1 + sovQuery(uint64(m.Phase)) + l = len(m.Phase) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) } l = m.Metadata.Size() n += 1 + l + sovQuery(uint64(l)) @@ -4017,6 +4035,10 @@ func (m *Chain) Size() (n int) { if m.AllowInactiveVals { n += 2 } + l = len(m.ConsumerId) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } return n } @@ -4130,7 +4152,7 @@ func (m *QueryRegisteredConsumerRewardDenomsResponse) Size() (n int) { return n } -func (m *QueryAllPairsValConAddrByConsumerChainIDRequest) Size() (n int) { +func (m *QueryAllPairsValConsAddrByConsumerRequest) Size() (n int) { if m == nil { return 0 } @@ -4143,7 +4165,7 @@ func (m *QueryAllPairsValConAddrByConsumerChainIDRequest) Size() (n int) { return n } -func (m *QueryAllPairsValConAddrByConsumerChainIDResponse) Size() (n int) { +func (m *QueryAllPairsValConsAddrByConsumerResponse) Size() (n int) { if m == nil { return 0 } @@ -4323,8 +4345,8 @@ func (m *QueryConsumerChainsValidatorHasToValidateResponse) Size() (n int) { } var l int _ = l - if len(m.ConsumerChainIds) > 0 { - for _, s := range m.ConsumerChainIds { + if len(m.ConsumerIds) > 0 { + for _, s := range m.ConsumerIds { l = len(s) n += 1 + l + sovQuery(uint64(l)) } @@ -5028,10 +5050,10 @@ func (m *Chain) Unmarshal(dAtA []byte) error { m.Denylist = append(m.Denylist, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex case 9: - if wireType != 0 { + if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Phase", wireType) } - m.Phase = 0 + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowQuery @@ -5041,11 +5063,24 @@ func (m *Chain) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Phase |= ConsumerPhase(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Phase = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex case 10: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Metadata", wireType) @@ -5118,6 +5153,38 @@ func (m *Chain) Unmarshal(dAtA []byte) error { } } m.AllowInactiveVals = bool(v != 0) + case 13: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ConsumerId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ConsumerId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipQuery(dAtA[iNdEx:]) @@ -5834,7 +5901,7 @@ func (m *QueryRegisteredConsumerRewardDenomsResponse) Unmarshal(dAtA []byte) err } return nil } -func (m *QueryAllPairsValConAddrByConsumerChainIDRequest) Unmarshal(dAtA []byte) error { +func (m *QueryAllPairsValConsAddrByConsumerRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -5857,10 +5924,10 @@ func (m *QueryAllPairsValConAddrByConsumerChainIDRequest) Unmarshal(dAtA []byte) fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryAllPairsValConAddrByConsumerChainIDRequest: wiretype end group for non-group") + return fmt.Errorf("proto: QueryAllPairsValConsAddrByConsumerRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryAllPairsValConAddrByConsumerChainIDRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryAllPairsValConsAddrByConsumerRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -5916,7 +5983,7 @@ func (m *QueryAllPairsValConAddrByConsumerChainIDRequest) Unmarshal(dAtA []byte) } return nil } -func (m *QueryAllPairsValConAddrByConsumerChainIDResponse) Unmarshal(dAtA []byte) error { +func (m *QueryAllPairsValConsAddrByConsumerResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -5939,10 +6006,10 @@ func (m *QueryAllPairsValConAddrByConsumerChainIDResponse) Unmarshal(dAtA []byte fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryAllPairsValConAddrByConsumerChainIDResponse: wiretype end group for non-group") + return fmt.Errorf("proto: QueryAllPairsValConsAddrByConsumerResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryAllPairsValConAddrByConsumerChainIDResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryAllPairsValConsAddrByConsumerResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -7161,7 +7228,7 @@ func (m *QueryConsumerChainsValidatorHasToValidateResponse) Unmarshal(dAtA []byt switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ConsumerChainIds", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ConsumerIds", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -7189,7 +7256,7 @@ func (m *QueryConsumerChainsValidatorHasToValidateResponse) Unmarshal(dAtA []byt if postIndex > l { return io.ErrUnexpectedEOF } - m.ConsumerChainIds = append(m.ConsumerChainIds, string(dAtA[iNdEx:postIndex])) + m.ConsumerIds = append(m.ConsumerIds, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex default: iNdEx = preIndex diff --git a/x/ccv/provider/types/query.pb.gw.go b/x/ccv/provider/types/query.pb.gw.go index 8d1a7ad91e..92f8f09f5a 100644 --- a/x/ccv/provider/types/query.pb.gw.go +++ b/x/ccv/provider/types/query.pb.gw.go @@ -277,8 +277,8 @@ func local_request_Query_QueryRegisteredConsumerRewardDenoms_0(ctx context.Conte } -func request_Query_QueryAllPairsValConAddrByConsumerChainID_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryAllPairsValConAddrByConsumerChainIDRequest +func request_Query_QueryAllPairsValConsAddrByConsumer_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryAllPairsValConsAddrByConsumerRequest var metadata runtime.ServerMetadata var ( @@ -299,13 +299,13 @@ func request_Query_QueryAllPairsValConAddrByConsumerChainID_0(ctx context.Contex return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "consumer_id", err) } - msg, err := client.QueryAllPairsValConAddrByConsumerChainID(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.QueryAllPairsValConsAddrByConsumer(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_Query_QueryAllPairsValConAddrByConsumerChainID_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryAllPairsValConAddrByConsumerChainIDRequest +func local_request_Query_QueryAllPairsValConsAddrByConsumer_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryAllPairsValConsAddrByConsumerRequest var metadata runtime.ServerMetadata var ( @@ -326,7 +326,7 @@ func local_request_Query_QueryAllPairsValConAddrByConsumerChainID_0(ctx context. return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "consumer_id", err) } - msg, err := server.QueryAllPairsValConAddrByConsumerChainID(ctx, &protoReq) + msg, err := server.QueryAllPairsValConsAddrByConsumer(ctx, &protoReq) return msg, metadata, err } @@ -857,7 +857,7 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv }) - mux.Handle("GET", pattern_Query_QueryAllPairsValConAddrByConsumerChainID_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_Query_QueryAllPairsValConsAddrByConsumer_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() var stream runtime.ServerTransportStream @@ -868,7 +868,7 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Query_QueryAllPairsValConAddrByConsumerChainID_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Query_QueryAllPairsValConsAddrByConsumer_0(rctx, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { @@ -876,7 +876,7 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv return } - forward_Query_QueryAllPairsValConAddrByConsumerChainID_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Query_QueryAllPairsValConsAddrByConsumer_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1225,7 +1225,7 @@ func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie }) - mux.Handle("GET", pattern_Query_QueryAllPairsValConAddrByConsumerChainID_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_Query_QueryAllPairsValConsAddrByConsumer_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) @@ -1234,14 +1234,14 @@ func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Query_QueryAllPairsValConAddrByConsumerChainID_0(rctx, inboundMarshaler, client, req, pathParams) + resp, md, err := request_Query_QueryAllPairsValConsAddrByConsumer_0(rctx, inboundMarshaler, client, req, pathParams) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - forward_Query_QueryAllPairsValConAddrByConsumerChainID_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Query_QueryAllPairsValConsAddrByConsumer_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1421,7 +1421,7 @@ var ( pattern_Query_QueryRegisteredConsumerRewardDenoms_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"interchain_security", "ccv", "provider", "registered_consumer_reward_denoms"}, "", runtime.AssumeColonVerbOpt(false))) - pattern_Query_QueryAllPairsValConAddrByConsumerChainID_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"interchain_security", "ccv", "provider", "address_pairs", "consumer_id"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_Query_QueryAllPairsValConsAddrByConsumer_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"interchain_security", "ccv", "provider", "address_pairs", "consumer_id"}, "", runtime.AssumeColonVerbOpt(false))) pattern_Query_QueryParams_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"interchain_security", "ccv", "provider", "params"}, "", runtime.AssumeColonVerbOpt(false))) @@ -1453,7 +1453,7 @@ var ( forward_Query_QueryRegisteredConsumerRewardDenoms_0 = runtime.ForwardResponseMessage - forward_Query_QueryAllPairsValConAddrByConsumerChainID_0 = runtime.ForwardResponseMessage + forward_Query_QueryAllPairsValConsAddrByConsumer_0 = runtime.ForwardResponseMessage forward_Query_QueryParams_0 = runtime.ForwardResponseMessage