diff --git a/changelog.md b/changelog.md index 91e046ae20..1ffd5ecc19 100644 --- a/changelog.md +++ b/changelog.md @@ -41,5 +41,8 @@ * chore: increment handler version by @kingpinXD in https://github.com/zeta-chain/node/pull/1307 * fix: begin blocker for mock mainnet by @kingpinXD in https://github.com/zeta-chain/node/pull/1308 +### Unreleased: +* add a new thread to zetaclient which checks zeta supply in all connected chains in every block + diff --git a/cmd/zetaclientd/start.go b/cmd/zetaclientd/start.go index 230bda49c3..2d74034d09 100644 --- a/cmd/zetaclientd/start.go +++ b/cmd/zetaclientd/start.go @@ -106,6 +106,7 @@ func start(_ *cobra.Command, _ []string) error { go zetaBridge.ConfigUpdater(cfg) // Generate TSS address . The Tss address is generated through Keygen ceremony. The TSS key is used to sign all outbound transactions . + // The bridgePk is private key for the Hotkey. The Hotkey is used to sign all inbound transactions // Each node processes a portion of the key stored in ~/.tss by default . Custom location can be specified in config file during init. // After generating the key , the address is set on the zetacore bridgePk, err := zetaBridge.GetKeys().GetPrivateKey() @@ -240,6 +241,14 @@ func start(_ *cobra.Command, _ []string) error { mo1 := mc.NewCoreObserver(zetaBridge, signerMap, chainClientMap, metrics, masterLogger, cfg, telemetryServer) mo1.MonitorCore() + zetaSupplyChecker, err := mc.NewZetaSupplyChecker(cfg, zetaBridge, masterLogger) + if err != nil { + startLogger.Err(err).Msg("NewZetaSupplyChecker") + } + if err == nil { + zetaSupplyChecker.Start() + defer zetaSupplyChecker.Stop() + } startLogger.Info().Msgf("awaiting the os.Interrupt, syscall.SIGTERM signals...") ch := make(chan os.Signal, 1) signal.Notify(ch, syscall.SIGINT, syscall.SIGTERM) diff --git a/docs/openapi/openapi.swagger.yaml b/docs/openapi/openapi.swagger.yaml index a80b3f72e1..3c22237189 100644 --- a/docs/openapi/openapi.swagger.yaml +++ b/docs/openapi/openapi.swagger.yaml @@ -26646,6 +26646,32 @@ paths: type: boolean tags: - Query + /zeta-chain/crosschain/cctxbyStatus/{status}: + get: + operationId: Query_CctxByStatus + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/crosschainQueryCctxByStatusResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/googlerpcStatus' + parameters: + - name: status + in: path + required: true + type: string + enum: + - PendingInbound + - PendingOutbound + - OutboundMined + - PendingRevert + - Reverted + - Aborted + tags: + - Query /zeta-chain/crosschain/chainNonces: get: summary: Queries a list of chainNonces items. @@ -50834,6 +50860,14 @@ definitions: items: type: object $ref: '#/definitions/crosschainPendingNonces' + crosschainQueryCctxByStatusResponse: + type: object + properties: + CrossChainTx: + type: array + items: + type: object + $ref: '#/definitions/crosschainCrossChainTx' crosschainQueryConvertGasToZetaResponse: type: object properties: diff --git a/proto/crosschain/query.proto b/proto/crosschain/query.proto index e05265258d..4ba5849353 100644 --- a/proto/crosschain/query.proto +++ b/proto/crosschain/query.proto @@ -143,6 +143,17 @@ service Query { rpc TssHistory(QueryTssHistoryRequest) returns (QueryTssHistoryResponse) { option (google.api.http).get = "/zeta-chain/crosschain/tssHistory"; } + + rpc CctxByStatus(QueryCctxByStatusRequest) returns (QueryCctxByStatusResponse) { + option (google.api.http).get = "/zeta-chain/crosschain/cctxbyStatus/{status}"; + } +} + +message QueryCctxByStatusRequest { + CctxStatus status = 1; +} +message QueryCctxByStatusResponse { + repeated CrossChainTx CrossChainTx = 1 [(gogoproto.nullable) = false]; } message QueryTssHistoryRequest {} diff --git a/typescript/crosschain/query_pb.d.ts b/typescript/crosschain/query_pb.d.ts index 0446c27b90..2176ad0a5f 100644 --- a/typescript/crosschain/query_pb.d.ts +++ b/typescript/crosschain/query_pb.d.ts @@ -5,18 +5,66 @@ import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf"; import { Message, proto3 } from "@bufbuild/protobuf"; +import type { CctxStatus, CrossChainTx } from "./cross_chain_tx_pb.js"; import type { TSS } from "./tss_pb.js"; import type { Params } from "./params_pb.js"; import type { OutTxTracker } from "./out_tx_tracker_pb.js"; import type { PageRequest, PageResponse } from "../cosmos/base/query/v1beta1/pagination_pb.js"; import type { InTxTracker } from "./in_tx_tracker_pb.js"; import type { InTxHashToCctx } from "./in_tx_hash_to_cctx_pb.js"; -import type { CrossChainTx } from "./cross_chain_tx_pb.js"; import type { GasPrice } from "./gas_price_pb.js"; import type { ChainNonces } from "./chain_nonces_pb.js"; import type { PendingNonces } from "./nonce_to_cctx_pb.js"; import type { LastBlockHeight } from "./last_block_height_pb.js"; +/** + * @generated from message zetachain.zetacore.crosschain.QueryCctxByStatusRequest + */ +export declare class QueryCctxByStatusRequest extends Message { + /** + * @generated from field: zetachain.zetacore.crosschain.CctxStatus status = 1; + */ + status: CctxStatus; + + constructor(data?: PartialMessage); + + static readonly runtime: typeof proto3; + static readonly typeName = "zetachain.zetacore.crosschain.QueryCctxByStatusRequest"; + static readonly fields: FieldList; + + static fromBinary(bytes: Uint8Array, options?: Partial): QueryCctxByStatusRequest; + + static fromJson(jsonValue: JsonValue, options?: Partial): QueryCctxByStatusRequest; + + static fromJsonString(jsonString: string, options?: Partial): QueryCctxByStatusRequest; + + static equals(a: QueryCctxByStatusRequest | PlainMessage | undefined, b: QueryCctxByStatusRequest | PlainMessage | undefined): boolean; +} + +/** + * @generated from message zetachain.zetacore.crosschain.QueryCctxByStatusResponse + */ +export declare class QueryCctxByStatusResponse extends Message { + /** + * @generated from field: repeated zetachain.zetacore.crosschain.CrossChainTx CrossChainTx = 1; + */ + CrossChainTx: CrossChainTx[]; + + constructor(data?: PartialMessage); + + static readonly runtime: typeof proto3; + static readonly typeName = "zetachain.zetacore.crosschain.QueryCctxByStatusResponse"; + static readonly fields: FieldList; + + static fromBinary(bytes: Uint8Array, options?: Partial): QueryCctxByStatusResponse; + + static fromJson(jsonValue: JsonValue, options?: Partial): QueryCctxByStatusResponse; + + static fromJsonString(jsonString: string, options?: Partial): QueryCctxByStatusResponse; + + static equals(a: QueryCctxByStatusResponse | PlainMessage | undefined, b: QueryCctxByStatusResponse | PlainMessage | undefined): boolean; +} + /** * @generated from message zetachain.zetacore.crosschain.QueryTssHistoryRequest */ diff --git a/x/crosschain/keeper/keeper_cross_chain_tx.go b/x/crosschain/keeper/keeper_cross_chain_tx.go index 3ceb63ada5..55da65fb9d 100644 --- a/x/crosschain/keeper/keeper_cross_chain_tx.go +++ b/x/crosschain/keeper/keeper_cross_chain_tx.go @@ -127,6 +127,29 @@ func (k Keeper) CctxAll(c context.Context, req *types.QueryAllCctxRequest) (*typ return &types.QueryAllCctxResponse{CrossChainTx: sends, Pagination: pageRes}, nil } +func (k Keeper) CctxByStatus(c context.Context, req *types.QueryCctxByStatusRequest) (*types.QueryCctxByStatusResponse, error) { + if req == nil { + return nil, status.Error(codes.InvalidArgument, "invalid request") + } + ctx := sdk.UnwrapSDKContext(c) + p := types.KeyPrefix(fmt.Sprintf("%s", types.SendKey)) + store := prefix.NewStore(ctx.KVStore(k.storeKey), p) + + iterator := sdk.KVStorePrefixIterator(store, []byte{}) + + defer iterator.Close() + cctxList := make([]types.CrossChainTx, 0) + for ; iterator.Valid(); iterator.Next() { + var val types.CrossChainTx + k.cdc.MustUnmarshal(iterator.Value(), &val) + if val.CctxStatus.Status == req.Status { + cctxList = append(cctxList, val) + } + } + + return &types.QueryCctxByStatusResponse{CrossChainTx: cctxList}, nil +} + func (k Keeper) Cctx(c context.Context, req *types.QueryGetCctxRequest) (*types.QueryGetCctxResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "invalid request") diff --git a/x/crosschain/types/query.pb.go b/x/crosschain/types/query.pb.go index 868abf1169..bac8d3450a 100644 --- a/x/crosschain/types/query.pb.go +++ b/x/crosschain/types/query.pb.go @@ -31,6 +31,94 @@ var _ = math.Inf // proto package needs to be updated. const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package +type QueryCctxByStatusRequest struct { + Status CctxStatus `protobuf:"varint,1,opt,name=status,proto3,enum=zetachain.zetacore.crosschain.CctxStatus" json:"status,omitempty"` +} + +func (m *QueryCctxByStatusRequest) Reset() { *m = QueryCctxByStatusRequest{} } +func (m *QueryCctxByStatusRequest) String() string { return proto.CompactTextString(m) } +func (*QueryCctxByStatusRequest) ProtoMessage() {} +func (*QueryCctxByStatusRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_65a992045e92a606, []int{0} +} +func (m *QueryCctxByStatusRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryCctxByStatusRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryCctxByStatusRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryCctxByStatusRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryCctxByStatusRequest.Merge(m, src) +} +func (m *QueryCctxByStatusRequest) XXX_Size() int { + return m.Size() +} +func (m *QueryCctxByStatusRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryCctxByStatusRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryCctxByStatusRequest proto.InternalMessageInfo + +func (m *QueryCctxByStatusRequest) GetStatus() CctxStatus { + if m != nil { + return m.Status + } + return CctxStatus_PendingInbound +} + +type QueryCctxByStatusResponse struct { + CrossChainTx []CrossChainTx `protobuf:"bytes,1,rep,name=CrossChainTx,proto3" json:"CrossChainTx"` +} + +func (m *QueryCctxByStatusResponse) Reset() { *m = QueryCctxByStatusResponse{} } +func (m *QueryCctxByStatusResponse) String() string { return proto.CompactTextString(m) } +func (*QueryCctxByStatusResponse) ProtoMessage() {} +func (*QueryCctxByStatusResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_65a992045e92a606, []int{1} +} +func (m *QueryCctxByStatusResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryCctxByStatusResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryCctxByStatusResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryCctxByStatusResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryCctxByStatusResponse.Merge(m, src) +} +func (m *QueryCctxByStatusResponse) XXX_Size() int { + return m.Size() +} +func (m *QueryCctxByStatusResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryCctxByStatusResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryCctxByStatusResponse proto.InternalMessageInfo + +func (m *QueryCctxByStatusResponse) GetCrossChainTx() []CrossChainTx { + if m != nil { + return m.CrossChainTx + } + return nil +} + type QueryTssHistoryRequest struct { } @@ -38,7 +126,7 @@ func (m *QueryTssHistoryRequest) Reset() { *m = QueryTssHistoryRequest{} func (m *QueryTssHistoryRequest) String() string { return proto.CompactTextString(m) } func (*QueryTssHistoryRequest) ProtoMessage() {} func (*QueryTssHistoryRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_65a992045e92a606, []int{0} + return fileDescriptor_65a992045e92a606, []int{2} } func (m *QueryTssHistoryRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -75,7 +163,7 @@ func (m *QueryTssHistoryResponse) Reset() { *m = QueryTssHistoryResponse func (m *QueryTssHistoryResponse) String() string { return proto.CompactTextString(m) } func (*QueryTssHistoryResponse) ProtoMessage() {} func (*QueryTssHistoryResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_65a992045e92a606, []int{1} + return fileDescriptor_65a992045e92a606, []int{3} } func (m *QueryTssHistoryResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -119,7 +207,7 @@ func (m *QueryParamsRequest) Reset() { *m = QueryParamsRequest{} } func (m *QueryParamsRequest) String() string { return proto.CompactTextString(m) } func (*QueryParamsRequest) ProtoMessage() {} func (*QueryParamsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_65a992045e92a606, []int{2} + return fileDescriptor_65a992045e92a606, []int{4} } func (m *QueryParamsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -158,7 +246,7 @@ func (m *QueryParamsResponse) Reset() { *m = QueryParamsResponse{} } func (m *QueryParamsResponse) String() string { return proto.CompactTextString(m) } func (*QueryParamsResponse) ProtoMessage() {} func (*QueryParamsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_65a992045e92a606, []int{3} + return fileDescriptor_65a992045e92a606, []int{5} } func (m *QueryParamsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -203,7 +291,7 @@ func (m *QueryGetOutTxTrackerRequest) Reset() { *m = QueryGetOutTxTracke func (m *QueryGetOutTxTrackerRequest) String() string { return proto.CompactTextString(m) } func (*QueryGetOutTxTrackerRequest) ProtoMessage() {} func (*QueryGetOutTxTrackerRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_65a992045e92a606, []int{4} + return fileDescriptor_65a992045e92a606, []int{6} } func (m *QueryGetOutTxTrackerRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -254,7 +342,7 @@ func (m *QueryGetOutTxTrackerResponse) Reset() { *m = QueryGetOutTxTrack func (m *QueryGetOutTxTrackerResponse) String() string { return proto.CompactTextString(m) } func (*QueryGetOutTxTrackerResponse) ProtoMessage() {} func (*QueryGetOutTxTrackerResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_65a992045e92a606, []int{5} + return fileDescriptor_65a992045e92a606, []int{7} } func (m *QueryGetOutTxTrackerResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -298,7 +386,7 @@ func (m *QueryAllOutTxTrackerRequest) Reset() { *m = QueryAllOutTxTracke func (m *QueryAllOutTxTrackerRequest) String() string { return proto.CompactTextString(m) } func (*QueryAllOutTxTrackerRequest) ProtoMessage() {} func (*QueryAllOutTxTrackerRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_65a992045e92a606, []int{6} + return fileDescriptor_65a992045e92a606, []int{8} } func (m *QueryAllOutTxTrackerRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -343,7 +431,7 @@ func (m *QueryAllOutTxTrackerResponse) Reset() { *m = QueryAllOutTxTrack func (m *QueryAllOutTxTrackerResponse) String() string { return proto.CompactTextString(m) } func (*QueryAllOutTxTrackerResponse) ProtoMessage() {} func (*QueryAllOutTxTrackerResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_65a992045e92a606, []int{7} + return fileDescriptor_65a992045e92a606, []int{9} } func (m *QueryAllOutTxTrackerResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -395,7 +483,7 @@ func (m *QueryAllOutTxTrackerByChainRequest) Reset() { *m = QueryAllOutT func (m *QueryAllOutTxTrackerByChainRequest) String() string { return proto.CompactTextString(m) } func (*QueryAllOutTxTrackerByChainRequest) ProtoMessage() {} func (*QueryAllOutTxTrackerByChainRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_65a992045e92a606, []int{8} + return fileDescriptor_65a992045e92a606, []int{10} } func (m *QueryAllOutTxTrackerByChainRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -447,7 +535,7 @@ func (m *QueryAllOutTxTrackerByChainResponse) Reset() { *m = QueryAllOut func (m *QueryAllOutTxTrackerByChainResponse) String() string { return proto.CompactTextString(m) } func (*QueryAllOutTxTrackerByChainResponse) ProtoMessage() {} func (*QueryAllOutTxTrackerByChainResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_65a992045e92a606, []int{9} + return fileDescriptor_65a992045e92a606, []int{11} } func (m *QueryAllOutTxTrackerByChainResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -499,7 +587,7 @@ func (m *QueryAllInTxTrackerByChainRequest) Reset() { *m = QueryAllInTxT func (m *QueryAllInTxTrackerByChainRequest) String() string { return proto.CompactTextString(m) } func (*QueryAllInTxTrackerByChainRequest) ProtoMessage() {} func (*QueryAllInTxTrackerByChainRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_65a992045e92a606, []int{10} + return fileDescriptor_65a992045e92a606, []int{12} } func (m *QueryAllInTxTrackerByChainRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -551,7 +639,7 @@ func (m *QueryAllInTxTrackerByChainResponse) Reset() { *m = QueryAllInTx func (m *QueryAllInTxTrackerByChainResponse) String() string { return proto.CompactTextString(m) } func (*QueryAllInTxTrackerByChainResponse) ProtoMessage() {} func (*QueryAllInTxTrackerByChainResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_65a992045e92a606, []int{11} + return fileDescriptor_65a992045e92a606, []int{13} } func (m *QueryAllInTxTrackerByChainResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -601,7 +689,7 @@ func (m *QueryAllInTxTrackersRequest) Reset() { *m = QueryAllInTxTracker func (m *QueryAllInTxTrackersRequest) String() string { return proto.CompactTextString(m) } func (*QueryAllInTxTrackersRequest) ProtoMessage() {} func (*QueryAllInTxTrackersRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_65a992045e92a606, []int{12} + return fileDescriptor_65a992045e92a606, []int{14} } func (m *QueryAllInTxTrackersRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -638,7 +726,7 @@ func (m *QueryAllInTxTrackersResponse) Reset() { *m = QueryAllInTxTracke func (m *QueryAllInTxTrackersResponse) String() string { return proto.CompactTextString(m) } func (*QueryAllInTxTrackersResponse) ProtoMessage() {} func (*QueryAllInTxTrackersResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_65a992045e92a606, []int{13} + return fileDescriptor_65a992045e92a606, []int{15} } func (m *QueryAllInTxTrackersResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -682,7 +770,7 @@ func (m *QueryGetInTxHashToCctxRequest) Reset() { *m = QueryGetInTxHashT func (m *QueryGetInTxHashToCctxRequest) String() string { return proto.CompactTextString(m) } func (*QueryGetInTxHashToCctxRequest) ProtoMessage() {} func (*QueryGetInTxHashToCctxRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_65a992045e92a606, []int{14} + return fileDescriptor_65a992045e92a606, []int{16} } func (m *QueryGetInTxHashToCctxRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -726,7 +814,7 @@ func (m *QueryGetInTxHashToCctxResponse) Reset() { *m = QueryGetInTxHash func (m *QueryGetInTxHashToCctxResponse) String() string { return proto.CompactTextString(m) } func (*QueryGetInTxHashToCctxResponse) ProtoMessage() {} func (*QueryGetInTxHashToCctxResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_65a992045e92a606, []int{15} + return fileDescriptor_65a992045e92a606, []int{17} } func (m *QueryGetInTxHashToCctxResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -770,7 +858,7 @@ func (m *QueryInTxHashToCctxDataRequest) Reset() { *m = QueryInTxHashToC func (m *QueryInTxHashToCctxDataRequest) String() string { return proto.CompactTextString(m) } func (*QueryInTxHashToCctxDataRequest) ProtoMessage() {} func (*QueryInTxHashToCctxDataRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_65a992045e92a606, []int{16} + return fileDescriptor_65a992045e92a606, []int{18} } func (m *QueryInTxHashToCctxDataRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -814,7 +902,7 @@ func (m *QueryInTxHashToCctxDataResponse) Reset() { *m = QueryInTxHashTo func (m *QueryInTxHashToCctxDataResponse) String() string { return proto.CompactTextString(m) } func (*QueryInTxHashToCctxDataResponse) ProtoMessage() {} func (*QueryInTxHashToCctxDataResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_65a992045e92a606, []int{17} + return fileDescriptor_65a992045e92a606, []int{19} } func (m *QueryInTxHashToCctxDataResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -858,7 +946,7 @@ func (m *QueryAllInTxHashToCctxRequest) Reset() { *m = QueryAllInTxHashT func (m *QueryAllInTxHashToCctxRequest) String() string { return proto.CompactTextString(m) } func (*QueryAllInTxHashToCctxRequest) ProtoMessage() {} func (*QueryAllInTxHashToCctxRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_65a992045e92a606, []int{18} + return fileDescriptor_65a992045e92a606, []int{20} } func (m *QueryAllInTxHashToCctxRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -903,7 +991,7 @@ func (m *QueryAllInTxHashToCctxResponse) Reset() { *m = QueryAllInTxHash func (m *QueryAllInTxHashToCctxResponse) String() string { return proto.CompactTextString(m) } func (*QueryAllInTxHashToCctxResponse) ProtoMessage() {} func (*QueryAllInTxHashToCctxResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_65a992045e92a606, []int{19} + return fileDescriptor_65a992045e92a606, []int{21} } func (m *QueryAllInTxHashToCctxResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -954,7 +1042,7 @@ func (m *QueryGetTssAddressRequest) Reset() { *m = QueryGetTssAddressReq func (m *QueryGetTssAddressRequest) String() string { return proto.CompactTextString(m) } func (*QueryGetTssAddressRequest) ProtoMessage() {} func (*QueryGetTssAddressRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_65a992045e92a606, []int{20} + return fileDescriptor_65a992045e92a606, []int{22} } func (m *QueryGetTssAddressRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -999,7 +1087,7 @@ func (m *QueryGetTssAddressResponse) Reset() { *m = QueryGetTssAddressRe func (m *QueryGetTssAddressResponse) String() string { return proto.CompactTextString(m) } func (*QueryGetTssAddressResponse) ProtoMessage() {} func (*QueryGetTssAddressResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_65a992045e92a606, []int{21} + return fileDescriptor_65a992045e92a606, []int{23} } func (m *QueryGetTssAddressResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1049,7 +1137,7 @@ func (m *QueryGetTSSRequest) Reset() { *m = QueryGetTSSRequest{} } func (m *QueryGetTSSRequest) String() string { return proto.CompactTextString(m) } func (*QueryGetTSSRequest) ProtoMessage() {} func (*QueryGetTSSRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_65a992045e92a606, []int{22} + return fileDescriptor_65a992045e92a606, []int{24} } func (m *QueryGetTSSRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1086,7 +1174,7 @@ func (m *QueryGetTSSResponse) Reset() { *m = QueryGetTSSResponse{} } func (m *QueryGetTSSResponse) String() string { return proto.CompactTextString(m) } func (*QueryGetTSSResponse) ProtoMessage() {} func (*QueryGetTSSResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_65a992045e92a606, []int{23} + return fileDescriptor_65a992045e92a606, []int{25} } func (m *QueryGetTSSResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1130,7 +1218,7 @@ func (m *QueryGetGasPriceRequest) Reset() { *m = QueryGetGasPriceRequest func (m *QueryGetGasPriceRequest) String() string { return proto.CompactTextString(m) } func (*QueryGetGasPriceRequest) ProtoMessage() {} func (*QueryGetGasPriceRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_65a992045e92a606, []int{24} + return fileDescriptor_65a992045e92a606, []int{26} } func (m *QueryGetGasPriceRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1174,7 +1262,7 @@ func (m *QueryGetGasPriceResponse) Reset() { *m = QueryGetGasPriceRespon func (m *QueryGetGasPriceResponse) String() string { return proto.CompactTextString(m) } func (*QueryGetGasPriceResponse) ProtoMessage() {} func (*QueryGetGasPriceResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_65a992045e92a606, []int{25} + return fileDescriptor_65a992045e92a606, []int{27} } func (m *QueryGetGasPriceResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1218,7 +1306,7 @@ func (m *QueryAllGasPriceRequest) Reset() { *m = QueryAllGasPriceRequest func (m *QueryAllGasPriceRequest) String() string { return proto.CompactTextString(m) } func (*QueryAllGasPriceRequest) ProtoMessage() {} func (*QueryAllGasPriceRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_65a992045e92a606, []int{26} + return fileDescriptor_65a992045e92a606, []int{28} } func (m *QueryAllGasPriceRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1263,7 +1351,7 @@ func (m *QueryAllGasPriceResponse) Reset() { *m = QueryAllGasPriceRespon func (m *QueryAllGasPriceResponse) String() string { return proto.CompactTextString(m) } func (*QueryAllGasPriceResponse) ProtoMessage() {} func (*QueryAllGasPriceResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_65a992045e92a606, []int{27} + return fileDescriptor_65a992045e92a606, []int{29} } func (m *QueryAllGasPriceResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1314,7 +1402,7 @@ func (m *QueryGetChainNoncesRequest) Reset() { *m = QueryGetChainNoncesR func (m *QueryGetChainNoncesRequest) String() string { return proto.CompactTextString(m) } func (*QueryGetChainNoncesRequest) ProtoMessage() {} func (*QueryGetChainNoncesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_65a992045e92a606, []int{28} + return fileDescriptor_65a992045e92a606, []int{30} } func (m *QueryGetChainNoncesRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1358,7 +1446,7 @@ func (m *QueryGetChainNoncesResponse) Reset() { *m = QueryGetChainNonces func (m *QueryGetChainNoncesResponse) String() string { return proto.CompactTextString(m) } func (*QueryGetChainNoncesResponse) ProtoMessage() {} func (*QueryGetChainNoncesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_65a992045e92a606, []int{29} + return fileDescriptor_65a992045e92a606, []int{31} } func (m *QueryGetChainNoncesResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1402,7 +1490,7 @@ func (m *QueryAllChainNoncesRequest) Reset() { *m = QueryAllChainNoncesR func (m *QueryAllChainNoncesRequest) String() string { return proto.CompactTextString(m) } func (*QueryAllChainNoncesRequest) ProtoMessage() {} func (*QueryAllChainNoncesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_65a992045e92a606, []int{30} + return fileDescriptor_65a992045e92a606, []int{32} } func (m *QueryAllChainNoncesRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1447,7 +1535,7 @@ func (m *QueryAllChainNoncesResponse) Reset() { *m = QueryAllChainNonces func (m *QueryAllChainNoncesResponse) String() string { return proto.CompactTextString(m) } func (*QueryAllChainNoncesResponse) ProtoMessage() {} func (*QueryAllChainNoncesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_65a992045e92a606, []int{31} + return fileDescriptor_65a992045e92a606, []int{33} } func (m *QueryAllChainNoncesResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1497,7 +1585,7 @@ func (m *QueryAllPendingNoncesRequest) Reset() { *m = QueryAllPendingNon func (m *QueryAllPendingNoncesRequest) String() string { return proto.CompactTextString(m) } func (*QueryAllPendingNoncesRequest) ProtoMessage() {} func (*QueryAllPendingNoncesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_65a992045e92a606, []int{32} + return fileDescriptor_65a992045e92a606, []int{34} } func (m *QueryAllPendingNoncesRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1534,7 +1622,7 @@ func (m *QueryAllPendingNoncesResponse) Reset() { *m = QueryAllPendingNo func (m *QueryAllPendingNoncesResponse) String() string { return proto.CompactTextString(m) } func (*QueryAllPendingNoncesResponse) ProtoMessage() {} func (*QueryAllPendingNoncesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_65a992045e92a606, []int{33} + return fileDescriptor_65a992045e92a606, []int{35} } func (m *QueryAllPendingNoncesResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1578,7 +1666,7 @@ func (m *QueryPendingNoncesByChainRequest) Reset() { *m = QueryPendingNo func (m *QueryPendingNoncesByChainRequest) String() string { return proto.CompactTextString(m) } func (*QueryPendingNoncesByChainRequest) ProtoMessage() {} func (*QueryPendingNoncesByChainRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_65a992045e92a606, []int{34} + return fileDescriptor_65a992045e92a606, []int{36} } func (m *QueryPendingNoncesByChainRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1622,7 +1710,7 @@ func (m *QueryPendingNoncesByChainResponse) Reset() { *m = QueryPendingN func (m *QueryPendingNoncesByChainResponse) String() string { return proto.CompactTextString(m) } func (*QueryPendingNoncesByChainResponse) ProtoMessage() {} func (*QueryPendingNoncesByChainResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_65a992045e92a606, []int{35} + return fileDescriptor_65a992045e92a606, []int{37} } func (m *QueryPendingNoncesByChainResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1666,7 +1754,7 @@ func (m *QueryGetLastBlockHeightRequest) Reset() { *m = QueryGetLastBloc func (m *QueryGetLastBlockHeightRequest) String() string { return proto.CompactTextString(m) } func (*QueryGetLastBlockHeightRequest) ProtoMessage() {} func (*QueryGetLastBlockHeightRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_65a992045e92a606, []int{36} + return fileDescriptor_65a992045e92a606, []int{38} } func (m *QueryGetLastBlockHeightRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1710,7 +1798,7 @@ func (m *QueryGetLastBlockHeightResponse) Reset() { *m = QueryGetLastBlo func (m *QueryGetLastBlockHeightResponse) String() string { return proto.CompactTextString(m) } func (*QueryGetLastBlockHeightResponse) ProtoMessage() {} func (*QueryGetLastBlockHeightResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_65a992045e92a606, []int{37} + return fileDescriptor_65a992045e92a606, []int{39} } func (m *QueryGetLastBlockHeightResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1754,7 +1842,7 @@ func (m *QueryAllLastBlockHeightRequest) Reset() { *m = QueryAllLastBloc func (m *QueryAllLastBlockHeightRequest) String() string { return proto.CompactTextString(m) } func (*QueryAllLastBlockHeightRequest) ProtoMessage() {} func (*QueryAllLastBlockHeightRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_65a992045e92a606, []int{38} + return fileDescriptor_65a992045e92a606, []int{40} } func (m *QueryAllLastBlockHeightRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1799,7 +1887,7 @@ func (m *QueryAllLastBlockHeightResponse) Reset() { *m = QueryAllLastBlo func (m *QueryAllLastBlockHeightResponse) String() string { return proto.CompactTextString(m) } func (*QueryAllLastBlockHeightResponse) ProtoMessage() {} func (*QueryAllLastBlockHeightResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_65a992045e92a606, []int{39} + return fileDescriptor_65a992045e92a606, []int{41} } func (m *QueryAllLastBlockHeightResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1850,7 +1938,7 @@ func (m *QueryGetCctxRequest) Reset() { *m = QueryGetCctxRequest{} } func (m *QueryGetCctxRequest) String() string { return proto.CompactTextString(m) } func (*QueryGetCctxRequest) ProtoMessage() {} func (*QueryGetCctxRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_65a992045e92a606, []int{40} + return fileDescriptor_65a992045e92a606, []int{42} } func (m *QueryGetCctxRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1895,7 +1983,7 @@ func (m *QueryGetCctxByNonceRequest) Reset() { *m = QueryGetCctxByNonceR func (m *QueryGetCctxByNonceRequest) String() string { return proto.CompactTextString(m) } func (*QueryGetCctxByNonceRequest) ProtoMessage() {} func (*QueryGetCctxByNonceRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_65a992045e92a606, []int{41} + return fileDescriptor_65a992045e92a606, []int{43} } func (m *QueryGetCctxByNonceRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1946,7 +2034,7 @@ func (m *QueryGetCctxResponse) Reset() { *m = QueryGetCctxResponse{} } func (m *QueryGetCctxResponse) String() string { return proto.CompactTextString(m) } func (*QueryGetCctxResponse) ProtoMessage() {} func (*QueryGetCctxResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_65a992045e92a606, []int{42} + return fileDescriptor_65a992045e92a606, []int{44} } func (m *QueryGetCctxResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1990,7 +2078,7 @@ func (m *QueryAllCctxRequest) Reset() { *m = QueryAllCctxRequest{} } func (m *QueryAllCctxRequest) String() string { return proto.CompactTextString(m) } func (*QueryAllCctxRequest) ProtoMessage() {} func (*QueryAllCctxRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_65a992045e92a606, []int{43} + return fileDescriptor_65a992045e92a606, []int{45} } func (m *QueryAllCctxRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2035,7 +2123,7 @@ func (m *QueryAllCctxResponse) Reset() { *m = QueryAllCctxResponse{} } func (m *QueryAllCctxResponse) String() string { return proto.CompactTextString(m) } func (*QueryAllCctxResponse) ProtoMessage() {} func (*QueryAllCctxResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_65a992045e92a606, []int{44} + return fileDescriptor_65a992045e92a606, []int{46} } func (m *QueryAllCctxResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2087,7 +2175,7 @@ func (m *QueryAllCctxPendingRequest) Reset() { *m = QueryAllCctxPendingR func (m *QueryAllCctxPendingRequest) String() string { return proto.CompactTextString(m) } func (*QueryAllCctxPendingRequest) ProtoMessage() {} func (*QueryAllCctxPendingRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_65a992045e92a606, []int{45} + return fileDescriptor_65a992045e92a606, []int{47} } func (m *QueryAllCctxPendingRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2139,7 +2227,7 @@ func (m *QueryAllCctxPendingResponse) Reset() { *m = QueryAllCctxPending func (m *QueryAllCctxPendingResponse) String() string { return proto.CompactTextString(m) } func (*QueryAllCctxPendingResponse) ProtoMessage() {} func (*QueryAllCctxPendingResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_65a992045e92a606, []int{46} + return fileDescriptor_65a992045e92a606, []int{48} } func (m *QueryAllCctxPendingResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2189,7 +2277,7 @@ func (m *QueryLastZetaHeightRequest) Reset() { *m = QueryLastZetaHeightR func (m *QueryLastZetaHeightRequest) String() string { return proto.CompactTextString(m) } func (*QueryLastZetaHeightRequest) ProtoMessage() {} func (*QueryLastZetaHeightRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_65a992045e92a606, []int{47} + return fileDescriptor_65a992045e92a606, []int{49} } func (m *QueryLastZetaHeightRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2226,7 +2314,7 @@ func (m *QueryLastZetaHeightResponse) Reset() { *m = QueryLastZetaHeight func (m *QueryLastZetaHeightResponse) String() string { return proto.CompactTextString(m) } func (*QueryLastZetaHeightResponse) ProtoMessage() {} func (*QueryLastZetaHeightResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_65a992045e92a606, []int{48} + return fileDescriptor_65a992045e92a606, []int{50} } func (m *QueryLastZetaHeightResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2271,7 +2359,7 @@ func (m *QueryConvertGasToZetaRequest) Reset() { *m = QueryConvertGasToZ func (m *QueryConvertGasToZetaRequest) String() string { return proto.CompactTextString(m) } func (*QueryConvertGasToZetaRequest) ProtoMessage() {} func (*QueryConvertGasToZetaRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_65a992045e92a606, []int{49} + return fileDescriptor_65a992045e92a606, []int{51} } func (m *QueryConvertGasToZetaRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2324,7 +2412,7 @@ func (m *QueryConvertGasToZetaResponse) Reset() { *m = QueryConvertGasTo func (m *QueryConvertGasToZetaResponse) String() string { return proto.CompactTextString(m) } func (*QueryConvertGasToZetaResponse) ProtoMessage() {} func (*QueryConvertGasToZetaResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_65a992045e92a606, []int{50} + return fileDescriptor_65a992045e92a606, []int{52} } func (m *QueryConvertGasToZetaResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2381,7 +2469,7 @@ func (m *QueryMessagePassingProtocolFeeRequest) Reset() { *m = QueryMess func (m *QueryMessagePassingProtocolFeeRequest) String() string { return proto.CompactTextString(m) } func (*QueryMessagePassingProtocolFeeRequest) ProtoMessage() {} func (*QueryMessagePassingProtocolFeeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_65a992045e92a606, []int{51} + return fileDescriptor_65a992045e92a606, []int{53} } func (m *QueryMessagePassingProtocolFeeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2420,7 +2508,7 @@ func (m *QueryMessagePassingProtocolFeeResponse) Reset() { func (m *QueryMessagePassingProtocolFeeResponse) String() string { return proto.CompactTextString(m) } func (*QueryMessagePassingProtocolFeeResponse) ProtoMessage() {} func (*QueryMessagePassingProtocolFeeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_65a992045e92a606, []int{52} + return fileDescriptor_65a992045e92a606, []int{54} } func (m *QueryMessagePassingProtocolFeeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2464,7 +2552,7 @@ func (m *QueryZEVMGetTransactionReceiptRequest) Reset() { *m = QueryZEVM func (m *QueryZEVMGetTransactionReceiptRequest) String() string { return proto.CompactTextString(m) } func (*QueryZEVMGetTransactionReceiptRequest) ProtoMessage() {} func (*QueryZEVMGetTransactionReceiptRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_65a992045e92a606, []int{53} + return fileDescriptor_65a992045e92a606, []int{55} } func (m *QueryZEVMGetTransactionReceiptRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2521,7 +2609,7 @@ func (m *QueryZEVMGetTransactionReceiptResponse) Reset() { func (m *QueryZEVMGetTransactionReceiptResponse) String() string { return proto.CompactTextString(m) } func (*QueryZEVMGetTransactionReceiptResponse) ProtoMessage() {} func (*QueryZEVMGetTransactionReceiptResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_65a992045e92a606, []int{54} + return fileDescriptor_65a992045e92a606, []int{56} } func (m *QueryZEVMGetTransactionReceiptResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2651,7 +2739,7 @@ func (m *Log) Reset() { *m = Log{} } func (m *Log) String() string { return proto.CompactTextString(m) } func (*Log) ProtoMessage() {} func (*Log) Descriptor() ([]byte, []int) { - return fileDescriptor_65a992045e92a606, []int{55} + return fileDescriptor_65a992045e92a606, []int{57} } func (m *Log) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2751,7 +2839,7 @@ func (m *QueryZEVMGetTransactionRequest) Reset() { *m = QueryZEVMGetTran func (m *QueryZEVMGetTransactionRequest) String() string { return proto.CompactTextString(m) } func (*QueryZEVMGetTransactionRequest) ProtoMessage() {} func (*QueryZEVMGetTransactionRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_65a992045e92a606, []int{56} + return fileDescriptor_65a992045e92a606, []int{58} } func (m *QueryZEVMGetTransactionRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2811,7 +2899,7 @@ func (m *QueryZEVMGetTransactionResponse) Reset() { *m = QueryZEVMGetTra func (m *QueryZEVMGetTransactionResponse) String() string { return proto.CompactTextString(m) } func (*QueryZEVMGetTransactionResponse) ProtoMessage() {} func (*QueryZEVMGetTransactionResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_65a992045e92a606, []int{57} + return fileDescriptor_65a992045e92a606, []int{59} } func (m *QueryZEVMGetTransactionResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2967,7 +3055,7 @@ func (m *QueryZEVMGetBlockByNumberRequest) Reset() { *m = QueryZEVMGetBl func (m *QueryZEVMGetBlockByNumberRequest) String() string { return proto.CompactTextString(m) } func (*QueryZEVMGetBlockByNumberRequest) ProtoMessage() {} func (*QueryZEVMGetBlockByNumberRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_65a992045e92a606, []int{58} + return fileDescriptor_65a992045e92a606, []int{60} } func (m *QueryZEVMGetBlockByNumberRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3031,7 +3119,7 @@ func (m *QueryZEVMGetBlockByNumberResponse) Reset() { *m = QueryZEVMGetB func (m *QueryZEVMGetBlockByNumberResponse) String() string { return proto.CompactTextString(m) } func (*QueryZEVMGetBlockByNumberResponse) ProtoMessage() {} func (*QueryZEVMGetBlockByNumberResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_65a992045e92a606, []int{59} + return fileDescriptor_65a992045e92a606, []int{61} } func (m *QueryZEVMGetBlockByNumberResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3208,6 +3296,8 @@ func (m *QueryZEVMGetBlockByNumberResponse) GetMixHash() string { } func init() { + proto.RegisterType((*QueryCctxByStatusRequest)(nil), "zetachain.zetacore.crosschain.QueryCctxByStatusRequest") + proto.RegisterType((*QueryCctxByStatusResponse)(nil), "zetachain.zetacore.crosschain.QueryCctxByStatusResponse") proto.RegisterType((*QueryTssHistoryRequest)(nil), "zetachain.zetacore.crosschain.QueryTssHistoryRequest") proto.RegisterType((*QueryTssHistoryResponse)(nil), "zetachain.zetacore.crosschain.QueryTssHistoryResponse") proto.RegisterType((*QueryParamsRequest)(nil), "zetachain.zetacore.crosschain.QueryParamsRequest") @@ -3273,204 +3363,210 @@ func init() { func init() { proto.RegisterFile("crosschain/query.proto", fileDescriptor_65a992045e92a606) } var fileDescriptor_65a992045e92a606 = []byte{ - // 3151 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x5b, 0xdd, 0x6f, 0x1b, 0xc7, - 0x11, 0xf7, 0x89, 0xfa, 0x5c, 0x4a, 0x96, 0xbc, 0x56, 0x1c, 0x86, 0xb1, 0x45, 0xe7, 0x1c, 0x5b, - 0x8e, 0x3f, 0xc8, 0x58, 0xb1, 0x95, 0xc4, 0x76, 0xd2, 0x48, 0x76, 0xac, 0x18, 0x51, 0x12, 0xf5, - 0xa4, 0xf4, 0xc3, 0x45, 0x4b, 0x9c, 0xc8, 0x35, 0x75, 0x30, 0xc9, 0x63, 0x6e, 0x97, 0x82, 0x14, - 0x43, 0x2d, 0x90, 0x87, 0x3e, 0x07, 0x28, 0xd0, 0xbe, 0xf4, 0xb5, 0x1f, 0x0f, 0x7d, 0x28, 0xd0, - 0xa0, 0x29, 0x50, 0x20, 0x45, 0xd1, 0xd6, 0xcd, 0x63, 0xd0, 0x02, 0x45, 0x3f, 0x00, 0xa2, 0x48, - 0xfa, 0xc4, 0xff, 0xa0, 0x40, 0x1f, 0x8a, 0x9d, 0x9b, 0xe3, 0xed, 0xf1, 0xee, 0xc4, 0x13, 0xc5, - 0x04, 0xed, 0x8b, 0xb8, 0x3b, 0x7b, 0x33, 0xfb, 0x9b, 0xd9, 0x99, 0xdd, 0xd9, 0x9b, 0x13, 0x39, - 0x51, 0x72, 0x6c, 0xce, 0x4b, 0x5b, 0xa6, 0x55, 0x2f, 0xbc, 0xd3, 0x64, 0xce, 0x6e, 0xbe, 0xe1, - 0xd8, 0xc2, 0xa6, 0xa7, 0xde, 0x65, 0xc2, 0x04, 0x72, 0x1e, 0x5a, 0xb6, 0xc3, 0xf2, 0xfe, 0xa3, - 0xd9, 0x0b, 0x25, 0x9b, 0xd7, 0x6c, 0x5e, 0xd8, 0x34, 0x39, 0x73, 0xf9, 0x0a, 0xdb, 0x57, 0x36, - 0x99, 0x30, 0xaf, 0x14, 0x1a, 0x66, 0xc5, 0xaa, 0x9b, 0xc2, 0xb2, 0xeb, 0xae, 0xa8, 0xec, 0x29, - 0x65, 0x0a, 0xf8, 0x5b, 0xac, 0xdb, 0xf5, 0x12, 0xe3, 0x38, 0x9c, 0x53, 0x87, 0x65, 0xb3, 0xe8, - 0x3e, 0x24, 0x76, 0xf0, 0x81, 0xac, 0xf2, 0x40, 0xc5, 0xe4, 0xc5, 0x86, 0x63, 0x95, 0x18, 0x8e, - 0x9d, 0x51, 0xc6, 0x80, 0xa7, 0xb8, 0x65, 0xf2, 0xad, 0xa2, 0xb0, 0x8b, 0xa5, 0x52, 0x47, 0xc0, - 0x5c, 0xe8, 0x21, 0xe1, 0x98, 0xa5, 0x07, 0xcc, 0xc1, 0x71, 0x5d, 0x19, 0xaf, 0x9a, 0x5c, 0x14, - 0x37, 0xab, 0x76, 0xe9, 0x41, 0x71, 0x8b, 0x59, 0x95, 0x2d, 0x11, 0x21, 0x03, 0xe0, 0x77, 0xcd, - 0xa1, 0x6a, 0x61, 0x37, 0x45, 0x78, 0x92, 0xc7, 0x95, 0x07, 0x1a, 0xa6, 0x63, 0xd6, 0x3c, 0xfd, - 0x67, 0x95, 0x01, 0xc1, 0x3b, 0xd4, 0x8a, 0x5d, 0xb1, 0xa1, 0x59, 0x90, 0x2d, 0xa4, 0x9e, 0xac, - 0xd8, 0x76, 0xa5, 0xca, 0x0a, 0x66, 0xc3, 0x2a, 0x98, 0xf5, 0xba, 0x2d, 0xc0, 0xce, 0xc8, 0xa3, - 0x67, 0xc8, 0x89, 0x2f, 0xcb, 0xa5, 0xd8, 0xe0, 0xfc, 0x35, 0x8b, 0x0b, 0xdb, 0xd9, 0x35, 0xd8, - 0x3b, 0x4d, 0xc6, 0x85, 0xfe, 0x2d, 0xf2, 0x78, 0x68, 0x84, 0x37, 0xec, 0x3a, 0x67, 0xf4, 0x16, - 0x19, 0x17, 0x9c, 0x17, 0xab, 0x16, 0x17, 0x19, 0xed, 0x74, 0xea, 0x7c, 0x7a, 0x41, 0xcf, 0xef, - 0xbb, 0xf6, 0xf9, 0x8d, 0xf5, 0xf5, 0xe5, 0xe1, 0x8f, 0x5b, 0xb9, 0x23, 0xc6, 0x98, 0xe0, 0x7c, - 0xd5, 0xe2, 0x42, 0x9f, 0x25, 0x14, 0xe4, 0xaf, 0x81, 0x62, 0xde, 0xac, 0xf7, 0xc8, 0xf1, 0x00, - 0xb5, 0x33, 0xe3, 0xa8, 0x6b, 0x80, 0x8c, 0x76, 0x5a, 0x3b, 0x9f, 0x5e, 0x38, 0xdb, 0x63, 0x3e, - 0x97, 0x1d, 0xa7, 0x44, 0x56, 0xfd, 0x0d, 0xf2, 0x24, 0xc8, 0x5e, 0x61, 0xe2, 0xad, 0xa6, 0xd8, - 0xd8, 0xd9, 0x70, 0x8d, 0x8d, 0x53, 0xd3, 0x0c, 0x19, 0x03, 0xe6, 0xbb, 0xb7, 0x61, 0x92, 0x94, - 0xe1, 0x75, 0xe9, 0x2c, 0x19, 0x81, 0xf5, 0xcb, 0x0c, 0x9d, 0xd6, 0xce, 0x0f, 0x1b, 0x6e, 0x47, - 0x6f, 0x92, 0x93, 0xd1, 0xe2, 0x10, 0xf3, 0xdb, 0x64, 0xd2, 0x56, 0xe8, 0x88, 0xfc, 0x62, 0x0f, - 0xe4, 0xaa, 0x28, 0xc4, 0x1f, 0x10, 0xa3, 0x33, 0xd4, 0x62, 0xa9, 0x5a, 0x8d, 0xd2, 0xe2, 0x0e, - 0x21, 0x7e, 0x34, 0xe1, 0x9c, 0xe7, 0xf2, 0x6e, 0xe8, 0xe5, 0x65, 0xe8, 0xe5, 0xdd, 0x90, 0xc5, - 0xd0, 0xcb, 0xaf, 0x99, 0x15, 0x86, 0xbc, 0x86, 0xc2, 0xa9, 0x7f, 0xa4, 0xa1, 0x7a, 0xa1, 0x79, - 0x62, 0xd5, 0x4b, 0x0d, 0x40, 0x3d, 0xba, 0x12, 0xc0, 0x3f, 0x04, 0xf8, 0xe7, 0x7b, 0xe2, 0x77, - 0x31, 0x05, 0x14, 0x78, 0x4f, 0x23, 0x7a, 0x94, 0x02, 0xcb, 0xbb, 0xb7, 0x24, 0x12, 0xcf, 0x5e, - 0xb3, 0x64, 0x04, 0x90, 0xe1, 0x9a, 0xbb, 0x9d, 0x2e, 0x2b, 0x0e, 0xf5, 0x6d, 0xc5, 0x3f, 0x68, - 0xe4, 0xcc, 0xbe, 0x20, 0xfe, 0x4f, 0x8c, 0xf9, 0x5d, 0x8d, 0x3c, 0xe5, 0xe9, 0x71, 0xb7, 0x1e, - 0x67, 0xcb, 0x27, 0xc8, 0xb8, 0xbb, 0x0f, 0x5b, 0xe5, 0x60, 0x08, 0x95, 0x07, 0x66, 0xd0, 0xdf, - 0x2a, 0xab, 0x1a, 0x05, 0x04, 0xed, 0x69, 0x90, 0xb4, 0x55, 0xef, 0x36, 0xe7, 0x85, 0x1e, 0xe6, - 0x54, 0xe5, 0xb9, 0xd6, 0x54, 0x85, 0x0c, 0xce, 0x98, 0xa7, 0xfc, 0x08, 0x56, 0xa6, 0xec, 0x6c, - 0x81, 0x8e, 0x1f, 0x78, 0xc1, 0xe1, 0xcf, 0x4f, 0x37, 0xfd, 0x06, 0x39, 0xe5, 0xed, 0x65, 0xf2, - 0xc9, 0xd7, 0x4c, 0xbe, 0xb5, 0x61, 0xdf, 0x2a, 0x89, 0x1d, 0x6f, 0x69, 0xb3, 0x64, 0xdc, 0xc2, - 0x01, 0x58, 0xda, 0x09, 0xa3, 0xd3, 0xd7, 0xf7, 0xc8, 0x5c, 0x1c, 0x33, 0x42, 0xfe, 0x06, 0x39, - 0x6a, 0x05, 0x46, 0x70, 0x63, 0xba, 0x9c, 0x00, 0xb5, 0xcf, 0x84, 0xc0, 0xbb, 0x44, 0xe9, 0x37, - 0x71, 0xfa, 0xe0, 0xc3, 0xb7, 0x4d, 0x61, 0x26, 0x01, 0xff, 0x2e, 0xc9, 0xc5, 0x72, 0x23, 0xfa, - 0xaf, 0x92, 0xa9, 0x5b, 0x12, 0x13, 0xb8, 0xd8, 0xc6, 0x0e, 0x4f, 0x18, 0x9d, 0x2a, 0x0f, 0x42, - 0x0f, 0xca, 0xd1, 0x2b, 0x68, 0x75, 0x5c, 0xe9, 0xb0, 0xd5, 0x07, 0xb5, 0x99, 0x3f, 0xd2, 0xd0, - 0x46, 0x11, 0x33, 0xed, 0xb3, 0x44, 0xa9, 0x01, 0x2d, 0xd1, 0xe0, 0x42, 0xe7, 0x06, 0x79, 0xc2, - 0x73, 0xb5, 0x0d, 0xce, 0x97, 0xca, 0x65, 0x87, 0x71, 0x2f, 0x70, 0xe8, 0x1c, 0x49, 0xcb, 0xb4, - 0xa4, 0xd1, 0xdc, 0x2c, 0x3e, 0x60, 0xbb, 0xb8, 0xd2, 0x13, 0x82, 0xf3, 0xb5, 0xe6, 0xe6, 0xeb, - 0x6c, 0x57, 0x7f, 0x85, 0x64, 0xa3, 0x98, 0xd1, 0x00, 0x33, 0x24, 0xc5, 0x84, 0xe7, 0x1f, 0xb2, - 0x29, 0x29, 0x9b, 0xa2, 0x04, 0x70, 0x27, 0x0c, 0xd9, 0xec, 0xe4, 0x2c, 0x52, 0xc2, 0xfa, 0xba, - 0x17, 0xb0, 0xaf, 0x63, 0xce, 0xe2, 0x51, 0x51, 0xe0, 0x55, 0x92, 0xda, 0x58, 0x5f, 0xc7, 0x55, - 0x4b, 0x90, 0x20, 0x19, 0xf2, 0x71, 0xbd, 0x80, 0x69, 0xd7, 0x0a, 0x13, 0x2b, 0x26, 0x5f, 0x93, - 0x79, 0xab, 0x72, 0x54, 0x59, 0xf5, 0x32, 0xdb, 0x41, 0x8c, 0x6e, 0x47, 0x2f, 0x92, 0x4c, 0x98, - 0xc1, 0x4f, 0xd4, 0x3c, 0x1a, 0xe2, 0x98, 0xef, 0x81, 0xa3, 0x23, 0xa2, 0xc3, 0xa8, 0x9b, 0x88, - 0x68, 0xa9, 0x5a, 0xed, 0x46, 0x34, 0x28, 0xff, 0xfc, 0xa9, 0x86, 0x4a, 0x04, 0xe6, 0x88, 0x54, - 0x22, 0xd5, 0x97, 0x12, 0x83, 0xf3, 0xc0, 0x05, 0xdf, 0x89, 0x20, 0x8e, 0xdf, 0x84, 0x7b, 0xc9, - 0xfe, 0x4b, 0xf4, 0xc0, 0x4f, 0x3c, 0x03, 0x3c, 0xa8, 0xe0, 0x2a, 0x49, 0x2b, 0x64, 0x34, 0x63, - 0xaf, 0x0d, 0x5d, 0x15, 0xa4, 0xb2, 0xeb, 0x65, 0x04, 0xb8, 0x54, 0xad, 0x46, 0x00, 0x1c, 0xd4, - 0x8a, 0x7d, 0xa0, 0xf9, 0x87, 0x58, 0x22, 0x9d, 0x52, 0x87, 0xd0, 0x69, 0x70, 0xab, 0x37, 0xe7, - 0x9f, 0xad, 0x6b, 0xac, 0x5e, 0xb6, 0xea, 0x95, 0x80, 0x79, 0x74, 0xe1, 0xef, 0xc8, 0x5d, 0xe3, - 0xa8, 0xd7, 0x3a, 0x39, 0xda, 0x70, 0x07, 0xf0, 0x46, 0x8a, 0xaa, 0x5d, 0xea, 0x75, 0x21, 0x09, - 0x48, 0x9b, 0x6a, 0xa8, 0x5d, 0xfd, 0x25, 0x72, 0xda, 0xbd, 0xf4, 0xa8, 0xd4, 0xc4, 0xb9, 0x95, - 0xfe, 0x6d, 0xcc, 0xcd, 0xa2, 0xd9, 0x11, 0xf8, 0xd7, 0x23, 0x80, 0x6b, 0x07, 0x05, 0xee, 0x1d, - 0x63, 0x41, 0xf8, 0x8b, 0xfe, 0xf9, 0xbf, 0x6a, 0x72, 0xb1, 0x2c, 0x6f, 0xc2, 0xaf, 0xc1, 0x45, - 0x78, 0xff, 0xb0, 0x78, 0x88, 0x47, 0x6f, 0x14, 0x1f, 0xa2, 0xfe, 0x1a, 0x99, 0xee, 0x1a, 0x42, - 0xd8, 0xf9, 0x1e, 0xb0, 0xbb, 0x05, 0x76, 0x8b, 0xd1, 0xb7, 0xfc, 0x13, 0x31, 0x06, 0xf4, 0xa0, - 0x42, 0xe5, 0xf7, 0x1a, 0xea, 0x19, 0x35, 0xd5, 0x7e, 0x7a, 0xa6, 0x06, 0xa0, 0xe7, 0xe0, 0x42, - 0xe7, 0xa2, 0x7f, 0xca, 0xa9, 0x29, 0x4a, 0xf4, 0xd2, 0xae, 0x2a, 0xbb, 0xa4, 0x4c, 0x0b, 0x76, - 0xc1, 0x55, 0xfa, 0xbd, 0x69, 0x57, 0xc8, 0x6c, 0x70, 0x6a, 0xb4, 0xda, 0x5b, 0x64, 0x52, 0x4d, - 0xa8, 0x12, 0xde, 0xb0, 0x55, 0x16, 0x23, 0x20, 0x40, 0xff, 0x26, 0xea, 0x28, 0x37, 0xb5, 0xcf, - 0x21, 0x0d, 0xfb, 0xb9, 0x86, 0x8a, 0x74, 0xe4, 0xc7, 0x2a, 0x92, 0x3a, 0x94, 0x22, 0x83, 0x5b, - 0xf5, 0xef, 0x28, 0xa7, 0x49, 0x49, 0xec, 0xe0, 0x6e, 0xf0, 0x05, 0x5e, 0xf8, 0x3e, 0x54, 0x0f, - 0x1a, 0x15, 0xc1, 0xff, 0xbc, 0xe9, 0x4e, 0xa2, 0xe9, 0x64, 0x44, 0xde, 0x63, 0xc2, 0x0c, 0xec, - 0x2e, 0xfa, 0x35, 0x54, 0xab, 0x7b, 0x14, 0xd5, 0x3a, 0x41, 0x46, 0x95, 0xfd, 0x2e, 0x65, 0x60, - 0x4f, 0xdf, 0xc0, 0x03, 0xec, 0x96, 0x5d, 0xdf, 0x66, 0x8e, 0xcc, 0xf8, 0x36, 0x6c, 0xc9, 0x1e, - 0x0a, 0xad, 0xd0, 0x82, 0x64, 0xc9, 0x78, 0xc5, 0xe4, 0xab, 0x56, 0xcd, 0x12, 0x98, 0xd2, 0x76, - 0xfa, 0xfa, 0x8f, 0x34, 0x3c, 0xf7, 0xc2, 0x62, 0x11, 0xcf, 0x25, 0x72, 0xcc, 0x6e, 0x8a, 0x4d, - 0xbb, 0x59, 0x2f, 0xaf, 0x98, 0xfc, 0x6e, 0x5d, 0x0e, 0x62, 0xc8, 0x87, 0x07, 0xe4, 0xd3, 0xf0, - 0x7a, 0xb1, 0x64, 0x57, 0xef, 0x30, 0x86, 0x4f, 0xbb, 0x93, 0x86, 0x07, 0xe8, 0x79, 0x32, 0x2d, - 0x7f, 0xd5, 0xcd, 0x2f, 0x05, 0xe1, 0xdf, 0x4d, 0xd6, 0xe7, 0xc9, 0x59, 0x80, 0xf9, 0x06, 0xe3, - 0xdc, 0xac, 0xb0, 0x35, 0x93, 0x73, 0xab, 0x5e, 0x59, 0xf3, 0x25, 0x7a, 0xd6, 0xbd, 0x43, 0xce, - 0xf5, 0x7a, 0x10, 0x15, 0x3b, 0x49, 0x26, 0xee, 0x77, 0x20, 0xe2, 0x95, 0xa1, 0x43, 0xd0, 0x6f, - 0xe0, 0x84, 0xf7, 0x5e, 0xfd, 0xca, 0x1b, 0x32, 0xbd, 0x77, 0xcc, 0x3a, 0x37, 0x4b, 0x72, 0x79, - 0x0d, 0x56, 0x62, 0x56, 0xa3, 0x73, 0x58, 0x50, 0x32, 0xbc, 0xe5, 0x5f, 0x2f, 0xa1, 0xad, 0xff, - 0x67, 0x18, 0x51, 0xec, 0xc3, 0xdd, 0x31, 0x2f, 0xc1, 0x17, 0xc8, 0x1d, 0x21, 0xcb, 0x53, 0xed, - 0x56, 0x6e, 0x02, 0xa8, 0xf2, 0x26, 0x65, 0xf8, 0x4d, 0xba, 0x40, 0x26, 0xdd, 0xa7, 0xeb, 0xcd, - 0xda, 0x26, 0x73, 0x5c, 0xcb, 0x2e, 0x4f, 0xb7, 0x5b, 0xb9, 0x34, 0xd0, 0xdf, 0x04, 0xb2, 0xa1, - 0x76, 0xe8, 0xcb, 0x64, 0xa6, 0x64, 0xd7, 0x85, 0x63, 0x96, 0x44, 0xd1, 0x74, 0xaf, 0x3e, 0x60, - 0xe5, 0x89, 0xe5, 0xe3, 0xed, 0x56, 0x6e, 0xda, 0x1b, 0xf3, 0x6e, 0x45, 0xdd, 0x04, 0xfa, 0x2a, - 0x39, 0x5e, 0x6a, 0xd6, 0x9a, 0x55, 0x53, 0x58, 0xdb, 0xac, 0x58, 0x31, 0x79, 0xb1, 0xc9, 0x59, - 0x39, 0x33, 0x0c, 0x22, 0x1e, 0x6b, 0xb7, 0x72, 0xc7, 0xfc, 0xe1, 0x15, 0x93, 0xbf, 0xcd, 0x59, - 0xd9, 0x08, 0x93, 0xe8, 0x49, 0x32, 0x7c, 0xdf, 0xb1, 0x6b, 0x99, 0x11, 0xe0, 0x1b, 0x6f, 0xb7, - 0x72, 0xd0, 0x37, 0xe0, 0x2f, 0x3d, 0x07, 0x3e, 0xea, 0x4a, 0x1e, 0x85, 0x27, 0xd2, 0xed, 0x56, - 0x6e, 0xac, 0x82, 0xf2, 0xbc, 0x86, 0x34, 0x57, 0xd5, 0xae, 0xf0, 0xe2, 0x66, 0xd5, 0xb6, 0x6b, - 0x99, 0x31, 0xdf, 0x5c, 0x92, 0xba, 0x2c, 0x89, 0x86, 0xdf, 0xa4, 0x3a, 0x19, 0xe5, 0xc2, 0x14, - 0x4d, 0x9e, 0x19, 0x87, 0x27, 0x49, 0xbb, 0x95, 0x43, 0x8a, 0x81, 0xbf, 0xf4, 0x04, 0x19, 0x12, - 0x76, 0x66, 0x02, 0xc6, 0x47, 0xdb, 0xad, 0xdc, 0x90, 0xb0, 0x8d, 0x21, 0x61, 0x4b, 0xb3, 0x09, - 0x7f, 0xd9, 0xdc, 0xe5, 0x21, 0xbe, 0xd9, 0x94, 0x31, 0x58, 0xa4, 0x6e, 0x02, 0x5d, 0x22, 0xc7, - 0x54, 0x7e, 0xf7, 0xa8, 0x4c, 0x83, 0x80, 0xd9, 0x76, 0x2b, 0xa7, 0x0a, 0xbf, 0x2b, 0xc7, 0x8c, - 0x10, 0x85, 0x2e, 0x92, 0x61, 0xa9, 0x4b, 0x66, 0x32, 0xd1, 0x9b, 0xf6, 0x55, 0xbb, 0x62, 0xc0, - 0xf3, 0xfa, 0x7b, 0x29, 0x92, 0x5a, 0xb5, 0x2b, 0x72, 0x4b, 0xf0, 0x16, 0xdc, 0xf5, 0x4e, 0xaf, - 0x2b, 0x37, 0x19, 0x61, 0x37, 0xac, 0x12, 0xcf, 0x0c, 0x9d, 0x4e, 0x9d, 0x9f, 0x30, 0xb0, 0x27, - 0x9d, 0xb9, 0x6c, 0x0a, 0xd3, 0xf5, 0x0f, 0x03, 0xda, 0x21, 0x9f, 0x93, 0x0b, 0x3f, 0xdc, 0xdb, - 0xe7, 0x42, 0xc6, 0x1b, 0x39, 0xac, 0xf1, 0x46, 0x61, 0xe2, 0xa4, 0xc6, 0x0b, 0x06, 0xd6, 0x58, - 0x8f, 0xc0, 0x7a, 0x86, 0x48, 0xb7, 0xc1, 0x89, 0xc6, 0x61, 0xa2, 0xc9, 0x76, 0x2b, 0x37, 0x5e, - 0xb5, 0x2b, 0xee, 0x04, 0x9d, 0x16, 0x3d, 0x4b, 0xc6, 0x1c, 0x56, 0xb3, 0xb7, 0x59, 0x19, 0xbc, - 0x66, 0xdc, 0xf5, 0x54, 0x24, 0x19, 0x5e, 0x43, 0xbf, 0x8a, 0x69, 0x66, 0xd4, 0x16, 0x10, 0xbf, - 0x73, 0xfc, 0x7b, 0x18, 0x53, 0xc6, 0x28, 0xb6, 0x2f, 0x6c, 0xcb, 0xf0, 0x62, 0x35, 0x15, 0x19, - 0xab, 0x4f, 0x90, 0x54, 0xc5, 0xe4, 0xb8, 0x01, 0x8c, 0xb5, 0x5b, 0x39, 0xd9, 0x35, 0xe4, 0x1f, - 0x69, 0xc6, 0x4e, 0xd1, 0x0d, 0x17, 0x1c, 0xcc, 0x58, 0xe9, 0xdc, 0xcb, 0xbd, 0x96, 0x9c, 0x03, - 0xf0, 0x8f, 0xfa, 0x73, 0xc8, 0xbe, 0x6b, 0x07, 0x9a, 0x93, 0xc9, 0x65, 0xa3, 0x29, 0x70, 0xe1, - 0x26, 0xda, 0xad, 0x9c, 0x4b, 0x30, 0xdc, 0x1f, 0xf9, 0x80, 0x9b, 0x2f, 0x8e, 0xfb, 0x0f, 0x00, - 0x01, 0x53, 0xc7, 0xd8, 0xb8, 0x8e, 0x74, 0x2d, 0x72, 0xa0, 0xb8, 0xcc, 0x91, 0x91, 0x6d, 0xb3, - 0xda, 0x64, 0x18, 0xce, 0x30, 0x37, 0x10, 0x0c, 0xf7, 0x47, 0xea, 0x26, 0x76, 0x1b, 0x2c, 0x33, - 0xe9, 0xeb, 0x26, 0xfb, 0x06, 0xfc, 0xa5, 0x05, 0x92, 0x36, 0x4b, 0x25, 0xe6, 0xd5, 0xd1, 0xa6, - 0x64, 0x04, 0x2e, 0x1f, 0x6d, 0xb7, 0x72, 0xc4, 0x25, 0xaf, 0x5a, 0x32, 0x13, 0xf2, 0xdb, 0x72, - 0x73, 0xec, 0x24, 0x5b, 0x47, 0xfd, 0xcd, 0x11, 0xcf, 0x77, 0xff, 0xa0, 0x3f, 0x4e, 0xb4, 0xed, - 0xcc, 0x34, 0x3c, 0x30, 0xd2, 0x6e, 0xe5, 0xb4, 0x6d, 0x43, 0xdb, 0x96, 0x44, 0x27, 0x33, 0xe3, - 0x13, 0x1d, 0x43, 0x73, 0x24, 0x91, 0x67, 0x8e, 0xf9, 0x44, 0x6e, 0x68, 0x5c, 0xbf, 0x8e, 0x97, - 0x51, 0x74, 0x3d, 0x38, 0x7e, 0x97, 0x77, 0xd1, 0x3f, 0xd0, 0x67, 0x4f, 0x90, 0xd1, 0x2d, 0x3f, - 0x3b, 0x19, 0x36, 0xb0, 0xa7, 0xff, 0x6d, 0x0c, 0xaf, 0xa2, 0xd1, 0xcc, 0xe8, 0xb9, 0x3a, 0x19, - 0x45, 0x2f, 0xd4, 0xfc, 0xfd, 0xd8, 0xa5, 0x18, 0xf8, 0xdb, 0xf1, 0x8b, 0xa1, 0x48, 0xbf, 0x28, - 0x90, 0x74, 0xc3, 0x74, 0x58, 0x5d, 0xb8, 0xce, 0xef, 0x3a, 0x28, 0xd8, 0xce, 0x25, 0x83, 0xf7, - 0x2b, 0x6d, 0xdf, 0x4f, 0x86, 0x63, 0xfc, 0xa4, 0x40, 0xd2, 0x7c, 0xcb, 0x7c, 0xae, 0xd8, 0xac, - 0x97, 0xaa, 0x8c, 0xa3, 0xd3, 0x82, 0x44, 0x49, 0x7e, 0x1b, 0xa8, 0x86, 0xd2, 0xee, 0x3a, 0x82, - 0x46, 0x7b, 0x1c, 0x41, 0x41, 0x77, 0xe3, 0x45, 0xc7, 0xb6, 0x3d, 0xa7, 0xee, 0x76, 0x37, 0x6e, - 0xd8, 0xb6, 0x30, 0x42, 0x14, 0x39, 0xa1, 0x3c, 0xab, 0x98, 0xcb, 0x3b, 0xee, 0x4f, 0x08, 0x54, - 0x60, 0xf2, 0x9b, 0xf4, 0x1a, 0x99, 0x72, 0xdc, 0x1c, 0x03, 0x27, 0x73, 0x43, 0x60, 0xa6, 0xdd, - 0xca, 0x4d, 0x7a, 0x03, 0xc0, 0x13, 0xe8, 0x49, 0x3b, 0xd5, 0xac, 0x3a, 0x73, 0x30, 0x14, 0xc0, - 0x4e, 0x40, 0x30, 0xdc, 0x1f, 0x9a, 0x27, 0xa4, 0x6c, 0xdd, 0xbf, 0x6f, 0x95, 0x9a, 0x55, 0xb1, - 0x8b, 0x9e, 0x0f, 0x66, 0xf2, 0xa9, 0x86, 0xd2, 0x86, 0x23, 0xc0, 0x16, 0x66, 0xb5, 0xa8, 0x70, - 0x4d, 0x2a, 0x47, 0x80, 0x1c, 0xbb, 0xed, 0xb3, 0x76, 0x13, 0xa4, 0xd6, 0x6c, 0x47, 0x38, 0x66, - 0x11, 0x0e, 0xa4, 0x29, 0x5f, 0x6b, 0xa0, 0xc2, 0x6b, 0x7a, 0xbf, 0x29, 0xbd, 0x86, 0x5b, 0xef, - 0x32, 0x0c, 0x0f, 0xf0, 0x1a, 0xd9, 0x37, 0xe0, 0xaf, 0xb7, 0x2d, 0x55, 0x21, 0x05, 0x9e, 0x0e, - 0x6c, 0x4b, 0x90, 0x06, 0xfb, 0x09, 0x71, 0x20, 0x11, 0x99, 0xd9, 0x27, 0x11, 0xb9, 0x48, 0x26, - 0x84, 0x55, 0x63, 0x5c, 0x98, 0xb5, 0x06, 0x46, 0x12, 0xa0, 0xeb, 0x10, 0x0d, 0xbf, 0x49, 0xaf, - 0x92, 0x49, 0x75, 0x55, 0x33, 0x14, 0x42, 0x1e, 0x96, 0x24, 0xb0, 0xda, 0x81, 0x9e, 0x8c, 0x16, - 0x74, 0xca, 0xe3, 0xf0, 0x3c, 0x44, 0x8b, 0x4b, 0x31, 0xf0, 0x97, 0x5e, 0x27, 0x33, 0xf2, 0x66, - 0x52, 0xbc, 0xcf, 0x58, 0xb1, 0xc1, 0x1c, 0x99, 0x9e, 0x65, 0x66, 0x01, 0xcd, 0xb1, 0x76, 0x2b, - 0x37, 0x25, 0xc7, 0xee, 0x30, 0xb6, 0xc6, 0x9c, 0x15, 0x93, 0x1b, 0xc1, 0xae, 0x54, 0xb5, 0x66, - 0xb9, 0xdf, 0x40, 0x64, 0x1e, 0xf3, 0x55, 0xad, 0x59, 0xf0, 0x02, 0xdf, 0xf0, 0x1a, 0x0b, 0x8f, - 0xe6, 0xc9, 0x08, 0xc4, 0x36, 0xfd, 0xbe, 0x46, 0x46, 0xdd, 0x02, 0x3b, 0xbd, 0xd2, 0x23, 0x1b, - 0x09, 0x57, 0xf8, 0xb3, 0x0b, 0x07, 0x61, 0x71, 0x77, 0x0c, 0xfd, 0xec, 0x7b, 0x7f, 0xfe, 0xd7, - 0xf7, 0x86, 0x72, 0xf4, 0x54, 0x41, 0x72, 0x5c, 0x56, 0x3e, 0xfc, 0x50, 0x3f, 0x8e, 0xa0, 0x8f, - 0x34, 0x32, 0xa9, 0xd6, 0x44, 0xe9, 0xf5, 0x24, 0x73, 0x45, 0x7f, 0x0e, 0x90, 0xbd, 0xd1, 0x17, - 0x2f, 0x02, 0x7e, 0x09, 0x00, 0x3f, 0x4f, 0xaf, 0xc5, 0x00, 0x56, 0xab, 0xb4, 0x85, 0x87, 0xf8, - 0xf6, 0x63, 0xaf, 0xf0, 0x10, 0x36, 0xa3, 0x3d, 0xfa, 0xa1, 0x46, 0xa6, 0x55, 0xb9, 0x4b, 0xd5, - 0x6a, 0x32, 0x5d, 0xa2, 0x3f, 0x0a, 0x48, 0xa6, 0x4b, 0x4c, 0xa1, 0x5f, 0xbf, 0x08, 0xba, 0x9c, - 0xa5, 0x67, 0x12, 0xe8, 0x42, 0xff, 0xa1, 0x91, 0x13, 0x5d, 0xc8, 0xf1, 0x4d, 0x24, 0x5d, 0xea, - 0x03, 0x44, 0xf0, 0x25, 0x68, 0x76, 0xf9, 0x30, 0x22, 0x50, 0x9d, 0xeb, 0xa0, 0xce, 0x55, 0xba, - 0x90, 0x40, 0x1d, 0xe4, 0xc5, 0x15, 0xda, 0xa3, 0x7f, 0xd7, 0xc8, 0x63, 0x4a, 0x25, 0x55, 0x51, - 0xee, 0x95, 0x84, 0xc8, 0x62, 0x8b, 0xe7, 0xd9, 0xa5, 0x43, 0x48, 0x40, 0xd5, 0x6e, 0x82, 0x6a, - 0x8b, 0xf4, 0x6a, 0x8c, 0x6a, 0x56, 0x3d, 0x46, 0xb3, 0xa2, 0x55, 0xde, 0xa3, 0xbf, 0xd4, 0xc8, - 0xd1, 0xa0, 0x72, 0x89, 0x7d, 0x2e, 0xa2, 0x8c, 0x9d, 0xd8, 0xe7, 0xa2, 0x6a, 0xdc, 0x3d, 0x7d, - 0x4e, 0xd1, 0x84, 0xd3, 0x3f, 0x22, 0x70, 0xa5, 0xe0, 0x78, 0x33, 0x61, 0xf0, 0x46, 0x96, 0x5d, - 0xb3, 0x2f, 0xf5, 0xc9, 0x8d, 0xe0, 0x5f, 0x00, 0xf0, 0x0b, 0xf4, 0xd9, 0x7d, 0xc0, 0xfb, 0x6c, - 0x85, 0x87, 0x5e, 0x7f, 0x8f, 0xfe, 0x45, 0x23, 0x34, 0x5c, 0x88, 0xa6, 0x89, 0xf0, 0xc4, 0x96, - 0xbf, 0xb3, 0x2f, 0xf7, 0xcb, 0x8e, 0xfa, 0x2c, 0x81, 0x3e, 0x37, 0xe8, 0x8b, 0xb1, 0xfa, 0x74, - 0x7f, 0x44, 0x07, 0xa7, 0xb5, 0xaa, 0xd8, 0x6f, 0x34, 0x72, 0x2c, 0x38, 0x83, 0x74, 0xaf, 0x9b, - 0x07, 0x70, 0x91, 0x3e, 0x57, 0x29, 0xb6, 0xe0, 0xad, 0x5f, 0x06, 0xad, 0xe6, 0xe9, 0xd9, 0x44, - 0xab, 0x44, 0x3f, 0xd0, 0xc8, 0x54, 0xa0, 0x70, 0x4c, 0x5f, 0x48, 0xe8, 0x25, 0xa1, 0x42, 0x75, - 0xf6, 0xc5, 0x3e, 0x38, 0x11, 0x75, 0x1e, 0x50, 0x9f, 0xa7, 0xe7, 0x62, 0x50, 0x57, 0x98, 0x28, - 0x0a, 0xce, 0xbd, 0x57, 0x3c, 0xf4, 0x7d, 0x0d, 0xaa, 0xd0, 0xc9, 0x0e, 0xea, 0x40, 0x59, 0x3b, - 0xd9, 0x41, 0x1d, 0xac, 0x79, 0xeb, 0x3a, 0xc0, 0x3b, 0x49, 0xb3, 0x31, 0xf0, 0x24, 0x94, 0x9f, - 0x69, 0x7e, 0x41, 0x97, 0x2e, 0x26, 0x9c, 0xa4, 0xab, 0xf2, 0x9c, 0x7d, 0xfe, 0xc0, 0x7c, 0x88, - 0xb0, 0x00, 0x08, 0x9f, 0xa1, 0xf3, 0x71, 0x06, 0x44, 0x06, 0xe9, 0xbd, 0x65, 0xb6, 0xb3, 0x47, - 0x7f, 0xa2, 0x91, 0xb4, 0x27, 0x45, 0x3a, 0xed, 0x62, 0x42, 0xb7, 0xeb, 0x0b, 0x71, 0x44, 0xfd, - 0x5b, 0x9f, 0x07, 0xc4, 0x4f, 0xd1, 0x5c, 0x0f, 0xc4, 0xf4, 0x23, 0x8d, 0xcc, 0x74, 0xbf, 0xc0, - 0xa5, 0x89, 0xb6, 0xe1, 0x98, 0xb7, 0xc9, 0xd9, 0x9b, 0xfd, 0x31, 0x27, 0x34, 0x75, 0xa9, 0x1b, - 0xeb, 0x23, 0x8d, 0xa4, 0x95, 0x77, 0xb4, 0xf4, 0x76, 0x92, 0xe9, 0x7b, 0xbd, 0x0b, 0xce, 0xbe, - 0x7a, 0x48, 0x29, 0xa8, 0xcd, 0x05, 0xd0, 0xe6, 0x69, 0xaa, 0xc7, 0xe5, 0xa0, 0x0a, 0xf0, 0x5f, - 0x69, 0x81, 0xf2, 0x37, 0x4d, 0x1a, 0xf0, 0xe1, 0x82, 0x7d, 0xf6, 0x7a, 0x3f, 0xac, 0x08, 0x79, - 0x01, 0x20, 0x5f, 0xa2, 0x17, 0xe2, 0x16, 0xc0, 0xe7, 0xe9, 0xb8, 0xfb, 0x2f, 0x34, 0x72, 0x54, - 0x91, 0x25, 0x3d, 0xfe, 0xc5, 0x84, 0x9e, 0xdb, 0x2f, 0xfa, 0xe8, 0x4f, 0x08, 0x7a, 0x1a, 0x5c, - 0x41, 0x4f, 0x7f, 0xad, 0x91, 0x99, 0x40, 0xa5, 0x5a, 0xe2, 0x4e, 0x9a, 0x81, 0x44, 0x7d, 0x09, - 0x90, 0xbd, 0xd9, 0x1f, 0x33, 0x62, 0xbf, 0x04, 0xd8, 0xcf, 0xd1, 0xa7, 0xe3, 0x9c, 0x45, 0xe5, - 0xa2, 0x7f, 0xd2, 0xc8, 0x6c, 0x54, 0xf1, 0x9e, 0x7e, 0x29, 0xd1, 0x5d, 0x29, 0xfe, 0xab, 0x81, - 0xec, 0x2b, 0xfd, 0x0b, 0x40, 0x4d, 0x9e, 0x07, 0x4d, 0xae, 0xd0, 0x42, 0x12, 0x4d, 0xd4, 0x74, - 0xf2, 0x63, 0x2d, 0x54, 0xd3, 0xa6, 0x49, 0x13, 0xab, 0xe8, 0x8a, 0x7c, 0xb2, 0x44, 0x26, 0xfe, - 0x6b, 0x02, 0x7d, 0x11, 0x74, 0x79, 0x96, 0xe6, 0x63, 0x74, 0xa9, 0x06, 0xf9, 0x3a, 0x31, 0xf1, - 0x3b, 0x8d, 0xd0, 0x2e, 0x99, 0xd2, 0xbf, 0x92, 0x26, 0x20, 0x87, 0xd1, 0x26, 0xfe, 0x9b, 0x81, - 0x9e, 0xa9, 0x40, 0x97, 0x36, 0xf4, 0x87, 0x1a, 0x19, 0x86, 0x54, 0x26, 0xe9, 0xc1, 0xae, 0x26, - 0x5b, 0xcf, 0x1d, 0x88, 0x27, 0x61, 0x16, 0x5f, 0xc2, 0xf4, 0x17, 0x8c, 0xfc, 0x81, 0xdc, 0x33, - 0xfd, 0x6f, 0x05, 0x92, 0xef, 0x99, 0xa1, 0xef, 0x0b, 0xfa, 0x03, 0x7b, 0x0d, 0xc0, 0x16, 0xe8, - 0xe5, 0x7d, 0xc1, 0x86, 0xae, 0xea, 0x3f, 0xd0, 0xc8, 0x98, 0x97, 0xcf, 0x2e, 0x24, 0xdd, 0xed, - 0x0e, 0x6a, 0xd8, 0xae, 0xef, 0x05, 0xf4, 0x33, 0x80, 0xf5, 0x14, 0x7d, 0x72, 0x1f, 0xac, 0xee, - 0x4e, 0xee, 0x22, 0xc3, 0x08, 0x4f, 0xbe, 0x93, 0x87, 0x4a, 0xfd, 0xc9, 0x77, 0xf2, 0x70, 0x8d, - 0xbe, 0xf7, 0x4e, 0xee, 0xf3, 0xc0, 0x2d, 0x34, 0x58, 0x13, 0x4f, 0x86, 0x3a, 0xb2, 0xca, 0x9e, - 0x0c, 0x75, 0x74, 0x09, 0xbe, 0xe7, 0x05, 0xa1, 0x1a, 0x44, 0xf9, 0x63, 0x8d, 0x10, 0xff, 0x7f, - 0x65, 0xe8, 0xb5, 0x24, 0x33, 0x87, 0xfe, 0xeb, 0x26, 0xbb, 0x78, 0x50, 0x36, 0x04, 0xfb, 0x0c, - 0x80, 0x3d, 0x43, 0x9f, 0x8a, 0x01, 0x2b, 0x3a, 0x2c, 0xcb, 0xaf, 0x7f, 0xfc, 0xe9, 0x9c, 0xf6, - 0xc9, 0xa7, 0x73, 0xda, 0x3f, 0x3f, 0x9d, 0xd3, 0xde, 0xff, 0x6c, 0xee, 0xc8, 0x27, 0x9f, 0xcd, - 0x1d, 0xf9, 0xeb, 0x67, 0x73, 0x47, 0xee, 0x5d, 0xa9, 0x58, 0x62, 0xab, 0xb9, 0x99, 0x2f, 0xd9, - 0x35, 0x55, 0x8c, 0x87, 0xa3, 0xb0, 0x13, 0x90, 0xb8, 0xdb, 0x60, 0x7c, 0x73, 0x14, 0xd2, 0x9e, - 0xe7, 0xfe, 0x1b, 0x00, 0x00, 0xff, 0xff, 0x16, 0xbf, 0x39, 0xb6, 0x14, 0x36, 0x00, 0x00, + // 3234 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x5b, 0xdb, 0x6f, 0x1b, 0xc7, + 0xd5, 0xf7, 0x8a, 0xba, 0x0e, 0x75, 0xf3, 0x58, 0x71, 0x18, 0xc6, 0x16, 0x9d, 0x75, 0x7c, 0xb7, + 0xc9, 0x58, 0xb1, 0x95, 0xc4, 0x76, 0xf2, 0x45, 0xb2, 0x63, 0xc5, 0x88, 0x92, 0xe8, 0x5b, 0x29, + 0xdf, 0xd7, 0xba, 0x48, 0x89, 0x15, 0x39, 0xa6, 0x16, 0x26, 0xb9, 0xcc, 0xce, 0x50, 0x90, 0x62, + 0xa8, 0x2d, 0xf2, 0xd0, 0xe7, 0x00, 0x05, 0xda, 0x97, 0xbe, 0xf6, 0xf2, 0xd0, 0x87, 0x02, 0x0d, + 0x9a, 0x02, 0x05, 0x52, 0x14, 0x6d, 0xd3, 0x3c, 0x06, 0x2d, 0x50, 0xf4, 0x02, 0x10, 0x45, 0xd2, + 0x27, 0xfe, 0x07, 0x05, 0xfa, 0x50, 0xcc, 0xd9, 0xb3, 0xdc, 0x59, 0xee, 0xae, 0xb8, 0xa2, 0x98, + 0xa0, 0x7d, 0x11, 0x67, 0xce, 0xec, 0x39, 0xf3, 0x3b, 0x97, 0x39, 0x73, 0x66, 0x67, 0x45, 0x8e, + 0x97, 0x1c, 0x9b, 0xf3, 0xd2, 0x96, 0x69, 0xd5, 0x0b, 0xef, 0x34, 0x99, 0xb3, 0x9b, 0x6f, 0x38, + 0xb6, 0xb0, 0xe9, 0xc9, 0x77, 0x99, 0x30, 0x81, 0x9c, 0x87, 0x96, 0xed, 0xb0, 0xbc, 0xff, 0x68, + 0xf6, 0x62, 0xc9, 0xe6, 0x35, 0x9b, 0x17, 0x36, 0x4d, 0xce, 0x5c, 0xbe, 0xc2, 0xf6, 0xd5, 0x4d, + 0x26, 0xcc, 0xab, 0x85, 0x86, 0x59, 0xb1, 0xea, 0xa6, 0xb0, 0xec, 0xba, 0x2b, 0x2a, 0x7b, 0x52, + 0x99, 0x02, 0xfe, 0x16, 0xeb, 0x76, 0xbd, 0xc4, 0x38, 0x0e, 0xe7, 0xd4, 0x61, 0xd9, 0x2c, 0xba, + 0x0f, 0x89, 0x1d, 0x7c, 0x20, 0xab, 0x3c, 0x50, 0x31, 0x79, 0xb1, 0xe1, 0x58, 0x25, 0x86, 0x63, + 0xa7, 0x95, 0x31, 0xe0, 0x29, 0x6e, 0x99, 0x7c, 0xab, 0x28, 0xec, 0x62, 0xa9, 0xd4, 0x11, 0x30, + 0x1f, 0x7a, 0x48, 0x38, 0x66, 0xe9, 0x21, 0x73, 0x70, 0x5c, 0x57, 0xc6, 0xab, 0x26, 0x17, 0xc5, + 0xcd, 0xaa, 0x5d, 0x7a, 0x58, 0xdc, 0x62, 0x56, 0x65, 0x4b, 0x44, 0xc8, 0x00, 0xf8, 0x5d, 0x73, + 0xa8, 0x5a, 0xd8, 0x4d, 0x11, 0x9e, 0xe4, 0x71, 0xe5, 0x81, 0x86, 0xe9, 0x98, 0x35, 0x4f, 0xff, + 0x39, 0x65, 0x40, 0xf0, 0x0e, 0xb5, 0x62, 0x57, 0x6c, 0x68, 0x16, 0x64, 0x0b, 0xa9, 0x27, 0x2a, + 0xb6, 0x5d, 0xa9, 0xb2, 0x82, 0xd9, 0xb0, 0x0a, 0x66, 0xbd, 0x6e, 0x0b, 0xb0, 0x33, 0xf2, 0xe8, + 0x6f, 0x93, 0xcc, 0xff, 0x4a, 0x57, 0xdc, 0x2e, 0x89, 0x9d, 0xe5, 0xdd, 0x75, 0x61, 0x8a, 0x26, + 0x37, 0xd8, 0x3b, 0x4d, 0xc6, 0x05, 0x5d, 0x22, 0xa3, 0x1c, 0x08, 0x19, 0xed, 0x94, 0x76, 0x7e, + 0x7a, 0xe1, 0x42, 0x7e, 0x5f, 0x07, 0xe7, 0xa5, 0x0c, 0x94, 0x80, 0x8c, 0xba, 0x43, 0x9e, 0x88, + 0x10, 0xcf, 0x1b, 0x76, 0x9d, 0x33, 0xfa, 0x16, 0x99, 0xbc, 0x2d, 0xb9, 0x6f, 0x4b, 0xee, 0x8d, + 0x9d, 0x8c, 0x76, 0x2a, 0x75, 0x3e, 0xbd, 0x70, 0xa9, 0xd7, 0x2c, 0x0a, 0xcb, 0xf2, 0xf0, 0x27, + 0xad, 0xdc, 0x11, 0x23, 0x20, 0x46, 0xcf, 0x90, 0xe3, 0x30, 0xe7, 0x06, 0xe7, 0xaf, 0x5a, 0x5c, + 0xd8, 0xce, 0x2e, 0x2a, 0xa4, 0x7f, 0x9d, 0x3c, 0x1e, 0x1a, 0x41, 0x2c, 0xb7, 0xc9, 0xb8, 0xe0, + 0xbc, 0x58, 0xb5, 0xb8, 0x40, 0x1c, 0x7a, 0x0f, 0x1c, 0x1b, 0xeb, 0xeb, 0x38, 0xfd, 0x98, 0xe0, + 0x7c, 0xd5, 0xe2, 0x42, 0x9f, 0x23, 0x14, 0xe4, 0xaf, 0x81, 0xaf, 0xbc, 0x59, 0xef, 0x93, 0x63, + 0x01, 0x6a, 0x67, 0xc6, 0x51, 0xd7, 0xa7, 0x60, 0xdd, 0xf4, 0xc2, 0x99, 0x1e, 0xf3, 0xb9, 0xec, + 0x38, 0x25, 0xb2, 0xea, 0xaf, 0x93, 0x27, 0x41, 0xf6, 0x0a, 0x13, 0x6f, 0x36, 0xc5, 0xc6, 0xce, + 0x86, 0x1b, 0x3f, 0x9e, 0x07, 0x33, 0x64, 0x0c, 0x98, 0xef, 0xdd, 0x81, 0x49, 0x52, 0x86, 0xd7, + 0xa5, 0x73, 0x64, 0x04, 0x42, 0x32, 0x33, 0x74, 0x4a, 0x3b, 0x3f, 0x6c, 0xb8, 0x1d, 0xbd, 0x49, + 0x4e, 0x44, 0x8b, 0xf3, 0x3d, 0x66, 0x2b, 0x74, 0x44, 0xde, 0xcb, 0x63, 0xaa, 0x28, 0xcf, 0x63, + 0xaa, 0x18, 0x9d, 0xa1, 0x16, 0x4b, 0xd5, 0x6a, 0x94, 0x16, 0x77, 0x09, 0xf1, 0x13, 0x04, 0xce, + 0x79, 0x36, 0xef, 0x66, 0x93, 0xbc, 0xcc, 0x26, 0x79, 0x37, 0x0b, 0x61, 0x36, 0xc9, 0xaf, 0x99, + 0x15, 0x86, 0xbc, 0x86, 0xc2, 0xa9, 0x7f, 0xa4, 0xa1, 0x7a, 0xa1, 0x79, 0x62, 0xd5, 0x4b, 0x0d, + 0x40, 0x3d, 0xba, 0x12, 0xc0, 0x3f, 0x04, 0xf8, 0xcf, 0xf5, 0xc4, 0xef, 0x62, 0x0a, 0x28, 0xf0, + 0x9e, 0x46, 0xf4, 0x28, 0x05, 0x96, 0x77, 0x21, 0xf6, 0x3d, 0x7b, 0xcd, 0x91, 0x11, 0x40, 0x86, + 0x3e, 0x77, 0x3b, 0x5d, 0x56, 0x1c, 0xea, 0xdb, 0x8a, 0xbf, 0xd3, 0xc8, 0xe9, 0x7d, 0x41, 0xfc, + 0x97, 0x18, 0xf3, 0xdb, 0x1a, 0x79, 0xca, 0xd3, 0xe3, 0x5e, 0x3d, 0xce, 0x96, 0x4f, 0x90, 0x71, + 0x77, 0x6b, 0xb1, 0xca, 0xc1, 0x25, 0x54, 0x1e, 0x98, 0x41, 0x7f, 0xad, 0x78, 0x35, 0x0a, 0x08, + 0xda, 0xd3, 0x20, 0x69, 0xab, 0xde, 0x6d, 0xce, 0x8b, 0x3d, 0xcc, 0xa9, 0xca, 0x73, 0xad, 0xa9, + 0x0a, 0x19, 0x9c, 0x31, 0x4f, 0xfa, 0x2b, 0x58, 0x99, 0xb2, 0x93, 0x02, 0x1d, 0x7f, 0xe1, 0x05, + 0x87, 0xbf, 0x38, 0xdd, 0xf4, 0x9b, 0xe4, 0xa4, 0x97, 0xcb, 0xe4, 0x93, 0xaf, 0x9a, 0x7c, 0x6b, + 0xc3, 0x96, 0xfb, 0x90, 0xe7, 0xda, 0x2c, 0x19, 0xb7, 0x70, 0x00, 0x5c, 0x3b, 0x61, 0x74, 0xfa, + 0xfa, 0x1e, 0x99, 0x8f, 0x63, 0x46, 0xc8, 0x5f, 0x23, 0xd3, 0x56, 0x60, 0x04, 0x13, 0xd3, 0x95, + 0x04, 0xa8, 0x7d, 0x26, 0x04, 0xde, 0x25, 0x4a, 0xbf, 0x85, 0xd3, 0x07, 0x1f, 0xbe, 0x63, 0x0a, + 0x33, 0x09, 0xf8, 0x77, 0x49, 0x2e, 0x96, 0x1b, 0xd1, 0xff, 0x3f, 0x99, 0x52, 0xf7, 0x4c, 0xde, + 0xff, 0xde, 0x1b, 0x94, 0xa3, 0x57, 0xd0, 0xea, 0xe8, 0xe9, 0xb0, 0xd5, 0x07, 0x95, 0xcc, 0x3f, + 0xd6, 0xd0, 0x46, 0x11, 0x33, 0xed, 0xe3, 0xa2, 0xd4, 0x80, 0x5c, 0x34, 0xb8, 0xa5, 0x73, 0x13, + 0x4b, 0xa4, 0x15, 0x26, 0x36, 0x38, 0x5f, 0x2a, 0x97, 0x1d, 0xc6, 0x3b, 0x25, 0xd8, 0x3c, 0x49, + 0xcb, 0xb2, 0xa4, 0xd1, 0xdc, 0x2c, 0x3e, 0x64, 0xbb, 0xe8, 0xe9, 0x09, 0xc1, 0xf9, 0x5a, 0x73, + 0xf3, 0x35, 0xb6, 0xab, 0xbf, 0x4c, 0xb2, 0x51, 0xcc, 0x68, 0x80, 0x59, 0x92, 0x62, 0xc2, 0x8b, + 0x0f, 0xd9, 0x94, 0x94, 0x4d, 0x51, 0x02, 0xb8, 0x13, 0x86, 0x6c, 0x76, 0x6a, 0x16, 0x29, 0x61, + 0x7d, 0xdd, 0x5b, 0xb0, 0xaf, 0x61, 0xcd, 0xe2, 0x51, 0x51, 0xe0, 0x35, 0x92, 0xda, 0x58, 0x5f, + 0x47, 0xaf, 0x25, 0x28, 0x90, 0x0c, 0xf9, 0xb8, 0x5e, 0xc0, 0xb2, 0x6b, 0x85, 0x89, 0x15, 0x93, + 0xaf, 0xc9, 0x52, 0x5c, 0xd9, 0xaa, 0xac, 0x7a, 0x99, 0xed, 0x20, 0x46, 0xb7, 0xa3, 0x17, 0xb1, + 0x28, 0x0d, 0x30, 0xf8, 0x85, 0x9a, 0x47, 0x43, 0x1c, 0xe7, 0x7a, 0xe0, 0xe8, 0x88, 0xe8, 0x30, + 0xea, 0x26, 0x22, 0x5a, 0xaa, 0x56, 0xbb, 0x11, 0x0d, 0x2a, 0x3e, 0x7f, 0xac, 0xa1, 0x12, 0x81, + 0x39, 0x22, 0x95, 0x48, 0xf5, 0xa5, 0xc4, 0xe0, 0x22, 0x70, 0xc1, 0x0f, 0x22, 0x58, 0xc7, 0x6f, + 0xc0, 0x51, 0x6b, 0x7f, 0x17, 0x3d, 0xf4, 0x0b, 0xcf, 0x00, 0x0f, 0x2a, 0xb8, 0x4a, 0xd2, 0x0a, + 0x19, 0xcd, 0xd8, 0x2b, 0xa1, 0xab, 0x82, 0x54, 0x76, 0xbd, 0x8c, 0x00, 0x97, 0xaa, 0xd5, 0x08, + 0x80, 0x83, 0xf2, 0xd8, 0x07, 0x9a, 0xbf, 0x89, 0x25, 0xd2, 0x29, 0x75, 0x08, 0x9d, 0x06, 0xe7, + 0xbd, 0x79, 0x7f, 0x6f, 0x5d, 0x63, 0xf5, 0xb2, 0x55, 0xaf, 0x04, 0xcc, 0xa3, 0x0b, 0x3f, 0x23, + 0x77, 0x8d, 0xa3, 0x5e, 0xeb, 0x64, 0xba, 0xe1, 0x0e, 0xe0, 0x21, 0x1b, 0x55, 0xbb, 0xdc, 0xeb, + 0x40, 0x12, 0x90, 0x36, 0xd5, 0x50, 0xbb, 0xfa, 0x8b, 0xe4, 0x94, 0x7b, 0xe8, 0x51, 0xa9, 0x89, + 0x6b, 0x2b, 0xfd, 0x1b, 0x58, 0x9b, 0x45, 0xb3, 0x23, 0xf0, 0xaf, 0x46, 0x00, 0xd7, 0x0e, 0x0a, + 0xdc, 0xdb, 0xc6, 0x82, 0xf0, 0x17, 0xfd, 0xfd, 0x7f, 0xd5, 0xe4, 0x62, 0x59, 0x1e, 0xee, 0x5f, + 0x85, 0xb3, 0xfd, 0xfe, 0xcb, 0xe2, 0x11, 0x6e, 0xbd, 0x51, 0x7c, 0x88, 0xfa, 0x2b, 0x64, 0xa6, + 0x6b, 0x08, 0x61, 0xe7, 0x7b, 0xc0, 0xee, 0x16, 0xd8, 0x2d, 0x46, 0xdf, 0xf2, 0x77, 0xc4, 0x18, + 0xd0, 0x83, 0x5a, 0x2a, 0xbf, 0xd5, 0x50, 0xcf, 0xa8, 0xa9, 0xf6, 0xd3, 0x33, 0x35, 0x00, 0x3d, + 0x07, 0xb7, 0x74, 0x2e, 0xf9, 0xbb, 0x9c, 0x5a, 0xa2, 0x44, 0xbb, 0x76, 0x55, 0xc9, 0x92, 0xf0, + 0x36, 0x03, 0x42, 0xa5, 0xdf, 0x93, 0x76, 0x85, 0xcc, 0x05, 0xa7, 0x46, 0xab, 0xbd, 0x19, 0x7a, + 0x27, 0xa2, 0x1d, 0xb0, 0x2e, 0xeb, 0x7a, 0x1b, 0xf2, 0x36, 0xea, 0x28, 0x93, 0xda, 0x17, 0x50, + 0x86, 0xfd, 0x54, 0x43, 0x45, 0x3a, 0xf2, 0x63, 0x15, 0x49, 0x1d, 0x4a, 0x91, 0xc1, 0x79, 0xfd, + 0x9b, 0xca, 0x6e, 0x52, 0x12, 0x3b, 0x98, 0x0d, 0xbe, 0xc4, 0x03, 0xdf, 0x87, 0xea, 0x46, 0xa3, + 0x22, 0xf8, 0x8f, 0x37, 0xdd, 0x09, 0x34, 0x9d, 0x5c, 0x91, 0xf7, 0x99, 0x30, 0x03, 0xd9, 0x45, + 0xbf, 0x8e, 0x6a, 0x75, 0x8f, 0xa2, 0x5a, 0xc7, 0xc9, 0xa8, 0x92, 0xef, 0x52, 0x06, 0xf6, 0xf4, + 0x0d, 0xdc, 0xc0, 0x6e, 0xdb, 0xf5, 0x6d, 0xe6, 0xc8, 0x8a, 0x6f, 0xc3, 0x96, 0xec, 0xa1, 0xa5, + 0x15, 0x72, 0x48, 0x96, 0x8c, 0x57, 0x4c, 0xbe, 0x6a, 0xd5, 0x2c, 0x81, 0x25, 0x6d, 0xa7, 0xaf, + 0xff, 0x40, 0xc3, 0x7d, 0x2f, 0x2c, 0x16, 0xf1, 0x5c, 0x26, 0x47, 0xed, 0xa6, 0xd8, 0xb4, 0x9b, + 0xf5, 0xf2, 0x8a, 0xc9, 0xef, 0xd5, 0xe5, 0x20, 0x2e, 0xf9, 0xf0, 0x80, 0x7c, 0x1a, 0xde, 0x98, + 0x96, 0xec, 0xea, 0x5d, 0xc6, 0xf0, 0x69, 0x77, 0xd2, 0xf0, 0x00, 0x3d, 0x4f, 0x66, 0xe4, 0xaf, + 0x9a, 0xfc, 0x52, 0xb0, 0xfc, 0xbb, 0xc9, 0xfa, 0x39, 0x72, 0x06, 0x60, 0xbe, 0xce, 0x38, 0x37, + 0x2b, 0x6c, 0xcd, 0xe4, 0xdc, 0xaa, 0x57, 0xd6, 0x7c, 0x89, 0x9e, 0x75, 0xef, 0x92, 0xb3, 0xbd, + 0x1e, 0x44, 0xc5, 0x4e, 0x90, 0x89, 0x07, 0x1d, 0x88, 0x78, 0x64, 0xe8, 0x10, 0xf4, 0x9b, 0x38, + 0xe1, 0xfd, 0x57, 0xfe, 0xef, 0x75, 0x59, 0xde, 0x3b, 0x66, 0x9d, 0x9b, 0x25, 0xe9, 0x5e, 0x83, + 0x95, 0x98, 0xd5, 0xe8, 0x6c, 0x16, 0x94, 0x0c, 0x6f, 0xf9, 0xc7, 0x4b, 0x68, 0xeb, 0xff, 0x1a, + 0x46, 0x14, 0xfb, 0x70, 0x77, 0xcc, 0x4b, 0xf0, 0x9d, 0x78, 0x47, 0xc8, 0xf2, 0x54, 0xbb, 0x95, + 0x9b, 0x00, 0xaa, 0x3c, 0x49, 0x19, 0x7e, 0x93, 0x2e, 0x90, 0x49, 0xf7, 0xe9, 0x7a, 0xb3, 0xb6, + 0xc9, 0x1c, 0xd7, 0xb2, 0xcb, 0x33, 0xed, 0x56, 0x2e, 0x0d, 0xf4, 0x37, 0x80, 0x6c, 0xa8, 0x1d, + 0xfa, 0x12, 0x99, 0x2d, 0xd9, 0x75, 0xe1, 0x98, 0x25, 0x51, 0x34, 0xdd, 0xa3, 0x0f, 0x58, 0x79, + 0x62, 0xf9, 0x58, 0xbb, 0x95, 0x9b, 0xf1, 0xc6, 0xbc, 0x53, 0x51, 0x37, 0x81, 0xbe, 0x42, 0x8e, + 0x95, 0x9a, 0xb5, 0x66, 0xd5, 0x14, 0xd6, 0x36, 0x2b, 0x56, 0x4c, 0x5e, 0x6c, 0x72, 0x56, 0xce, + 0x0c, 0x83, 0x88, 0xc7, 0xda, 0xad, 0xdc, 0x51, 0x7f, 0x78, 0xc5, 0xe4, 0x6f, 0x71, 0x56, 0x36, + 0xc2, 0x24, 0x7a, 0x82, 0x0c, 0x3f, 0x70, 0xec, 0x5a, 0x66, 0x04, 0xf8, 0xc6, 0xdb, 0xad, 0x1c, + 0xf4, 0x0d, 0xf8, 0x4b, 0xcf, 0x42, 0x8c, 0xba, 0x92, 0x47, 0xe1, 0x89, 0x74, 0xbb, 0x95, 0x1b, + 0xab, 0xa0, 0x3c, 0xaf, 0x21, 0xcd, 0x55, 0xb5, 0x2b, 0xbc, 0xb8, 0x59, 0xb5, 0xed, 0x5a, 0x66, + 0xcc, 0x37, 0x97, 0xa4, 0x2e, 0x4b, 0xa2, 0xe1, 0x37, 0xa9, 0xde, 0x79, 0x35, 0x3f, 0x0e, 0x4f, + 0x92, 0x76, 0x2b, 0x87, 0x14, 0xef, 0xdd, 0x3b, 0x3d, 0x4e, 0x86, 0x84, 0x9d, 0x99, 0x80, 0xf1, + 0xd1, 0x76, 0x2b, 0x37, 0x24, 0x6c, 0x63, 0x48, 0xd8, 0xd2, 0x6c, 0xc2, 0x77, 0x9b, 0xeb, 0x1e, + 0xe2, 0x9b, 0x4d, 0x19, 0x03, 0x27, 0x75, 0x13, 0xe8, 0x12, 0x39, 0xaa, 0xf2, 0xbb, 0x5b, 0x65, + 0x1a, 0x04, 0xcc, 0xb5, 0x5b, 0x39, 0x55, 0xf8, 0x3d, 0x39, 0x66, 0x84, 0x28, 0x74, 0x91, 0x0c, + 0x4b, 0x5d, 0x32, 0x93, 0x89, 0xde, 0xb4, 0xaf, 0xda, 0x15, 0x03, 0x9e, 0xd7, 0xdf, 0x4b, 0x91, + 0xd4, 0xaa, 0x5d, 0x91, 0x29, 0xc1, 0x73, 0xb8, 0x1b, 0x9d, 0x5e, 0x57, 0x26, 0x19, 0x61, 0x37, + 0xac, 0x12, 0xcf, 0x0c, 0x9d, 0x4a, 0x9d, 0x9f, 0x30, 0xb0, 0x27, 0x83, 0xb9, 0x6c, 0x0a, 0xd3, + 0x8d, 0x0f, 0x03, 0xda, 0xa1, 0x98, 0x93, 0x8e, 0x1f, 0xee, 0x1d, 0x73, 0x21, 0xe3, 0x8d, 0x1c, + 0xd6, 0x78, 0xa3, 0x30, 0x71, 0x52, 0xe3, 0x05, 0x17, 0xd6, 0x58, 0x8f, 0x85, 0x75, 0x81, 0xc8, + 0xb0, 0xc1, 0x89, 0xc6, 0x61, 0xa2, 0xc9, 0x76, 0x2b, 0x37, 0x5e, 0xb5, 0x2b, 0xee, 0x04, 0x9d, + 0x16, 0x3d, 0x43, 0xc6, 0x1c, 0x56, 0xb3, 0xb7, 0x59, 0x19, 0xa2, 0x66, 0xdc, 0x8d, 0x54, 0x24, + 0x19, 0x5e, 0x43, 0xbf, 0x86, 0x65, 0x66, 0x54, 0x0a, 0x88, 0xcf, 0x1c, 0xff, 0x1c, 0xc6, 0x92, + 0x31, 0x8a, 0xed, 0x4b, 0x4b, 0x19, 0xde, 0x5a, 0x4d, 0x45, 0xae, 0xd5, 0x27, 0x48, 0xaa, 0x62, + 0x72, 0x4c, 0x00, 0x63, 0xed, 0x56, 0x4e, 0x76, 0x0d, 0xf9, 0x47, 0x9a, 0xb1, 0x73, 0x8f, 0x88, + 0x0e, 0x07, 0x33, 0x56, 0x3a, 0xe7, 0x72, 0xaf, 0x25, 0xe7, 0x00, 0xfc, 0xa3, 0xfe, 0x1c, 0xb2, + 0xef, 0xda, 0x81, 0xe6, 0x64, 0x71, 0xd9, 0x68, 0x0a, 0x74, 0xdc, 0x44, 0xbb, 0x95, 0x73, 0x09, + 0x86, 0xfb, 0x23, 0x1f, 0x70, 0xeb, 0xc5, 0x71, 0xff, 0x01, 0x20, 0x60, 0xe9, 0x18, 0xbb, 0xae, + 0x23, 0x43, 0x8b, 0x1c, 0x68, 0x5d, 0xe6, 0xc8, 0xc8, 0xb6, 0x59, 0x6d, 0x32, 0x5c, 0xce, 0x30, + 0x37, 0x10, 0x0c, 0xf7, 0x47, 0xea, 0x26, 0x76, 0x1b, 0x2c, 0x33, 0xe9, 0xeb, 0x26, 0xfb, 0x06, + 0xfc, 0xa5, 0x05, 0x92, 0x36, 0x4b, 0x25, 0xe6, 0xdd, 0xa3, 0x4d, 0xc9, 0x15, 0xb8, 0x3c, 0xdd, + 0x6e, 0xe5, 0x88, 0x4b, 0x5e, 0xb5, 0x64, 0x25, 0xe4, 0xb7, 0x65, 0x72, 0xec, 0x14, 0x5b, 0xd3, + 0x7e, 0x72, 0xc4, 0xfd, 0xdd, 0xdf, 0xe8, 0x8f, 0x11, 0x6d, 0x3b, 0x33, 0x03, 0x0f, 0x8c, 0xb4, + 0x5b, 0x39, 0x6d, 0xdb, 0xd0, 0xb6, 0x25, 0xd1, 0xc9, 0xcc, 0xfa, 0x44, 0xc7, 0xd0, 0x1c, 0x49, + 0xe4, 0x99, 0xa3, 0x3e, 0x91, 0x1b, 0x1a, 0xd7, 0x6f, 0xe0, 0x61, 0x14, 0x43, 0x0f, 0xb6, 0xdf, + 0xe5, 0x5d, 0x8c, 0x0f, 0x8c, 0xd9, 0xe3, 0x64, 0x74, 0xcb, 0xaf, 0x4e, 0x86, 0x0d, 0xec, 0xe9, + 0x7f, 0x19, 0xc3, 0xa3, 0x68, 0x34, 0x33, 0x46, 0xae, 0x4e, 0x46, 0x31, 0x0a, 0x35, 0x3f, 0x1f, + 0xbb, 0x14, 0x03, 0x7f, 0x3b, 0x71, 0x31, 0x14, 0x19, 0x17, 0x05, 0x92, 0x6e, 0x98, 0x0e, 0xab, + 0x0b, 0x37, 0xf8, 0xdd, 0x00, 0x05, 0xdb, 0xb9, 0x64, 0x88, 0x7e, 0xa5, 0xed, 0xc7, 0xc9, 0x70, + 0x4c, 0x9c, 0x14, 0x48, 0x9a, 0x6f, 0x99, 0xcf, 0x16, 0x9b, 0xf5, 0x52, 0x95, 0x71, 0x0c, 0x5a, + 0x90, 0x28, 0xc9, 0x6f, 0x01, 0xd5, 0x50, 0xda, 0x5d, 0x5b, 0xd0, 0x68, 0x8f, 0x2d, 0x28, 0x18, + 0x6e, 0xbc, 0xe8, 0xd8, 0xb6, 0x17, 0xd4, 0xdd, 0xe1, 0xc6, 0x0d, 0xdb, 0x16, 0x46, 0x88, 0x22, + 0x27, 0x94, 0x7b, 0x15, 0x73, 0x79, 0xc7, 0xfd, 0x09, 0x81, 0x0a, 0x4c, 0x7e, 0x93, 0x5e, 0x27, + 0x53, 0x8e, 0x5b, 0x63, 0xe0, 0x64, 0xee, 0x12, 0x98, 0x6d, 0xb7, 0x72, 0x93, 0xde, 0x00, 0xf0, + 0x04, 0x7a, 0xd2, 0x4e, 0x35, 0xab, 0xce, 0x1c, 0x5c, 0x0a, 0x60, 0x27, 0x20, 0x18, 0xee, 0x0f, + 0xcd, 0x13, 0x52, 0xb6, 0x1e, 0x3c, 0xb0, 0x4a, 0xcd, 0xaa, 0xd8, 0xc5, 0xc8, 0x07, 0x33, 0xf9, + 0x54, 0x43, 0x69, 0xc3, 0x16, 0x60, 0x0b, 0xb3, 0x5a, 0x54, 0xb8, 0x26, 0x95, 0x2d, 0x40, 0x8e, + 0xdd, 0xf1, 0x59, 0xbb, 0x09, 0x52, 0x6b, 0xb6, 0x23, 0x1c, 0xb3, 0x08, 0x1b, 0xd2, 0x94, 0xaf, + 0x35, 0x50, 0xe1, 0x35, 0xbd, 0xdf, 0x94, 0x51, 0xc3, 0xad, 0x77, 0x19, 0x2e, 0x0f, 0x88, 0x1a, + 0xd9, 0x37, 0xe0, 0xaf, 0x97, 0x96, 0xaa, 0x50, 0x02, 0xcf, 0x04, 0xd2, 0x12, 0x94, 0xc1, 0x7e, + 0x41, 0x1c, 0x28, 0x44, 0x66, 0xf7, 0x29, 0x44, 0x2e, 0x91, 0x09, 0x61, 0xd5, 0x18, 0x17, 0x66, + 0xad, 0x81, 0x2b, 0x09, 0xd0, 0x75, 0x88, 0x86, 0xdf, 0xa4, 0xd7, 0xc8, 0xa4, 0xea, 0xd5, 0x0c, + 0x85, 0x25, 0x0f, 0x2e, 0x09, 0x78, 0x3b, 0xd0, 0x93, 0xab, 0x05, 0x83, 0xf2, 0x18, 0x3c, 0x0f, + 0xab, 0xc5, 0xa5, 0x18, 0xf8, 0x4b, 0x6f, 0x90, 0x59, 0x79, 0x32, 0x29, 0x3e, 0x60, 0xac, 0xd8, + 0x60, 0x8e, 0x2c, 0xcf, 0x32, 0x73, 0x80, 0xe6, 0x68, 0xbb, 0x95, 0x9b, 0x92, 0x63, 0x77, 0x19, + 0x5b, 0x63, 0xce, 0x8a, 0xc9, 0x8d, 0x60, 0x57, 0xaa, 0x5a, 0xb3, 0xdc, 0xcf, 0x3a, 0x32, 0x8f, + 0xf9, 0xaa, 0xd6, 0x2c, 0x78, 0x81, 0x6f, 0x78, 0x8d, 0x85, 0x6f, 0x5d, 0x20, 0x23, 0xb0, 0xb6, + 0xe9, 0x77, 0x35, 0x32, 0xea, 0x5e, 0xb0, 0xd3, 0xab, 0x3d, 0xaa, 0x91, 0xf0, 0x0d, 0x7f, 0x76, + 0xe1, 0x20, 0x2c, 0x6e, 0xc6, 0xd0, 0xcf, 0xbc, 0xf7, 0xc7, 0x7f, 0x7c, 0x67, 0x28, 0x47, 0x4f, + 0x16, 0x24, 0xc7, 0x15, 0xe5, 0x5b, 0x16, 0xf5, 0x7b, 0x0f, 0xfa, 0xb1, 0x46, 0x26, 0xd5, 0x3b, + 0x51, 0x7a, 0x23, 0xc9, 0x5c, 0xd1, 0x9f, 0x03, 0x64, 0x6f, 0xf6, 0xc5, 0x8b, 0x80, 0x5f, 0x04, + 0xc0, 0xcf, 0xd1, 0xeb, 0x31, 0x80, 0xd5, 0x5b, 0xda, 0xc2, 0x23, 0x7c, 0xfb, 0xb1, 0x57, 0x78, + 0x04, 0xc9, 0x68, 0x8f, 0x7e, 0xa8, 0x91, 0x19, 0x55, 0xee, 0x52, 0xb5, 0x9a, 0x4c, 0x97, 0xe8, + 0x8f, 0x02, 0x92, 0xe9, 0x12, 0x73, 0xd1, 0xaf, 0x5f, 0x02, 0x5d, 0xce, 0xd0, 0xd3, 0x09, 0x74, + 0xa1, 0x7f, 0xd3, 0xc8, 0xf1, 0x2e, 0xe4, 0xf8, 0x26, 0x92, 0x2e, 0xf5, 0x01, 0x22, 0xf8, 0x12, + 0x34, 0xbb, 0x7c, 0x18, 0x11, 0xa8, 0xce, 0x0d, 0x50, 0xe7, 0x1a, 0x5d, 0x48, 0xa0, 0x0e, 0xf2, + 0xa2, 0x87, 0xf6, 0xe8, 0x5f, 0x35, 0xf2, 0x98, 0x72, 0x93, 0xaa, 0x28, 0xf7, 0x72, 0x42, 0x64, + 0xb1, 0x97, 0xe7, 0xd9, 0xa5, 0x43, 0x48, 0x40, 0xd5, 0x6e, 0x81, 0x6a, 0x8b, 0xf4, 0x5a, 0x8c, + 0x6a, 0x56, 0x3d, 0x46, 0xb3, 0xa2, 0x55, 0xde, 0xa3, 0x3f, 0xd7, 0xc8, 0x74, 0x50, 0xb9, 0xc4, + 0x31, 0x17, 0x71, 0x8d, 0x9d, 0x38, 0xe6, 0xa2, 0xee, 0xb8, 0x7b, 0xc6, 0x9c, 0xa2, 0x09, 0xa7, + 0xbf, 0x47, 0xe0, 0xca, 0x85, 0xe3, 0xad, 0x84, 0x8b, 0x37, 0xf2, 0xda, 0x35, 0xfb, 0x62, 0x9f, + 0xdc, 0x08, 0xfe, 0x79, 0x00, 0xbf, 0x40, 0x9f, 0xd9, 0x07, 0xbc, 0xcf, 0x56, 0x78, 0xe4, 0xf5, + 0xf7, 0xe8, 0x9f, 0x34, 0x42, 0xc3, 0x17, 0xd1, 0x34, 0x11, 0x9e, 0xd8, 0xeb, 0xef, 0xec, 0x4b, + 0xfd, 0xb2, 0xa3, 0x3e, 0x4b, 0xa0, 0xcf, 0x4d, 0xfa, 0x42, 0xac, 0x3e, 0xdd, 0xdf, 0x05, 0xc2, + 0x6e, 0xad, 0x2a, 0xf6, 0x2b, 0x8d, 0x1c, 0x0d, 0xce, 0x20, 0xc3, 0xeb, 0xd6, 0x01, 0x42, 0xa4, + 0x4f, 0x2f, 0xc5, 0x5e, 0x78, 0xeb, 0x57, 0x40, 0xab, 0x73, 0xf4, 0x4c, 0x22, 0x2f, 0xd1, 0x0f, + 0x34, 0x32, 0x15, 0xb8, 0x38, 0xa6, 0xcf, 0x27, 0x8c, 0x92, 0xd0, 0x45, 0x75, 0xf6, 0x85, 0x3e, + 0x38, 0x11, 0x75, 0x1e, 0x50, 0x9f, 0xa7, 0x67, 0x63, 0x50, 0x57, 0x98, 0x28, 0x0a, 0xce, 0xbd, + 0x57, 0x3c, 0xf4, 0x7d, 0x0d, 0x6e, 0xa1, 0x93, 0x6d, 0xd4, 0x81, 0x6b, 0xed, 0x64, 0x1b, 0x75, + 0xf0, 0xce, 0x5b, 0xd7, 0x01, 0xde, 0x09, 0x9a, 0x8d, 0x81, 0x27, 0xa1, 0xfc, 0x44, 0xf3, 0x2f, + 0x74, 0xe9, 0x62, 0xc2, 0x49, 0xba, 0x6e, 0x9e, 0xb3, 0xcf, 0x1d, 0x98, 0x0f, 0x11, 0x16, 0x00, + 0xe1, 0x05, 0x7a, 0x2e, 0xce, 0x80, 0xc8, 0x20, 0xa3, 0xb7, 0xcc, 0x76, 0xf6, 0xe8, 0x8f, 0x34, + 0x92, 0xf6, 0xa4, 0xc8, 0xa0, 0x5d, 0x4c, 0x18, 0x76, 0x7d, 0x21, 0x8e, 0xb8, 0xff, 0xd6, 0xcf, + 0x01, 0xe2, 0xa7, 0x68, 0xae, 0x07, 0x62, 0xfa, 0x91, 0x46, 0x66, 0xbb, 0x5f, 0xe0, 0xd2, 0x44, + 0x69, 0x38, 0xe6, 0x6d, 0x72, 0xf6, 0x56, 0x7f, 0xcc, 0x09, 0x4d, 0x5d, 0xea, 0xc6, 0xfa, 0xb1, + 0x46, 0xd2, 0xca, 0x3b, 0x5a, 0x7a, 0x27, 0xc9, 0xf4, 0xbd, 0xde, 0x05, 0x67, 0x5f, 0x39, 0xa4, + 0x14, 0xd4, 0xe6, 0x22, 0x68, 0xf3, 0x34, 0xd5, 0xe3, 0x6a, 0x50, 0x05, 0xf8, 0x2f, 0xb4, 0xc0, + 0xf5, 0x37, 0x4d, 0xba, 0xe0, 0xc3, 0x17, 0xf6, 0xd9, 0x1b, 0xfd, 0xb0, 0x22, 0xe4, 0x05, 0x80, + 0x7c, 0x99, 0x5e, 0x8c, 0x73, 0x80, 0xcf, 0xd3, 0x09, 0xf7, 0x9f, 0x69, 0x64, 0x5a, 0x91, 0x25, + 0x23, 0xfe, 0x85, 0x84, 0x91, 0xdb, 0x2f, 0xfa, 0xe8, 0x4f, 0x08, 0x7a, 0x1a, 0x5c, 0x41, 0x4f, + 0x7f, 0xa9, 0x91, 0xd9, 0xc0, 0x4d, 0xb5, 0xc4, 0x9d, 0xb4, 0x02, 0x89, 0xfa, 0x12, 0x20, 0x7b, + 0xab, 0x3f, 0x66, 0xc4, 0x7e, 0x19, 0xb0, 0x9f, 0xa5, 0x4f, 0xc7, 0x05, 0x8b, 0xca, 0x45, 0xff, + 0xa0, 0x91, 0xb9, 0xa8, 0xcb, 0x7b, 0xfa, 0x3f, 0x89, 0xce, 0x4a, 0xf1, 0x5f, 0x0d, 0x64, 0x5f, + 0xee, 0x5f, 0x00, 0x6a, 0xf2, 0x1c, 0x68, 0x72, 0x95, 0x16, 0x92, 0x68, 0xa2, 0x96, 0x93, 0x9f, + 0x68, 0xa1, 0x3b, 0x6d, 0x9a, 0xb4, 0xb0, 0x8a, 0xbe, 0x91, 0x4f, 0x56, 0xc8, 0xc4, 0x7f, 0x4d, + 0xa0, 0x2f, 0x82, 0x2e, 0xcf, 0xd0, 0x7c, 0x8c, 0x2e, 0xd5, 0x20, 0x5f, 0x67, 0x4d, 0xfc, 0x46, + 0x23, 0xb4, 0x4b, 0xa6, 0x8c, 0xaf, 0xa4, 0x05, 0xc8, 0x61, 0xb4, 0x89, 0xff, 0x66, 0xa0, 0x67, + 0x29, 0xd0, 0xa5, 0x0d, 0xfd, 0xbe, 0x46, 0x86, 0xa1, 0x94, 0x49, 0xba, 0xb1, 0xab, 0xc5, 0xd6, + 0xb3, 0x07, 0xe2, 0x49, 0x58, 0xc5, 0x97, 0xb0, 0xfc, 0x05, 0x23, 0x7f, 0x20, 0x73, 0xa6, 0xff, + 0xad, 0x40, 0xf2, 0x9c, 0x19, 0xfa, 0xbe, 0xa0, 0x3f, 0xb0, 0xd7, 0x01, 0x6c, 0x81, 0x5e, 0xd9, + 0x17, 0x6c, 0xe8, 0xa8, 0xfe, 0x3d, 0x8d, 0x8c, 0x79, 0xf5, 0xec, 0x42, 0xd2, 0x6c, 0x77, 0x50, + 0xc3, 0x76, 0x7d, 0x2f, 0xa0, 0x9f, 0x06, 0xac, 0x27, 0xe9, 0x93, 0xfb, 0x60, 0x75, 0x33, 0xb9, + 0x8b, 0x0c, 0x57, 0x78, 0xf2, 0x4c, 0x1e, 0xba, 0xea, 0x4f, 0x9e, 0xc9, 0xc3, 0x77, 0xf4, 0xbd, + 0x33, 0xb9, 0xcf, 0x03, 0xa7, 0xd0, 0xe0, 0x9d, 0x78, 0x32, 0xd4, 0x91, 0xb7, 0xec, 0xc9, 0x50, + 0x47, 0x5f, 0xc1, 0xf7, 0x3c, 0x20, 0x54, 0x83, 0x28, 0x7f, 0xa8, 0x11, 0xe2, 0xff, 0xaf, 0x0c, + 0xbd, 0x9e, 0x64, 0xe6, 0xd0, 0x7f, 0xdd, 0x64, 0x17, 0x0f, 0xca, 0x86, 0x60, 0x2f, 0x00, 0xd8, + 0xd3, 0xf4, 0xa9, 0x18, 0xb0, 0xc2, 0x47, 0xf6, 0xa1, 0x46, 0x26, 0xd5, 0x7f, 0x31, 0xa2, 0x89, + 0x2a, 0xd3, 0x88, 0xff, 0x79, 0xca, 0x3e, 0x7f, 0x70, 0x46, 0x84, 0x7b, 0x0d, 0xe0, 0xe6, 0xe9, + 0xe5, 0x7d, 0x22, 0x62, 0x13, 0x99, 0x0a, 0x8f, 0xdc, 0x3b, 0xda, 0xbd, 0xe5, 0xd7, 0x3e, 0xf9, + 0x6c, 0x5e, 0xfb, 0xf4, 0xb3, 0x79, 0xed, 0xef, 0x9f, 0xcd, 0x6b, 0xef, 0x7f, 0x3e, 0x7f, 0xe4, + 0xd3, 0xcf, 0xe7, 0x8f, 0xfc, 0xf9, 0xf3, 0xf9, 0x23, 0xf7, 0xaf, 0x56, 0x2c, 0xb1, 0xd5, 0xdc, + 0xcc, 0x97, 0xec, 0x9a, 0x2a, 0xd1, 0x03, 0x55, 0xd8, 0x09, 0xd8, 0x62, 0xb7, 0xc1, 0xf8, 0xe6, + 0x28, 0x14, 0x6c, 0xcf, 0xfe, 0x3b, 0x00, 0x00, 0xff, 0xff, 0x62, 0xb0, 0x08, 0xf4, 0xa1, 0x37, + 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -3531,6 +3627,7 @@ type QueryClient interface { // Queries a list of lastMetaHeight items. LastZetaHeight(ctx context.Context, in *QueryLastZetaHeightRequest, opts ...grpc.CallOption) (*QueryLastZetaHeightResponse, error) TssHistory(ctx context.Context, in *QueryTssHistoryRequest, opts ...grpc.CallOption) (*QueryTssHistoryResponse, error) + CctxByStatus(ctx context.Context, in *QueryCctxByStatusRequest, opts ...grpc.CallOption) (*QueryCctxByStatusResponse, error) } type queryClient struct { @@ -3784,6 +3881,15 @@ func (c *queryClient) TssHistory(ctx context.Context, in *QueryTssHistoryRequest return out, nil } +func (c *queryClient) CctxByStatus(ctx context.Context, in *QueryCctxByStatusRequest, opts ...grpc.CallOption) (*QueryCctxByStatusResponse, error) { + out := new(QueryCctxByStatusResponse) + err := c.cc.Invoke(ctx, "/zetachain.zetacore.crosschain.Query/CctxByStatus", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // QueryServer is the server API for Query service. type QueryServer interface { // Parameters queries the parameters of the module. @@ -3832,6 +3938,7 @@ type QueryServer interface { // Queries a list of lastMetaHeight items. LastZetaHeight(context.Context, *QueryLastZetaHeightRequest) (*QueryLastZetaHeightResponse, error) TssHistory(context.Context, *QueryTssHistoryRequest) (*QueryTssHistoryResponse, error) + CctxByStatus(context.Context, *QueryCctxByStatusRequest) (*QueryCctxByStatusResponse, error) } // UnimplementedQueryServer can be embedded to have forward compatible implementations. @@ -3919,6 +4026,9 @@ func (*UnimplementedQueryServer) LastZetaHeight(ctx context.Context, req *QueryL func (*UnimplementedQueryServer) TssHistory(ctx context.Context, req *QueryTssHistoryRequest) (*QueryTssHistoryResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method TssHistory not implemented") } +func (*UnimplementedQueryServer) CctxByStatus(ctx context.Context, req *QueryCctxByStatusRequest) (*QueryCctxByStatusResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CctxByStatus not implemented") +} func RegisterQueryServer(s grpc1.Server, srv QueryServer) { s.RegisterService(&_Query_serviceDesc, srv) @@ -4410,6 +4520,24 @@ func _Query_TssHistory_Handler(srv interface{}, ctx context.Context, dec func(in return interceptor(ctx, in, info, handler) } +func _Query_CctxByStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryCctxByStatusRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).CctxByStatus(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/zetachain.zetacore.crosschain.Query/CctxByStatus", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).CctxByStatus(ctx, req.(*QueryCctxByStatusRequest)) + } + return interceptor(ctx, in, info, handler) +} + var _Query_serviceDesc = grpc.ServiceDesc{ ServiceName: "zetachain.zetacore.crosschain.Query", HandlerType: (*QueryServer)(nil), @@ -4522,11 +4650,80 @@ var _Query_serviceDesc = grpc.ServiceDesc{ MethodName: "TssHistory", Handler: _Query_TssHistory_Handler, }, + { + MethodName: "CctxByStatus", + Handler: _Query_CctxByStatus_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "crosschain/query.proto", } +func (m *QueryCctxByStatusRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryCctxByStatusRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryCctxByStatusRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Status != 0 { + i = encodeVarintQuery(dAtA, i, uint64(m.Status)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *QueryCctxByStatusResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryCctxByStatusResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryCctxByStatusResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.CrossChainTx) > 0 { + for iNdEx := len(m.CrossChainTx) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.CrossChainTx[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + func (m *QueryTssHistoryRequest) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -7022,6 +7219,33 @@ func encodeVarintQuery(dAtA []byte, offset int, v uint64) int { dAtA[offset] = uint8(v) return base } +func (m *QueryCctxByStatusRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Status != 0 { + n += 1 + sovQuery(uint64(m.Status)) + } + return n +} + +func (m *QueryCctxByStatusResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.CrossChainTx) > 0 { + for _, e := range m.CrossChainTx { + l = e.Size() + n += 1 + l + sovQuery(uint64(l)) + } + } + return n +} + func (m *QueryTssHistoryRequest) Size() (n int) { if m == nil { return 0 @@ -8084,6 +8308,159 @@ func sovQuery(x uint64) (n int) { func sozQuery(x uint64) (n int) { return sovQuery(uint64((x << 1) ^ uint64((int64(x) >> 63)))) } +func (m *QueryCctxByStatusRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryCctxByStatusRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryCctxByStatusRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + m.Status = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Status |= CctxStatus(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryCctxByStatusResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryCctxByStatusResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryCctxByStatusResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CrossChainTx", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CrossChainTx = append(m.CrossChainTx, CrossChainTx{}) + if err := m.CrossChainTx[len(m.CrossChainTx)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *QueryTssHistoryRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 diff --git a/x/crosschain/types/query.pb.gw.go b/x/crosschain/types/query.pb.gw.go index ee6cee4368..b4a9373a3a 100644 --- a/x/crosschain/types/query.pb.gw.go +++ b/x/crosschain/types/query.pb.gw.go @@ -1157,6 +1157,66 @@ func local_request_Query_TssHistory_0(ctx context.Context, marshaler runtime.Mar } +func request_Query_CctxByStatus_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryCctxByStatusRequest + var metadata runtime.ServerMetadata + + var ( + val string + e int32 + ok bool + err error + _ = err + ) + + val, ok = pathParams["status"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "status") + } + + e, err = runtime.Enum(val, CctxStatus_value) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "status", err) + } + + protoReq.Status = CctxStatus(e) + + msg, err := client.CctxByStatus(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Query_CctxByStatus_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryCctxByStatusRequest + var metadata runtime.ServerMetadata + + var ( + val string + e int32 + ok bool + err error + _ = err + ) + + val, ok = pathParams["status"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "status") + } + + e, err = runtime.Enum(val, CctxStatus_value) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "status", err) + } + + protoReq.Status = CctxStatus(e) + + msg, err := server.CctxByStatus(ctx, &protoReq) + return msg, metadata, err + +} + // RegisterQueryHandlerServer registers the http handlers for service Query to "mux". // UnaryRPC :call QueryServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. @@ -1784,6 +1844,29 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv }) + mux.Handle("GET", pattern_Query_CctxByStatus_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Query_CctxByStatus_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 { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_CctxByStatus_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + return nil } @@ -2365,6 +2448,26 @@ func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie }) + mux.Handle("GET", pattern_Query_CctxByStatus_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) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Query_CctxByStatus_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_CctxByStatus_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + return nil } @@ -2422,6 +2525,8 @@ var ( pattern_Query_LastZetaHeight_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"zeta-chain", "crosschain", "lastZetaHeight"}, "", runtime.AssumeColonVerbOpt(false))) pattern_Query_TssHistory_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"zeta-chain", "crosschain", "tssHistory"}, "", runtime.AssumeColonVerbOpt(false))) + + pattern_Query_CctxByStatus_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"zeta-chain", "crosschain", "cctxbyStatus", "status"}, "", runtime.AssumeColonVerbOpt(false))) ) var ( @@ -2478,4 +2583,6 @@ var ( forward_Query_LastZetaHeight_0 = runtime.ForwardResponseMessage forward_Query_TssHistory_0 = runtime.ForwardResponseMessage + + forward_Query_CctxByStatus_0 = runtime.ForwardResponseMessage ) diff --git a/x/emissions/abci.go b/x/emissions/abci.go index 8e0fed774b..50f2f3daae 100644 --- a/x/emissions/abci.go +++ b/x/emissions/abci.go @@ -11,6 +11,7 @@ import ( ) func BeginBlocker(ctx sdk.Context, keeper keeper.Keeper) { + reservesFactor, bondFactor, durationFactor := keeper.GetBlockRewardComponents(ctx) blockRewards := reservesFactor.Mul(bondFactor).Mul(durationFactor) if blockRewards.IsZero() { diff --git a/zetaclient/evm_client.go b/zetaclient/evm_client.go index 6ed9476192..20f513ff0d 100644 --- a/zetaclient/evm_client.go +++ b/zetaclient/evm_client.go @@ -13,6 +13,9 @@ import ( "time" "github.com/ethereum/go-ethereum" + "github.com/zeta-chain/protocol-contracts/pkg/contracts/evm/zeta.non-eth.sol" + zetaconnectoreth "github.com/zeta-chain/protocol-contracts/pkg/contracts/evm/zetaconnector.eth.sol" + "github.com/ethereum/go-ethereum/accounts/abi/bind" ethcommon "github.com/ethereum/go-ethereum/common" ethtypes "github.com/ethereum/go-ethereum/core/types" @@ -232,14 +235,33 @@ func (ob *EVMChainClient) GetConnectorContract() (*zetaconnector.ZetaConnectorNo return FetchConnectorContract(addr, ob.evmClient) } -func FetchConnectorContract(addr ethcommon.Address, client EVMRPCClient) (*zetaconnector.ZetaConnectorNonEth, error) { - return zetaconnector.NewZetaConnectorNonEth(addr, client) +func (ob *EVMChainClient) GetConnectorContractEth() (*zetaconnectoreth.ZetaConnectorEth, error) { + addr := ethcommon.HexToAddress(ob.GetCoreParams().ConnectorContractAddress) + return FetchConnectorContractEth(addr, ob.evmClient) } + +func (ob *EVMChainClient) GetZetaTokenNonEthContract() (*zeta.ZetaNonEth, error) { + addr := ethcommon.HexToAddress(ob.GetCoreParams().ZetaTokenContractAddress) + return FetchZetaZetaNonEthTokenContract(addr, ob.evmClient) +} + func (ob *EVMChainClient) GetERC20CustodyContract() (*erc20custody.ERC20Custody, error) { addr := ethcommon.HexToAddress(ob.GetCoreParams().Erc20CustodyContractAddress) return FetchERC20CustodyContract(addr, ob.evmClient) } +func FetchConnectorContract(addr ethcommon.Address, client EVMRPCClient) (*zetaconnector.ZetaConnectorNonEth, error) { + return zetaconnector.NewZetaConnectorNonEth(addr, client) +} + +func FetchConnectorContractEth(addr ethcommon.Address, client EVMRPCClient) (*zetaconnectoreth.ZetaConnectorEth, error) { + return zetaconnectoreth.NewZetaConnectorEth(addr, client) +} + +func FetchZetaZetaNonEthTokenContract(addr ethcommon.Address, client EVMRPCClient) (*zeta.ZetaNonEth, error) { + return zeta.NewZetaNonEth(addr, client) +} + func FetchERC20CustodyContract(addr ethcommon.Address, client EVMRPCClient) (*erc20custody.ERC20Custody, error) { return erc20custody.NewERC20Custody(addr, client) } @@ -981,12 +1003,13 @@ func (ob *EVMChainClient) WatchGasPrice() { ob.logger.WatchGasPrice.Error().Err(err).Msgf("PostGasPrice error at zeta block : %d ", height) } } + ticker := NewDynamicTicker(fmt.Sprintf("EVM_WatchGasPrice_%d", ob.chain.ChainId), ob.GetCoreParams().GasPriceTicker) defer ticker.Stop() for { select { case <-ticker.C(): - err := ob.PostGasPrice() + err = ob.PostGasPrice() if err != nil { height, err := ob.zetaClient.GetBlockHeight() if err != nil { diff --git a/zetaclient/query.go b/zetaclient/query.go index 3e8a13af9f..76d4573572 100644 --- a/zetaclient/query.go +++ b/zetaclient/query.go @@ -6,10 +6,16 @@ import ( "sort" "time" + sdkmath "cosmossdk.io/math" "github.com/cosmos/cosmos-sdk/client/grpc/tmservice" + genutiltypes "github.com/cosmos/cosmos-sdk/x/genutil/types" + "github.com/cosmos/cosmos-sdk/types/query" + banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" tmtypes "github.com/tendermint/tendermint/proto/tendermint/types" + tmhttp "github.com/tendermint/tendermint/rpc/client/http" + "github.com/zeta-chain/zetacore/cmd/zetacored/config" "github.com/zeta-chain/zetacore/common" "github.com/zeta-chain/zetacore/x/crosschain/types" observertypes "github.com/zeta-chain/zetacore/x/observer/types" @@ -130,6 +136,42 @@ func (b *ZetaCoreBridge) GetAllPendingCctx(chainID int64) ([]*types.CrossChainTx return resp.CrossChainTx, nil } +func (b *ZetaCoreBridge) GetCctxByStatus(status types.CctxStatus) ([]types.CrossChainTx, error) { + client := types.NewQueryClient(b.grpcConn) + resp, err := client.CctxByStatus(context.Background(), &types.QueryCctxByStatusRequest{Status: status}) + if err != nil { + return nil, err + } + return resp.CrossChainTx, nil +} + +func (b *ZetaCoreBridge) GetGenesisSupply() (sdkmath.Int, error) { + tmURL := fmt.Sprintf("http://%s", b.cfg.ChainRPC) + s, err := tmhttp.New(tmURL, "/websocket") + if err != nil { + return sdkmath.ZeroInt(), err + } + res, err := s.Genesis(context.Background()) + if err != nil { + return sdkmath.ZeroInt(), err + } + appState, err := genutiltypes.GenesisStateFromGenDoc(*res.Genesis) + if err != nil { + return sdkmath.ZeroInt(), err + } + bankstate := banktypes.GetGenesisStateFromAppState(b.encodingCfg.Codec, appState) + return bankstate.Supply.AmountOf(config.BaseDenom), nil +} + +func (b *ZetaCoreBridge) GetZetaTokenSupplyOnNode() (sdkmath.Int, error) { + client := banktypes.NewQueryClient(b.grpcConn) + resp, err := client.SupplyOf(context.Background(), &banktypes.QuerySupplyOfRequest{Denom: config.BaseDenom}) + if err != nil { + return sdkmath.ZeroInt(), err + } + return resp.GetAmount().Amount, nil +} + func (b *ZetaCoreBridge) GetLastBlockHeight() ([]*types.LastBlockHeight, error) { client := types.NewQueryClient(b.grpcConn) resp, err := client.LastBlockHeightAll(context.Background(), &types.QueryAllLastBlockHeightRequest{}) diff --git a/zetaclient/zeta_supply_checker.go b/zetaclient/zeta_supply_checker.go new file mode 100644 index 0000000000..13d40d3959 --- /dev/null +++ b/zetaclient/zeta_supply_checker.go @@ -0,0 +1,236 @@ +package zetaclient + +import ( + "fmt" + + "github.com/pkg/errors" + + sdkmath "cosmossdk.io/math" + ethcommon "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/ethclient" + "github.com/rs/zerolog" + "github.com/zeta-chain/zetacore/common" + "github.com/zeta-chain/zetacore/x/crosschain/types" + "github.com/zeta-chain/zetacore/zetaclient/config" +) + +type ZetaSupplyChecker struct { + cfg *config.Config + evmClient map[int64]*ethclient.Client + zetaClient *ZetaCoreBridge + ticker *DynamicTicker + stop chan struct{} + logger zerolog.Logger + externalEvmChain []common.Chain + ethereumChain common.Chain + genesisSupply sdkmath.Int +} + +func NewZetaSupplyChecker(cfg *config.Config, zetaClient *ZetaCoreBridge, logger zerolog.Logger) (ZetaSupplyChecker, error) { + zetaSupplyChecker := ZetaSupplyChecker{ + stop: make(chan struct{}), + ticker: NewDynamicTicker(fmt.Sprintf("ZETASupplyTicker"), 15), + evmClient: make(map[int64]*ethclient.Client), + logger: logger.With(). + Str("module", "ZetaSupplyChecker"). + Logger(), + cfg: cfg, + zetaClient: zetaClient, + } + for _, evmConfig := range cfg.GetAllEVMConfigs() { + if evmConfig.Chain.IsZetaChain() { + continue + } + client, err := ethclient.Dial(evmConfig.Endpoint) + if err != nil { + return zetaSupplyChecker, err + } + zetaSupplyChecker.evmClient[evmConfig.Chain.ChainId] = client + } + + for chainID := range zetaSupplyChecker.evmClient { + chain := common.GetChainFromChainID(chainID) + if chain.IsExternalChain() && common.IsEVMChain(chain.ChainId) && !common.IsEthereumChain(chain.ChainId) { + zetaSupplyChecker.externalEvmChain = append(zetaSupplyChecker.externalEvmChain, *chain) + } + if common.IsEthereumChain(chain.ChainId) { + zetaSupplyChecker.ethereumChain = *chain + } + } + balances, err := zetaSupplyChecker.zetaClient.GetGenesisSupply() + if err != nil { + return zetaSupplyChecker, err + } + tokensMintedAtBeginBlock, ok := sdkmath.NewIntFromString("200000000000000000") + if !ok { + return zetaSupplyChecker, fmt.Errorf("error parsing tokens minted at begin block") + } + zetaSupplyChecker.genesisSupply = balances.Add(tokensMintedAtBeginBlock) + + logger.Info().Msgf("zeta supply checker initialized , external chains : %v ,ethereum chain :%v", zetaSupplyChecker.externalEvmChain, zetaSupplyChecker.ethereumChain) + + return zetaSupplyChecker, nil +} +func (zs *ZetaSupplyChecker) Start() { + defer zs.ticker.Stop() + for { + select { + case <-zs.ticker.C(): + err := zs.CheckZetaTokenSupply() + if err != nil { + zs.logger.Error().Err(err).Msgf("ZetaSupplyChecker error") + } + case <-zs.stop: + return + } + } +} + +func (zs *ZetaSupplyChecker) Stop() { + zs.logger.Info().Msgf("ZetaSupplyChecker is stopping") + close(zs.stop) +} + +func (zs *ZetaSupplyChecker) CheckZetaTokenSupply() error { + + externalChainTotalSupply := sdkmath.ZeroInt() + for _, chain := range zs.externalEvmChain { + externalEvmChainConfig, ok := zs.cfg.GetEVMConfig(chain.ChainId) + if !ok { + return fmt.Errorf("externalEvmChainConfig not found for chain id %d", chain.ChainId) + } + zetaTokenAddressString := externalEvmChainConfig.ZetaTokenContractAddress + zetaTokenAddress := ethcommon.HexToAddress(zetaTokenAddressString) + zetatokenNonEth, err := FetchZetaZetaNonEthTokenContract(zetaTokenAddress, zs.evmClient[chain.ChainId]) + if err != nil { + return err + } + totalSupply, err := zetatokenNonEth.TotalSupply(nil) + if err != nil { + return err + } + totalSupplyInt, ok := sdkmath.NewIntFromString(totalSupply.String()) + if !ok { + zs.logger.Error().Msgf("error parsing total supply for chain %d", chain.ChainId) + continue + } + externalChainTotalSupply = externalChainTotalSupply.Add(totalSupplyInt) + } + + ethConfig, ok := zs.cfg.GetEVMConfig(zs.ethereumChain.ChainId) + if !ok { + return fmt.Errorf("eth config not found for chain id %d", zs.ethereumChain.ChainId) + } + ethConnectorAddressString := ethConfig.ConnectorContractAddress + ethConnectorAddress := ethcommon.HexToAddress(ethConnectorAddressString) + ethConnectorContract, err := FetchConnectorContractEth(ethConnectorAddress, zs.evmClient[zs.ethereumChain.ChainId]) + if err != nil { + return err + } + + ethLockedAmount, err := ethConnectorContract.GetLockedAmount(nil) + if err != nil { + return err + } + ethLockedAmountInt, ok := sdkmath.NewIntFromString(ethLockedAmount.String()) + if !ok { + return fmt.Errorf("error parsing eth locked amount") + } + + zetaInTransit := zs.GetAmountOfZetaInTransit() + zetaTokenSupplyOnNode, err := zs.zetaClient.GetZetaTokenSupplyOnNode() + if err != nil { + return err + } + abortedAmount, err := zs.AbortedTxAmount() + if err != nil { + return err + } + ValidateZetaSupply(zs.logger, abortedAmount, zetaInTransit, zs.genesisSupply, externalChainTotalSupply, zetaTokenSupplyOnNode, ethLockedAmountInt) + return nil +} + +func ValidateZetaSupply(logger zerolog.Logger, abortedTxAmounts, zetaInTransit, genesisAmounts, externalChainTotalSupply, zetaTokenSupplyOnNode, ethLockedAmount sdkmath.Int) bool { + lhs := ethLockedAmount.Sub(abortedTxAmounts) + rhs := zetaTokenSupplyOnNode.Add(zetaInTransit).Add(externalChainTotalSupply).Sub(genesisAmounts) + + copyZetaTokenSupplyOnNode := zetaTokenSupplyOnNode + copyGenesisAmounts := genesisAmounts + nodeAmounts := copyZetaTokenSupplyOnNode.Sub(copyGenesisAmounts) + logger.Info().Msgf("--------------------------------------------------------------------------------") + logger.Info().Msgf("aborted tx amounts : %s", abortedTxAmounts.String()) + logger.Info().Msgf("zeta in transit : %s", zetaInTransit.String()) + logger.Info().Msgf("external chain total supply : %s", externalChainTotalSupply.String()) + logger.Info().Msgf("effective zeta supply on node : %s", nodeAmounts.String()) + logger.Info().Msgf("zeta token supply on node : %s", zetaTokenSupplyOnNode.String()) + logger.Info().Msgf("genesis amounts : %s", genesisAmounts.String()) + logger.Info().Msgf("eth locked amount : %s", ethLockedAmount.String()) + if !lhs.Equal(rhs) { + logger.Error().Msgf("zeta supply mismatch, lhs : %s , rhs : %s", lhs.String(), rhs.String()) + return false + } + logger.Info().Msgf("zeta supply check passed, lhs : %s , rhs : %s", lhs.String(), rhs.String()) + logger.Info().Msgf("--------------------------------------------------------------------------------") + return true +} + +func (zs *ZetaSupplyChecker) AbortedTxAmount() (sdkmath.Int, error) { + cctxList, err := zs.zetaClient.GetCctxByStatus(types.CctxStatus_Aborted) + if err != nil { + return sdkmath.ZeroInt(), err + } + amount := sdkmath.ZeroUint() + for _, cctx := range cctxList { + amount = amount.Add(cctx.GetCurrentOutTxParam().Amount) + } + amountInt, ok := sdkmath.NewIntFromString(amount.String()) + if !ok { + return sdkmath.ZeroInt(), errors.New("error parsing amount") + } + return amountInt, nil +} + +func (zs *ZetaSupplyChecker) GetAmountOfZetaInTransit() sdkmath.Int { + chainsToCheck := make([]common.Chain, len(zs.externalEvmChain)+1) + chainsToCheck = append(append(chainsToCheck, zs.externalEvmChain...), zs.ethereumChain) + cctxs := zs.GetPendingCCTXInTransit(chainsToCheck) + amount := sdkmath.ZeroUint() + for _, cctx := range cctxs { + amount = amount.Add(cctx.GetCurrentOutTxParam().Amount) + } + amountInt, ok := sdkmath.NewIntFromString(amount.String()) + if !ok { + panic("error parsing amount") + } + return amountInt +} +func (zs *ZetaSupplyChecker) GetPendingCCTXInTransit(receivingChains []common.Chain) []*types.CrossChainTx { + cctxInTransit := make([]*types.CrossChainTx, 0) + for _, chain := range receivingChains { + cctx, err := zs.zetaClient.GetAllPendingCctx(chain.ChainId) + if err != nil { + continue + } + nonceToCctxMap := make(map[uint64]*types.CrossChainTx) + for _, c := range cctx { + if c.GetInboundTxParams().CoinType == common.CoinType_Zeta { + nonceToCctxMap[c.GetCurrentOutTxParam().OutboundTxTssNonce] = c + } + } + + trackers, err := zs.zetaClient.GetAllOutTxTrackerByChain(chain, Ascending) + if err != nil { + continue + } + for _, tracker := range trackers { + zs.logger.Info().Msgf("tracker exists for nonce: %d , removing from supply checks", tracker.Nonce) + delete(nonceToCctxMap, tracker.Nonce) + } + for _, c := range nonceToCctxMap { + if c != nil { + cctxInTransit = append(cctxInTransit, c) + } + } + } + return cctxInTransit +} diff --git a/zetaclient/zeta_supply_checker_test.go b/zetaclient/zeta_supply_checker_test.go new file mode 100644 index 0000000000..020477ccd4 --- /dev/null +++ b/zetaclient/zeta_supply_checker_test.go @@ -0,0 +1,53 @@ +package zetaclient_test + +import ( + "os" + "testing" + + sdkmath "cosmossdk.io/math" + "github.com/rs/zerolog" + "github.com/stretchr/testify/assert" + "github.com/zeta-chain/zetacore/zetaclient" +) + +func MustNewIntFromString(val string) sdkmath.Int { + v, ok := sdkmath.NewIntFromString(val) + if !ok { + panic("invalid int") + } + return v +} +func TestZetaSupplyChecker_ValidateZetaSupply(t *testing.T) { + tt := []struct { + name string + abortedTxAmount sdkmath.Int + zetaInTransit sdkmath.Int + genesisAmounts sdkmath.Int + externalChainTotalSupply sdkmath.Int + zetaTokenSupplyOnNode sdkmath.Int + ethLockedAmount sdkmath.Int + validate assert.BoolAssertionFunc + }{ + { + name: "1 zeta cctx in progress", + abortedTxAmount: MustNewIntFromString("0"), + zetaInTransit: MustNewIntFromString("1000000000000000000"), + externalChainTotalSupply: MustNewIntFromString("9000000000000000000"), + genesisAmounts: MustNewIntFromString("1000000000000000000"), + zetaTokenSupplyOnNode: MustNewIntFromString("1000000000000000000"), + ethLockedAmount: MustNewIntFromString("10000000000000000000"), + validate: func(t assert.TestingT, b bool, i ...interface{}) bool { + return assert.True(t, b, i...) + }, + }, + // Todo add more scenarios + //https://github.com/zeta-chain/node/issues/1375 + } + + for _, tc := range tt { + t.Run(tc.name, func(t *testing.T) { + logger := zerolog.New(os.Stdout).With().Timestamp().Logger() + tc.validate(t, zetaclient.ValidateZetaSupply(logger, tc.abortedTxAmount, tc.zetaInTransit, tc.genesisAmounts, tc.externalChainTotalSupply, tc.zetaTokenSupplyOnNode, tc.ethLockedAmount)) + }) + } +}