diff --git a/cmd/zetae2e/stress.go b/cmd/zetae2e/stress.go index 5228905074..f8ca5b9f28 100644 --- a/cmd/zetae2e/stress.go +++ b/cmd/zetae2e/stress.go @@ -252,7 +252,7 @@ func EchoNetworkMetrics(runner *runner.E2ERunner) { case <-ticker.C: numTicks++ // Get all pending outbound transactions - cctxResp, err := runner.CctxClient.CctxListPending(context.Background(), &crosschaintypes.QueryListCctxPendingRequest{ + cctxResp, err := runner.CctxClient.ListPendingCctx(context.Background(), &crosschaintypes.QueryListPendingCctxRequest{ ChainId: chainID.Int64(), }) if err != nil { diff --git a/docs/openapi/openapi.swagger.yaml b/docs/openapi/openapi.swagger.yaml index 1d9296f6a1..1eb8fe4593 100644 --- a/docs/openapi/openapi.swagger.yaml +++ b/docs/openapi/openapi.swagger.yaml @@ -26582,53 +26582,6 @@ paths: type: string tags: - Query - /zeta-chain/crosschain/cctxPending: - get: - summary: Queries a list of pending cctxs. - operationId: Query_CctxListPending - responses: - "200": - description: A successful response. - schema: - $ref: '#/definitions/crosschainQueryListCctxPendingResponse' - default: - description: An unexpected error response. - schema: - $ref: '#/definitions/googlerpcStatus' - parameters: - - name: chain_id - in: query - required: false - type: string - format: int64 - - name: limit - in: query - required: false - type: integer - format: int64 - tags: - - Query - /zeta-chain/crosschain/cctxPendingWithRateLimit: - get: - summary: Queries a list of pending cctxs with rate limit. - operationId: Query_CctxListPendingWithinRateLimit - responses: - "200": - description: A successful response. - schema: - $ref: '#/definitions/crosschainQueryListCctxPendingWithRateLimitResponse' - default: - description: An unexpected error response. - schema: - $ref: '#/definitions/googlerpcStatus' - parameters: - - name: limit - in: query - required: false - type: integer - format: int64 - tags: - - Query /zeta-chain/crosschain/convertGasToZeta: get: operationId: Query_ConvertGasToZeta @@ -27194,6 +27147,53 @@ paths: type: boolean tags: - Query + /zeta-chain/crosschain/pendingCctx: + get: + summary: Queries a list of pending cctxs. + operationId: Query_ListPendingCctx + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/crosschainQueryListPendingCctxResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/googlerpcStatus' + parameters: + - name: chain_id + in: query + required: false + type: string + format: int64 + - name: limit + in: query + required: false + type: integer + format: int64 + tags: + - Query + /zeta-chain/crosschain/pendingCctxWithinRateLimit: + get: + summary: Queries a list of pending cctxs within rate limit. + operationId: Query_ListPendingCctxWithinRateLimit + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/crosschainQueryListPendingCctxWithinRateLimitResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/googlerpcStatus' + parameters: + - name: limit + in: query + required: false + type: integer + format: int64 + tags: + - Query /zeta-chain/crosschain/protocolFee: get: operationId: Query_ProtocolFee @@ -53991,7 +53991,7 @@ definitions: Height: type: string format: int64 - crosschainQueryListCctxPendingResponse: + crosschainQueryListPendingCctxResponse: type: object properties: CrossChainTx: @@ -54002,7 +54002,7 @@ definitions: totalPending: type: string format: uint64 - crosschainQueryListCctxPendingWithRateLimitResponse: + crosschainQueryListPendingCctxWithinRateLimitResponse: type: object properties: cross_chain_tx: diff --git a/proto/crosschain/query.proto b/proto/crosschain/query.proto index b4c6a9a753..b017e2c523 100644 --- a/proto/crosschain/query.proto +++ b/proto/crosschain/query.proto @@ -95,13 +95,13 @@ service Query { } // Queries a list of pending cctxs. - rpc CctxListPending(QueryListCctxPendingRequest) returns (QueryListCctxPendingResponse) { - option (google.api.http).get = "/zeta-chain/crosschain/cctxPending"; + rpc ListPendingCctx(QueryListPendingCctxRequest) returns (QueryListPendingCctxResponse) { + option (google.api.http).get = "/zeta-chain/crosschain/pendingCctx"; } - // Queries a list of pending cctxs with rate limit. - rpc CctxListPendingWithinRateLimit(QueryListCctxPendingWithRateLimitRequest) returns (QueryListCctxPendingWithRateLimitResponse) { - option (google.api.http).get = "/zeta-chain/crosschain/cctxPendingWithRateLimit"; + // Queries a list of pending cctxs within rate limit. + rpc ListPendingCctxWithinRateLimit(QueryListPendingCctxWithinRateLimitRequest) returns (QueryListPendingCctxWithinRateLimitResponse) { + option (google.api.http).get = "/zeta-chain/crosschain/pendingCctxWithinRateLimit"; } rpc ZetaAccounting(QueryZetaAccountingRequest) returns (QueryZetaAccountingResponse) { @@ -253,21 +253,21 @@ message QueryAllCctxResponse { cosmos.base.query.v1beta1.PageResponse pagination = 2; } -message QueryListCctxPendingRequest { +message QueryListPendingCctxRequest { int64 chain_id = 1; uint32 limit = 2; } -message QueryListCctxPendingResponse { +message QueryListPendingCctxResponse { repeated CrossChainTx CrossChainTx = 1; uint64 totalPending = 2; } -message QueryListCctxPendingWithRateLimitRequest { - uint32 limit = 2; +message QueryListPendingCctxWithinRateLimitRequest { + uint32 limit = 1; } -message QueryListCctxPendingWithRateLimitResponse { +message QueryListPendingCctxWithinRateLimitResponse { repeated CrossChainTx cross_chain_tx = 1; uint64 total_pending = 2; bool rate_limit_exceeded = 3; diff --git a/typescript/crosschain/query_pb.d.ts b/typescript/crosschain/query_pb.d.ts index cc093b0b13..34b4a44f38 100644 --- a/typescript/crosschain/query_pb.d.ts +++ b/typescript/crosschain/query_pb.d.ts @@ -814,9 +814,9 @@ export declare class QueryAllCctxResponse extends Message } /** - * @generated from message zetachain.zetacore.crosschain.QueryListCctxPendingRequest + * @generated from message zetachain.zetacore.crosschain.QueryListPendingCctxRequest */ -export declare class QueryListCctxPendingRequest extends Message { +export declare class QueryListPendingCctxRequest extends Message { /** * @generated from field: int64 chain_id = 1; */ @@ -827,25 +827,25 @@ export declare class QueryListCctxPendingRequest extends Message); + constructor(data?: PartialMessage); static readonly runtime: typeof proto3; - static readonly typeName = "zetachain.zetacore.crosschain.QueryListCctxPendingRequest"; + static readonly typeName = "zetachain.zetacore.crosschain.QueryListPendingCctxRequest"; static readonly fields: FieldList; - static fromBinary(bytes: Uint8Array, options?: Partial): QueryListCctxPendingRequest; + static fromBinary(bytes: Uint8Array, options?: Partial): QueryListPendingCctxRequest; - static fromJson(jsonValue: JsonValue, options?: Partial): QueryListCctxPendingRequest; + static fromJson(jsonValue: JsonValue, options?: Partial): QueryListPendingCctxRequest; - static fromJsonString(jsonString: string, options?: Partial): QueryListCctxPendingRequest; + static fromJsonString(jsonString: string, options?: Partial): QueryListPendingCctxRequest; - static equals(a: QueryListCctxPendingRequest | PlainMessage | undefined, b: QueryListCctxPendingRequest | PlainMessage | undefined): boolean; + static equals(a: QueryListPendingCctxRequest | PlainMessage | undefined, b: QueryListPendingCctxRequest | PlainMessage | undefined): boolean; } /** - * @generated from message zetachain.zetacore.crosschain.QueryListCctxPendingResponse + * @generated from message zetachain.zetacore.crosschain.QueryListPendingCctxResponse */ -export declare class QueryListCctxPendingResponse extends Message { +export declare class QueryListPendingCctxResponse extends Message { /** * @generated from field: repeated zetachain.zetacore.crosschain.CrossChainTx CrossChainTx = 1; */ @@ -856,49 +856,49 @@ export declare class QueryListCctxPendingResponse extends Message); + constructor(data?: PartialMessage); static readonly runtime: typeof proto3; - static readonly typeName = "zetachain.zetacore.crosschain.QueryListCctxPendingResponse"; + static readonly typeName = "zetachain.zetacore.crosschain.QueryListPendingCctxResponse"; static readonly fields: FieldList; - static fromBinary(bytes: Uint8Array, options?: Partial): QueryListCctxPendingResponse; + static fromBinary(bytes: Uint8Array, options?: Partial): QueryListPendingCctxResponse; - static fromJson(jsonValue: JsonValue, options?: Partial): QueryListCctxPendingResponse; + static fromJson(jsonValue: JsonValue, options?: Partial): QueryListPendingCctxResponse; - static fromJsonString(jsonString: string, options?: Partial): QueryListCctxPendingResponse; + static fromJsonString(jsonString: string, options?: Partial): QueryListPendingCctxResponse; - static equals(a: QueryListCctxPendingResponse | PlainMessage | undefined, b: QueryListCctxPendingResponse | PlainMessage | undefined): boolean; + static equals(a: QueryListPendingCctxResponse | PlainMessage | undefined, b: QueryListPendingCctxResponse | PlainMessage | undefined): boolean; } /** - * @generated from message zetachain.zetacore.crosschain.QueryListCctxPendingWithRateLimitRequest + * @generated from message zetachain.zetacore.crosschain.QueryListPendingCctxWithinRateLimitRequest */ -export declare class QueryListCctxPendingWithRateLimitRequest extends Message { +export declare class QueryListPendingCctxWithinRateLimitRequest extends Message { /** - * @generated from field: uint32 limit = 2; + * @generated from field: uint32 limit = 1; */ limit: number; - constructor(data?: PartialMessage); + constructor(data?: PartialMessage); static readonly runtime: typeof proto3; - static readonly typeName = "zetachain.zetacore.crosschain.QueryListCctxPendingWithRateLimitRequest"; + static readonly typeName = "zetachain.zetacore.crosschain.QueryListPendingCctxWithinRateLimitRequest"; static readonly fields: FieldList; - static fromBinary(bytes: Uint8Array, options?: Partial): QueryListCctxPendingWithRateLimitRequest; + static fromBinary(bytes: Uint8Array, options?: Partial): QueryListPendingCctxWithinRateLimitRequest; - static fromJson(jsonValue: JsonValue, options?: Partial): QueryListCctxPendingWithRateLimitRequest; + static fromJson(jsonValue: JsonValue, options?: Partial): QueryListPendingCctxWithinRateLimitRequest; - static fromJsonString(jsonString: string, options?: Partial): QueryListCctxPendingWithRateLimitRequest; + static fromJsonString(jsonString: string, options?: Partial): QueryListPendingCctxWithinRateLimitRequest; - static equals(a: QueryListCctxPendingWithRateLimitRequest | PlainMessage | undefined, b: QueryListCctxPendingWithRateLimitRequest | PlainMessage | undefined): boolean; + static equals(a: QueryListPendingCctxWithinRateLimitRequest | PlainMessage | undefined, b: QueryListPendingCctxWithinRateLimitRequest | PlainMessage | undefined): boolean; } /** - * @generated from message zetachain.zetacore.crosschain.QueryListCctxPendingWithRateLimitResponse + * @generated from message zetachain.zetacore.crosschain.QueryListPendingCctxWithinRateLimitResponse */ -export declare class QueryListCctxPendingWithRateLimitResponse extends Message { +export declare class QueryListPendingCctxWithinRateLimitResponse extends Message { /** * @generated from field: repeated zetachain.zetacore.crosschain.CrossChainTx cross_chain_tx = 1; */ @@ -914,19 +914,19 @@ export declare class QueryListCctxPendingWithRateLimitResponse extends Message); + constructor(data?: PartialMessage); static readonly runtime: typeof proto3; - static readonly typeName = "zetachain.zetacore.crosschain.QueryListCctxPendingWithRateLimitResponse"; + static readonly typeName = "zetachain.zetacore.crosschain.QueryListPendingCctxWithinRateLimitResponse"; static readonly fields: FieldList; - static fromBinary(bytes: Uint8Array, options?: Partial): QueryListCctxPendingWithRateLimitResponse; + static fromBinary(bytes: Uint8Array, options?: Partial): QueryListPendingCctxWithinRateLimitResponse; - static fromJson(jsonValue: JsonValue, options?: Partial): QueryListCctxPendingWithRateLimitResponse; + static fromJson(jsonValue: JsonValue, options?: Partial): QueryListPendingCctxWithinRateLimitResponse; - static fromJsonString(jsonString: string, options?: Partial): QueryListCctxPendingWithRateLimitResponse; + static fromJsonString(jsonString: string, options?: Partial): QueryListPendingCctxWithinRateLimitResponse; - static equals(a: QueryListCctxPendingWithRateLimitResponse | PlainMessage | undefined, b: QueryListCctxPendingWithRateLimitResponse | PlainMessage | undefined): boolean; + static equals(a: QueryListPendingCctxWithinRateLimitResponse | PlainMessage | undefined, b: QueryListPendingCctxWithinRateLimitResponse | PlainMessage | undefined): boolean; } /** diff --git a/x/crosschain/client/cli/cli_cctx.go b/x/crosschain/client/cli/cli_cctx.go index 87991442d1..b5add8610b 100644 --- a/x/crosschain/client/cli/cli_cctx.go +++ b/x/crosschain/client/cli/cli_cctx.go @@ -69,13 +69,13 @@ func CmdPendingCctx() *cobra.Command { return err } - params := &types.QueryListCctxPendingRequest{ + params := &types.QueryListPendingCctxRequest{ ChainId: chainID, // #nosec G701 bit size verified Limit: uint32(limit), } - res, err := queryClient.CctxListPending(context.Background(), params) + res, err := queryClient.ListPendingCctx(context.Background(), params) if err != nil { return err } diff --git a/x/crosschain/keeper/abci.go b/x/crosschain/keeper/abci.go index 5a02c53676..f893e795bb 100644 --- a/x/crosschain/keeper/abci.go +++ b/x/crosschain/keeper/abci.go @@ -51,7 +51,7 @@ IterateChains: for _, chain := range chains { // support only external evm chains if zetachains.IsEVMChain(chain.ChainId) && !zetachains.IsZetaChain(chain.ChainId) { - res, err := k.CctxListPending(sdk.UnwrapSDKContext(ctx), &types.QueryListCctxPendingRequest{ + res, err := k.ListPendingCctx(sdk.UnwrapSDKContext(ctx), &types.QueryListPendingCctxRequest{ ChainId: chain.ChainId, Limit: gasPriceIncreaseFlags.MaxPendingCctxs, }) diff --git a/x/crosschain/keeper/grpc_query_cctx.go b/x/crosschain/keeper/grpc_query_cctx.go index 0cc659869c..8e96757b44 100644 --- a/x/crosschain/keeper/grpc_query_cctx.go +++ b/x/crosschain/keeper/grpc_query_cctx.go @@ -87,9 +87,9 @@ func (k Keeper) CctxByNonce(c context.Context, req *types.QueryGetCctxByNonceReq return &types.QueryGetCctxResponse{CrossChainTx: cctx}, nil } -// CctxListPending returns a list of pending cctxs and the total number of pending cctxs +// ListPendingCctx returns a list of pending cctxs and the total number of pending cctxs // a limit for the number of cctxs to return can be specified or the default is MaxPendingCctxs -func (k Keeper) CctxListPending(c context.Context, req *types.QueryListCctxPendingRequest) (*types.QueryListCctxPendingResponse, error) { +func (k Keeper) ListPendingCctx(c context.Context, req *types.QueryListPendingCctxRequest) (*types.QueryListPendingCctxResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "invalid request") } @@ -154,7 +154,7 @@ func (k Keeper) CctxListPending(c context.Context, req *types.QueryListCctxPendi cctxs = append(cctxs, cctx) } - return &types.QueryListCctxPendingResponse{ + return &types.QueryListPendingCctxResponse{ CrossChainTx: cctxs, TotalPending: totalPending, }, nil diff --git a/x/crosschain/keeper/grpc_query_cctx_rate_limit.go b/x/crosschain/keeper/grpc_query_cctx_rate_limit.go index 78f73b9d78..b3b30ca939 100644 --- a/x/crosschain/keeper/grpc_query_cctx_rate_limit.go +++ b/x/crosschain/keeper/grpc_query_cctx_rate_limit.go @@ -13,9 +13,9 @@ import ( "google.golang.org/grpc/status" ) -// CctxListPendingWithinRateLimit returns a list of pending cctxs that do not exceed the outbound rate limit +// ListPendingCctxWithinRateLimit returns a list of pending cctxs that do not exceed the outbound rate limit // a limit for the number of cctxs to return can be specified or the default is MaxPendingCctxs -func (k Keeper) CctxListPendingWithinRateLimit(c context.Context, req *types.QueryListCctxPendingWithRateLimitRequest) (*types.QueryListCctxPendingWithRateLimitResponse, error) { +func (k Keeper) ListPendingCctxWithinRateLimit(c context.Context, req *types.QueryListPendingCctxWithinRateLimitRequest) (*types.QueryListPendingCctxWithinRateLimitResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "invalid request") } @@ -27,6 +27,36 @@ func (k Keeper) CctxListPendingWithinRateLimit(c context.Context, req *types.Que } ctx := sdk.UnwrapSDKContext(c) + // define a few variables to be used in the query loops + limitExceeded := false + totalPending := uint64(0) + totalCctxValueInZeta := sdk.NewDec(0) + cctxs := make([]*types.CrossChainTx, 0) + chains := k.zetaObserverKeeper.GetSupportedForeignChains(ctx) + + // check rate limit flags to decide if we should apply rate limit + applyLimit := true + rateLimitFlags, found := k.GetRateLimiterFlags(ctx) + if !found || !rateLimitFlags.Enabled { + applyLimit = false + } + + // fallback to non-rate-limited query if rate limiter is disabled + if !applyLimit { + for _, chain := range chains { + resp, err := k.ListPendingCctx(ctx, &types.QueryListPendingCctxRequest{ChainId: chain.ChainId, Limit: limit}) + if err == nil { + cctxs = append(cctxs, resp.CrossChainTx...) + totalPending += resp.TotalPending + } + } + return &types.QueryListPendingCctxWithinRateLimitResponse{ + CrossChainTx: cctxs, + TotalPending: totalPending, + RateLimitExceeded: false, + }, nil + } + // get current height and tss height := ctx.BlockHeight() if height <= 0 { @@ -37,13 +67,6 @@ func (k Keeper) CctxListPendingWithinRateLimit(c context.Context, req *types.Que return nil, observertypes.ErrTssNotFound } - // check rate limit flags to decide if we should apply rate limit - applyLimit := true - rateLimitFlags, found := k.GetRateLimiterFlags(ctx) - if !found || !rateLimitFlags.Enabled { - applyLimit = false - } - // calculate the rate limiter sliding window left boundary (inclusive) leftWindowBoundary := height - rateLimitFlags.Window if leftWindowBoundary < 0 { @@ -61,13 +84,6 @@ func (k Keeper) CctxListPendingWithinRateLimit(c context.Context, req *types.Que rateLimitInZeta = sdk.NewDecFromBigInt(rateLimitFlags.Rate.BigInt()) } - // define a few variables to be used in the below loops - limitExceeded := false - totalPending := uint64(0) - totalCctxValueInZeta := sdk.NewDec(0) - cctxs := make([]*types.CrossChainTx, 0) - pendingNoncesMap := make(map[int64]*observertypes.PendingNonces) - // the criteria to stop adding cctxs to the rpc response maxCCTXsReached := func() bool { // #nosec G701 len always positive @@ -76,7 +92,7 @@ func (k Keeper) CctxListPendingWithinRateLimit(c context.Context, req *types.Que // query pending nonces for each foreign chain // Note: The pending nonces could change during the RPC call, so query them beforehand - chains := k.zetaObserverKeeper.GetSupportedForeignChains(ctx) + pendingNoncesMap := make(map[int64]*observertypes.PendingNonces) for _, chain := range chains { pendingNonces, found := k.GetObserverKeeper().GetPendingNonces(ctx, tss.TssPubkey, chain.ChainId) if !found { @@ -107,22 +123,16 @@ LoopBackwards: // We should at least go backwards by 1000 nonces to pick up missed pending cctxs // We might go even further back if rate limiter is enabled and the endNonce hasn't hit the left window boundary yet - // There are three criteria to stop scanning backwards: - // criteria #1: if rate limiter is disabled, we should stop exactly on the `endNonce` - if !applyLimit && nonce < endNonce { + // There are two criteria to stop scanning backwards: + // criteria #1: we'll stop at the left window boundary if the `endNonce` hasn't hit it yet + // #nosec G701 always positive + if nonce < endNonce && cctx.InboundTxParams.InboundTxObservedExternalHeight < uint64(leftWindowBoundary) { break } - if applyLimit { - // criteria #2: if rate limiter is enabled, we'll stop at the left window boundary if the `endNonce` hasn't hit it yet - // #nosec G701 always positive - if nonce < endNonce && cctx.InboundTxParams.InboundTxObservedExternalHeight < uint64(leftWindowBoundary) { - break - } - // criteria #3: if rate limiter is enabled, we should finish the RPC call if the rate limit is exceeded - if rateLimitExceeded(chain.ChainId, cctx, gasCoinRates, erc20CoinRates, erc20Coins, &totalCctxValueInZeta, rateLimitInZeta) { - limitExceeded = true - break LoopBackwards - } + // criteria #2: we should finish the RPC call if the rate limit is exceeded + if rateLimitExceeded(chain.ChainId, cctx, gasCoinRates, erc20CoinRates, erc20Coins, &totalCctxValueInZeta, rateLimitInZeta) { + limitExceeded = true + break LoopBackwards } // only take a `limit` number of pending cctxs as result but still count the total pending cctxs @@ -156,8 +166,8 @@ LoopForwards: if maxCCTXsReached() { break LoopForwards } - // criteria #3: if rate limiter is enabled, we should finish the RPC call if the rate limit is exceeded - if applyLimit && rateLimitExceeded(chain.ChainId, cctx, gasCoinRates, erc20CoinRates, erc20Coins, &totalCctxValueInZeta, rateLimitInZeta) { + // criteria #2: we should finish the RPC call if the rate limit is exceeded + if rateLimitExceeded(chain.ChainId, cctx, gasCoinRates, erc20CoinRates, erc20Coins, &totalCctxValueInZeta, rateLimitInZeta) { limitExceeded = true break LoopForwards } @@ -165,7 +175,7 @@ LoopForwards: } } - return &types.QueryListCctxPendingWithRateLimitResponse{ + return &types.QueryListPendingCctxWithinRateLimitResponse{ CrossChainTx: cctxs, TotalPending: totalPending, RateLimitExceeded: limitExceeded, diff --git a/x/crosschain/keeper/grpc_query_cctx_rate_limit_test.go b/x/crosschain/keeper/grpc_query_cctx_rate_limit_test.go index 1f994872d8..5c2eee4066 100644 --- a/x/crosschain/keeper/grpc_query_cctx_rate_limit_test.go +++ b/x/crosschain/keeper/grpc_query_cctx_rate_limit_test.go @@ -5,34 +5,12 @@ import ( "github.com/stretchr/testify/require" keepertest "github.com/zeta-chain/zetacore/testutil/keeper" - "github.com/zeta-chain/zetacore/testutil/sample" - "github.com/zeta-chain/zetacore/x/crosschain/keeper" - "github.com/zeta-chain/zetacore/x/crosschain/types" ) func TestKeeper_CctxListPendingWithRateLimit(t *testing.T) { t.Run("should fail for empty req", func(t *testing.T) { k, ctx, _, _ := keepertest.CrosschainKeeper(t) - _, err := k.CctxListPendingWithinRateLimit(ctx, nil) + _, err := k.ListPendingCctxWithinRateLimit(ctx, nil) require.ErrorContains(t, err, "invalid request") }) - t.Run("should use max limit if limit is too high", func(t *testing.T) { - k, ctx, _, _ := keepertest.CrosschainKeeper(t) - _, err := k.CctxListPendingWithinRateLimit(ctx, &types.QueryListCctxPendingWithRateLimitRequest{Limit: keeper.MaxPendingCctxs + 1}) - require.ErrorContains(t, err, "tss not found") - }) - t.Run("should fail if no TSS", func(t *testing.T) { - k, ctx, _, _ := keepertest.CrosschainKeeper(t) - _, err := k.CctxListPendingWithinRateLimit(ctx, &types.QueryListCctxPendingWithRateLimitRequest{Limit: 1}) - require.ErrorContains(t, err, "tss not found") - }) - t.Run("should return empty list if no nonces", func(t *testing.T) { - k, ctx, _, zk := keepertest.CrosschainKeeper(t) - - // set TSS - zk.ObserverKeeper.SetTSS(ctx, sample.Tss()) - - _, err := k.CctxListPendingWithinRateLimit(ctx, &types.QueryListCctxPendingWithRateLimitRequest{Limit: 1}) - require.ErrorContains(t, err, "pending nonces not found") - }) } diff --git a/x/crosschain/keeper/grpc_query_cctx_test.go b/x/crosschain/keeper/grpc_query_cctx_test.go index 2387f9dc3a..240d0bfe92 100644 --- a/x/crosschain/keeper/grpc_query_cctx_test.go +++ b/x/crosschain/keeper/grpc_query_cctx_test.go @@ -66,19 +66,19 @@ func createCctxWithNonceRange( func TestKeeper_CctxListPending(t *testing.T) { t.Run("should fail for empty req", func(t *testing.T) { k, ctx, _, _ := keepertest.CrosschainKeeper(t) - _, err := k.CctxListPending(ctx, nil) + _, err := k.ListPendingCctx(ctx, nil) require.ErrorContains(t, err, "invalid request") }) t.Run("should use max limit if limit is too high", func(t *testing.T) { k, ctx, _, _ := keepertest.CrosschainKeeper(t) - _, err := k.CctxListPending(ctx, &types.QueryListCctxPendingRequest{Limit: keeper.MaxPendingCctxs + 1}) + _, err := k.ListPendingCctx(ctx, &types.QueryListPendingCctxRequest{Limit: keeper.MaxPendingCctxs + 1}) require.ErrorContains(t, err, "tss not found") }) t.Run("should fail if no TSS", func(t *testing.T) { k, ctx, _, _ := keepertest.CrosschainKeeper(t) - _, err := k.CctxListPending(ctx, &types.QueryListCctxPendingRequest{Limit: 1}) + _, err := k.ListPendingCctx(ctx, &types.QueryListPendingCctxRequest{Limit: 1}) require.ErrorContains(t, err, "tss not found") }) @@ -88,7 +88,7 @@ func TestKeeper_CctxListPending(t *testing.T) { // set TSS zk.ObserverKeeper.SetTSS(ctx, sample.Tss()) - _, err := k.CctxListPending(ctx, &types.QueryListCctxPendingRequest{Limit: 1}) + _, err := k.ListPendingCctx(ctx, &types.QueryListPendingCctxRequest{Limit: 1}) require.ErrorContains(t, err, "pending nonces not found") }) @@ -99,13 +99,13 @@ func TestKeeper_CctxListPending(t *testing.T) { zk.ObserverKeeper.SetTSS(ctx, tss) cctxs := createCctxWithNonceRange(t, ctx, *k, 1000, 2000, chainID, tss, zk) - res, err := k.CctxListPending(ctx, &types.QueryListCctxPendingRequest{ChainId: chainID, Limit: 100}) + res, err := k.ListPendingCctx(ctx, &types.QueryListPendingCctxRequest{ChainId: chainID, Limit: 100}) require.NoError(t, err) require.Equal(t, 100, len(res.CrossChainTx)) require.EqualValues(t, cctxs[0:100], res.CrossChainTx) require.EqualValues(t, uint64(1000), res.TotalPending) - res, err = k.CctxListPending(ctx, &types.QueryListCctxPendingRequest{ChainId: chainID}) + res, err = k.ListPendingCctx(ctx, &types.QueryListPendingCctxRequest{ChainId: chainID}) require.NoError(t, err) require.Equal(t, keeper.MaxPendingCctxs, len(res.CrossChainTx)) require.EqualValues(t, cctxs[0:keeper.MaxPendingCctxs], res.CrossChainTx) @@ -119,7 +119,7 @@ func TestKeeper_CctxListPending(t *testing.T) { zk.ObserverKeeper.SetTSS(ctx, tss) cctxs := createCctxWithNonceRange(t, ctx, *k, 1000, 1100, chainID, tss, zk) - res, err := k.CctxListPending(ctx, &types.QueryListCctxPendingRequest{ChainId: chainID}) + res, err := k.ListPendingCctx(ctx, &types.QueryListPendingCctxRequest{ChainId: chainID}) require.NoError(t, err) require.Equal(t, 100, len(res.CrossChainTx)) require.EqualValues(t, cctxs, res.CrossChainTx) @@ -144,7 +144,7 @@ func TestKeeper_CctxListPending(t *testing.T) { cctx2.CctxStatus.Status = types.CctxStatus_PendingOutbound k.SetCrossChainTx(ctx, cctx2) - res, err := k.CctxListPending(ctx, &types.QueryListCctxPendingRequest{ChainId: chainID, Limit: 100}) + res, err := k.ListPendingCctx(ctx, &types.QueryListPendingCctxRequest{ChainId: chainID, Limit: 100}) require.NoError(t, err) require.Equal(t, 100, len(res.CrossChainTx)) @@ -173,7 +173,7 @@ func TestKeeper_CctxListPending(t *testing.T) { cctx2.CctxStatus.Status = types.CctxStatus_PendingOutbound k.SetCrossChainTx(ctx, cctx2) - res, err := k.CctxListPending(ctx, &types.QueryListCctxPendingRequest{ChainId: chainID, Limit: 100}) + res, err := k.ListPendingCctx(ctx, &types.QueryListPendingCctxRequest{ChainId: chainID, Limit: 100}) require.NoError(t, err) require.Equal(t, 100, len(res.CrossChainTx)) diff --git a/x/crosschain/types/query.pb.go b/x/crosschain/types/query.pb.go index 7d88a5f6df..879dcce901 100644 --- a/x/crosschain/types/query.pb.go +++ b/x/crosschain/types/query.pb.go @@ -1483,23 +1483,23 @@ func (m *QueryAllCctxResponse) GetPagination() *query.PageResponse { return nil } -type QueryListCctxPendingRequest struct { +type QueryListPendingCctxRequest struct { ChainId int64 `protobuf:"varint,1,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"` Limit uint32 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"` } -func (m *QueryListCctxPendingRequest) Reset() { *m = QueryListCctxPendingRequest{} } -func (m *QueryListCctxPendingRequest) String() string { return proto.CompactTextString(m) } -func (*QueryListCctxPendingRequest) ProtoMessage() {} -func (*QueryListCctxPendingRequest) Descriptor() ([]byte, []int) { +func (m *QueryListPendingCctxRequest) Reset() { *m = QueryListPendingCctxRequest{} } +func (m *QueryListPendingCctxRequest) String() string { return proto.CompactTextString(m) } +func (*QueryListPendingCctxRequest) ProtoMessage() {} +func (*QueryListPendingCctxRequest) Descriptor() ([]byte, []int) { return fileDescriptor_65a992045e92a606, []int{31} } -func (m *QueryListCctxPendingRequest) XXX_Unmarshal(b []byte) error { +func (m *QueryListPendingCctxRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *QueryListCctxPendingRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *QueryListPendingCctxRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_QueryListCctxPendingRequest.Marshal(b, m, deterministic) + return xxx_messageInfo_QueryListPendingCctxRequest.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -1509,49 +1509,49 @@ func (m *QueryListCctxPendingRequest) XXX_Marshal(b []byte, deterministic bool) return b[:n], nil } } -func (m *QueryListCctxPendingRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryListCctxPendingRequest.Merge(m, src) +func (m *QueryListPendingCctxRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryListPendingCctxRequest.Merge(m, src) } -func (m *QueryListCctxPendingRequest) XXX_Size() int { +func (m *QueryListPendingCctxRequest) XXX_Size() int { return m.Size() } -func (m *QueryListCctxPendingRequest) XXX_DiscardUnknown() { - xxx_messageInfo_QueryListCctxPendingRequest.DiscardUnknown(m) +func (m *QueryListPendingCctxRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryListPendingCctxRequest.DiscardUnknown(m) } -var xxx_messageInfo_QueryListCctxPendingRequest proto.InternalMessageInfo +var xxx_messageInfo_QueryListPendingCctxRequest proto.InternalMessageInfo -func (m *QueryListCctxPendingRequest) GetChainId() int64 { +func (m *QueryListPendingCctxRequest) GetChainId() int64 { if m != nil { return m.ChainId } return 0 } -func (m *QueryListCctxPendingRequest) GetLimit() uint32 { +func (m *QueryListPendingCctxRequest) GetLimit() uint32 { if m != nil { return m.Limit } return 0 } -type QueryListCctxPendingResponse struct { +type QueryListPendingCctxResponse struct { CrossChainTx []*CrossChainTx `protobuf:"bytes,1,rep,name=CrossChainTx,proto3" json:"CrossChainTx,omitempty"` TotalPending uint64 `protobuf:"varint,2,opt,name=totalPending,proto3" json:"totalPending,omitempty"` } -func (m *QueryListCctxPendingResponse) Reset() { *m = QueryListCctxPendingResponse{} } -func (m *QueryListCctxPendingResponse) String() string { return proto.CompactTextString(m) } -func (*QueryListCctxPendingResponse) ProtoMessage() {} -func (*QueryListCctxPendingResponse) Descriptor() ([]byte, []int) { +func (m *QueryListPendingCctxResponse) Reset() { *m = QueryListPendingCctxResponse{} } +func (m *QueryListPendingCctxResponse) String() string { return proto.CompactTextString(m) } +func (*QueryListPendingCctxResponse) ProtoMessage() {} +func (*QueryListPendingCctxResponse) Descriptor() ([]byte, []int) { return fileDescriptor_65a992045e92a606, []int{32} } -func (m *QueryListCctxPendingResponse) XXX_Unmarshal(b []byte) error { +func (m *QueryListPendingCctxResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *QueryListCctxPendingResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *QueryListPendingCctxResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_QueryListCctxPendingResponse.Marshal(b, m, deterministic) + return xxx_messageInfo_QueryListPendingCctxResponse.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -1561,50 +1561,52 @@ func (m *QueryListCctxPendingResponse) XXX_Marshal(b []byte, deterministic bool) return b[:n], nil } } -func (m *QueryListCctxPendingResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryListCctxPendingResponse.Merge(m, src) +func (m *QueryListPendingCctxResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryListPendingCctxResponse.Merge(m, src) } -func (m *QueryListCctxPendingResponse) XXX_Size() int { +func (m *QueryListPendingCctxResponse) XXX_Size() int { return m.Size() } -func (m *QueryListCctxPendingResponse) XXX_DiscardUnknown() { - xxx_messageInfo_QueryListCctxPendingResponse.DiscardUnknown(m) +func (m *QueryListPendingCctxResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryListPendingCctxResponse.DiscardUnknown(m) } -var xxx_messageInfo_QueryListCctxPendingResponse proto.InternalMessageInfo +var xxx_messageInfo_QueryListPendingCctxResponse proto.InternalMessageInfo -func (m *QueryListCctxPendingResponse) GetCrossChainTx() []*CrossChainTx { +func (m *QueryListPendingCctxResponse) GetCrossChainTx() []*CrossChainTx { if m != nil { return m.CrossChainTx } return nil } -func (m *QueryListCctxPendingResponse) GetTotalPending() uint64 { +func (m *QueryListPendingCctxResponse) GetTotalPending() uint64 { if m != nil { return m.TotalPending } return 0 } -type QueryListCctxPendingWithRateLimitRequest struct { - Limit uint32 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"` +type QueryListPendingCctxWithinRateLimitRequest struct { + Limit uint32 `protobuf:"varint,1,opt,name=limit,proto3" json:"limit,omitempty"` } -func (m *QueryListCctxPendingWithRateLimitRequest) Reset() { - *m = QueryListCctxPendingWithRateLimitRequest{} +func (m *QueryListPendingCctxWithinRateLimitRequest) Reset() { + *m = QueryListPendingCctxWithinRateLimitRequest{} } -func (m *QueryListCctxPendingWithRateLimitRequest) String() string { return proto.CompactTextString(m) } -func (*QueryListCctxPendingWithRateLimitRequest) ProtoMessage() {} -func (*QueryListCctxPendingWithRateLimitRequest) Descriptor() ([]byte, []int) { +func (m *QueryListPendingCctxWithinRateLimitRequest) String() string { + return proto.CompactTextString(m) +} +func (*QueryListPendingCctxWithinRateLimitRequest) ProtoMessage() {} +func (*QueryListPendingCctxWithinRateLimitRequest) Descriptor() ([]byte, []int) { return fileDescriptor_65a992045e92a606, []int{33} } -func (m *QueryListCctxPendingWithRateLimitRequest) XXX_Unmarshal(b []byte) error { +func (m *QueryListPendingCctxWithinRateLimitRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *QueryListCctxPendingWithRateLimitRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *QueryListPendingCctxWithinRateLimitRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_QueryListCctxPendingWithRateLimitRequest.Marshal(b, m, deterministic) + return xxx_messageInfo_QueryListPendingCctxWithinRateLimitRequest.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -1614,47 +1616,47 @@ func (m *QueryListCctxPendingWithRateLimitRequest) XXX_Marshal(b []byte, determi return b[:n], nil } } -func (m *QueryListCctxPendingWithRateLimitRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryListCctxPendingWithRateLimitRequest.Merge(m, src) +func (m *QueryListPendingCctxWithinRateLimitRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryListPendingCctxWithinRateLimitRequest.Merge(m, src) } -func (m *QueryListCctxPendingWithRateLimitRequest) XXX_Size() int { +func (m *QueryListPendingCctxWithinRateLimitRequest) XXX_Size() int { return m.Size() } -func (m *QueryListCctxPendingWithRateLimitRequest) XXX_DiscardUnknown() { - xxx_messageInfo_QueryListCctxPendingWithRateLimitRequest.DiscardUnknown(m) +func (m *QueryListPendingCctxWithinRateLimitRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryListPendingCctxWithinRateLimitRequest.DiscardUnknown(m) } -var xxx_messageInfo_QueryListCctxPendingWithRateLimitRequest proto.InternalMessageInfo +var xxx_messageInfo_QueryListPendingCctxWithinRateLimitRequest proto.InternalMessageInfo -func (m *QueryListCctxPendingWithRateLimitRequest) GetLimit() uint32 { +func (m *QueryListPendingCctxWithinRateLimitRequest) GetLimit() uint32 { if m != nil { return m.Limit } return 0 } -type QueryListCctxPendingWithRateLimitResponse struct { +type QueryListPendingCctxWithinRateLimitResponse struct { CrossChainTx []*CrossChainTx `protobuf:"bytes,1,rep,name=cross_chain_tx,json=crossChainTx,proto3" json:"cross_chain_tx,omitempty"` TotalPending uint64 `protobuf:"varint,2,opt,name=total_pending,json=totalPending,proto3" json:"total_pending,omitempty"` RateLimitExceeded bool `protobuf:"varint,3,opt,name=rate_limit_exceeded,json=rateLimitExceeded,proto3" json:"rate_limit_exceeded,omitempty"` } -func (m *QueryListCctxPendingWithRateLimitResponse) Reset() { - *m = QueryListCctxPendingWithRateLimitResponse{} +func (m *QueryListPendingCctxWithinRateLimitResponse) Reset() { + *m = QueryListPendingCctxWithinRateLimitResponse{} } -func (m *QueryListCctxPendingWithRateLimitResponse) String() string { +func (m *QueryListPendingCctxWithinRateLimitResponse) String() string { return proto.CompactTextString(m) } -func (*QueryListCctxPendingWithRateLimitResponse) ProtoMessage() {} -func (*QueryListCctxPendingWithRateLimitResponse) Descriptor() ([]byte, []int) { +func (*QueryListPendingCctxWithinRateLimitResponse) ProtoMessage() {} +func (*QueryListPendingCctxWithinRateLimitResponse) Descriptor() ([]byte, []int) { return fileDescriptor_65a992045e92a606, []int{34} } -func (m *QueryListCctxPendingWithRateLimitResponse) XXX_Unmarshal(b []byte) error { +func (m *QueryListPendingCctxWithinRateLimitResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *QueryListCctxPendingWithRateLimitResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *QueryListPendingCctxWithinRateLimitResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_QueryListCctxPendingWithRateLimitResponse.Marshal(b, m, deterministic) + return xxx_messageInfo_QueryListPendingCctxWithinRateLimitResponse.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -1664,33 +1666,33 @@ func (m *QueryListCctxPendingWithRateLimitResponse) XXX_Marshal(b []byte, determ return b[:n], nil } } -func (m *QueryListCctxPendingWithRateLimitResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryListCctxPendingWithRateLimitResponse.Merge(m, src) +func (m *QueryListPendingCctxWithinRateLimitResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryListPendingCctxWithinRateLimitResponse.Merge(m, src) } -func (m *QueryListCctxPendingWithRateLimitResponse) XXX_Size() int { +func (m *QueryListPendingCctxWithinRateLimitResponse) XXX_Size() int { return m.Size() } -func (m *QueryListCctxPendingWithRateLimitResponse) XXX_DiscardUnknown() { - xxx_messageInfo_QueryListCctxPendingWithRateLimitResponse.DiscardUnknown(m) +func (m *QueryListPendingCctxWithinRateLimitResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryListPendingCctxWithinRateLimitResponse.DiscardUnknown(m) } -var xxx_messageInfo_QueryListCctxPendingWithRateLimitResponse proto.InternalMessageInfo +var xxx_messageInfo_QueryListPendingCctxWithinRateLimitResponse proto.InternalMessageInfo -func (m *QueryListCctxPendingWithRateLimitResponse) GetCrossChainTx() []*CrossChainTx { +func (m *QueryListPendingCctxWithinRateLimitResponse) GetCrossChainTx() []*CrossChainTx { if m != nil { return m.CrossChainTx } return nil } -func (m *QueryListCctxPendingWithRateLimitResponse) GetTotalPending() uint64 { +func (m *QueryListPendingCctxWithinRateLimitResponse) GetTotalPending() uint64 { if m != nil { return m.TotalPending } return 0 } -func (m *QueryListCctxPendingWithRateLimitResponse) GetRateLimitExceeded() bool { +func (m *QueryListPendingCctxWithinRateLimitResponse) GetRateLimitExceeded() bool { if m != nil { return m.RateLimitExceeded } @@ -2083,10 +2085,10 @@ func init() { proto.RegisterType((*QueryGetCctxResponse)(nil), "zetachain.zetacore.crosschain.QueryGetCctxResponse") proto.RegisterType((*QueryAllCctxRequest)(nil), "zetachain.zetacore.crosschain.QueryAllCctxRequest") proto.RegisterType((*QueryAllCctxResponse)(nil), "zetachain.zetacore.crosschain.QueryAllCctxResponse") - proto.RegisterType((*QueryListCctxPendingRequest)(nil), "zetachain.zetacore.crosschain.QueryListCctxPendingRequest") - proto.RegisterType((*QueryListCctxPendingResponse)(nil), "zetachain.zetacore.crosschain.QueryListCctxPendingResponse") - proto.RegisterType((*QueryListCctxPendingWithRateLimitRequest)(nil), "zetachain.zetacore.crosschain.QueryListCctxPendingWithRateLimitRequest") - proto.RegisterType((*QueryListCctxPendingWithRateLimitResponse)(nil), "zetachain.zetacore.crosschain.QueryListCctxPendingWithRateLimitResponse") + proto.RegisterType((*QueryListPendingCctxRequest)(nil), "zetachain.zetacore.crosschain.QueryListPendingCctxRequest") + proto.RegisterType((*QueryListPendingCctxResponse)(nil), "zetachain.zetacore.crosschain.QueryListPendingCctxResponse") + proto.RegisterType((*QueryListPendingCctxWithinRateLimitRequest)(nil), "zetachain.zetacore.crosschain.QueryListPendingCctxWithinRateLimitRequest") + proto.RegisterType((*QueryListPendingCctxWithinRateLimitResponse)(nil), "zetachain.zetacore.crosschain.QueryListPendingCctxWithinRateLimitResponse") proto.RegisterType((*QueryLastZetaHeightRequest)(nil), "zetachain.zetacore.crosschain.QueryLastZetaHeightRequest") proto.RegisterType((*QueryLastZetaHeightResponse)(nil), "zetachain.zetacore.crosschain.QueryLastZetaHeightResponse") proto.RegisterType((*QueryConvertGasToZetaRequest)(nil), "zetachain.zetacore.crosschain.QueryConvertGasToZetaRequest") @@ -2100,127 +2102,126 @@ func init() { func init() { proto.RegisterFile("crosschain/query.proto", fileDescriptor_65a992045e92a606) } var fileDescriptor_65a992045e92a606 = []byte{ - // 1911 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x5a, 0x41, 0x6f, 0x1c, 0x49, - 0x15, 0x76, 0x79, 0xe2, 0x5d, 0xa7, 0xec, 0xc4, 0xeb, 0x5a, 0x13, 0x4c, 0xaf, 0x3d, 0x4e, 0xda, - 0x24, 0xf6, 0x26, 0x78, 0x7a, 0xed, 0xdd, 0x38, 0x6c, 0xe2, 0x45, 0x3b, 0x76, 0xd6, 0x4e, 0x84, - 0x77, 0xe3, 0x8c, 0x8c, 0x82, 0x82, 0x50, 0xab, 0xdc, 0x53, 0xe9, 0x69, 0xa5, 0xdd, 0xed, 0x4c, - 0xd7, 0x44, 0xe3, 0x58, 0xbe, 0xe4, 0xc0, 0x19, 0x29, 0x07, 0x2e, 0x9c, 0x90, 0x10, 0x1c, 0x38, - 0x70, 0x40, 0x70, 0x40, 0x0a, 0x42, 0x40, 0xc8, 0x31, 0x52, 0x24, 0x84, 0x40, 0x42, 0x28, 0xe1, - 0xc8, 0x8f, 0x58, 0x75, 0xcd, 0xeb, 0x99, 0xea, 0x9e, 0xee, 0x99, 0xf2, 0x78, 0x72, 0xc8, 0x29, - 0x53, 0x5d, 0xf5, 0xde, 0xfb, 0xbe, 0xf7, 0x5e, 0xbf, 0x7e, 0xf5, 0x62, 0x7c, 0xc6, 0xaa, 0xfa, - 0x41, 0x60, 0x55, 0xa8, 0xe3, 0x19, 0x0f, 0x6a, 0xac, 0xba, 0x5f, 0xd8, 0xab, 0xfa, 0xdc, 0x27, - 0xd3, 0x8f, 0x18, 0xa7, 0xe2, 0x71, 0x41, 0xfc, 0xf2, 0xab, 0xac, 0xd0, 0x3a, 0xaa, 0x5d, 0xb4, - 0xfc, 0x60, 0xd7, 0x0f, 0x8c, 0x1d, 0x1a, 0xb0, 0x86, 0x9c, 0xf1, 0x70, 0x71, 0x87, 0x71, 0xba, - 0x68, 0xec, 0x51, 0xdb, 0xf1, 0x28, 0x77, 0x7c, 0xaf, 0xa1, 0x4a, 0x9b, 0x91, 0x4c, 0x88, 0x9f, - 0xa6, 0xf8, 0x6d, 0xf2, 0x3a, 0x1c, 0xd0, 0xa4, 0x03, 0x36, 0x0d, 0xcc, 0xbd, 0xaa, 0x63, 0x31, - 0xd8, 0x9b, 0x95, 0xf6, 0x84, 0x8c, 0x59, 0xa1, 0x41, 0xc5, 0xe4, 0xbe, 0x69, 0x59, 0x4d, 0x05, - 0xf9, 0xb6, 0x43, 0xbc, 0x4a, 0xad, 0xfb, 0xac, 0x0a, 0xfb, 0xba, 0xb4, 0xef, 0xd2, 0x80, 0x9b, - 0x3b, 0xae, 0x6f, 0xdd, 0x37, 0x2b, 0xcc, 0xb1, 0x2b, 0x3c, 0x05, 0xa5, 0x5f, 0xe3, 0xed, 0x4a, - 0x64, 0x24, 0x55, 0xca, 0x99, 0xe9, 0x3a, 0xbb, 0x0e, 0x67, 0x55, 0xf3, 0x9e, 0x4b, 0xed, 0x00, - 0x0e, 0x4d, 0xd8, 0xbe, 0xed, 0x8b, 0x9f, 0x46, 0xf8, 0x0b, 0x9e, 0x4e, 0xd9, 0xbe, 0x6f, 0xbb, - 0xcc, 0xa0, 0x7b, 0x8e, 0x41, 0x3d, 0xcf, 0xe7, 0xc2, 0x3d, 0x20, 0xa3, 0x4f, 0x61, 0xed, 0x76, - 0xe8, 0xc1, 0xbb, 0x8c, 0xd3, 0xa2, 0x65, 0xf9, 0x35, 0x8f, 0x3b, 0x9e, 0x5d, 0x62, 0x0f, 0x6a, - 0x2c, 0xe0, 0xfa, 0x97, 0xf8, 0x83, 0xd4, 0xdd, 0x60, 0xcf, 0xf7, 0x02, 0x46, 0x0a, 0xf8, 0x7d, - 0xba, 0xe3, 0x57, 0x39, 0x2b, 0x9b, 0x61, 0x9c, 0x4c, 0xba, 0x1b, 0x9e, 0x98, 0x44, 0x67, 0xd1, - 0xfc, 0xc9, 0xd2, 0x38, 0x6c, 0x09, 0x59, 0xb1, 0xd1, 0x54, 0xb7, 0xc1, 0xf8, 0xad, 0x1a, 0xdf, - 0xae, 0x6f, 0x37, 0x38, 0x82, 0x35, 0x32, 0x89, 0xdf, 0x15, 0x0c, 0x6f, 0x5e, 0x17, 0x2a, 0x72, - 0xa5, 0x68, 0x49, 0x26, 0xf0, 0x90, 0xe7, 0x7b, 0x16, 0x9b, 0x1c, 0x3c, 0x8b, 0xe6, 0x4f, 0x94, - 0x1a, 0x0b, 0xbd, 0x86, 0xa7, 0xd2, 0xd5, 0x01, 0xbc, 0x1f, 0xe0, 0x51, 0x5f, 0x7a, 0x2e, 0x94, - 0x8e, 0x2c, 0x5d, 0x2a, 0x74, 0xcc, 0xae, 0x82, 0xac, 0x6a, 0xf5, 0xc4, 0xf3, 0xff, 0xcc, 0x0c, - 0x94, 0x62, 0x6a, 0x74, 0x06, 0x2c, 0x8a, 0xae, 0x9b, 0xc6, 0x62, 0x1d, 0xe3, 0x56, 0x16, 0x82, - 0xcd, 0x0b, 0x85, 0x46, 0xca, 0x16, 0xc2, 0x94, 0x2d, 0x34, 0x52, 0x1d, 0x52, 0xb6, 0xb0, 0x45, - 0x6d, 0x06, 0xb2, 0x25, 0x49, 0x52, 0x7f, 0x8a, 0x80, 0x5e, 0x9b, 0x9d, 0x4c, 0x7a, 0xb9, 0x3e, - 0xd0, 0x23, 0x1b, 0x31, 0xfc, 0x83, 0x02, 0xff, 0x5c, 0x57, 0xfc, 0x0d, 0x4c, 0x31, 0x02, 0x8f, - 0x11, 0xd6, 0xd3, 0x08, 0xac, 0xee, 0xaf, 0x85, 0x48, 0x22, 0x7f, 0x4d, 0xe0, 0x21, 0x81, 0x0c, - 0x62, 0xde, 0x58, 0x24, 0xbc, 0x38, 0xd8, 0xb3, 0x17, 0xff, 0x86, 0xf0, 0x6c, 0x47, 0x10, 0x6f, - 0x89, 0x33, 0x7f, 0x82, 0xf0, 0xb9, 0x88, 0xc7, 0x4d, 0x2f, 0xcb, 0x97, 0xdf, 0xc2, 0xc3, 0x8d, - 0xf2, 0xe6, 0x94, 0xe3, 0xaf, 0x50, 0xb9, 0x6f, 0x0e, 0xfd, 0xb3, 0x14, 0xd5, 0x34, 0x20, 0xe0, - 0xcf, 0x12, 0x1e, 0x71, 0xbc, 0xa4, 0x3b, 0x2f, 0x76, 0x71, 0xa7, 0xac, 0xaf, 0xe1, 0x4d, 0x59, - 0x49, 0xff, 0x9c, 0x29, 0xbd, 0xc1, 0x92, 0xc9, 0xa0, 0xdf, 0x6f, 0xf0, 0x1f, 0xa5, 0x37, 0x38, - 0x6e, 0xe7, 0x6d, 0x70, 0xd2, 0x35, 0x3c, 0x1d, 0x55, 0xd7, 0xd0, 0xe4, 0x0d, 0x1a, 0x54, 0xb6, - 0xfd, 0x35, 0x8b, 0xd7, 0x23, 0x37, 0x69, 0x78, 0xd8, 0x81, 0x0d, 0x28, 0xf9, 0xcd, 0xb5, 0x7e, - 0x88, 0xf3, 0x59, 0xc2, 0xc0, 0xfd, 0x47, 0xf8, 0xb4, 0x13, 0xdb, 0x01, 0x47, 0x2f, 0x28, 0xd0, - 0x6f, 0x09, 0x81, 0x07, 0x12, 0xaa, 0xf4, 0x15, 0x30, 0x1f, 0x3f, 0x7c, 0x9d, 0x72, 0xaa, 0x02, - 0xfe, 0x11, 0x9e, 0xc9, 0x94, 0x06, 0xf4, 0x77, 0xf0, 0xa9, 0xb5, 0x10, 0x93, 0x48, 0xfa, 0xed, - 0x7a, 0xa0, 0x58, 0x2f, 0x64, 0x19, 0x80, 0x1e, 0xd7, 0xa3, 0xdb, 0xe0, 0x75, 0x48, 0x99, 0x76, - 0xaf, 0xf7, 0x2b, 0x39, 0x9f, 0x21, 0xf0, 0x51, 0x8a, 0xa5, 0x0e, 0x21, 0xca, 0xf5, 0x29, 0x44, - 0xfd, 0xcb, 0x53, 0x03, 0x7f, 0x33, 0x4a, 0xb5, 0x0d, 0x1a, 0x6c, 0x85, 0xed, 0x9b, 0xf4, 0x69, - 0x71, 0xbc, 0x32, 0xab, 0x43, 0x84, 0x1b, 0x0b, 0xdd, 0xc4, 0x93, 0xed, 0x02, 0x40, 0x79, 0x0d, - 0x0f, 0x47, 0xcf, 0xc0, 0xb7, 0x73, 0x5d, 0xc8, 0x36, 0x55, 0x34, 0x05, 0x75, 0x0a, 0x88, 0x8a, - 0xae, 0x9b, 0x44, 0xd4, 0xaf, 0xe8, 0xfd, 0x1a, 0x01, 0x89, 0x98, 0x8d, 0x54, 0x12, 0xb9, 0x9e, - 0x48, 0xf4, 0x2f, 0x3e, 0xcb, 0xad, 0x52, 0xb0, 0x49, 0x03, 0xbe, 0x1a, 0x76, 0xbf, 0x37, 0x44, - 0xf3, 0xdb, 0x39, 0x4c, 0x07, 0xf0, 0x16, 0xa6, 0xc9, 0x01, 0xd1, 0x1f, 0xe2, 0xb1, 0xc4, 0x16, - 0xb8, 0xb4, 0xd0, 0x85, 0x6f, 0x52, 0x61, 0x52, 0x8d, 0x5e, 0x69, 0xbd, 0x1c, 0x19, 0xa0, 0xfb, - 0x15, 0xc9, 0xbf, 0x22, 0xe0, 0x99, 0x66, 0xaa, 0x13, 0xcf, 0x5c, 0x1f, 0x78, 0xf6, 0x2f, 0xca, - 0x97, 0xf0, 0xfb, 0x51, 0xb4, 0xe4, 0x6a, 0x95, 0x1e, 0xda, 0x4d, 0xb8, 0x74, 0xc0, 0xe1, 0xd5, - 0xfd, 0xaf, 0xc2, 0x7e, 0xbe, 0xd7, 0x6b, 0x80, 0x8d, 0x27, 0xe2, 0xa6, 0xc1, 0x6b, 0xb7, 0xf0, - 0xa8, 0x5c, 0x5b, 0x15, 0xdb, 0x7f, 0x59, 0xa4, 0x14, 0x53, 0xa0, 0xff, 0x18, 0x38, 0x16, 0x5d, - 0xf7, 0x4d, 0x54, 0xe4, 0xdf, 0x22, 0x20, 0xd2, 0xd4, 0x9f, 0x49, 0x24, 0x77, 0x2c, 0x22, 0xfd, - 0x8b, 0xfa, 0x57, 0xd0, 0x48, 0x6d, 0x3a, 0x81, 0xf0, 0xfd, 0x16, 0xf3, 0xca, 0xad, 0xeb, 0x63, - 0xa7, 0x76, 0x74, 0x02, 0x0f, 0x89, 0x2b, 0xac, 0xb0, 0x7e, 0xaa, 0xd4, 0x58, 0xe8, 0x4f, 0xa2, - 0x8e, 0xa9, 0x4d, 0xe1, 0x9b, 0x72, 0x85, 0x8e, 0x47, 0xb9, 0xcf, 0xa9, 0x0b, 0x86, 0x20, 0xb3, - 0x62, 0xcf, 0xf4, 0xcf, 0xf1, 0x7c, 0x1a, 0xa8, 0x3b, 0x0e, 0xaf, 0x94, 0x28, 0x67, 0x9b, 0x21, - 0x74, 0x29, 0xe1, 0x53, 0x78, 0xbd, 0x44, 0xf8, 0x43, 0x05, 0x15, 0x40, 0xf2, 0x36, 0x3e, 0x1d, - 0x1f, 0x55, 0xf4, 0x44, 0xd3, 0x92, 0x69, 0xce, 0xe2, 0x53, 0x82, 0x92, 0xb9, 0x97, 0xcd, 0x33, - 0xbc, 0xce, 0xb7, 0x66, 0x0b, 0x26, 0xab, 0x5b, 0x8c, 0x95, 0x59, 0x79, 0x32, 0x77, 0x16, 0xcd, - 0x0f, 0x97, 0xc6, 0xab, 0x11, 0xce, 0x2f, 0x60, 0xa3, 0x39, 0x3b, 0x08, 0x8b, 0x4a, 0x78, 0xcb, - 0x8f, 0x15, 0x48, 0xfd, 0x72, 0x94, 0x1b, 0x89, 0x5d, 0x20, 0x79, 0x06, 0xbf, 0x23, 0x95, 0xec, - 0x5c, 0x09, 0x56, 0xfa, 0x36, 0x64, 0xc0, 0x9a, 0xef, 0x3d, 0x64, 0xd5, 0xf0, 0x0b, 0xbd, 0xed, - 0x87, 0xe2, 0x6d, 0xd5, 0xa1, 0x2d, 0xa5, 0x34, 0x3c, 0x6c, 0xd3, 0x60, 0xb3, 0xe9, 0xfd, 0x93, - 0xa5, 0xe6, 0x5a, 0xff, 0x25, 0x82, 0xbe, 0xaa, 0x5d, 0x2d, 0xe0, 0xf9, 0x0e, 0x1e, 0xf7, 0x6b, - 0x7c, 0xc7, 0xaf, 0x79, 0xe5, 0x0d, 0x1a, 0xdc, 0xf4, 0xc2, 0xcd, 0x68, 0x92, 0xd1, 0xb6, 0x11, - 0x9e, 0x16, 0xf3, 0x13, 0xcb, 0x77, 0xd7, 0x19, 0x83, 0xd3, 0x0d, 0xa3, 0xed, 0x1b, 0x64, 0x1e, - 0x8f, 0x85, 0xff, 0xca, 0xf5, 0x3b, 0x27, 0xfc, 0x9f, 0x7c, 0xac, 0xcf, 0xe1, 0xf3, 0x02, 0xe6, - 0x97, 0x2c, 0x08, 0xa8, 0xcd, 0xb6, 0x68, 0x10, 0x38, 0x9e, 0xbd, 0xd5, 0xd2, 0x18, 0x79, 0x77, - 0x1d, 0x5f, 0xe8, 0x76, 0x10, 0x88, 0x4d, 0xe1, 0x93, 0xf7, 0x9a, 0x10, 0x1b, 0x84, 0x5a, 0x0f, - 0xf4, 0x3c, 0xb8, 0xbb, 0x99, 0x85, 0xac, 0xba, 0xee, 0x52, 0x3b, 0xba, 0x0b, 0x85, 0x97, 0xf8, - 0xe9, 0x8c, 0x03, 0xa0, 0x9f, 0xe2, 0xf7, 0xaa, 0x89, 0x3d, 0x28, 0x82, 0x46, 0x97, 0x7c, 0x4d, - 0xaa, 0x84, 0x4e, 0xb1, 0x4d, 0xdd, 0xd2, 0x2f, 0xce, 0xe1, 0x21, 0x01, 0x82, 0x3c, 0x43, 0x78, - 0x54, 0xbe, 0x74, 0x93, 0xab, 0x5d, 0x6c, 0x74, 0x98, 0x37, 0x69, 0xd7, 0x7a, 0x92, 0x6d, 0xd0, - 0xd6, 0x3f, 0x7b, 0xfc, 0xf2, 0x7f, 0x4f, 0x06, 0xaf, 0x90, 0xcb, 0x46, 0x28, 0xba, 0x20, 0x4d, - 0x18, 0x9b, 0x63, 0xbc, 0xa6, 0x90, 0x71, 0x00, 0x5f, 0xb0, 0x43, 0xe3, 0x40, 0x7c, 0xb3, 0x0e, - 0xc9, 0x1f, 0x10, 0x1e, 0x93, 0xf5, 0x16, 0x5d, 0x57, 0x8d, 0x4b, 0xfa, 0xd4, 0x49, 0x8d, 0x4b, - 0xc6, 0x24, 0x49, 0xbf, 0x24, 0xb8, 0x9c, 0x27, 0xb3, 0x0a, 0x5c, 0xc8, 0xbf, 0x11, 0x3e, 0x93, - 0x40, 0x0e, 0x97, 0x7f, 0x52, 0xec, 0x01, 0x44, 0x7c, 0x82, 0xa1, 0xad, 0x1e, 0x47, 0x05, 0xd0, - 0xb9, 0x2a, 0xe8, 0x7c, 0x42, 0x96, 0x14, 0xe8, 0x80, 0x2c, 0x44, 0xe8, 0x90, 0xfc, 0x0b, 0xe1, - 0x6f, 0x48, 0x37, 0x6c, 0x89, 0xdc, 0xe7, 0x8a, 0xc8, 0x32, 0xa7, 0x33, 0x5a, 0xf1, 0x18, 0x1a, - 0x80, 0xda, 0x8a, 0xa0, 0xb6, 0x4c, 0x3e, 0xc9, 0xa0, 0xe6, 0x78, 0x19, 0xcc, 0x4c, 0xa7, 0x7c, - 0x48, 0x7e, 0x8f, 0xf0, 0xe9, 0x38, 0x39, 0xe5, 0x9c, 0x4b, 0x99, 0x93, 0x28, 0xe7, 0x5c, 0xda, - 0xec, 0xa3, 0x6b, 0xce, 0x49, 0x4c, 0x02, 0xf2, 0x77, 0x00, 0x2e, 0xdd, 0x1f, 0x57, 0x14, 0x5f, - 0xde, 0xd4, 0x5b, 0xb4, 0xf6, 0x59, 0x8f, 0xd2, 0x00, 0xfe, 0xbb, 0x02, 0xfc, 0x12, 0xf9, 0xa8, - 0x03, 0xf8, 0x96, 0x98, 0x71, 0x10, 0xad, 0x0f, 0xc9, 0x3f, 0x10, 0x26, 0xed, 0x73, 0x05, 0xa2, - 0x84, 0x27, 0x73, 0x9a, 0xa1, 0x7d, 0xaf, 0x57, 0x71, 0xe0, 0x53, 0x14, 0x7c, 0xae, 0x91, 0x4f, - 0x33, 0xf9, 0x24, 0xff, 0xf3, 0xc3, 0x2c, 0x53, 0x4e, 0x65, 0x62, 0x7f, 0x42, 0x78, 0x3c, 0x6e, - 0x21, 0x4c, 0xaf, 0x95, 0x23, 0xa4, 0x48, 0x8f, 0x51, 0xca, 0x9c, 0x5f, 0xe8, 0x0b, 0x82, 0xd5, - 0x1c, 0x39, 0xaf, 0x14, 0x25, 0xf2, 0x1b, 0xd4, 0xba, 0x37, 0x93, 0x65, 0xc5, 0x04, 0x49, 0x5c, - 0xf0, 0xb5, 0x2b, 0x47, 0x96, 0x03, 0xb0, 0x86, 0x00, 0xfb, 0x21, 0x99, 0xcb, 0x00, 0x6b, 0x83, - 0x40, 0xe8, 0xf3, 0x32, 0xab, 0x1f, 0x92, 0x5f, 0x21, 0x3c, 0x12, 0x69, 0x09, 0x5d, 0xbd, 0xac, - 0xe8, 0xac, 0x9e, 0x10, 0xa7, 0x8c, 0x19, 0xf4, 0x39, 0x81, 0xf8, 0x1c, 0x99, 0xe9, 0x82, 0x98, - 0x3c, 0x45, 0xf8, 0xbd, 0x64, 0xdf, 0x45, 0x94, 0x8a, 0x47, 0x46, 0x13, 0xa8, 0xad, 0xf4, 0x26, - 0xac, 0xe8, 0x6a, 0x2b, 0x89, 0xf5, 0x19, 0xc2, 0x23, 0x52, 0x6b, 0x45, 0xae, 0xab, 0x98, 0xef, - 0xd6, 0xc2, 0x69, 0x5f, 0x1c, 0x53, 0x0b, 0xb0, 0xb9, 0x28, 0xd8, 0x7c, 0x9b, 0xe8, 0x19, 0x6c, - 0xa4, 0x76, 0x94, 0x3c, 0x47, 0x6d, 0x93, 0x04, 0xa2, 0x5a, 0x0a, 0xd3, 0xe7, 0x20, 0x6a, 0xa5, - 0x27, 0x7b, 0x86, 0xa3, 0x2f, 0x0b, 0xf8, 0x1f, 0x91, 0x42, 0x06, 0x7c, 0x37, 0x2e, 0xd7, 0x4c, - 0xff, 0xbf, 0x20, 0x4c, 0x12, 0x3a, 0xc3, 0xb7, 0x40, 0xb5, 0x64, 0x1c, 0x87, 0x4d, 0xf6, 0xa4, - 0x46, 0x2f, 0x08, 0x36, 0xf3, 0xe4, 0x82, 0x1a, 0x1b, 0xf2, 0x73, 0x84, 0x4f, 0x88, 0xe2, 0xb3, - 0xa4, 0xe8, 0x46, 0xb9, 0x3c, 0x7e, 0x7c, 0x24, 0x19, 0xc5, 0xef, 0xae, 0x05, 0x1f, 0x2c, 0xe1, - 0xe4, 0xdf, 0x21, 0x3c, 0x22, 0x4d, 0x68, 0xc8, 0xa7, 0x47, 0xb0, 0x18, 0x9f, 0xea, 0xf4, 0x06, - 0xf6, 0xb2, 0x00, 0x6b, 0x90, 0x85, 0x8e, 0x60, 0xdb, 0x9a, 0xeb, 0x9f, 0x21, 0xfc, 0x6e, 0xf4, - 0x05, 0x5a, 0x52, 0x8c, 0xe8, 0x91, 0x1d, 0x9b, 0x98, 0xd2, 0xe8, 0xb3, 0x02, 0xeb, 0x34, 0xf9, - 0xa0, 0x03, 0xd6, 0xb0, 0x03, 0x1b, 0x0b, 0xa5, 0x36, 0x9d, 0x80, 0x47, 0xd7, 0x6e, 0xa5, 0x16, - 0x2c, 0x7d, 0xc2, 0xa2, 0xd6, 0x82, 0x65, 0x0c, 0x53, 0xba, 0x56, 0x0e, 0xab, 0x25, 0x43, 0xfe, - 0x8f, 0x70, 0x3e, 0x01, 0xfc, 0x8e, 0xc3, 0x2b, 0x8e, 0xd7, 0xbc, 0xc4, 0x91, 0x8d, 0x1e, 0xb0, - 0xa4, 0xcd, 0x50, 0xb4, 0x1b, 0xc7, 0x57, 0x04, 0x0c, 0xaf, 0x08, 0x86, 0x8b, 0xc4, 0xe8, 0xce, - 0x30, 0xa6, 0x40, 0x74, 0xca, 0xf1, 0x3f, 0x7a, 0x50, 0xcb, 0xfd, 0xd4, 0x3f, 0xa3, 0xd0, 0xae, - 0xf6, 0x22, 0xaa, 0xd8, 0xc4, 0x3c, 0x8a, 0xa3, 0x0c, 0x81, 0xc7, 0x27, 0x2e, 0x6a, 0xc0, 0x53, - 0x67, 0x38, 0x6a, 0xc0, 0xd3, 0x07, 0x3c, 0x5d, 0x81, 0xbb, 0x71, 0x94, 0x61, 0x93, 0x90, 0x1c, - 0x08, 0xa8, 0x35, 0x09, 0x19, 0xa3, 0x0b, 0xb5, 0x26, 0x21, 0x6b, 0xac, 0xd1, 0xb5, 0x49, 0x48, - 0x0e, 0x29, 0x56, 0xbf, 0xff, 0xfc, 0x55, 0x1e, 0xbd, 0x78, 0x95, 0x47, 0xff, 0x7d, 0x95, 0x47, - 0x3f, 0x7d, 0x9d, 0x1f, 0x78, 0xf1, 0x3a, 0x3f, 0xf0, 0xcf, 0xd7, 0xf9, 0x81, 0xbb, 0x8b, 0xb6, - 0xc3, 0x2b, 0xb5, 0x9d, 0x82, 0xe5, 0xef, 0xca, 0xca, 0x22, 0x4c, 0x46, 0x5d, 0xd6, 0xcb, 0xf7, - 0xf7, 0x58, 0xb0, 0xf3, 0x8e, 0xf8, 0x6a, 0x7f, 0xfc, 0x75, 0x00, 0x00, 0x00, 0xff, 0xff, 0xdc, - 0x55, 0x35, 0x06, 0x22, 0x25, 0x00, 0x00, + // 1901 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x5a, 0xc1, 0x6f, 0xdc, 0x4a, + 0x19, 0xcf, 0x64, 0x9b, 0xf7, 0xd2, 0x49, 0xda, 0xbc, 0xcc, 0x0b, 0x25, 0xf8, 0x25, 0x9b, 0xd6, + 0xa1, 0x4d, 0x48, 0xc8, 0xfa, 0x25, 0x7d, 0xcd, 0xa3, 0x6d, 0x1e, 0x62, 0x93, 0xbe, 0xa4, 0x81, + 0xb4, 0x4d, 0x57, 0x41, 0x45, 0x45, 0xc8, 0x9a, 0x78, 0xa7, 0x5e, 0xab, 0x8e, 0x9d, 0xae, 0xbd, + 0xd5, 0xa6, 0x51, 0x2e, 0x3d, 0x70, 0x46, 0xea, 0x81, 0x0b, 0x57, 0x44, 0x0f, 0x1c, 0x38, 0x20, + 0x38, 0x20, 0x15, 0x21, 0xa0, 0xf4, 0x58, 0x09, 0x81, 0x10, 0x48, 0x08, 0xb5, 0xfc, 0x05, 0xfc, + 0x05, 0xc8, 0xe3, 0xcf, 0xbb, 0x63, 0xaf, 0xbd, 0x3b, 0xd9, 0x6c, 0x0f, 0x3d, 0x75, 0xed, 0x99, + 0xef, 0x9b, 0xdf, 0xef, 0x9b, 0x6f, 0x3e, 0x7f, 0xf3, 0x6b, 0xf0, 0x39, 0xa3, 0xea, 0x7a, 0x9e, + 0x51, 0xa1, 0x96, 0xa3, 0x3d, 0xaa, 0xb1, 0xea, 0x41, 0x61, 0xbf, 0xea, 0xfa, 0x2e, 0x99, 0x7c, + 0xc2, 0x7c, 0xca, 0x5f, 0x17, 0xf8, 0x2f, 0xb7, 0xca, 0x0a, 0xcd, 0xa9, 0xca, 0x9c, 0xe1, 0x7a, + 0x7b, 0xae, 0xa7, 0xed, 0x52, 0x8f, 0x85, 0x76, 0xda, 0xe3, 0xc5, 0x5d, 0xe6, 0xd3, 0x45, 0x6d, + 0x9f, 0x9a, 0x96, 0x43, 0x7d, 0xcb, 0x75, 0x42, 0x57, 0xca, 0x94, 0xb0, 0x04, 0xff, 0xa9, 0xf3, + 0xdf, 0xba, 0x5f, 0x87, 0x09, 0x8a, 0x30, 0xc1, 0xa4, 0x9e, 0xbe, 0x5f, 0xb5, 0x0c, 0x06, 0x63, + 0xd3, 0xc2, 0x18, 0xb7, 0xd1, 0x2b, 0xd4, 0xab, 0xe8, 0xbe, 0xab, 0x1b, 0x46, 0xc3, 0x41, 0xbe, + 0x65, 0x92, 0x5f, 0xa5, 0xc6, 0x43, 0x56, 0x85, 0x71, 0x55, 0x18, 0xb7, 0xa9, 0xe7, 0xeb, 0xbb, + 0xb6, 0x6b, 0x3c, 0xd4, 0x2b, 0xcc, 0x32, 0x2b, 0x7e, 0x0a, 0x4a, 0xb7, 0xe6, 0xb7, 0x3a, 0x11, + 0x91, 0x54, 0xa9, 0xcf, 0x74, 0xdb, 0xda, 0xb3, 0x7c, 0x56, 0xd5, 0x1f, 0xd8, 0xd4, 0xf4, 0x60, + 0xd2, 0x98, 0xe9, 0x9a, 0x2e, 0xff, 0xa9, 0x05, 0xbf, 0xe0, 0xed, 0x84, 0xe9, 0xba, 0xa6, 0xcd, + 0x34, 0xba, 0x6f, 0x69, 0xd4, 0x71, 0x5c, 0x9f, 0x87, 0x07, 0x6c, 0xd4, 0x09, 0xac, 0xdc, 0x0d, + 0x22, 0x78, 0x9f, 0xf9, 0xb4, 0x68, 0x18, 0x6e, 0xcd, 0xf1, 0x2d, 0xc7, 0x2c, 0xb1, 0x47, 0x35, + 0xe6, 0xf9, 0xea, 0x2d, 0xfc, 0x49, 0xea, 0xa8, 0xb7, 0xef, 0x3a, 0x1e, 0x23, 0x05, 0xfc, 0x31, + 0xdd, 0x75, 0xab, 0x3e, 0x2b, 0xeb, 0xc1, 0x3e, 0xe9, 0x74, 0x2f, 0x98, 0x31, 0x8e, 0xce, 0xa3, + 0xd9, 0xd3, 0xa5, 0x51, 0x18, 0xe2, 0xb6, 0x7c, 0xa0, 0xe1, 0x6e, 0x83, 0xf9, 0x77, 0x6a, 0xfe, + 0x4e, 0x7d, 0x27, 0xe4, 0x08, 0xab, 0x91, 0x71, 0xfc, 0x21, 0x67, 0xb8, 0x79, 0x83, 0xbb, 0xc8, + 0x95, 0xa2, 0x47, 0x32, 0x86, 0x07, 0x1c, 0xd7, 0x31, 0xd8, 0x78, 0xff, 0x79, 0x34, 0x7b, 0xaa, + 0x14, 0x3e, 0xa8, 0x35, 0x3c, 0x91, 0xee, 0x0e, 0xe0, 0x7d, 0x1f, 0x0f, 0xbb, 0xc2, 0x7b, 0xee, + 0x74, 0x68, 0x69, 0xbe, 0xd0, 0x36, 0xbb, 0x0a, 0xa2, 0xab, 0xd5, 0x53, 0xaf, 0xfe, 0x3d, 0xd5, + 0x57, 0x8a, 0xb9, 0x51, 0x19, 0xb0, 0x28, 0xda, 0x76, 0x1a, 0x8b, 0x75, 0x8c, 0x9b, 0x59, 0x08, + 0x6b, 0x5e, 0x2a, 0x84, 0x29, 0x5b, 0x08, 0x52, 0xb6, 0x10, 0xa6, 0x3a, 0xa4, 0x6c, 0x61, 0x9b, + 0x9a, 0x0c, 0x6c, 0x4b, 0x82, 0xa5, 0xfa, 0x02, 0x01, 0xbd, 0x96, 0x75, 0x32, 0xe9, 0xe5, 0x7a, + 0x40, 0x8f, 0x6c, 0xc4, 0xf0, 0xf7, 0x73, 0xfc, 0x33, 0x1d, 0xf1, 0x87, 0x98, 0x62, 0x04, 0x9e, + 0x22, 0xac, 0xa6, 0x11, 0x58, 0x3d, 0x58, 0x0b, 0x90, 0x44, 0xf1, 0x1a, 0xc3, 0x03, 0x1c, 0x19, + 0xec, 0x79, 0xf8, 0x90, 0x88, 0x62, 0x7f, 0xd7, 0x51, 0xfc, 0x33, 0xc2, 0xd3, 0x6d, 0x41, 0xbc, + 0x27, 0xc1, 0xfc, 0x31, 0xc2, 0x17, 0x22, 0x1e, 0x9b, 0x4e, 0x56, 0x2c, 0xbf, 0x86, 0x07, 0xc3, + 0xf2, 0x66, 0x95, 0xe3, 0x47, 0xa8, 0xdc, 0xb3, 0x80, 0xfe, 0x41, 0xd8, 0xd5, 0x34, 0x20, 0x10, + 0xcf, 0x12, 0x1e, 0xb2, 0x9c, 0x64, 0x38, 0xe7, 0x3a, 0x84, 0x53, 0xf4, 0x17, 0x46, 0x53, 0x74, + 0xd2, 0xbb, 0x60, 0x0a, 0x27, 0x58, 0x58, 0xd2, 0xeb, 0xf5, 0x09, 0xfe, 0x9d, 0x70, 0x82, 0xe3, + 0xeb, 0xbc, 0x0f, 0x41, 0xba, 0x8e, 0x27, 0xa3, 0xea, 0x1a, 0x2c, 0x79, 0x93, 0x7a, 0x95, 0x1d, + 0x77, 0xcd, 0xf0, 0xeb, 0x51, 0x98, 0x14, 0x3c, 0x68, 0xc1, 0x00, 0x94, 0xfc, 0xc6, 0xb3, 0x7a, + 0x84, 0xf3, 0x59, 0xc6, 0xc0, 0xfd, 0x87, 0xf8, 0xac, 0x15, 0x1b, 0x81, 0x40, 0x2f, 0x48, 0xd0, + 0x6f, 0x1a, 0x41, 0x04, 0x12, 0xae, 0xd4, 0x15, 0x58, 0x3e, 0x3e, 0xf9, 0x06, 0xf5, 0xa9, 0x0c, + 0xf8, 0x27, 0x78, 0x2a, 0xd3, 0x1a, 0xd0, 0xdf, 0xc3, 0x67, 0xd6, 0x02, 0x4c, 0x3c, 0xe9, 0x77, + 0xea, 0x9e, 0x64, 0xbd, 0x10, 0x6d, 0x00, 0x7a, 0xdc, 0x8f, 0x6a, 0x42, 0xd4, 0x21, 0x65, 0x5a, + 0xa3, 0xde, 0xab, 0xe4, 0x7c, 0x89, 0x20, 0x46, 0x29, 0x2b, 0xb5, 0xd9, 0xa2, 0x5c, 0x8f, 0xb6, + 0xa8, 0x77, 0x79, 0xaa, 0xe1, 0xaf, 0x46, 0xa9, 0xb6, 0x41, 0xbd, 0xed, 0xa0, 0x7d, 0x13, 0x3e, + 0x2d, 0x96, 0x53, 0x66, 0x75, 0xd8, 0xe1, 0xf0, 0x41, 0xd5, 0xf1, 0x78, 0xab, 0x01, 0x50, 0x5e, + 0xc3, 0x83, 0xd1, 0x3b, 0x88, 0xed, 0x4c, 0x07, 0xb2, 0x0d, 0x17, 0x0d, 0x43, 0x95, 0x02, 0xa2, + 0xa2, 0x6d, 0x27, 0x11, 0xf5, 0x6a, 0xf7, 0x9e, 0x23, 0x20, 0x11, 0x5b, 0x23, 0x95, 0x44, 0xae, + 0x2b, 0x12, 0xbd, 0xdb, 0x9f, 0xe5, 0x66, 0x29, 0xd8, 0xa2, 0x9e, 0xbf, 0x1a, 0x74, 0xbf, 0x37, + 0x79, 0xf3, 0xdb, 0x7e, 0x9b, 0x0e, 0xe1, 0x14, 0xa6, 0xd9, 0x01, 0xd1, 0x1f, 0xe0, 0x91, 0xc4, + 0x10, 0x84, 0xb4, 0xd0, 0x81, 0x6f, 0xd2, 0x61, 0xd2, 0x8d, 0x5a, 0x69, 0x1e, 0x8e, 0x0c, 0xd0, + 0xbd, 0xda, 0xc9, 0x3f, 0x21, 0xe0, 0x99, 0xb6, 0x54, 0x3b, 0x9e, 0xb9, 0x1e, 0xf0, 0xec, 0xdd, + 0x2e, 0xcf, 0xe3, 0x8f, 0xa3, 0xdd, 0x12, 0xab, 0x55, 0xfa, 0xd6, 0x6e, 0xc1, 0xa5, 0x03, 0x26, + 0xaf, 0x1e, 0xdc, 0x0e, 0xfa, 0xf9, 0x6e, 0xaf, 0x01, 0x26, 0x1e, 0x8b, 0x2f, 0x0d, 0x51, 0xbb, + 0x83, 0x87, 0xc5, 0xda, 0x2a, 0xd9, 0xfe, 0x8b, 0x26, 0xa5, 0x98, 0x03, 0xf5, 0x47, 0xc0, 0xb1, + 0x68, 0xdb, 0xef, 0xa2, 0x22, 0xff, 0x0a, 0x01, 0x91, 0x86, 0xff, 0x4c, 0x22, 0xb9, 0x13, 0x11, + 0xe9, 0xdd, 0xae, 0xdf, 0x86, 0x46, 0x6a, 0xcb, 0xf2, 0xfc, 0x6d, 0xe6, 0x94, 0x2d, 0xc7, 0x14, + 0x23, 0xd3, 0xa6, 0x1d, 0x1d, 0xc3, 0x03, 0xfc, 0x0a, 0xcb, 0x57, 0x3f, 0x53, 0x0a, 0x1f, 0xd4, + 0x67, 0x51, 0xc7, 0xd4, 0xe2, 0xf0, 0x5d, 0x85, 0x42, 0xc5, 0xc3, 0xbe, 0xeb, 0x53, 0x1b, 0x16, + 0x83, 0xcc, 0x8a, 0xbd, 0x53, 0x57, 0xf1, 0x5c, 0x1a, 0xa8, 0x7b, 0x96, 0x5f, 0xb1, 0x9c, 0x12, + 0xf5, 0xd9, 0x56, 0x00, 0x5e, 0x48, 0xf9, 0x90, 0x19, 0x12, 0x99, 0xfd, 0x0d, 0xe1, 0x79, 0x29, + 0x27, 0x40, 0xf4, 0x2e, 0x3e, 0x1b, 0x97, 0x2b, 0xba, 0xa2, 0x6a, 0x88, 0x54, 0xa7, 0xf1, 0x19, + 0x4e, 0x4b, 0xdf, 0xcf, 0xe6, 0x1a, 0x5c, 0xe9, 0x9b, 0xfa, 0x82, 0xce, 0xea, 0x06, 0x63, 0x65, + 0x56, 0x1e, 0xcf, 0x9d, 0x47, 0xb3, 0x83, 0xa5, 0xd1, 0x6a, 0x84, 0xf3, 0x4b, 0x18, 0x68, 0xe8, + 0x07, 0x41, 0x61, 0x09, 0x6e, 0xfa, 0xb1, 0x22, 0xa9, 0x5e, 0x89, 0xf2, 0x23, 0x31, 0x0a, 0x24, + 0xcf, 0xe1, 0x0f, 0x84, 0xb2, 0x9d, 0x2b, 0xc1, 0x93, 0xba, 0x03, 0x59, 0xb0, 0xe6, 0x3a, 0x8f, + 0x59, 0x35, 0xf8, 0x4a, 0xef, 0xb8, 0x81, 0x79, 0x4b, 0x85, 0x68, 0x49, 0x2b, 0x05, 0x0f, 0x9a, + 0xd4, 0xdb, 0x6a, 0x64, 0xd6, 0xe9, 0x52, 0xe3, 0x59, 0xfd, 0x39, 0x82, 0xde, 0xaa, 0xd5, 0x2d, + 0xe0, 0xf9, 0x26, 0x1e, 0x75, 0x6b, 0xfe, 0xae, 0x5b, 0x73, 0xca, 0x1b, 0xd4, 0xdb, 0x74, 0x82, + 0xc1, 0x48, 0xcd, 0x68, 0x19, 0x08, 0x66, 0x73, 0x0d, 0xc5, 0x70, 0xed, 0x75, 0xc6, 0x60, 0x76, + 0xb8, 0x68, 0xeb, 0x00, 0x99, 0xc5, 0x23, 0xc1, 0xbf, 0x62, 0x0d, 0xcf, 0xf1, 0xf8, 0x27, 0x5f, + 0xab, 0x33, 0xf8, 0x22, 0x87, 0x79, 0x8b, 0x79, 0x1e, 0x35, 0xd9, 0x36, 0xf5, 0x3c, 0xcb, 0x31, + 0xb7, 0x9b, 0x1e, 0xa3, 0xe8, 0xae, 0xe3, 0x4b, 0x9d, 0x26, 0x02, 0xb1, 0x09, 0x7c, 0xfa, 0x41, + 0x03, 0x62, 0x48, 0xa8, 0xf9, 0x42, 0xcd, 0x43, 0xb8, 0x1b, 0x59, 0xc8, 0xaa, 0xeb, 0x36, 0x35, + 0xa3, 0xfb, 0x50, 0x70, 0x91, 0x9f, 0xcc, 0x98, 0x00, 0xfe, 0x29, 0xfe, 0xa8, 0x9a, 0x18, 0x83, + 0x42, 0xa8, 0x75, 0xc8, 0xd7, 0xa4, 0x4b, 0xe8, 0x16, 0x5b, 0xdc, 0x2d, 0x3d, 0xbf, 0x80, 0x07, + 0x38, 0x08, 0xf2, 0x12, 0xe1, 0x61, 0xf1, 0xe2, 0x4d, 0xae, 0x75, 0x58, 0xa3, 0x8d, 0xe6, 0xa4, + 0x5c, 0xef, 0xca, 0x36, 0xa4, 0xad, 0x7e, 0xf1, 0xf4, 0xaf, 0xff, 0x7d, 0xd6, 0xff, 0x39, 0xb9, + 0xa2, 0x05, 0xa6, 0x0b, 0x82, 0xca, 0xd8, 0x90, 0xf2, 0x1a, 0x46, 0xda, 0x21, 0x7c, 0xc5, 0x8e, + 0xb4, 0x43, 0xfe, 0xdd, 0x3a, 0x22, 0xbf, 0x45, 0x78, 0x44, 0xf4, 0x5b, 0xb4, 0x6d, 0x39, 0x2e, + 0xe9, 0xca, 0x93, 0x1c, 0x97, 0x0c, 0x35, 0x49, 0x9d, 0xe7, 0x5c, 0x2e, 0x92, 0x69, 0x09, 0x2e, + 0xe4, 0x5f, 0x08, 0x9f, 0x4b, 0x20, 0x07, 0x01, 0x80, 0x14, 0xbb, 0x00, 0x11, 0x57, 0x31, 0x94, + 0xd5, 0x93, 0xb8, 0x00, 0x3a, 0xd7, 0x38, 0x9d, 0xcf, 0xc8, 0x92, 0x04, 0x1d, 0xb0, 0x85, 0x1d, + 0x3a, 0x22, 0xff, 0x44, 0xf8, 0x2b, 0xc2, 0x2d, 0x5b, 0x20, 0xf7, 0x1d, 0x49, 0x64, 0x99, 0x0a, + 0x8d, 0x52, 0x3c, 0x81, 0x07, 0xa0, 0xb6, 0xc2, 0xa9, 0x2d, 0x93, 0xcf, 0x32, 0xa8, 0x59, 0x4e, + 0x06, 0x33, 0xdd, 0x2a, 0x1f, 0x91, 0xdf, 0x20, 0x7c, 0x36, 0x4e, 0x4e, 0x3a, 0xe7, 0x52, 0xb4, + 0x12, 0xe9, 0x9c, 0x4b, 0xd3, 0x3f, 0x3a, 0xe6, 0x9c, 0xc0, 0xc4, 0x23, 0x7f, 0x01, 0xe0, 0xc2, + 0x1d, 0x72, 0x45, 0xf2, 0xf0, 0xa6, 0xde, 0xa4, 0x95, 0x2f, 0xba, 0xb4, 0x06, 0xf0, 0xdf, 0xe2, + 0xe0, 0x97, 0xc8, 0xa7, 0x6d, 0xc0, 0x37, 0xcd, 0xb4, 0xc3, 0xe8, 0xf9, 0x88, 0xfc, 0x1d, 0x61, + 0xd2, 0xaa, 0x2d, 0x10, 0x29, 0x3c, 0x99, 0x8a, 0x86, 0xf2, 0xed, 0x6e, 0xcd, 0x81, 0x4f, 0x91, + 0xf3, 0xb9, 0x4e, 0xae, 0x66, 0xf2, 0x49, 0xfe, 0x07, 0x88, 0x5e, 0xa6, 0x3e, 0x15, 0x89, 0xfd, + 0x1e, 0xe1, 0xd1, 0xf8, 0x0a, 0x41, 0x7a, 0xad, 0x1c, 0x23, 0x45, 0xba, 0xdc, 0xa5, 0x4c, 0x0d, + 0x43, 0x5d, 0xe0, 0xac, 0x66, 0xc8, 0x45, 0xa9, 0x5d, 0x22, 0xbf, 0x44, 0xcd, 0xbb, 0x33, 0x59, + 0x96, 0x4c, 0x90, 0xc4, 0x25, 0x5f, 0xf9, 0xfc, 0xd8, 0x76, 0x00, 0x56, 0xe3, 0x60, 0xbf, 0x41, + 0x66, 0x32, 0xc0, 0x9a, 0x60, 0x10, 0xc4, 0xbc, 0xcc, 0xea, 0x47, 0xe4, 0x17, 0x08, 0x0f, 0x45, + 0x5e, 0x82, 0x50, 0x2f, 0x4b, 0x06, 0xab, 0x2b, 0xc4, 0x29, 0x52, 0x83, 0x3a, 0xc3, 0x11, 0x5f, + 0x20, 0x53, 0x1d, 0x10, 0x93, 0x17, 0x08, 0x7f, 0x94, 0xec, 0xbb, 0x88, 0x54, 0xf1, 0xc8, 0x68, + 0x02, 0x95, 0x95, 0xee, 0x8c, 0x25, 0x43, 0x6d, 0x24, 0xb1, 0xbe, 0x44, 0x78, 0x48, 0x68, 0xad, + 0xc8, 0x0d, 0x99, 0xe5, 0x3b, 0xb5, 0x70, 0xca, 0x97, 0x27, 0xf4, 0x02, 0x6c, 0xe6, 0x38, 0x9b, + 0xaf, 0x13, 0x35, 0x83, 0x8d, 0xd0, 0x8e, 0x92, 0x57, 0xa8, 0x45, 0x4d, 0x20, 0xb2, 0xa5, 0x30, + 0x5d, 0x0b, 0x91, 0x2b, 0x3d, 0xd9, 0x3a, 0x8e, 0xba, 0xcc, 0xe1, 0x7f, 0x4a, 0x0a, 0x19, 0xf0, + 0xed, 0xb8, 0x5d, 0x23, 0xfd, 0xff, 0x88, 0x30, 0x49, 0xf8, 0x0c, 0x4e, 0x81, 0x6c, 0xc9, 0x38, + 0x09, 0x9b, 0x6c, 0xb5, 0x46, 0x2d, 0x70, 0x36, 0xb3, 0xe4, 0x92, 0x1c, 0x1b, 0xf2, 0x33, 0x84, + 0x4f, 0xf1, 0xe2, 0xb3, 0x24, 0x19, 0x46, 0xb1, 0x3c, 0x5e, 0x3e, 0x96, 0x8d, 0xe4, 0x77, 0xd7, + 0x80, 0x0f, 0x16, 0x0f, 0xf2, 0xaf, 0x11, 0x1e, 0x12, 0x54, 0x1a, 0x72, 0xf5, 0x18, 0x2b, 0xc6, + 0x95, 0x9d, 0xee, 0xc0, 0x5e, 0xe1, 0x60, 0x35, 0xb2, 0xd0, 0x16, 0x6c, 0x4b, 0x73, 0xfd, 0x53, + 0x84, 0x3f, 0x8c, 0xbe, 0x40, 0x4b, 0x92, 0x3b, 0x7a, 0xec, 0xc0, 0x26, 0x94, 0x1a, 0x75, 0x9a, + 0x63, 0x9d, 0x24, 0x9f, 0xb4, 0xc1, 0x1a, 0x74, 0x60, 0x23, 0x09, 0x15, 0x40, 0xae, 0x05, 0x4b, + 0x57, 0x59, 0xe4, 0x5a, 0xb0, 0x0c, 0x41, 0xa5, 0x73, 0xe5, 0x10, 0x40, 0xfe, 0x0f, 0xe1, 0x7c, + 0x7b, 0xf9, 0x82, 0x6c, 0x76, 0x81, 0x25, 0x5d, 0x47, 0x51, 0xbe, 0xdb, 0x0b, 0x57, 0xc0, 0xf2, + 0x2a, 0x67, 0x79, 0x99, 0x2c, 0x76, 0x66, 0x99, 0x64, 0x14, 0xf4, 0xcb, 0xf1, 0x3f, 0x7f, 0x90, + 0x3b, 0x01, 0xa9, 0x7f, 0x50, 0xa1, 0x5c, 0xeb, 0xc6, 0x54, 0xb2, 0x95, 0x79, 0x12, 0x47, 0x19, + 0x00, 0x8f, 0xeb, 0x2e, 0x72, 0xc0, 0x53, 0x95, 0x1c, 0x39, 0xe0, 0xe9, 0x32, 0x4f, 0x47, 0xe0, + 0x76, 0x1c, 0x65, 0xd0, 0x2a, 0x24, 0x65, 0x01, 0xb9, 0x56, 0x21, 0x43, 0xc0, 0x90, 0x6b, 0x15, + 0xb2, 0xc4, 0x8d, 0x8e, 0xad, 0x42, 0x52, 0xaa, 0x58, 0xfd, 0xde, 0xab, 0x37, 0x79, 0xf4, 0xfa, + 0x4d, 0x1e, 0xfd, 0xe7, 0x4d, 0x1e, 0xfd, 0xe4, 0x6d, 0xbe, 0xef, 0xf5, 0xdb, 0x7c, 0xdf, 0x3f, + 0xde, 0xe6, 0xfb, 0xee, 0x2f, 0x9a, 0x96, 0x5f, 0xa9, 0xed, 0x16, 0x0c, 0x77, 0x4f, 0x74, 0x16, + 0x61, 0xd2, 0xea, 0xa2, 0x5f, 0xff, 0x60, 0x9f, 0x79, 0xbb, 0x1f, 0xf0, 0x6f, 0xf7, 0xe5, 0xff, + 0x07, 0x00, 0x00, 0xff, 0xff, 0x25, 0x12, 0xcf, 0x1a, 0x2c, 0x25, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -2265,9 +2266,9 @@ type QueryClient interface { // Queries a list of send items. CctxAll(ctx context.Context, in *QueryAllCctxRequest, opts ...grpc.CallOption) (*QueryAllCctxResponse, error) // Queries a list of pending cctxs. - CctxListPending(ctx context.Context, in *QueryListCctxPendingRequest, opts ...grpc.CallOption) (*QueryListCctxPendingResponse, error) - // Queries a list of pending cctxs with rate limit. - CctxListPendingWithinRateLimit(ctx context.Context, in *QueryListCctxPendingWithRateLimitRequest, opts ...grpc.CallOption) (*QueryListCctxPendingWithRateLimitResponse, error) + ListPendingCctx(ctx context.Context, in *QueryListPendingCctxRequest, opts ...grpc.CallOption) (*QueryListPendingCctxResponse, error) + // Queries a list of pending cctxs within rate limit. + ListPendingCctxWithinRateLimit(ctx context.Context, in *QueryListPendingCctxWithinRateLimitRequest, opts ...grpc.CallOption) (*QueryListPendingCctxWithinRateLimitResponse, error) ZetaAccounting(ctx context.Context, in *QueryZetaAccountingRequest, opts ...grpc.CallOption) (*QueryZetaAccountingResponse, error) // Queries a list of lastMetaHeight items. LastZetaHeight(ctx context.Context, in *QueryLastZetaHeightRequest, opts ...grpc.CallOption) (*QueryLastZetaHeightResponse, error) @@ -2436,18 +2437,18 @@ func (c *queryClient) CctxAll(ctx context.Context, in *QueryAllCctxRequest, opts return out, nil } -func (c *queryClient) CctxListPending(ctx context.Context, in *QueryListCctxPendingRequest, opts ...grpc.CallOption) (*QueryListCctxPendingResponse, error) { - out := new(QueryListCctxPendingResponse) - err := c.cc.Invoke(ctx, "/zetachain.zetacore.crosschain.Query/CctxListPending", in, out, opts...) +func (c *queryClient) ListPendingCctx(ctx context.Context, in *QueryListPendingCctxRequest, opts ...grpc.CallOption) (*QueryListPendingCctxResponse, error) { + out := new(QueryListPendingCctxResponse) + err := c.cc.Invoke(ctx, "/zetachain.zetacore.crosschain.Query/ListPendingCctx", in, out, opts...) if err != nil { return nil, err } return out, nil } -func (c *queryClient) CctxListPendingWithinRateLimit(ctx context.Context, in *QueryListCctxPendingWithRateLimitRequest, opts ...grpc.CallOption) (*QueryListCctxPendingWithRateLimitResponse, error) { - out := new(QueryListCctxPendingWithRateLimitResponse) - err := c.cc.Invoke(ctx, "/zetachain.zetacore.crosschain.Query/CctxListPendingWithinRateLimit", in, out, opts...) +func (c *queryClient) ListPendingCctxWithinRateLimit(ctx context.Context, in *QueryListPendingCctxWithinRateLimitRequest, opts ...grpc.CallOption) (*QueryListPendingCctxWithinRateLimitResponse, error) { + out := new(QueryListPendingCctxWithinRateLimitResponse) + err := c.cc.Invoke(ctx, "/zetachain.zetacore.crosschain.Query/ListPendingCctxWithinRateLimit", in, out, opts...) if err != nil { return nil, err } @@ -2513,9 +2514,9 @@ type QueryServer interface { // Queries a list of send items. CctxAll(context.Context, *QueryAllCctxRequest) (*QueryAllCctxResponse, error) // Queries a list of pending cctxs. - CctxListPending(context.Context, *QueryListCctxPendingRequest) (*QueryListCctxPendingResponse, error) - // Queries a list of pending cctxs with rate limit. - CctxListPendingWithinRateLimit(context.Context, *QueryListCctxPendingWithRateLimitRequest) (*QueryListCctxPendingWithRateLimitResponse, error) + ListPendingCctx(context.Context, *QueryListPendingCctxRequest) (*QueryListPendingCctxResponse, error) + // Queries a list of pending cctxs within rate limit. + ListPendingCctxWithinRateLimit(context.Context, *QueryListPendingCctxWithinRateLimitRequest) (*QueryListPendingCctxWithinRateLimitResponse, error) ZetaAccounting(context.Context, *QueryZetaAccountingRequest) (*QueryZetaAccountingResponse, error) // Queries a list of lastMetaHeight items. LastZetaHeight(context.Context, *QueryLastZetaHeightRequest) (*QueryLastZetaHeightResponse, error) @@ -2578,11 +2579,11 @@ func (*UnimplementedQueryServer) CctxByNonce(ctx context.Context, req *QueryGetC func (*UnimplementedQueryServer) CctxAll(ctx context.Context, req *QueryAllCctxRequest) (*QueryAllCctxResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method CctxAll not implemented") } -func (*UnimplementedQueryServer) CctxListPending(ctx context.Context, req *QueryListCctxPendingRequest) (*QueryListCctxPendingResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method CctxListPending not implemented") +func (*UnimplementedQueryServer) ListPendingCctx(ctx context.Context, req *QueryListPendingCctxRequest) (*QueryListPendingCctxResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListPendingCctx not implemented") } -func (*UnimplementedQueryServer) CctxListPendingWithinRateLimit(ctx context.Context, req *QueryListCctxPendingWithRateLimitRequest) (*QueryListCctxPendingWithRateLimitResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method CctxListPendingWithinRateLimit not implemented") +func (*UnimplementedQueryServer) ListPendingCctxWithinRateLimit(ctx context.Context, req *QueryListPendingCctxWithinRateLimitRequest) (*QueryListPendingCctxWithinRateLimitResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListPendingCctxWithinRateLimit not implemented") } func (*UnimplementedQueryServer) ZetaAccounting(ctx context.Context, req *QueryZetaAccountingRequest) (*QueryZetaAccountingResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ZetaAccounting not implemented") @@ -2904,38 +2905,38 @@ func _Query_CctxAll_Handler(srv interface{}, ctx context.Context, dec func(inter return interceptor(ctx, in, info, handler) } -func _Query_CctxListPending_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(QueryListCctxPendingRequest) +func _Query_ListPendingCctx_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryListPendingCctxRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(QueryServer).CctxListPending(ctx, in) + return srv.(QueryServer).ListPendingCctx(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/zetachain.zetacore.crosschain.Query/CctxListPending", + FullMethod: "/zetachain.zetacore.crosschain.Query/ListPendingCctx", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(QueryServer).CctxListPending(ctx, req.(*QueryListCctxPendingRequest)) + return srv.(QueryServer).ListPendingCctx(ctx, req.(*QueryListPendingCctxRequest)) } return interceptor(ctx, in, info, handler) } -func _Query_CctxListPendingWithinRateLimit_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(QueryListCctxPendingWithRateLimitRequest) +func _Query_ListPendingCctxWithinRateLimit_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryListPendingCctxWithinRateLimitRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(QueryServer).CctxListPendingWithinRateLimit(ctx, in) + return srv.(QueryServer).ListPendingCctxWithinRateLimit(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/zetachain.zetacore.crosschain.Query/CctxListPendingWithinRateLimit", + FullMethod: "/zetachain.zetacore.crosschain.Query/ListPendingCctxWithinRateLimit", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(QueryServer).CctxListPendingWithinRateLimit(ctx, req.(*QueryListCctxPendingWithRateLimitRequest)) + return srv.(QueryServer).ListPendingCctxWithinRateLimit(ctx, req.(*QueryListPendingCctxWithinRateLimitRequest)) } return interceptor(ctx, in, info, handler) } @@ -3067,12 +3068,12 @@ var _Query_serviceDesc = grpc.ServiceDesc{ Handler: _Query_CctxAll_Handler, }, { - MethodName: "CctxListPending", - Handler: _Query_CctxListPending_Handler, + MethodName: "ListPendingCctx", + Handler: _Query_ListPendingCctx_Handler, }, { - MethodName: "CctxListPendingWithinRateLimit", - Handler: _Query_CctxListPendingWithinRateLimit_Handler, + MethodName: "ListPendingCctxWithinRateLimit", + Handler: _Query_ListPendingCctxWithinRateLimit_Handler, }, { MethodName: "ZetaAccounting", @@ -4250,7 +4251,7 @@ func (m *QueryAllCctxResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func (m *QueryListCctxPendingRequest) Marshal() (dAtA []byte, err error) { +func (m *QueryListPendingCctxRequest) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -4260,12 +4261,12 @@ func (m *QueryListCctxPendingRequest) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *QueryListCctxPendingRequest) MarshalTo(dAtA []byte) (int, error) { +func (m *QueryListPendingCctxRequest) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *QueryListCctxPendingRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *QueryListPendingCctxRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -4283,7 +4284,7 @@ func (m *QueryListCctxPendingRequest) MarshalToSizedBuffer(dAtA []byte) (int, er return len(dAtA) - i, nil } -func (m *QueryListCctxPendingResponse) Marshal() (dAtA []byte, err error) { +func (m *QueryListPendingCctxResponse) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -4293,12 +4294,12 @@ func (m *QueryListCctxPendingResponse) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *QueryListCctxPendingResponse) MarshalTo(dAtA []byte) (int, error) { +func (m *QueryListPendingCctxResponse) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *QueryListCctxPendingResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *QueryListPendingCctxResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -4325,7 +4326,7 @@ func (m *QueryListCctxPendingResponse) MarshalToSizedBuffer(dAtA []byte) (int, e return len(dAtA) - i, nil } -func (m *QueryListCctxPendingWithRateLimitRequest) Marshal() (dAtA []byte, err error) { +func (m *QueryListPendingCctxWithinRateLimitRequest) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -4335,12 +4336,12 @@ func (m *QueryListCctxPendingWithRateLimitRequest) Marshal() (dAtA []byte, err e return dAtA[:n], nil } -func (m *QueryListCctxPendingWithRateLimitRequest) MarshalTo(dAtA []byte) (int, error) { +func (m *QueryListPendingCctxWithinRateLimitRequest) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *QueryListCctxPendingWithRateLimitRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *QueryListPendingCctxWithinRateLimitRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -4348,12 +4349,12 @@ func (m *QueryListCctxPendingWithRateLimitRequest) MarshalToSizedBuffer(dAtA []b if m.Limit != 0 { i = encodeVarintQuery(dAtA, i, uint64(m.Limit)) i-- - dAtA[i] = 0x10 + dAtA[i] = 0x8 } return len(dAtA) - i, nil } -func (m *QueryListCctxPendingWithRateLimitResponse) Marshal() (dAtA []byte, err error) { +func (m *QueryListPendingCctxWithinRateLimitResponse) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -4363,12 +4364,12 @@ func (m *QueryListCctxPendingWithRateLimitResponse) Marshal() (dAtA []byte, err return dAtA[:n], nil } -func (m *QueryListCctxPendingWithRateLimitResponse) MarshalTo(dAtA []byte) (int, error) { +func (m *QueryListPendingCctxWithinRateLimitResponse) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *QueryListCctxPendingWithRateLimitResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *QueryListPendingCctxWithinRateLimitResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -5108,7 +5109,7 @@ func (m *QueryAllCctxResponse) Size() (n int) { return n } -func (m *QueryListCctxPendingRequest) Size() (n int) { +func (m *QueryListPendingCctxRequest) Size() (n int) { if m == nil { return 0 } @@ -5123,7 +5124,7 @@ func (m *QueryListCctxPendingRequest) Size() (n int) { return n } -func (m *QueryListCctxPendingResponse) Size() (n int) { +func (m *QueryListPendingCctxResponse) Size() (n int) { if m == nil { return 0 } @@ -5141,7 +5142,7 @@ func (m *QueryListCctxPendingResponse) Size() (n int) { return n } -func (m *QueryListCctxPendingWithRateLimitRequest) Size() (n int) { +func (m *QueryListPendingCctxWithinRateLimitRequest) Size() (n int) { if m == nil { return 0 } @@ -5153,7 +5154,7 @@ func (m *QueryListCctxPendingWithRateLimitRequest) Size() (n int) { return n } -func (m *QueryListCctxPendingWithRateLimitResponse) Size() (n int) { +func (m *QueryListPendingCctxWithinRateLimitResponse) Size() (n int) { if m == nil { return 0 } @@ -8191,7 +8192,7 @@ func (m *QueryAllCctxResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryListCctxPendingRequest) Unmarshal(dAtA []byte) error { +func (m *QueryListPendingCctxRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -8214,10 +8215,10 @@ func (m *QueryListCctxPendingRequest) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryListCctxPendingRequest: wiretype end group for non-group") + return fmt.Errorf("proto: QueryListPendingCctxRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryListCctxPendingRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryListPendingCctxRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -8279,7 +8280,7 @@ func (m *QueryListCctxPendingRequest) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryListCctxPendingResponse) Unmarshal(dAtA []byte) error { +func (m *QueryListPendingCctxResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -8302,10 +8303,10 @@ func (m *QueryListCctxPendingResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryListCctxPendingResponse: wiretype end group for non-group") + return fmt.Errorf("proto: QueryListPendingCctxResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryListCctxPendingResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryListPendingCctxResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -8382,7 +8383,7 @@ func (m *QueryListCctxPendingResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryListCctxPendingWithRateLimitRequest) Unmarshal(dAtA []byte) error { +func (m *QueryListPendingCctxWithinRateLimitRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -8405,13 +8406,13 @@ func (m *QueryListCctxPendingWithRateLimitRequest) Unmarshal(dAtA []byte) error fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryListCctxPendingWithRateLimitRequest: wiretype end group for non-group") + return fmt.Errorf("proto: QueryListPendingCctxWithinRateLimitRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryListCctxPendingWithRateLimitRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryListPendingCctxWithinRateLimitRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { - case 2: + case 1: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field Limit", wireType) } @@ -8451,7 +8452,7 @@ func (m *QueryListCctxPendingWithRateLimitRequest) Unmarshal(dAtA []byte) error } return nil } -func (m *QueryListCctxPendingWithRateLimitResponse) Unmarshal(dAtA []byte) error { +func (m *QueryListPendingCctxWithinRateLimitResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -8474,10 +8475,10 @@ func (m *QueryListCctxPendingWithRateLimitResponse) Unmarshal(dAtA []byte) error fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryListCctxPendingWithRateLimitResponse: wiretype end group for non-group") + return fmt.Errorf("proto: QueryListPendingCctxWithinRateLimitResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryListCctxPendingWithRateLimitResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryListPendingCctxWithinRateLimitResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: diff --git a/x/crosschain/types/query.pb.gw.go b/x/crosschain/types/query.pb.gw.go index c4b3a02e5d..6a4aa48cdd 100644 --- a/x/crosschain/types/query.pb.gw.go +++ b/x/crosschain/types/query.pb.gw.go @@ -870,73 +870,73 @@ func local_request_Query_CctxAll_0(ctx context.Context, marshaler runtime.Marsha } var ( - filter_Query_CctxListPending_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} + filter_Query_ListPendingCctx_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} ) -func request_Query_CctxListPending_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryListCctxPendingRequest +func request_Query_ListPendingCctx_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryListPendingCctxRequest var metadata runtime.ServerMetadata if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_CctxListPending_0); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_ListPendingCctx_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := client.CctxListPending(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.ListPendingCctx(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_Query_CctxListPending_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryListCctxPendingRequest +func local_request_Query_ListPendingCctx_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryListPendingCctxRequest var metadata runtime.ServerMetadata if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_CctxListPending_0); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_ListPendingCctx_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := server.CctxListPending(ctx, &protoReq) + msg, err := server.ListPendingCctx(ctx, &protoReq) return msg, metadata, err } var ( - filter_Query_CctxListPendingWithinRateLimit_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} + filter_Query_ListPendingCctxWithinRateLimit_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} ) -func request_Query_CctxListPendingWithinRateLimit_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryListCctxPendingWithRateLimitRequest +func request_Query_ListPendingCctxWithinRateLimit_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryListPendingCctxWithinRateLimitRequest var metadata runtime.ServerMetadata if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_CctxListPendingWithinRateLimit_0); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_ListPendingCctxWithinRateLimit_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := client.CctxListPendingWithinRateLimit(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.ListPendingCctxWithinRateLimit(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_Query_CctxListPendingWithinRateLimit_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryListCctxPendingWithRateLimitRequest +func local_request_Query_ListPendingCctxWithinRateLimit_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryListPendingCctxWithinRateLimitRequest var metadata runtime.ServerMetadata if err := req.ParseForm(); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_CctxListPendingWithinRateLimit_0); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_ListPendingCctxWithinRateLimit_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := server.CctxListPendingWithinRateLimit(ctx, &protoReq) + msg, err := server.ListPendingCctxWithinRateLimit(ctx, &protoReq) return msg, metadata, err } @@ -1392,7 +1392,7 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv }) - mux.Handle("GET", pattern_Query_CctxListPending_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_Query_ListPendingCctx_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() var stream runtime.ServerTransportStream @@ -1403,7 +1403,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_CctxListPending_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Query_ListPendingCctx_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 { @@ -1411,11 +1411,11 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv return } - forward_Query_CctxListPending_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Query_ListPendingCctx_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_Query_CctxListPendingWithinRateLimit_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_Query_ListPendingCctxWithinRateLimit_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() var stream runtime.ServerTransportStream @@ -1426,7 +1426,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_CctxListPendingWithinRateLimit_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Query_ListPendingCctxWithinRateLimit_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 { @@ -1434,7 +1434,7 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv return } - forward_Query_CctxListPendingWithinRateLimit_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Query_ListPendingCctxWithinRateLimit_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1888,7 +1888,7 @@ func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie }) - mux.Handle("GET", pattern_Query_CctxListPending_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_Query_ListPendingCctx_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) @@ -1897,18 +1897,18 @@ func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Query_CctxListPending_0(rctx, inboundMarshaler, client, req, pathParams) + resp, md, err := request_Query_ListPendingCctx_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_CctxListPending_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Query_ListPendingCctx_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_Query_CctxListPendingWithinRateLimit_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_Query_ListPendingCctxWithinRateLimit_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) @@ -1917,14 +1917,14 @@ func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Query_CctxListPendingWithinRateLimit_0(rctx, inboundMarshaler, client, req, pathParams) + resp, md, err := request_Query_ListPendingCctxWithinRateLimit_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_CctxListPendingWithinRateLimit_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Query_ListPendingCctxWithinRateLimit_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2026,9 +2026,9 @@ var ( pattern_Query_CctxAll_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"zeta-chain", "crosschain", "cctx"}, "", runtime.AssumeColonVerbOpt(false))) - pattern_Query_CctxListPending_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"zeta-chain", "crosschain", "cctxPending"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_Query_ListPendingCctx_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"zeta-chain", "crosschain", "pendingCctx"}, "", runtime.AssumeColonVerbOpt(false))) - pattern_Query_CctxListPendingWithinRateLimit_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"zeta-chain", "crosschain", "cctxPendingWithRateLimit"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_Query_ListPendingCctxWithinRateLimit_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"zeta-chain", "crosschain", "pendingCctxWithinRateLimit"}, "", runtime.AssumeColonVerbOpt(false))) pattern_Query_ZetaAccounting_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"zeta-chain", "crosschain", "zetaAccounting"}, "", runtime.AssumeColonVerbOpt(false))) @@ -2072,9 +2072,9 @@ var ( forward_Query_CctxAll_0 = runtime.ForwardResponseMessage - forward_Query_CctxListPending_0 = runtime.ForwardResponseMessage + forward_Query_ListPendingCctx_0 = runtime.ForwardResponseMessage - forward_Query_CctxListPendingWithinRateLimit_0 = runtime.ForwardResponseMessage + forward_Query_ListPendingCctxWithinRateLimit_0 = runtime.ForwardResponseMessage forward_Query_ZetaAccounting_0 = runtime.ForwardResponseMessage diff --git a/zetaclient/interfaces/interfaces.go b/zetaclient/interfaces/interfaces.go index 0c803c3497..0fbaba26b3 100644 --- a/zetaclient/interfaces/interfaces.go +++ b/zetaclient/interfaces/interfaces.go @@ -98,7 +98,7 @@ type ZetaCoreBridger interface { GetZetaBlockHeight() (int64, error) GetLastBlockHeightByChain(chain chains.Chain) (*crosschaintypes.LastBlockHeight, error) ListPendingCctx(chainID int64) ([]*crosschaintypes.CrossChainTx, uint64, error) - ListPendingCctxWithRatelimit() ([]*crosschaintypes.CrossChainTx, uint64, bool, error) + ListPendingCctxWithinRatelimit() ([]*crosschaintypes.CrossChainTx, uint64, bool, error) GetPendingNoncesByChain(chainID int64) (observertypes.PendingNonces, error) GetCctxByNonce(chainID int64, nonce uint64) (*crosschaintypes.CrossChainTx, error) GetOutTxTracker(chain chains.Chain, nonce uint64) (*crosschaintypes.OutTxTracker, error) diff --git a/zetaclient/testutils/stub/core_bridge.go b/zetaclient/testutils/stub/core_bridge.go index 51c2afb7ef..e66c309cc6 100644 --- a/zetaclient/testutils/stub/core_bridge.go +++ b/zetaclient/testutils/stub/core_bridge.go @@ -121,7 +121,7 @@ func (z *MockZetaCoreBridge) ListPendingCctx(_ int64) ([]*cctxtypes.CrossChainTx return []*cctxtypes.CrossChainTx{}, 0, nil } -func (z *MockZetaCoreBridge) ListPendingCctxWithRatelimit() ([]*cctxtypes.CrossChainTx, uint64, bool, error) { +func (z *MockZetaCoreBridge) ListPendingCctxWithinRatelimit() ([]*cctxtypes.CrossChainTx, uint64, bool, error) { if z.paused { return nil, 0, false, errors.New(ErrMsgPaused) } diff --git a/zetaclient/zetabridge/query.go b/zetaclient/zetabridge/query.go index fab225c571..09d3b20e82 100644 --- a/zetaclient/zetabridge/query.go +++ b/zetaclient/zetabridge/query.go @@ -125,9 +125,9 @@ func (b *ZetaCoreBridge) GetObserverList() ([]string, error) { func (b *ZetaCoreBridge) ListPendingCctx(chainID int64) ([]*types.CrossChainTx, uint64, error) { client := types.NewQueryClient(b.grpcConn) maxSizeOption := grpc.MaxCallRecvMsgSize(32 * 1024 * 1024) - resp, err := client.CctxListPending( + resp, err := client.ListPendingCctx( context.Background(), - &types.QueryListCctxPendingRequest{ChainId: chainID}, + &types.QueryListPendingCctxRequest{ChainId: chainID}, maxSizeOption, ) if err != nil { @@ -136,15 +136,15 @@ func (b *ZetaCoreBridge) ListPendingCctx(chainID int64) ([]*types.CrossChainTx, return resp.CrossChainTx, resp.TotalPending, nil } -// ListPendingCctxWithRatelimit returns a list of pending cctxs that do not exceed the outbound rate limit +// ListPendingCctxWithinRatelimit returns a list of pending cctxs that do not exceed the outbound rate limit // - The max size of the list is crosschainkeeper.MaxPendingCctxs // - The returned `rateLimitExceeded` flag indicates if the rate limit is exceeded or not -func (b *ZetaCoreBridge) ListPendingCctxWithRatelimit() ([]*types.CrossChainTx, uint64, bool, error) { +func (b *ZetaCoreBridge) ListPendingCctxWithinRatelimit() ([]*types.CrossChainTx, uint64, bool, error) { client := types.NewQueryClient(b.grpcConn) maxSizeOption := grpc.MaxCallRecvMsgSize(32 * 1024 * 1024) - resp, err := client.CctxListPendingWithinRateLimit( + resp, err := client.ListPendingCctxWithinRateLimit( context.Background(), - &types.QueryListCctxPendingWithRateLimitRequest{}, + &types.QueryListPendingCctxWithinRateLimitRequest{}, maxSizeOption, ) if err != nil { diff --git a/zetaclient/zetacore_observer.go b/zetaclient/zetacore_observer.go index a40b7f22b8..c66f15f50a 100644 --- a/zetaclient/zetacore_observer.go +++ b/zetaclient/zetacore_observer.go @@ -191,7 +191,7 @@ func (co *CoreObserver) startCctxScheduler(appContext *appcontext.AppContext) { // getAllPendingCctxWithRatelimit get pending cctxs across all foreign chains with rate limit func (co *CoreObserver) getAllPendingCctxWithRatelimit() (map[int64][]*types.CrossChainTx, error) { - cctxList, totalPending, rateLimitExceeded, err := co.bridge.ListPendingCctxWithRatelimit() + cctxList, totalPending, rateLimitExceeded, err := co.bridge.ListPendingCctxWithinRatelimit() if err != nil { return nil, err }