From 2e2b201977911ad0e4b4498ddadeb3af10a11015 Mon Sep 17 00:00:00 2001 From: Pedro Gomes Date: Tue, 22 Aug 2023 10:47:31 +0100 Subject: [PATCH] Add Verified Data pages + obscuro Info endpoint (#1476) * Add Verified Data pages + obscuro Info endpoint * making sure the host only calls the config once * Changing data struct names --- go/common/enclave.go | 8 + go/common/host/host.go | 3 + go/common/query_types.go | 7 + go/common/rpc/generated/enclave.pb.go | 2200 +++++++++-------- go/common/rpc/generated/enclave.proto | 9 + go/common/rpc/generated/enclave_grpc.pb.go | 36 + go/enclave/enclave.go | 7 + go/enclave/rpc_server.go | 12 + go/host/host.go | 20 + go/host/rpc/clientapi/client_api_obscuro.go | 6 + go/host/rpc/enclaverpc/enclave_client.go | 21 + go/obsclient/obsclient.go | 10 + go/rpc/client.go | 25 +- integration/obscuroscan/obscuroscan_test.go | 13 + .../backend/obscuroscan_backend.go | 4 + .../backend/webserver/webserver.go | 166 +- .../webserver/webserver_routes_counts.go | 33 + .../webserver/webserver_routes_items.go | 161 ++ .../components/VerifiedContractsDataGrid.vue | 54 + .../frontend/src/router/index.js | 4 +- .../src/stores/verifiedContractStore.js | 46 + .../frontend/src/views/NavbarView.vue | 1 + ...VerifiedContracts.vue => VerifiedData.vue} | 8 +- 23 files changed, 1642 insertions(+), 1212 deletions(-) create mode 100644 tools/obscuroscan_v2/backend/webserver/webserver_routes_counts.go create mode 100644 tools/obscuroscan_v2/backend/webserver/webserver_routes_items.go create mode 100644 tools/obscuroscan_v2/frontend/src/components/VerifiedContractsDataGrid.vue create mode 100644 tools/obscuroscan_v2/frontend/src/stores/verifiedContractStore.js rename tools/obscuroscan_v2/frontend/src/views/{VerifiedContracts.vue => VerifiedData.vue} (51%) diff --git a/go/common/enclave.go b/go/common/enclave.go index ca78f79de0..49fa6eb309 100644 --- a/go/common/enclave.go +++ b/go/common/enclave.go @@ -125,6 +125,8 @@ type Enclave interface { StreamL2Updates() (chan StreamL2UpdatesResponse, func()) // DebugEventLogRelevancy returns the logs of a transaction DebugEventLogRelevancy(hash gethcommon.Hash) (json.RawMessage, SystemError) + + Config() (*ObscuroEnclaveInfo, SystemError) } // EnclaveScan represents the methods that are used for data scanning in the enclave @@ -151,3 +153,9 @@ type ProducedSecretResponse struct { RequesterID gethcommon.Address HostAddress string } + +// ObscuroEnclaveInfo contains the data to return on Config requests +type ObscuroEnclaveInfo struct { + SequencerID gethcommon.Address + MessageBusAddress gethcommon.Address +} diff --git a/go/common/host/host.go b/go/common/host/host.go index 16a1e8ab1c..ba93c3a856 100644 --- a/go/common/host/host.go +++ b/go/common/host/host.go @@ -28,6 +28,9 @@ type Host interface { // HealthCheck returns the health status of the host + enclave + db HealthCheck() (*HealthCheck, error) + + // ObscuroConfig returns the info of the Obscuro network + ObscuroConfig() (*common.ObscuroNetworkInfo, error) } type BlockStream struct { diff --git a/go/common/query_types.go b/go/common/query_types.go index 40ade4e4f9..229346d6db 100644 --- a/go/common/query_types.go +++ b/go/common/query_types.go @@ -82,3 +82,10 @@ type PrivateCustomQueryListTransactions struct { Address common.Address `json:"address"` Pagination QueryPagination `json:"pagination"` } + +type ObscuroNetworkInfo struct { + ManagementContractAddress common.Address + L1StartHash common.Hash + SequencerID common.Address + MessageBusAddress common.Address +} diff --git a/go/common/rpc/generated/enclave.pb.go b/go/common/rpc/generated/enclave.pb.go index ab6d4fb251..eeff532388 100644 --- a/go/common/rpc/generated/enclave.pb.go +++ b/go/common/rpc/generated/enclave.pb.go @@ -20,6 +20,99 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) +type ConfigRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *ConfigRequest) Reset() { + *x = ConfigRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_enclave_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ConfigRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ConfigRequest) ProtoMessage() {} + +func (x *ConfigRequest) ProtoReflect() protoreflect.Message { + mi := &file_enclave_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ConfigRequest.ProtoReflect.Descriptor instead. +func (*ConfigRequest) Descriptor() ([]byte, []int) { + return file_enclave_proto_rawDescGZIP(), []int{0} +} + +type ConfigResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Config []byte `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"` + SystemError *SystemError `protobuf:"bytes,2,opt,name=systemError,proto3" json:"systemError,omitempty"` +} + +func (x *ConfigResponse) Reset() { + *x = ConfigResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_enclave_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ConfigResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ConfigResponse) ProtoMessage() {} + +func (x *ConfigResponse) ProtoReflect() protoreflect.Message { + mi := &file_enclave_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ConfigResponse.ProtoReflect.Descriptor instead. +func (*ConfigResponse) Descriptor() ([]byte, []int) { + return file_enclave_proto_rawDescGZIP(), []int{1} +} + +func (x *ConfigResponse) GetConfig() []byte { + if x != nil { + return x.Config + } + return nil +} + +func (x *ConfigResponse) GetSystemError() *SystemError { + if x != nil { + return x.SystemError + } + return nil +} + type GetPublicTransactionDataRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -31,7 +124,7 @@ type GetPublicTransactionDataRequest struct { func (x *GetPublicTransactionDataRequest) Reset() { *x = GetPublicTransactionDataRequest{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[0] + mi := &file_enclave_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -44,7 +137,7 @@ func (x *GetPublicTransactionDataRequest) String() string { func (*GetPublicTransactionDataRequest) ProtoMessage() {} func (x *GetPublicTransactionDataRequest) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[0] + mi := &file_enclave_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -57,7 +150,7 @@ func (x *GetPublicTransactionDataRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetPublicTransactionDataRequest.ProtoReflect.Descriptor instead. func (*GetPublicTransactionDataRequest) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{0} + return file_enclave_proto_rawDescGZIP(), []int{2} } func (x *GetPublicTransactionDataRequest) GetPagination() *Pagination { @@ -79,7 +172,7 @@ type GetPublicTransactionDataResponse struct { func (x *GetPublicTransactionDataResponse) Reset() { *x = GetPublicTransactionDataResponse{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[1] + mi := &file_enclave_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -92,7 +185,7 @@ func (x *GetPublicTransactionDataResponse) String() string { func (*GetPublicTransactionDataResponse) ProtoMessage() {} func (x *GetPublicTransactionDataResponse) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[1] + mi := &file_enclave_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -105,7 +198,7 @@ func (x *GetPublicTransactionDataResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetPublicTransactionDataResponse.ProtoReflect.Descriptor instead. func (*GetPublicTransactionDataResponse) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{1} + return file_enclave_proto_rawDescGZIP(), []int{3} } func (x *GetPublicTransactionDataResponse) GetPublicTransactionData() []byte { @@ -133,7 +226,7 @@ type GetReceiptsByAddressRequest struct { func (x *GetReceiptsByAddressRequest) Reset() { *x = GetReceiptsByAddressRequest{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[2] + mi := &file_enclave_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -146,7 +239,7 @@ func (x *GetReceiptsByAddressRequest) String() string { func (*GetReceiptsByAddressRequest) ProtoMessage() {} func (x *GetReceiptsByAddressRequest) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[2] + mi := &file_enclave_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -159,7 +252,7 @@ func (x *GetReceiptsByAddressRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetReceiptsByAddressRequest.ProtoReflect.Descriptor instead. func (*GetReceiptsByAddressRequest) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{2} + return file_enclave_proto_rawDescGZIP(), []int{4} } func (x *GetReceiptsByAddressRequest) GetEncryptedParams() []byte { @@ -181,7 +274,7 @@ type GetReceiptsByAddressResponse struct { func (x *GetReceiptsByAddressResponse) Reset() { *x = GetReceiptsByAddressResponse{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[3] + mi := &file_enclave_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -194,7 +287,7 @@ func (x *GetReceiptsByAddressResponse) String() string { func (*GetReceiptsByAddressResponse) ProtoMessage() {} func (x *GetReceiptsByAddressResponse) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[3] + mi := &file_enclave_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -207,7 +300,7 @@ func (x *GetReceiptsByAddressResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetReceiptsByAddressResponse.ProtoReflect.Descriptor instead. func (*GetReceiptsByAddressResponse) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{3} + return file_enclave_proto_rawDescGZIP(), []int{5} } func (x *GetReceiptsByAddressResponse) GetEncodedEnclaveResponse() []byte { @@ -235,7 +328,7 @@ type GetBatchRequest struct { func (x *GetBatchRequest) Reset() { *x = GetBatchRequest{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[4] + mi := &file_enclave_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -248,7 +341,7 @@ func (x *GetBatchRequest) String() string { func (*GetBatchRequest) ProtoMessage() {} func (x *GetBatchRequest) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[4] + mi := &file_enclave_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -261,7 +354,7 @@ func (x *GetBatchRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetBatchRequest.ProtoReflect.Descriptor instead. func (*GetBatchRequest) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{4} + return file_enclave_proto_rawDescGZIP(), []int{6} } func (x *GetBatchRequest) GetKnownHead() []byte { @@ -282,7 +375,7 @@ type GetBatchBySeqNoRequest struct { func (x *GetBatchBySeqNoRequest) Reset() { *x = GetBatchBySeqNoRequest{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[5] + mi := &file_enclave_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -295,7 +388,7 @@ func (x *GetBatchBySeqNoRequest) String() string { func (*GetBatchBySeqNoRequest) ProtoMessage() {} func (x *GetBatchBySeqNoRequest) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[5] + mi := &file_enclave_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -308,7 +401,7 @@ func (x *GetBatchBySeqNoRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetBatchBySeqNoRequest.ProtoReflect.Descriptor instead. func (*GetBatchBySeqNoRequest) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{5} + return file_enclave_proto_rawDescGZIP(), []int{7} } func (x *GetBatchBySeqNoRequest) GetSeqNo() uint64 { @@ -330,7 +423,7 @@ type GetBatchResponse struct { func (x *GetBatchResponse) Reset() { *x = GetBatchResponse{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[6] + mi := &file_enclave_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -343,7 +436,7 @@ func (x *GetBatchResponse) String() string { func (*GetBatchResponse) ProtoMessage() {} func (x *GetBatchResponse) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[6] + mi := &file_enclave_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -356,7 +449,7 @@ func (x *GetBatchResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetBatchResponse.ProtoReflect.Descriptor instead. func (*GetBatchResponse) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{6} + return file_enclave_proto_rawDescGZIP(), []int{8} } func (x *GetBatchResponse) GetBatch() []byte { @@ -382,7 +475,7 @@ type StreamL2UpdatesRequest struct { func (x *StreamL2UpdatesRequest) Reset() { *x = StreamL2UpdatesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[7] + mi := &file_enclave_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -395,7 +488,7 @@ func (x *StreamL2UpdatesRequest) String() string { func (*StreamL2UpdatesRequest) ProtoMessage() {} func (x *StreamL2UpdatesRequest) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[7] + mi := &file_enclave_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -408,7 +501,7 @@ func (x *StreamL2UpdatesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use StreamL2UpdatesRequest.ProtoReflect.Descriptor instead. func (*StreamL2UpdatesRequest) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{7} + return file_enclave_proto_rawDescGZIP(), []int{9} } type EncodedUpdateResponse struct { @@ -422,7 +515,7 @@ type EncodedUpdateResponse struct { func (x *EncodedUpdateResponse) Reset() { *x = EncodedUpdateResponse{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[8] + mi := &file_enclave_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -435,7 +528,7 @@ func (x *EncodedUpdateResponse) String() string { func (*EncodedUpdateResponse) ProtoMessage() {} func (x *EncodedUpdateResponse) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[8] + mi := &file_enclave_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -448,7 +541,7 @@ func (x *EncodedUpdateResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use EncodedUpdateResponse.ProtoReflect.Descriptor instead. func (*EncodedUpdateResponse) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{8} + return file_enclave_proto_rawDescGZIP(), []int{10} } func (x *EncodedUpdateResponse) GetBatch() []byte { @@ -470,7 +563,7 @@ type Pagination struct { func (x *Pagination) Reset() { *x = Pagination{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[9] + mi := &file_enclave_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -483,7 +576,7 @@ func (x *Pagination) String() string { func (*Pagination) ProtoMessage() {} func (x *Pagination) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[9] + mi := &file_enclave_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -496,7 +589,7 @@ func (x *Pagination) ProtoReflect() protoreflect.Message { // Deprecated: Use Pagination.ProtoReflect.Descriptor instead. func (*Pagination) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{9} + return file_enclave_proto_rawDescGZIP(), []int{11} } func (x *Pagination) GetOffset() int32 { @@ -525,7 +618,7 @@ type SystemError struct { func (x *SystemError) Reset() { *x = SystemError{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[10] + mi := &file_enclave_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -538,7 +631,7 @@ func (x *SystemError) String() string { func (*SystemError) ProtoMessage() {} func (x *SystemError) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[10] + mi := &file_enclave_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -551,7 +644,7 @@ func (x *SystemError) ProtoReflect() protoreflect.Message { // Deprecated: Use SystemError.ProtoReflect.Descriptor instead. func (*SystemError) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{10} + return file_enclave_proto_rawDescGZIP(), []int{12} } func (x *SystemError) GetErrorCode() int32 { @@ -577,7 +670,7 @@ type GetTotalContractCountRequest struct { func (x *GetTotalContractCountRequest) Reset() { *x = GetTotalContractCountRequest{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[11] + mi := &file_enclave_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -590,7 +683,7 @@ func (x *GetTotalContractCountRequest) String() string { func (*GetTotalContractCountRequest) ProtoMessage() {} func (x *GetTotalContractCountRequest) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[11] + mi := &file_enclave_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -603,7 +696,7 @@ func (x *GetTotalContractCountRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTotalContractCountRequest.ProtoReflect.Descriptor instead. func (*GetTotalContractCountRequest) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{11} + return file_enclave_proto_rawDescGZIP(), []int{13} } type GetTotalContractCountResponse struct { @@ -618,7 +711,7 @@ type GetTotalContractCountResponse struct { func (x *GetTotalContractCountResponse) Reset() { *x = GetTotalContractCountResponse{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[12] + mi := &file_enclave_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -631,7 +724,7 @@ func (x *GetTotalContractCountResponse) String() string { func (*GetTotalContractCountResponse) ProtoMessage() {} func (x *GetTotalContractCountResponse) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[12] + mi := &file_enclave_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -644,7 +737,7 @@ func (x *GetTotalContractCountResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTotalContractCountResponse.ProtoReflect.Descriptor instead. func (*GetTotalContractCountResponse) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{12} + return file_enclave_proto_rawDescGZIP(), []int{14} } func (x *GetTotalContractCountResponse) GetCount() int64 { @@ -672,7 +765,7 @@ type DebugEventLogRelevancyRequest struct { func (x *DebugEventLogRelevancyRequest) Reset() { *x = DebugEventLogRelevancyRequest{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[13] + mi := &file_enclave_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -685,7 +778,7 @@ func (x *DebugEventLogRelevancyRequest) String() string { func (*DebugEventLogRelevancyRequest) ProtoMessage() {} func (x *DebugEventLogRelevancyRequest) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[13] + mi := &file_enclave_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -698,7 +791,7 @@ func (x *DebugEventLogRelevancyRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DebugEventLogRelevancyRequest.ProtoReflect.Descriptor instead. func (*DebugEventLogRelevancyRequest) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{13} + return file_enclave_proto_rawDescGZIP(), []int{15} } func (x *DebugEventLogRelevancyRequest) GetTxHash() []byte { @@ -720,7 +813,7 @@ type DebugEventLogRelevancyResponse struct { func (x *DebugEventLogRelevancyResponse) Reset() { *x = DebugEventLogRelevancyResponse{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[14] + mi := &file_enclave_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -733,7 +826,7 @@ func (x *DebugEventLogRelevancyResponse) String() string { func (*DebugEventLogRelevancyResponse) ProtoMessage() {} func (x *DebugEventLogRelevancyResponse) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[14] + mi := &file_enclave_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -746,7 +839,7 @@ func (x *DebugEventLogRelevancyResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DebugEventLogRelevancyResponse.ProtoReflect.Descriptor instead. func (*DebugEventLogRelevancyResponse) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{14} + return file_enclave_proto_rawDescGZIP(), []int{16} } func (x *DebugEventLogRelevancyResponse) GetMsg() string { @@ -775,7 +868,7 @@ type DebugTraceTransactionRequest struct { func (x *DebugTraceTransactionRequest) Reset() { *x = DebugTraceTransactionRequest{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[15] + mi := &file_enclave_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -788,7 +881,7 @@ func (x *DebugTraceTransactionRequest) String() string { func (*DebugTraceTransactionRequest) ProtoMessage() {} func (x *DebugTraceTransactionRequest) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[15] + mi := &file_enclave_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -801,7 +894,7 @@ func (x *DebugTraceTransactionRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DebugTraceTransactionRequest.ProtoReflect.Descriptor instead. func (*DebugTraceTransactionRequest) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{15} + return file_enclave_proto_rawDescGZIP(), []int{17} } func (x *DebugTraceTransactionRequest) GetTxHash() []byte { @@ -830,7 +923,7 @@ type DebugTraceTransactionResponse struct { func (x *DebugTraceTransactionResponse) Reset() { *x = DebugTraceTransactionResponse{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[16] + mi := &file_enclave_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -843,7 +936,7 @@ func (x *DebugTraceTransactionResponse) String() string { func (*DebugTraceTransactionResponse) ProtoMessage() {} func (x *DebugTraceTransactionResponse) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[16] + mi := &file_enclave_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -856,7 +949,7 @@ func (x *DebugTraceTransactionResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DebugTraceTransactionResponse.ProtoReflect.Descriptor instead. func (*DebugTraceTransactionResponse) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{16} + return file_enclave_proto_rawDescGZIP(), []int{18} } func (x *DebugTraceTransactionResponse) GetMsg() string { @@ -882,7 +975,7 @@ type CreateBatchRequest struct { func (x *CreateBatchRequest) Reset() { *x = CreateBatchRequest{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[17] + mi := &file_enclave_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -895,7 +988,7 @@ func (x *CreateBatchRequest) String() string { func (*CreateBatchRequest) ProtoMessage() {} func (x *CreateBatchRequest) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[17] + mi := &file_enclave_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -908,7 +1001,7 @@ func (x *CreateBatchRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateBatchRequest.ProtoReflect.Descriptor instead. func (*CreateBatchRequest) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{17} + return file_enclave_proto_rawDescGZIP(), []int{19} } type CreateBatchResponse struct { @@ -922,7 +1015,7 @@ type CreateBatchResponse struct { func (x *CreateBatchResponse) Reset() { *x = CreateBatchResponse{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[18] + mi := &file_enclave_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -935,7 +1028,7 @@ func (x *CreateBatchResponse) String() string { func (*CreateBatchResponse) ProtoMessage() {} func (x *CreateBatchResponse) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[18] + mi := &file_enclave_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -948,7 +1041,7 @@ func (x *CreateBatchResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateBatchResponse.ProtoReflect.Descriptor instead. func (*CreateBatchResponse) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{18} + return file_enclave_proto_rawDescGZIP(), []int{20} } func (x *CreateBatchResponse) GetError() string { @@ -969,7 +1062,7 @@ type CreateRollupRequest struct { func (x *CreateRollupRequest) Reset() { *x = CreateRollupRequest{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[19] + mi := &file_enclave_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -982,7 +1075,7 @@ func (x *CreateRollupRequest) String() string { func (*CreateRollupRequest) ProtoMessage() {} func (x *CreateRollupRequest) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[19] + mi := &file_enclave_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -995,7 +1088,7 @@ func (x *CreateRollupRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateRollupRequest.ProtoReflect.Descriptor instead. func (*CreateRollupRequest) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{19} + return file_enclave_proto_rawDescGZIP(), []int{21} } func (x *CreateRollupRequest) GetFromSequenceNumber() uint64 { @@ -1017,7 +1110,7 @@ type CreateRollupResponse struct { func (x *CreateRollupResponse) Reset() { *x = CreateRollupResponse{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[20] + mi := &file_enclave_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1030,7 +1123,7 @@ func (x *CreateRollupResponse) String() string { func (*CreateRollupResponse) ProtoMessage() {} func (x *CreateRollupResponse) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[20] + mi := &file_enclave_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1043,7 +1136,7 @@ func (x *CreateRollupResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateRollupResponse.ProtoReflect.Descriptor instead. func (*CreateRollupResponse) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{20} + return file_enclave_proto_rawDescGZIP(), []int{22} } func (x *CreateRollupResponse) GetMsg() *ExtRollupMsg { @@ -1069,7 +1162,7 @@ type StatusRequest struct { func (x *StatusRequest) Reset() { *x = StatusRequest{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[21] + mi := &file_enclave_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1082,7 +1175,7 @@ func (x *StatusRequest) String() string { func (*StatusRequest) ProtoMessage() {} func (x *StatusRequest) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[21] + mi := &file_enclave_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1095,7 +1188,7 @@ func (x *StatusRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use StatusRequest.ProtoReflect.Descriptor instead. func (*StatusRequest) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{21} + return file_enclave_proto_rawDescGZIP(), []int{23} } type StatusResponse struct { @@ -1112,7 +1205,7 @@ type StatusResponse struct { func (x *StatusResponse) Reset() { *x = StatusResponse{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[22] + mi := &file_enclave_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1125,7 +1218,7 @@ func (x *StatusResponse) String() string { func (*StatusResponse) ProtoMessage() {} func (x *StatusResponse) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[22] + mi := &file_enclave_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1138,7 +1231,7 @@ func (x *StatusResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use StatusResponse.ProtoReflect.Descriptor instead. func (*StatusResponse) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{22} + return file_enclave_proto_rawDescGZIP(), []int{24} } func (x *StatusResponse) GetStatusCode() int32 { @@ -1178,7 +1271,7 @@ type AttestationRequest struct { func (x *AttestationRequest) Reset() { *x = AttestationRequest{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[23] + mi := &file_enclave_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1191,7 +1284,7 @@ func (x *AttestationRequest) String() string { func (*AttestationRequest) ProtoMessage() {} func (x *AttestationRequest) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[23] + mi := &file_enclave_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1204,7 +1297,7 @@ func (x *AttestationRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use AttestationRequest.ProtoReflect.Descriptor instead. func (*AttestationRequest) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{23} + return file_enclave_proto_rawDescGZIP(), []int{25} } type AttestationResponse struct { @@ -1219,7 +1312,7 @@ type AttestationResponse struct { func (x *AttestationResponse) Reset() { *x = AttestationResponse{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[24] + mi := &file_enclave_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1232,7 +1325,7 @@ func (x *AttestationResponse) String() string { func (*AttestationResponse) ProtoMessage() {} func (x *AttestationResponse) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[24] + mi := &file_enclave_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1245,7 +1338,7 @@ func (x *AttestationResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use AttestationResponse.ProtoReflect.Descriptor instead. func (*AttestationResponse) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{24} + return file_enclave_proto_rawDescGZIP(), []int{26} } func (x *AttestationResponse) GetAttestationReportMsg() *AttestationReportMsg { @@ -1271,7 +1364,7 @@ type GenerateSecretRequest struct { func (x *GenerateSecretRequest) Reset() { *x = GenerateSecretRequest{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[25] + mi := &file_enclave_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1284,7 +1377,7 @@ func (x *GenerateSecretRequest) String() string { func (*GenerateSecretRequest) ProtoMessage() {} func (x *GenerateSecretRequest) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[25] + mi := &file_enclave_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1297,7 +1390,7 @@ func (x *GenerateSecretRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GenerateSecretRequest.ProtoReflect.Descriptor instead. func (*GenerateSecretRequest) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{25} + return file_enclave_proto_rawDescGZIP(), []int{27} } type GenerateSecretResponse struct { @@ -1312,7 +1405,7 @@ type GenerateSecretResponse struct { func (x *GenerateSecretResponse) Reset() { *x = GenerateSecretResponse{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[26] + mi := &file_enclave_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1325,7 +1418,7 @@ func (x *GenerateSecretResponse) String() string { func (*GenerateSecretResponse) ProtoMessage() {} func (x *GenerateSecretResponse) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[26] + mi := &file_enclave_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1338,7 +1431,7 @@ func (x *GenerateSecretResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GenerateSecretResponse.ProtoReflect.Descriptor instead. func (*GenerateSecretResponse) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{26} + return file_enclave_proto_rawDescGZIP(), []int{28} } func (x *GenerateSecretResponse) GetEncryptedSharedEnclaveSecret() []byte { @@ -1366,7 +1459,7 @@ type InitEnclaveRequest struct { func (x *InitEnclaveRequest) Reset() { *x = InitEnclaveRequest{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[27] + mi := &file_enclave_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1379,7 +1472,7 @@ func (x *InitEnclaveRequest) String() string { func (*InitEnclaveRequest) ProtoMessage() {} func (x *InitEnclaveRequest) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[27] + mi := &file_enclave_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1392,7 +1485,7 @@ func (x *InitEnclaveRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use InitEnclaveRequest.ProtoReflect.Descriptor instead. func (*InitEnclaveRequest) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{27} + return file_enclave_proto_rawDescGZIP(), []int{29} } func (x *InitEnclaveRequest) GetEncryptedSharedEnclaveSecret() []byte { @@ -1413,7 +1506,7 @@ type InitEnclaveResponse struct { func (x *InitEnclaveResponse) Reset() { *x = InitEnclaveResponse{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[28] + mi := &file_enclave_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1426,7 +1519,7 @@ func (x *InitEnclaveResponse) String() string { func (*InitEnclaveResponse) ProtoMessage() {} func (x *InitEnclaveResponse) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[28] + mi := &file_enclave_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1439,7 +1532,7 @@ func (x *InitEnclaveResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use InitEnclaveResponse.ProtoReflect.Descriptor instead. func (*InitEnclaveResponse) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{28} + return file_enclave_proto_rawDescGZIP(), []int{30} } func (x *InitEnclaveResponse) GetSystemError() *SystemError { @@ -1460,7 +1553,7 @@ type StartRequest struct { func (x *StartRequest) Reset() { *x = StartRequest{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[29] + mi := &file_enclave_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1473,7 +1566,7 @@ func (x *StartRequest) String() string { func (*StartRequest) ProtoMessage() {} func (x *StartRequest) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[29] + mi := &file_enclave_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1486,7 +1579,7 @@ func (x *StartRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use StartRequest.ProtoReflect.Descriptor instead. func (*StartRequest) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{29} + return file_enclave_proto_rawDescGZIP(), []int{31} } func (x *StartRequest) GetEncodedBlock() []byte { @@ -1507,7 +1600,7 @@ type StartResponse struct { func (x *StartResponse) Reset() { *x = StartResponse{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[30] + mi := &file_enclave_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1520,7 +1613,7 @@ func (x *StartResponse) String() string { func (*StartResponse) ProtoMessage() {} func (x *StartResponse) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[30] + mi := &file_enclave_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1533,7 +1626,7 @@ func (x *StartResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use StartResponse.ProtoReflect.Descriptor instead. func (*StartResponse) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{30} + return file_enclave_proto_rawDescGZIP(), []int{32} } func (x *StartResponse) GetSystemError() *SystemError { @@ -1556,7 +1649,7 @@ type SubmitBlockRequest struct { func (x *SubmitBlockRequest) Reset() { *x = SubmitBlockRequest{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[31] + mi := &file_enclave_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1569,7 +1662,7 @@ func (x *SubmitBlockRequest) String() string { func (*SubmitBlockRequest) ProtoMessage() {} func (x *SubmitBlockRequest) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[31] + mi := &file_enclave_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1582,7 +1675,7 @@ func (x *SubmitBlockRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SubmitBlockRequest.ProtoReflect.Descriptor instead. func (*SubmitBlockRequest) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{31} + return file_enclave_proto_rawDescGZIP(), []int{33} } func (x *SubmitBlockRequest) GetEncodedBlock() []byte { @@ -1618,7 +1711,7 @@ type SubmitBlockResponse struct { func (x *SubmitBlockResponse) Reset() { *x = SubmitBlockResponse{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[32] + mi := &file_enclave_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1631,7 +1724,7 @@ func (x *SubmitBlockResponse) String() string { func (*SubmitBlockResponse) ProtoMessage() {} func (x *SubmitBlockResponse) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[32] + mi := &file_enclave_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1644,7 +1737,7 @@ func (x *SubmitBlockResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use SubmitBlockResponse.ProtoReflect.Descriptor instead. func (*SubmitBlockResponse) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{32} + return file_enclave_proto_rawDescGZIP(), []int{34} } func (x *SubmitBlockResponse) GetBlockSubmissionResponse() *BlockSubmissionResponseMsg { @@ -1672,7 +1765,7 @@ type SubmitTxRequest struct { func (x *SubmitTxRequest) Reset() { *x = SubmitTxRequest{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[33] + mi := &file_enclave_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1685,7 +1778,7 @@ func (x *SubmitTxRequest) String() string { func (*SubmitTxRequest) ProtoMessage() {} func (x *SubmitTxRequest) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[33] + mi := &file_enclave_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1698,7 +1791,7 @@ func (x *SubmitTxRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SubmitTxRequest.ProtoReflect.Descriptor instead. func (*SubmitTxRequest) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{33} + return file_enclave_proto_rawDescGZIP(), []int{35} } func (x *SubmitTxRequest) GetEncryptedTx() []byte { @@ -1720,7 +1813,7 @@ type SubmitTxResponse struct { func (x *SubmitTxResponse) Reset() { *x = SubmitTxResponse{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[34] + mi := &file_enclave_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1733,7 +1826,7 @@ func (x *SubmitTxResponse) String() string { func (*SubmitTxResponse) ProtoMessage() {} func (x *SubmitTxResponse) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[34] + mi := &file_enclave_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1746,7 +1839,7 @@ func (x *SubmitTxResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use SubmitTxResponse.ProtoReflect.Descriptor instead. func (*SubmitTxResponse) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{34} + return file_enclave_proto_rawDescGZIP(), []int{36} } func (x *SubmitTxResponse) GetEncodedEnclaveResponse() []byte { @@ -1774,7 +1867,7 @@ type SubmitBatchRequest struct { func (x *SubmitBatchRequest) Reset() { *x = SubmitBatchRequest{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[35] + mi := &file_enclave_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1787,7 +1880,7 @@ func (x *SubmitBatchRequest) String() string { func (*SubmitBatchRequest) ProtoMessage() {} func (x *SubmitBatchRequest) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[35] + mi := &file_enclave_proto_msgTypes[37] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1800,7 +1893,7 @@ func (x *SubmitBatchRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SubmitBatchRequest.ProtoReflect.Descriptor instead. func (*SubmitBatchRequest) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{35} + return file_enclave_proto_rawDescGZIP(), []int{37} } func (x *SubmitBatchRequest) GetBatch() *ExtBatchMsg { @@ -1821,7 +1914,7 @@ type SubmitBatchResponse struct { func (x *SubmitBatchResponse) Reset() { *x = SubmitBatchResponse{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[36] + mi := &file_enclave_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1834,7 +1927,7 @@ func (x *SubmitBatchResponse) String() string { func (*SubmitBatchResponse) ProtoMessage() {} func (x *SubmitBatchResponse) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[36] + mi := &file_enclave_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1847,7 +1940,7 @@ func (x *SubmitBatchResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use SubmitBatchResponse.ProtoReflect.Descriptor instead. func (*SubmitBatchResponse) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{36} + return file_enclave_proto_rawDescGZIP(), []int{38} } func (x *SubmitBatchResponse) GetSystemError() *SystemError { @@ -1868,7 +1961,7 @@ type ObsCallRequest struct { func (x *ObsCallRequest) Reset() { *x = ObsCallRequest{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[37] + mi := &file_enclave_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1881,7 +1974,7 @@ func (x *ObsCallRequest) String() string { func (*ObsCallRequest) ProtoMessage() {} func (x *ObsCallRequest) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[37] + mi := &file_enclave_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1894,7 +1987,7 @@ func (x *ObsCallRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ObsCallRequest.ProtoReflect.Descriptor instead. func (*ObsCallRequest) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{37} + return file_enclave_proto_rawDescGZIP(), []int{39} } func (x *ObsCallRequest) GetEncryptedParams() []byte { @@ -1916,7 +2009,7 @@ type ObsCallResponse struct { func (x *ObsCallResponse) Reset() { *x = ObsCallResponse{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[38] + mi := &file_enclave_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1929,7 +2022,7 @@ func (x *ObsCallResponse) String() string { func (*ObsCallResponse) ProtoMessage() {} func (x *ObsCallResponse) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[38] + mi := &file_enclave_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1942,7 +2035,7 @@ func (x *ObsCallResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ObsCallResponse.ProtoReflect.Descriptor instead. func (*ObsCallResponse) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{38} + return file_enclave_proto_rawDescGZIP(), []int{40} } func (x *ObsCallResponse) GetEncodedEnclaveResponse() []byte { @@ -1970,7 +2063,7 @@ type GetTransactionCountRequest struct { func (x *GetTransactionCountRequest) Reset() { *x = GetTransactionCountRequest{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[39] + mi := &file_enclave_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1983,7 +2076,7 @@ func (x *GetTransactionCountRequest) String() string { func (*GetTransactionCountRequest) ProtoMessage() {} func (x *GetTransactionCountRequest) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[39] + mi := &file_enclave_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1996,7 +2089,7 @@ func (x *GetTransactionCountRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTransactionCountRequest.ProtoReflect.Descriptor instead. func (*GetTransactionCountRequest) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{39} + return file_enclave_proto_rawDescGZIP(), []int{41} } func (x *GetTransactionCountRequest) GetEncryptedParams() []byte { @@ -2018,7 +2111,7 @@ type GetTransactionCountResponse struct { func (x *GetTransactionCountResponse) Reset() { *x = GetTransactionCountResponse{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[40] + mi := &file_enclave_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2031,7 +2124,7 @@ func (x *GetTransactionCountResponse) String() string { func (*GetTransactionCountResponse) ProtoMessage() {} func (x *GetTransactionCountResponse) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[40] + mi := &file_enclave_proto_msgTypes[42] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2044,7 +2137,7 @@ func (x *GetTransactionCountResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTransactionCountResponse.ProtoReflect.Descriptor instead. func (*GetTransactionCountResponse) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{40} + return file_enclave_proto_rawDescGZIP(), []int{42} } func (x *GetTransactionCountResponse) GetEncodedEnclaveResponse() []byte { @@ -2070,7 +2163,7 @@ type StopRequest struct { func (x *StopRequest) Reset() { *x = StopRequest{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[41] + mi := &file_enclave_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2083,7 +2176,7 @@ func (x *StopRequest) String() string { func (*StopRequest) ProtoMessage() {} func (x *StopRequest) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[41] + mi := &file_enclave_proto_msgTypes[43] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2096,7 +2189,7 @@ func (x *StopRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use StopRequest.ProtoReflect.Descriptor instead. func (*StopRequest) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{41} + return file_enclave_proto_rawDescGZIP(), []int{43} } type StopResponse struct { @@ -2110,7 +2203,7 @@ type StopResponse struct { func (x *StopResponse) Reset() { *x = StopResponse{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[42] + mi := &file_enclave_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2123,7 +2216,7 @@ func (x *StopResponse) String() string { func (*StopResponse) ProtoMessage() {} func (x *StopResponse) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[42] + mi := &file_enclave_proto_msgTypes[44] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2136,7 +2229,7 @@ func (x *StopResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use StopResponse.ProtoReflect.Descriptor instead. func (*StopResponse) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{42} + return file_enclave_proto_rawDescGZIP(), []int{44} } func (x *StopResponse) GetSystemError() *SystemError { @@ -2157,7 +2250,7 @@ type GetTransactionRequest struct { func (x *GetTransactionRequest) Reset() { *x = GetTransactionRequest{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[43] + mi := &file_enclave_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2170,7 +2263,7 @@ func (x *GetTransactionRequest) String() string { func (*GetTransactionRequest) ProtoMessage() {} func (x *GetTransactionRequest) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[43] + mi := &file_enclave_proto_msgTypes[45] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2183,7 +2276,7 @@ func (x *GetTransactionRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTransactionRequest.ProtoReflect.Descriptor instead. func (*GetTransactionRequest) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{43} + return file_enclave_proto_rawDescGZIP(), []int{45} } func (x *GetTransactionRequest) GetEncryptedParams() []byte { @@ -2205,7 +2298,7 @@ type GetTransactionResponse struct { func (x *GetTransactionResponse) Reset() { *x = GetTransactionResponse{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[44] + mi := &file_enclave_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2218,7 +2311,7 @@ func (x *GetTransactionResponse) String() string { func (*GetTransactionResponse) ProtoMessage() {} func (x *GetTransactionResponse) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[44] + mi := &file_enclave_proto_msgTypes[46] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2231,7 +2324,7 @@ func (x *GetTransactionResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTransactionResponse.ProtoReflect.Descriptor instead. func (*GetTransactionResponse) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{44} + return file_enclave_proto_rawDescGZIP(), []int{46} } func (x *GetTransactionResponse) GetEncodedEnclaveResponse() []byte { @@ -2259,7 +2352,7 @@ type GetTransactionReceiptRequest struct { func (x *GetTransactionReceiptRequest) Reset() { *x = GetTransactionReceiptRequest{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[45] + mi := &file_enclave_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2272,7 +2365,7 @@ func (x *GetTransactionReceiptRequest) String() string { func (*GetTransactionReceiptRequest) ProtoMessage() {} func (x *GetTransactionReceiptRequest) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[45] + mi := &file_enclave_proto_msgTypes[47] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2285,7 +2378,7 @@ func (x *GetTransactionReceiptRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTransactionReceiptRequest.ProtoReflect.Descriptor instead. func (*GetTransactionReceiptRequest) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{45} + return file_enclave_proto_rawDescGZIP(), []int{47} } func (x *GetTransactionReceiptRequest) GetEncryptedParams() []byte { @@ -2307,7 +2400,7 @@ type GetTransactionReceiptResponse struct { func (x *GetTransactionReceiptResponse) Reset() { *x = GetTransactionReceiptResponse{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[46] + mi := &file_enclave_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2320,7 +2413,7 @@ func (x *GetTransactionReceiptResponse) String() string { func (*GetTransactionReceiptResponse) ProtoMessage() {} func (x *GetTransactionReceiptResponse) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[46] + mi := &file_enclave_proto_msgTypes[48] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2333,7 +2426,7 @@ func (x *GetTransactionReceiptResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTransactionReceiptResponse.ProtoReflect.Descriptor instead. func (*GetTransactionReceiptResponse) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{46} + return file_enclave_proto_rawDescGZIP(), []int{48} } func (x *GetTransactionReceiptResponse) GetEncodedEnclaveResponse() []byte { @@ -2361,7 +2454,7 @@ type GetBalanceRequest struct { func (x *GetBalanceRequest) Reset() { *x = GetBalanceRequest{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[47] + mi := &file_enclave_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2374,7 +2467,7 @@ func (x *GetBalanceRequest) String() string { func (*GetBalanceRequest) ProtoMessage() {} func (x *GetBalanceRequest) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[47] + mi := &file_enclave_proto_msgTypes[49] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2387,7 +2480,7 @@ func (x *GetBalanceRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetBalanceRequest.ProtoReflect.Descriptor instead. func (*GetBalanceRequest) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{47} + return file_enclave_proto_rawDescGZIP(), []int{49} } func (x *GetBalanceRequest) GetEncryptedParams() []byte { @@ -2409,7 +2502,7 @@ type GetBalanceResponse struct { func (x *GetBalanceResponse) Reset() { *x = GetBalanceResponse{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[48] + mi := &file_enclave_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2422,7 +2515,7 @@ func (x *GetBalanceResponse) String() string { func (*GetBalanceResponse) ProtoMessage() {} func (x *GetBalanceResponse) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[48] + mi := &file_enclave_proto_msgTypes[50] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2435,7 +2528,7 @@ func (x *GetBalanceResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetBalanceResponse.ProtoReflect.Descriptor instead. func (*GetBalanceResponse) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{48} + return file_enclave_proto_rawDescGZIP(), []int{50} } func (x *GetBalanceResponse) GetEncodedEnclaveResponse() []byte { @@ -2464,7 +2557,7 @@ type GetCodeRequest struct { func (x *GetCodeRequest) Reset() { *x = GetCodeRequest{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[49] + mi := &file_enclave_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2477,7 +2570,7 @@ func (x *GetCodeRequest) String() string { func (*GetCodeRequest) ProtoMessage() {} func (x *GetCodeRequest) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[49] + mi := &file_enclave_proto_msgTypes[51] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2490,7 +2583,7 @@ func (x *GetCodeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetCodeRequest.ProtoReflect.Descriptor instead. func (*GetCodeRequest) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{49} + return file_enclave_proto_rawDescGZIP(), []int{51} } func (x *GetCodeRequest) GetAddress() []byte { @@ -2519,7 +2612,7 @@ type GetCodeResponse struct { func (x *GetCodeResponse) Reset() { *x = GetCodeResponse{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[50] + mi := &file_enclave_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2532,7 +2625,7 @@ func (x *GetCodeResponse) String() string { func (*GetCodeResponse) ProtoMessage() {} func (x *GetCodeResponse) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[50] + mi := &file_enclave_proto_msgTypes[52] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2545,7 +2638,7 @@ func (x *GetCodeResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetCodeResponse.ProtoReflect.Descriptor instead. func (*GetCodeResponse) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{50} + return file_enclave_proto_rawDescGZIP(), []int{52} } func (x *GetCodeResponse) GetCode() []byte { @@ -2574,7 +2667,7 @@ type SubscribeRequest struct { func (x *SubscribeRequest) Reset() { *x = SubscribeRequest{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[51] + mi := &file_enclave_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2587,7 +2680,7 @@ func (x *SubscribeRequest) String() string { func (*SubscribeRequest) ProtoMessage() {} func (x *SubscribeRequest) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[51] + mi := &file_enclave_proto_msgTypes[53] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2600,7 +2693,7 @@ func (x *SubscribeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SubscribeRequest.ProtoReflect.Descriptor instead. func (*SubscribeRequest) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{51} + return file_enclave_proto_rawDescGZIP(), []int{53} } func (x *SubscribeRequest) GetId() []byte { @@ -2628,7 +2721,7 @@ type SubscribeResponse struct { func (x *SubscribeResponse) Reset() { *x = SubscribeResponse{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[52] + mi := &file_enclave_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2641,7 +2734,7 @@ func (x *SubscribeResponse) String() string { func (*SubscribeResponse) ProtoMessage() {} func (x *SubscribeResponse) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[52] + mi := &file_enclave_proto_msgTypes[54] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2654,7 +2747,7 @@ func (x *SubscribeResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use SubscribeResponse.ProtoReflect.Descriptor instead. func (*SubscribeResponse) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{52} + return file_enclave_proto_rawDescGZIP(), []int{54} } func (x *SubscribeResponse) GetSystemError() *SystemError { @@ -2675,7 +2768,7 @@ type UnsubscribeRequest struct { func (x *UnsubscribeRequest) Reset() { *x = UnsubscribeRequest{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[53] + mi := &file_enclave_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2688,7 +2781,7 @@ func (x *UnsubscribeRequest) String() string { func (*UnsubscribeRequest) ProtoMessage() {} func (x *UnsubscribeRequest) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[53] + mi := &file_enclave_proto_msgTypes[55] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2701,7 +2794,7 @@ func (x *UnsubscribeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UnsubscribeRequest.ProtoReflect.Descriptor instead. func (*UnsubscribeRequest) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{53} + return file_enclave_proto_rawDescGZIP(), []int{55} } func (x *UnsubscribeRequest) GetId() []byte { @@ -2722,7 +2815,7 @@ type UnsubscribeResponse struct { func (x *UnsubscribeResponse) Reset() { *x = UnsubscribeResponse{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[54] + mi := &file_enclave_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2735,7 +2828,7 @@ func (x *UnsubscribeResponse) String() string { func (*UnsubscribeResponse) ProtoMessage() {} func (x *UnsubscribeResponse) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[54] + mi := &file_enclave_proto_msgTypes[56] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2748,7 +2841,7 @@ func (x *UnsubscribeResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UnsubscribeResponse.ProtoReflect.Descriptor instead. func (*UnsubscribeResponse) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{54} + return file_enclave_proto_rawDescGZIP(), []int{56} } func (x *UnsubscribeResponse) GetSystemError() *SystemError { @@ -2769,7 +2862,7 @@ type EstimateGasRequest struct { func (x *EstimateGasRequest) Reset() { *x = EstimateGasRequest{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[55] + mi := &file_enclave_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2782,7 +2875,7 @@ func (x *EstimateGasRequest) String() string { func (*EstimateGasRequest) ProtoMessage() {} func (x *EstimateGasRequest) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[55] + mi := &file_enclave_proto_msgTypes[57] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2795,7 +2888,7 @@ func (x *EstimateGasRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use EstimateGasRequest.ProtoReflect.Descriptor instead. func (*EstimateGasRequest) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{55} + return file_enclave_proto_rawDescGZIP(), []int{57} } func (x *EstimateGasRequest) GetEncryptedParams() []byte { @@ -2817,7 +2910,7 @@ type EstimateGasResponse struct { func (x *EstimateGasResponse) Reset() { *x = EstimateGasResponse{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[56] + mi := &file_enclave_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2830,7 +2923,7 @@ func (x *EstimateGasResponse) String() string { func (*EstimateGasResponse) ProtoMessage() {} func (x *EstimateGasResponse) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[56] + mi := &file_enclave_proto_msgTypes[58] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2843,7 +2936,7 @@ func (x *EstimateGasResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use EstimateGasResponse.ProtoReflect.Descriptor instead. func (*EstimateGasResponse) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{56} + return file_enclave_proto_rawDescGZIP(), []int{58} } func (x *EstimateGasResponse) GetEncodedEnclaveResponse() []byte { @@ -2871,7 +2964,7 @@ type GetLogsRequest struct { func (x *GetLogsRequest) Reset() { *x = GetLogsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[57] + mi := &file_enclave_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2884,7 +2977,7 @@ func (x *GetLogsRequest) String() string { func (*GetLogsRequest) ProtoMessage() {} func (x *GetLogsRequest) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[57] + mi := &file_enclave_proto_msgTypes[59] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2897,7 +2990,7 @@ func (x *GetLogsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetLogsRequest.ProtoReflect.Descriptor instead. func (*GetLogsRequest) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{57} + return file_enclave_proto_rawDescGZIP(), []int{59} } func (x *GetLogsRequest) GetEncryptedParams() []byte { @@ -2919,7 +3012,7 @@ type GetLogsResponse struct { func (x *GetLogsResponse) Reset() { *x = GetLogsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[58] + mi := &file_enclave_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2932,7 +3025,7 @@ func (x *GetLogsResponse) String() string { func (*GetLogsResponse) ProtoMessage() {} func (x *GetLogsResponse) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[58] + mi := &file_enclave_proto_msgTypes[60] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2945,7 +3038,7 @@ func (x *GetLogsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetLogsResponse.ProtoReflect.Descriptor instead. func (*GetLogsResponse) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{58} + return file_enclave_proto_rawDescGZIP(), []int{60} } func (x *GetLogsResponse) GetEncodedEnclaveResponse() []byte { @@ -2974,7 +3067,7 @@ type HealthCheckResponse struct { func (x *HealthCheckResponse) Reset() { *x = HealthCheckResponse{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[59] + mi := &file_enclave_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2987,7 +3080,7 @@ func (x *HealthCheckResponse) String() string { func (*HealthCheckResponse) ProtoMessage() {} func (x *HealthCheckResponse) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[59] + mi := &file_enclave_proto_msgTypes[61] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3000,7 +3093,7 @@ func (x *HealthCheckResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use HealthCheckResponse.ProtoReflect.Descriptor instead. func (*HealthCheckResponse) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{59} + return file_enclave_proto_rawDescGZIP(), []int{61} } func (x *HealthCheckResponse) GetStatus() bool { @@ -3026,7 +3119,7 @@ type EmptyArgs struct { func (x *EmptyArgs) Reset() { *x = EmptyArgs{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[60] + mi := &file_enclave_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3039,7 +3132,7 @@ func (x *EmptyArgs) String() string { func (*EmptyArgs) ProtoMessage() {} func (x *EmptyArgs) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[60] + mi := &file_enclave_proto_msgTypes[62] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3052,7 +3145,7 @@ func (x *EmptyArgs) ProtoReflect() protoreflect.Message { // Deprecated: Use EmptyArgs.ProtoReflect.Descriptor instead. func (*EmptyArgs) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{60} + return file_enclave_proto_rawDescGZIP(), []int{62} } type AttestationReportMsg struct { @@ -3070,7 +3163,7 @@ type AttestationReportMsg struct { func (x *AttestationReportMsg) Reset() { *x = AttestationReportMsg{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[61] + mi := &file_enclave_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3083,7 +3176,7 @@ func (x *AttestationReportMsg) String() string { func (*AttestationReportMsg) ProtoMessage() {} func (x *AttestationReportMsg) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[61] + mi := &file_enclave_proto_msgTypes[63] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3096,7 +3189,7 @@ func (x *AttestationReportMsg) ProtoReflect() protoreflect.Message { // Deprecated: Use AttestationReportMsg.ProtoReflect.Descriptor instead. func (*AttestationReportMsg) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{61} + return file_enclave_proto_rawDescGZIP(), []int{63} } func (x *AttestationReportMsg) GetReport() []byte { @@ -3146,7 +3239,7 @@ type BlockSubmissionResponseMsg struct { func (x *BlockSubmissionResponseMsg) Reset() { *x = BlockSubmissionResponseMsg{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[62] + mi := &file_enclave_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3159,7 +3252,7 @@ func (x *BlockSubmissionResponseMsg) String() string { func (*BlockSubmissionResponseMsg) ProtoMessage() {} func (x *BlockSubmissionResponseMsg) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[62] + mi := &file_enclave_proto_msgTypes[64] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3172,7 +3265,7 @@ func (x *BlockSubmissionResponseMsg) ProtoReflect() protoreflect.Message { // Deprecated: Use BlockSubmissionResponseMsg.ProtoReflect.Descriptor instead. func (*BlockSubmissionResponseMsg) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{62} + return file_enclave_proto_rawDescGZIP(), []int{64} } func (x *BlockSubmissionResponseMsg) GetProducedSecretResponses() []*SecretResponseMsg { @@ -3201,7 +3294,7 @@ type BlockSubmissionErrorMsg struct { func (x *BlockSubmissionErrorMsg) Reset() { *x = BlockSubmissionErrorMsg{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[63] + mi := &file_enclave_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3214,7 +3307,7 @@ func (x *BlockSubmissionErrorMsg) String() string { func (*BlockSubmissionErrorMsg) ProtoMessage() {} func (x *BlockSubmissionErrorMsg) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[63] + mi := &file_enclave_proto_msgTypes[65] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3227,7 +3320,7 @@ func (x *BlockSubmissionErrorMsg) ProtoReflect() protoreflect.Message { // Deprecated: Use BlockSubmissionErrorMsg.ProtoReflect.Descriptor instead. func (*BlockSubmissionErrorMsg) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{63} + return file_enclave_proto_rawDescGZIP(), []int{65} } func (x *BlockSubmissionErrorMsg) GetCause() string { @@ -3259,7 +3352,7 @@ type CrossChainMsg struct { func (x *CrossChainMsg) Reset() { *x = CrossChainMsg{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[64] + mi := &file_enclave_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3272,7 +3365,7 @@ func (x *CrossChainMsg) String() string { func (*CrossChainMsg) ProtoMessage() {} func (x *CrossChainMsg) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[64] + mi := &file_enclave_proto_msgTypes[66] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3285,7 +3378,7 @@ func (x *CrossChainMsg) ProtoReflect() protoreflect.Message { // Deprecated: Use CrossChainMsg.ProtoReflect.Descriptor instead. func (*CrossChainMsg) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{64} + return file_enclave_proto_rawDescGZIP(), []int{66} } func (x *CrossChainMsg) GetSender() []byte { @@ -3336,7 +3429,7 @@ type ExtBatchMsg struct { func (x *ExtBatchMsg) Reset() { *x = ExtBatchMsg{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[65] + mi := &file_enclave_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3349,7 +3442,7 @@ func (x *ExtBatchMsg) String() string { func (*ExtBatchMsg) ProtoMessage() {} func (x *ExtBatchMsg) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[65] + mi := &file_enclave_proto_msgTypes[67] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3362,7 +3455,7 @@ func (x *ExtBatchMsg) ProtoReflect() protoreflect.Message { // Deprecated: Use ExtBatchMsg.ProtoReflect.Descriptor instead. func (*ExtBatchMsg) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{65} + return file_enclave_proto_rawDescGZIP(), []int{67} } func (x *ExtBatchMsg) GetHeader() *BatchHeaderMsg { @@ -3413,7 +3506,7 @@ type BatchHeaderMsg struct { func (x *BatchHeaderMsg) Reset() { *x = BatchHeaderMsg{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[66] + mi := &file_enclave_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3426,7 +3519,7 @@ func (x *BatchHeaderMsg) String() string { func (*BatchHeaderMsg) ProtoMessage() {} func (x *BatchHeaderMsg) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[66] + mi := &file_enclave_proto_msgTypes[68] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3439,7 +3532,7 @@ func (x *BatchHeaderMsg) ProtoReflect() protoreflect.Message { // Deprecated: Use BatchHeaderMsg.ProtoReflect.Descriptor instead. func (*BatchHeaderMsg) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{66} + return file_enclave_proto_rawDescGZIP(), []int{68} } func (x *BatchHeaderMsg) GetParentHash() []byte { @@ -3574,7 +3667,7 @@ type ExtRollupMsg struct { func (x *ExtRollupMsg) Reset() { *x = ExtRollupMsg{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[67] + mi := &file_enclave_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3587,7 +3680,7 @@ func (x *ExtRollupMsg) String() string { func (*ExtRollupMsg) ProtoMessage() {} func (x *ExtRollupMsg) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[67] + mi := &file_enclave_proto_msgTypes[69] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3600,7 +3693,7 @@ func (x *ExtRollupMsg) ProtoReflect() protoreflect.Message { // Deprecated: Use ExtRollupMsg.ProtoReflect.Descriptor instead. func (*ExtRollupMsg) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{67} + return file_enclave_proto_rawDescGZIP(), []int{69} } func (x *ExtRollupMsg) GetHeader() *RollupHeaderMsg { @@ -3644,7 +3737,7 @@ type RollupHeaderMsg struct { func (x *RollupHeaderMsg) Reset() { *x = RollupHeaderMsg{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[68] + mi := &file_enclave_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3657,7 +3750,7 @@ func (x *RollupHeaderMsg) String() string { func (*RollupHeaderMsg) ProtoMessage() {} func (x *RollupHeaderMsg) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[68] + mi := &file_enclave_proto_msgTypes[70] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3670,7 +3763,7 @@ func (x *RollupHeaderMsg) ProtoReflect() protoreflect.Message { // Deprecated: Use RollupHeaderMsg.ProtoReflect.Descriptor instead. func (*RollupHeaderMsg) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{68} + return file_enclave_proto_rawDescGZIP(), []int{70} } func (x *RollupHeaderMsg) GetParentHash() []byte { @@ -3757,7 +3850,7 @@ type SecretResponseMsg struct { func (x *SecretResponseMsg) Reset() { *x = SecretResponseMsg{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[69] + mi := &file_enclave_proto_msgTypes[71] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3770,7 +3863,7 @@ func (x *SecretResponseMsg) String() string { func (*SecretResponseMsg) ProtoMessage() {} func (x *SecretResponseMsg) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[69] + mi := &file_enclave_proto_msgTypes[71] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3783,7 +3876,7 @@ func (x *SecretResponseMsg) ProtoReflect() protoreflect.Message { // Deprecated: Use SecretResponseMsg.ProtoReflect.Descriptor instead. func (*SecretResponseMsg) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{69} + return file_enclave_proto_rawDescGZIP(), []int{71} } func (x *SecretResponseMsg) GetSecret() []byte { @@ -3827,7 +3920,7 @@ type WithdrawalMsg struct { func (x *WithdrawalMsg) Reset() { *x = WithdrawalMsg{} if protoimpl.UnsafeEnabled { - mi := &file_enclave_proto_msgTypes[70] + mi := &file_enclave_proto_msgTypes[72] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3840,7 +3933,7 @@ func (x *WithdrawalMsg) String() string { func (*WithdrawalMsg) ProtoMessage() {} func (x *WithdrawalMsg) ProtoReflect() protoreflect.Message { - mi := &file_enclave_proto_msgTypes[70] + mi := &file_enclave_proto_msgTypes[72] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3853,7 +3946,7 @@ func (x *WithdrawalMsg) ProtoReflect() protoreflect.Message { // Deprecated: Use WithdrawalMsg.ProtoReflect.Descriptor instead. func (*WithdrawalMsg) Descriptor() ([]byte, []int) { - return file_enclave_proto_rawDescGZIP(), []int{70} + return file_enclave_proto_rawDescGZIP(), []int{72} } func (x *WithdrawalMsg) GetAmount() []byte { @@ -3881,186 +3974,35 @@ var File_enclave_proto protoreflect.FileDescriptor var file_enclave_proto_rawDesc = []byte{ 0x0a, 0x0d, 0x65, 0x6e, 0x63, 0x6c, 0x61, 0x76, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, - 0x09, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x22, 0x58, 0x0a, 0x1f, 0x47, 0x65, + 0x09, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x22, 0x0f, 0x0a, 0x0d, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x62, 0x0a, 0x0e, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, + 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x38, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, + 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x65, 0x6e, + 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, + 0x6f, 0x72, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, + 0x58, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x54, 0x72, 0x61, 0x6e, + 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x35, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, + 0x65, 0x64, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, + 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x92, 0x01, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x35, 0x0a, - 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x50, 0x61, - 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x92, 0x01, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x50, 0x75, 0x62, 0x6c, - 0x69, 0x63, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, - 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x34, 0x0a, 0x15, 0x70, 0x75, 0x62, - 0x6c, 0x69, 0x63, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, - 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x15, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, - 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, - 0x38, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, - 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0b, 0x73, 0x79, - 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x47, 0x0a, 0x1b, 0x47, 0x65, 0x74, - 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x73, 0x42, 0x79, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x65, 0x6e, 0x63, 0x72, - 0x79, 0x70, 0x74, 0x65, 0x64, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0c, 0x52, 0x0f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x50, 0x61, 0x72, 0x61, - 0x6d, 0x73, 0x22, 0x90, 0x01, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, - 0x74, 0x73, 0x42, 0x79, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x16, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x45, 0x6e, - 0x63, 0x6c, 0x61, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0c, 0x52, 0x16, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x45, 0x6e, 0x63, 0x6c, - 0x61, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x0b, 0x73, - 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x16, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x79, 0x73, - 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, - 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x2f, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x42, 0x61, 0x74, 0x63, - 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6b, 0x6e, 0x6f, 0x77, - 0x6e, 0x48, 0x65, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x6b, 0x6e, 0x6f, - 0x77, 0x6e, 0x48, 0x65, 0x61, 0x64, 0x22, 0x2e, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x42, 0x61, 0x74, - 0x63, 0x68, 0x42, 0x79, 0x53, 0x65, 0x71, 0x4e, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x14, 0x0a, 0x05, 0x73, 0x65, 0x71, 0x4e, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x05, 0x73, 0x65, 0x71, 0x4e, 0x6f, 0x22, 0x62, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x42, 0x61, 0x74, - 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x61, - 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x62, 0x61, 0x74, 0x63, 0x68, - 0x12, 0x38, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, - 0x64, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0b, 0x73, - 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x18, 0x0a, 0x16, 0x53, 0x74, - 0x72, 0x65, 0x61, 0x6d, 0x4c, 0x32, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x22, 0x2d, 0x0a, 0x15, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, - 0x05, 0x62, 0x61, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x62, 0x61, - 0x74, 0x63, 0x68, 0x22, 0x38, 0x0a, 0x0a, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x22, 0x4d, 0x0a, - 0x0b, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x1c, 0x0a, 0x09, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x65, 0x72, - 0x72, 0x6f, 0x72, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0b, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x22, 0x1e, 0x0a, 0x1c, - 0x47, 0x65, 0x74, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x6f, 0x0a, 0x1d, - 0x47, 0x65, 0x74, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, - 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x12, 0x38, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, - 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, - 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, - 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x37, 0x0a, - 0x1d, 0x44, 0x65, 0x62, 0x75, 0x67, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x67, 0x52, 0x65, - 0x6c, 0x65, 0x76, 0x61, 0x6e, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, - 0x0a, 0x06, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, - 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x22, 0x6c, 0x0a, 0x1e, 0x44, 0x65, 0x62, 0x75, 0x67, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x67, 0x52, 0x65, 0x6c, 0x65, 0x76, 0x61, 0x6e, 0x63, 0x79, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, 0x38, 0x0a, 0x0b, 0x73, 0x79, - 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x16, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x79, 0x73, 0x74, - 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, - 0x72, 0x72, 0x6f, 0x72, 0x22, 0x4e, 0x0a, 0x1c, 0x44, 0x65, 0x62, 0x75, 0x67, 0x54, 0x72, 0x61, - 0x63, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x12, 0x16, 0x0a, 0x06, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x22, 0x6b, 0x0a, 0x1d, 0x44, 0x65, 0x62, 0x75, 0x67, 0x54, 0x72, 0x61, - 0x63, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, 0x38, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, - 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, - 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, - 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x22, 0x14, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x2b, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, - 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, - 0x72, 0x72, 0x6f, 0x72, 0x22, 0x61, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, - 0x6c, 0x6c, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x33, 0x0a, 0x12, 0x66, - 0x72, 0x6f, 0x6d, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, - 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x12, 0x66, 0x72, 0x6f, 0x6d, 0x53, - 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x88, 0x01, 0x01, - 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, - 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x7b, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x52, 0x6f, 0x6c, 0x6c, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x29, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, - 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x45, 0x78, 0x74, 0x52, 0x6f, 0x6c, 0x6c, - 0x75, 0x70, 0x4d, 0x73, 0x67, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, 0x38, 0x0a, 0x0b, 0x73, 0x79, - 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x16, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x79, 0x73, 0x74, - 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, - 0x72, 0x72, 0x6f, 0x72, 0x22, 0x0f, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x9a, 0x01, 0x0a, 0x0e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x73, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x31, 0x48, 0x65, - 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x6c, 0x31, 0x48, 0x65, 0x61, 0x64, - 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x32, 0x48, 0x65, 0x61, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, - 0x52, 0x06, 0x6c, 0x32, 0x48, 0x65, 0x61, 0x64, 0x12, 0x38, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, - 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, - 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, - 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, - 0x6f, 0x72, 0x22, 0x14, 0x0a, 0x12, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xa4, 0x01, 0x0a, 0x13, 0x41, 0x74, 0x74, - 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x53, 0x0a, 0x14, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x73, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, - 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x41, 0x74, 0x74, 0x65, 0x73, - 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x73, 0x67, 0x52, - 0x14, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6f, - 0x72, 0x74, 0x4d, 0x73, 0x67, 0x12, 0x38, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, - 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x65, 0x6e, - 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, - 0x6f, 0x72, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, - 0x17, 0x0a, 0x15, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x53, 0x65, 0x63, 0x72, 0x65, - 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x96, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x6e, - 0x65, 0x72, 0x61, 0x74, 0x65, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x1c, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, - 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x45, 0x6e, 0x63, 0x6c, 0x61, 0x76, 0x65, 0x53, 0x65, 0x63, - 0x72, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x1c, 0x65, 0x6e, 0x63, 0x72, 0x79, - 0x70, 0x74, 0x65, 0x64, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x45, 0x6e, 0x63, 0x6c, 0x61, 0x76, - 0x65, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x38, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, - 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, - 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, - 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x22, 0x58, 0x0a, 0x12, 0x49, 0x6e, 0x69, 0x74, 0x45, 0x6e, 0x63, 0x6c, 0x61, 0x76, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x42, 0x0a, 0x1c, 0x65, 0x6e, 0x63, 0x72, 0x79, - 0x70, 0x74, 0x65, 0x64, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x45, 0x6e, 0x63, 0x6c, 0x61, 0x76, - 0x65, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x1c, 0x65, - 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x45, 0x6e, - 0x63, 0x6c, 0x61, 0x76, 0x65, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x22, 0x4f, 0x0a, 0x13, 0x49, - 0x6e, 0x69, 0x74, 0x45, 0x6e, 0x63, 0x6c, 0x61, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x38, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, - 0x74, 0x65, 0x64, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, - 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x32, 0x0a, 0x0c, - 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0c, - 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0c, 0x52, 0x0c, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, - 0x22, 0x49, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x38, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, - 0x65, 0x64, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0b, - 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x7e, 0x0a, 0x12, 0x53, - 0x75, 0x62, 0x6d, 0x69, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, - 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, - 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x28, 0x0a, 0x0f, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, - 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, - 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x73, 0x12, - 0x1a, 0x0a, 0x08, 0x69, 0x73, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x08, 0x69, 0x73, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x22, 0xb0, 0x01, 0x0a, 0x13, - 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x5f, 0x0a, 0x17, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x53, 0x75, 0x62, 0x6d, - 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, - 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x73, 0x67, 0x52, 0x17, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, + 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x34, + 0x0a, 0x15, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x15, 0x70, + 0x75, 0x62, 0x6c, 0x69, 0x63, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x44, 0x61, 0x74, 0x61, 0x12, 0x38, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x33, - 0x0a, 0x0f, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x54, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x54, 0x78, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, - 0x64, 0x54, 0x78, 0x22, 0x84, 0x01, 0x0a, 0x10, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x54, 0x78, + 0x72, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x47, + 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x73, 0x42, 0x79, 0x41, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, + 0x0f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, + 0x64, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x90, 0x01, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x52, + 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x73, 0x42, 0x79, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x16, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x45, 0x6e, 0x63, 0x6c, 0x61, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x16, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, @@ -4068,430 +4010,593 @@ var file_enclave_proto_rawDesc = []byte{ 0x12, 0x38, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0b, 0x73, - 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x42, 0x0a, 0x12, 0x53, 0x75, - 0x62, 0x6d, 0x69, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x2c, 0x0a, 0x05, 0x62, 0x61, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x16, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x45, 0x78, 0x74, 0x42, - 0x61, 0x74, 0x63, 0x68, 0x4d, 0x73, 0x67, 0x52, 0x05, 0x62, 0x61, 0x74, 0x63, 0x68, 0x22, 0x4f, - 0x0a, 0x13, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, - 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x65, 0x6e, + 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x2f, 0x0a, 0x0f, 0x47, 0x65, + 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, + 0x09, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x48, 0x65, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x09, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x48, 0x65, 0x61, 0x64, 0x22, 0x2e, 0x0a, 0x16, 0x47, + 0x65, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x42, 0x79, 0x53, 0x65, 0x71, 0x4e, 0x6f, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x65, 0x71, 0x4e, 0x6f, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x73, 0x65, 0x71, 0x4e, 0x6f, 0x22, 0x62, 0x0a, 0x10, 0x47, + 0x65, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x14, 0x0a, 0x05, 0x62, 0x61, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, + 0x62, 0x61, 0x74, 0x63, 0x68, 0x12, 0x38, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, + 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, - 0x3a, 0x0a, 0x0e, 0x4f, 0x62, 0x73, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x50, 0x61, - 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, 0x65, 0x6e, 0x63, 0x72, - 0x79, 0x70, 0x74, 0x65, 0x64, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x83, 0x01, 0x0a, 0x0f, - 0x4f, 0x62, 0x73, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x36, 0x0a, 0x16, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x45, 0x6e, 0x63, 0x6c, 0x61, 0x76, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, - 0x16, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x45, 0x6e, 0x63, 0x6c, 0x61, 0x76, 0x65, 0x52, + 0x18, 0x0a, 0x16, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4c, 0x32, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x2d, 0x0a, 0x15, 0x45, 0x6e, 0x63, + 0x6f, 0x64, 0x65, 0x64, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x61, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x05, 0x62, 0x61, 0x74, 0x63, 0x68, 0x22, 0x38, 0x0a, 0x0a, 0x50, 0x61, 0x67, 0x69, + 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x12, + 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, 0x69, + 0x7a, 0x65, 0x22, 0x4d, 0x0a, 0x0b, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, + 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, + 0x20, 0x0a, 0x0b, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x53, 0x74, 0x72, 0x69, 0x6e, + 0x67, 0x22, 0x1e, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x6e, + 0x74, 0x72, 0x61, 0x63, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x22, 0x6f, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x6e, + 0x74, 0x72, 0x61, 0x63, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x38, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, + 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, + 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, + 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, + 0x6f, 0x72, 0x22, 0x37, 0x0a, 0x1d, 0x44, 0x65, 0x62, 0x75, 0x67, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x4c, 0x6f, 0x67, 0x52, 0x65, 0x6c, 0x65, 0x76, 0x61, 0x6e, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0c, 0x52, 0x06, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x22, 0x6c, 0x0a, 0x1e, 0x44, + 0x65, 0x62, 0x75, 0x67, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x67, 0x52, 0x65, 0x6c, 0x65, + 0x76, 0x61, 0x6e, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, + 0x03, 0x6d, 0x73, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, + 0x38, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, + 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0b, 0x73, 0x79, + 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x4e, 0x0a, 0x1c, 0x44, 0x65, 0x62, + 0x75, 0x67, 0x54, 0x72, 0x61, 0x63, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x78, 0x48, + 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x74, 0x78, 0x48, 0x61, 0x73, + 0x68, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x6b, 0x0a, 0x1d, 0x44, 0x65, 0x62, + 0x75, 0x67, 0x54, 0x72, 0x61, 0x63, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, + 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, 0x38, 0x0a, 0x0b, + 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x79, + 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, + 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x14, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x2b, 0x0a, 0x13, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x61, 0x0a, 0x13, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x6c, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x33, 0x0a, 0x12, 0x66, 0x72, 0x6f, 0x6d, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, + 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x12, + 0x66, 0x72, 0x6f, 0x6d, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x88, 0x01, 0x01, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x53, 0x65, + 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x7b, 0x0a, 0x14, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x6c, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x29, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x45, 0x78, + 0x74, 0x52, 0x6f, 0x6c, 0x6c, 0x75, 0x70, 0x4d, 0x73, 0x67, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, + 0x38, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, + 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0b, 0x73, 0x79, + 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x0f, 0x0a, 0x0d, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x9a, 0x01, 0x0a, 0x0e, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1e, 0x0a, + 0x0a, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, + 0x06, 0x6c, 0x31, 0x48, 0x65, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x6c, + 0x31, 0x48, 0x65, 0x61, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x32, 0x48, 0x65, 0x61, 0x64, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x6c, 0x32, 0x48, 0x65, 0x61, 0x64, 0x12, 0x38, 0x0a, + 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, + 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, + 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x14, 0x0a, 0x12, 0x41, 0x74, 0x74, 0x65, 0x73, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xa4, 0x01, + 0x0a, 0x13, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x53, 0x0a, 0x14, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x73, 0x67, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, + 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, + 0x74, 0x4d, 0x73, 0x67, 0x52, 0x14, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x73, 0x67, 0x12, 0x38, 0x0a, 0x0b, 0x73, 0x79, + 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x16, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x79, 0x73, 0x74, + 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, + 0x72, 0x72, 0x6f, 0x72, 0x22, 0x17, 0x0a, 0x15, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, + 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x96, 0x01, + 0x0a, 0x16, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x1c, 0x65, 0x6e, 0x63, 0x72, + 0x79, 0x70, 0x74, 0x65, 0x64, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x45, 0x6e, 0x63, 0x6c, 0x61, + 0x76, 0x65, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x1c, + 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x45, + 0x6e, 0x63, 0x6c, 0x61, 0x76, 0x65, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x38, 0x0a, 0x0b, + 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x79, + 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, + 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x58, 0x0a, 0x12, 0x49, 0x6e, 0x69, 0x74, 0x45, 0x6e, + 0x63, 0x6c, 0x61, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x42, 0x0a, 0x1c, + 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x45, + 0x6e, 0x63, 0x6c, 0x61, 0x76, 0x65, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x1c, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x53, 0x68, 0x61, + 0x72, 0x65, 0x64, 0x45, 0x6e, 0x63, 0x6c, 0x61, 0x76, 0x65, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, + 0x22, 0x4f, 0x0a, 0x13, 0x49, 0x6e, 0x69, 0x74, 0x45, 0x6e, 0x63, 0x6c, 0x61, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, - 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, + 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x22, 0x46, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x28, 0x0a, 0x0f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x50, 0x61, 0x72, 0x61, - 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, - 0x74, 0x65, 0x64, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x8f, 0x01, 0x0a, 0x1b, 0x47, 0x65, - 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x16, 0x65, 0x6e, 0x63, - 0x6f, 0x64, 0x65, 0x64, 0x45, 0x6e, 0x63, 0x6c, 0x61, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x16, 0x65, 0x6e, 0x63, 0x6f, 0x64, - 0x65, 0x64, 0x45, 0x6e, 0x63, 0x6c, 0x61, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x38, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, - 0x65, 0x64, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0b, - 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x0d, 0x0a, 0x0b, 0x53, - 0x74, 0x6f, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x48, 0x0a, 0x0c, 0x53, 0x74, - 0x6f, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x0b, 0x73, 0x79, + 0x72, 0x22, 0x32, 0x0a, 0x0c, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, + 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, + 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x22, 0x49, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, + 0x45, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x65, + 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, + 0x72, 0x6f, 0x72, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, + 0x22, 0x7e, 0x0a, 0x12, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, + 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x65, 0x6e, + 0x63, 0x6f, 0x64, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x28, 0x0a, 0x0f, 0x65, 0x6e, + 0x63, 0x6f, 0x64, 0x65, 0x64, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x73, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0c, 0x52, 0x0f, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x52, 0x65, 0x63, 0x65, + 0x69, 0x70, 0x74, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x73, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, + 0x22, 0xb0, 0x01, 0x0a, 0x13, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5f, 0x0a, 0x17, 0x62, 0x6c, 0x6f, 0x63, + 0x6b, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x65, 0x6e, 0x65, + 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x53, 0x75, 0x62, 0x6d, 0x69, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x73, 0x67, + 0x52, 0x17, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x0b, 0x73, 0x79, 0x73, + 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, + 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, + 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, + 0x72, 0x6f, 0x72, 0x22, 0x33, 0x0a, 0x0f, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x54, 0x78, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, + 0x74, 0x65, 0x64, 0x54, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x65, 0x6e, 0x63, + 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x54, 0x78, 0x22, 0x84, 0x01, 0x0a, 0x10, 0x53, 0x75, 0x62, + 0x6d, 0x69, 0x74, 0x54, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, + 0x16, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x45, 0x6e, 0x63, 0x6c, 0x61, 0x76, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x16, 0x65, + 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x45, 0x6e, 0x63, 0x6c, 0x61, 0x76, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, + 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x65, 0x6e, + 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, + 0x6f, 0x72, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, + 0x42, 0x0a, 0x12, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x05, 0x62, 0x61, 0x74, 0x63, 0x68, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, + 0x2e, 0x45, 0x78, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x73, 0x67, 0x52, 0x05, 0x62, 0x61, + 0x74, 0x63, 0x68, 0x22, 0x4f, 0x0a, 0x13, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x42, 0x61, 0x74, + 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, - 0x72, 0x72, 0x6f, 0x72, 0x22, 0x41, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, + 0x72, 0x72, 0x6f, 0x72, 0x22, 0x3a, 0x0a, 0x0e, 0x4f, 0x62, 0x73, 0x43, 0x61, 0x6c, 0x6c, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, + 0x74, 0x65, 0x64, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, - 0x64, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x8a, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x54, - 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x36, 0x0a, 0x16, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x45, 0x6e, 0x63, - 0x6c, 0x61, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0c, 0x52, 0x16, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x45, 0x6e, 0x63, 0x6c, 0x61, - 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x0b, 0x73, 0x79, - 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x16, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x79, 0x73, 0x74, - 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, - 0x72, 0x72, 0x6f, 0x72, 0x22, 0x48, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x52, 0x65, 0x71, + 0x22, 0x83, 0x01, 0x0a, 0x0f, 0x4f, 0x62, 0x73, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x16, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x45, + 0x6e, 0x63, 0x6c, 0x61, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0c, 0x52, 0x16, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x45, 0x6e, 0x63, + 0x6c, 0x61, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x0b, + 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x79, + 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, + 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x46, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, + 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, 0x65, - 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x91, - 0x01, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x36, 0x0a, 0x16, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x45, 0x6e, 0x63, 0x6c, 0x61, - 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, - 0x52, 0x16, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x45, 0x6e, 0x63, 0x6c, 0x61, 0x76, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, - 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, - 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, - 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, - 0x6f, 0x72, 0x22, 0x3d, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x65, 0x6e, 0x63, 0x72, 0x79, - 0x70, 0x74, 0x65, 0x64, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, - 0x52, 0x0f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x50, 0x61, 0x72, 0x61, 0x6d, - 0x73, 0x22, 0x86, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x16, 0x65, 0x6e, 0x63, 0x6f, - 0x64, 0x65, 0x64, 0x45, 0x6e, 0x63, 0x6c, 0x61, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x16, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, - 0x64, 0x45, 0x6e, 0x63, 0x6c, 0x61, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x38, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, - 0x64, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0b, 0x73, - 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x4a, 0x0a, 0x0e, 0x47, 0x65, - 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, - 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x61, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x72, 0x6f, 0x6c, 0x6c, 0x75, 0x70, - 0x48, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x72, 0x6f, 0x6c, 0x6c, - 0x75, 0x70, 0x48, 0x61, 0x73, 0x68, 0x22, 0x5f, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x64, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x38, 0x0a, - 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, - 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, - 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x58, 0x0a, 0x10, 0x53, 0x75, 0x62, 0x73, 0x63, - 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x02, 0x69, 0x64, 0x12, 0x34, 0x0a, 0x15, 0x65, - 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x15, 0x65, 0x6e, 0x63, 0x72, - 0x79, 0x70, 0x74, 0x65, 0x64, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x22, 0x4d, 0x0a, 0x11, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, + 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x8f, + 0x01, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, + 0x0a, 0x16, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x45, 0x6e, 0x63, 0x6c, 0x61, 0x76, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x16, + 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x45, 0x6e, 0x63, 0x6c, 0x61, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, - 0x22, 0x24, 0x0a, 0x12, 0x55, 0x6e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0c, 0x52, 0x02, 0x69, 0x64, 0x22, 0x4f, 0x0a, 0x13, 0x55, 0x6e, 0x73, 0x75, 0x62, 0x73, - 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, + 0x22, 0x0d, 0x0a, 0x0b, 0x53, 0x74, 0x6f, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, + 0x48, 0x0a, 0x0c, 0x53, 0x74, 0x6f, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x38, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, + 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0b, 0x73, 0x79, + 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x41, 0x0a, 0x15, 0x47, 0x65, 0x74, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, 0x65, 0x6e, 0x63, + 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x8a, 0x01, 0x0a, + 0x16, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x16, 0x65, 0x6e, 0x63, 0x6f, 0x64, + 0x65, 0x64, 0x45, 0x6e, 0x63, 0x6c, 0x61, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x16, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, + 0x45, 0x6e, 0x63, 0x6c, 0x61, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x38, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, + 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0b, 0x73, 0x79, + 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x48, 0x0a, 0x1c, 0x47, 0x65, 0x74, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x63, 0x65, 0x69, + 0x70, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x65, 0x6e, 0x63, + 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x0f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x73, 0x22, 0x91, 0x01, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x16, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, + 0x45, 0x6e, 0x63, 0x6c, 0x61, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x16, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x45, 0x6e, + 0x63, 0x6c, 0x61, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, - 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x3e, 0x0a, 0x12, 0x45, 0x73, 0x74, 0x69, 0x6d, - 0x61, 0x74, 0x65, 0x47, 0x61, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, - 0x0f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, - 0x64, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x87, 0x01, 0x0a, 0x13, 0x45, 0x73, 0x74, 0x69, - 0x6d, 0x61, 0x74, 0x65, 0x47, 0x61, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x36, 0x0a, 0x16, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x45, 0x6e, 0x63, 0x6c, 0x61, 0x76, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, + 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x3d, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x42, 0x61, + 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x0f, + 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x86, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x42, 0x61, + 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x16, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x45, 0x6e, 0x63, 0x6c, 0x61, 0x76, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x16, 0x65, + 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x45, 0x6e, 0x63, 0x6c, 0x61, 0x76, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, + 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x65, 0x6e, + 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, + 0x6f, 0x72, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, + 0x4a, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x72, + 0x6f, 0x6c, 0x6c, 0x75, 0x70, 0x48, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, + 0x0a, 0x72, 0x6f, 0x6c, 0x6c, 0x75, 0x70, 0x48, 0x61, 0x73, 0x68, 0x22, 0x5f, 0x0a, 0x0f, 0x47, + 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, + 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x63, 0x6f, + 0x64, 0x65, 0x12, 0x38, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, + 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, + 0x74, 0x65, 0x64, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, + 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x58, 0x0a, 0x10, + 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x02, 0x69, 0x64, + 0x12, 0x34, 0x0a, 0x15, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x53, 0x75, 0x62, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, + 0x15, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x4d, 0x0a, 0x11, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, + 0x69, 0x62, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x0b, 0x73, + 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x16, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x79, 0x73, + 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, + 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x24, 0x0a, 0x12, 0x55, 0x6e, 0x73, 0x75, 0x62, 0x73, 0x63, + 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x02, 0x69, 0x64, 0x22, 0x4f, 0x0a, 0x13, 0x55, + 0x6e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x38, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, + 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, + 0x74, 0x65, 0x64, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, + 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x3e, 0x0a, 0x12, + 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x47, 0x61, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, 0x65, 0x6e, 0x63, + 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x87, 0x01, 0x0a, + 0x13, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x47, 0x61, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x16, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x45, + 0x6e, 0x63, 0x6c, 0x61, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0c, 0x52, 0x16, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x45, 0x6e, 0x63, + 0x6c, 0x61, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x0b, + 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x79, + 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, + 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x3a, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x4c, 0x6f, 0x67, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x65, 0x6e, 0x63, 0x72, + 0x79, 0x70, 0x74, 0x65, 0x64, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x0f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x22, 0x83, 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x16, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, + 0x64, 0x45, 0x6e, 0x63, 0x6c, 0x61, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x16, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x45, + 0x6e, 0x63, 0x6c, 0x61, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, + 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, + 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0b, 0x73, 0x79, 0x73, + 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x67, 0x0a, 0x13, 0x48, 0x65, 0x61, 0x6c, + 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x38, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x22, 0x3a, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, - 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, 0x65, 0x6e, - 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x83, 0x01, - 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x36, 0x0a, 0x16, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x45, 0x6e, 0x63, 0x6c, - 0x61, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0c, 0x52, 0x16, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x45, 0x6e, 0x63, 0x6c, 0x61, 0x76, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x0b, 0x73, 0x79, 0x73, - 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, - 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, - 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, - 0x72, 0x6f, 0x72, 0x22, 0x67, 0x0a, 0x13, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, - 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x12, 0x38, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, - 0x74, 0x65, 0x64, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, - 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x0b, 0x0a, 0x09, - 0x45, 0x6d, 0x70, 0x74, 0x79, 0x41, 0x72, 0x67, 0x73, 0x22, 0xb8, 0x01, 0x0a, 0x14, 0x41, 0x74, - 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x4d, - 0x73, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0c, 0x52, 0x06, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x75, - 0x62, 0x4b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x50, 0x75, 0x62, 0x4b, - 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0c, 0x52, 0x05, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x48, 0x6f, 0x73, 0x74, - 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x48, - 0x6f, 0x73, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x38, 0x0a, 0x0b, 0x73, 0x79, - 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x16, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x79, 0x73, 0x74, - 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, - 0x72, 0x72, 0x6f, 0x72, 0x22, 0xae, 0x01, 0x0a, 0x1a, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x53, 0x75, - 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x4d, 0x73, 0x67, 0x12, 0x56, 0x0a, 0x17, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x64, 0x53, - 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, - 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, - 0x73, 0x67, 0x52, 0x17, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x64, 0x53, 0x65, 0x63, 0x72, - 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x12, 0x38, 0x0a, 0x05, 0x65, - 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x65, 0x6e, - 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x53, 0x75, 0x62, 0x6d, - 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x73, 0x67, 0x52, 0x05, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x47, 0x0a, 0x17, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x53, 0x75, - 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x73, 0x67, - 0x12, 0x14, 0x0a, 0x05, 0x63, 0x61, 0x75, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x63, 0x61, 0x75, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x31, 0x48, 0x65, 0x61, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x6c, 0x31, 0x48, 0x65, 0x61, 0x64, 0x22, 0x89, - 0x01, 0x0a, 0x0d, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x4d, 0x73, 0x67, - 0x12, 0x16, 0x0a, 0x06, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, - 0x52, 0x06, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x65, 0x71, 0x75, - 0x65, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x53, 0x65, 0x71, 0x75, - 0x65, 0x6e, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x4e, 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x05, 0x4e, 0x6f, 0x6e, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x6f, - 0x70, 0x69, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x54, 0x6f, 0x70, 0x69, 0x63, - 0x12, 0x18, 0x0a, 0x07, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x0c, 0x52, 0x07, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x6e, 0x0a, 0x0b, 0x45, 0x78, - 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x73, 0x67, 0x12, 0x31, 0x0a, 0x06, 0x68, 0x65, 0x61, - 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x65, 0x6e, 0x65, - 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x48, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x4d, 0x73, 0x67, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, - 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x08, - 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x78, 0x73, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x74, 0x78, 0x73, 0x22, 0xc0, 0x04, 0x0a, 0x0e, 0x42, - 0x61, 0x74, 0x63, 0x68, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x1e, 0x0a, - 0x0a, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0c, 0x52, 0x0a, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x12, 0x14, 0x0a, - 0x05, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x50, 0x72, - 0x6f, 0x6f, 0x66, 0x12, 0x12, 0x0a, 0x04, 0x52, 0x6f, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0c, 0x52, 0x04, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x54, 0x78, 0x48, 0x61, 0x73, - 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x54, 0x78, 0x48, 0x61, 0x73, 0x68, 0x12, - 0x16, 0x0a, 0x06, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x06, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x2a, 0x0a, 0x10, 0x53, 0x65, 0x71, 0x75, 0x65, - 0x6e, 0x63, 0x65, 0x72, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x10, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x72, 0x4f, 0x72, 0x64, 0x65, - 0x72, 0x4e, 0x6f, 0x12, 0x20, 0x0a, 0x0b, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x48, 0x61, - 0x73, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, - 0x74, 0x48, 0x61, 0x73, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x45, 0x78, 0x74, 0x72, 0x61, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x45, 0x78, 0x74, 0x72, 0x61, 0x12, 0x0c, 0x0a, 0x01, 0x52, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x01, 0x52, 0x12, 0x0c, 0x0a, 0x01, 0x53, 0x18, 0x0a, - 0x20, 0x01, 0x28, 0x0c, 0x52, 0x01, 0x53, 0x12, 0x1a, 0x0a, 0x08, 0x47, 0x61, 0x73, 0x4c, 0x69, - 0x6d, 0x69, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x47, 0x61, 0x73, 0x4c, 0x69, - 0x6d, 0x69, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x61, 0x73, 0x55, 0x73, 0x65, 0x64, 0x18, 0x0c, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x47, 0x61, 0x73, 0x55, 0x73, 0x65, 0x64, 0x12, 0x12, 0x0a, - 0x04, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x54, 0x69, 0x6d, - 0x65, 0x12, 0x18, 0x0a, 0x07, 0x42, 0x61, 0x73, 0x65, 0x46, 0x65, 0x65, 0x18, 0x0e, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x07, 0x42, 0x61, 0x73, 0x65, 0x46, 0x65, 0x65, 0x12, 0x44, 0x0a, 0x1d, 0x4c, - 0x61, 0x74, 0x65, 0x73, 0x74, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x72, 0x6f, 0x73, - 0x73, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x0f, 0x20, 0x01, - 0x28, 0x0c, 0x52, 0x1d, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, + 0x72, 0x22, 0x0b, 0x0a, 0x09, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x41, 0x72, 0x67, 0x73, 0x22, 0xb8, + 0x01, 0x0a, 0x14, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x73, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x65, 0x70, 0x6f, 0x72, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, + 0x16, 0x0a, 0x06, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, + 0x06, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x4f, 0x77, 0x6e, 0x65, 0x72, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x20, 0x0a, + 0x0b, 0x48, 0x6f, 0x73, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x48, 0x6f, 0x73, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, + 0x38, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, + 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0b, 0x73, 0x79, + 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0xae, 0x01, 0x0a, 0x1a, 0x42, 0x6c, + 0x6f, 0x63, 0x6b, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x73, 0x67, 0x12, 0x56, 0x0a, 0x17, 0x70, 0x72, 0x6f, 0x64, + 0x75, 0x63, 0x65, 0x64, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x65, 0x6e, 0x65, + 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x73, 0x67, 0x52, 0x17, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, + 0x64, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, + 0x12, 0x38, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x22, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x42, 0x6c, 0x6f, 0x63, + 0x6b, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, + 0x4d, 0x73, 0x67, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x47, 0x0a, 0x17, 0x42, 0x6c, + 0x6f, 0x63, 0x6b, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, + 0x6f, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x61, 0x75, 0x73, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x63, 0x61, 0x75, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6c, + 0x31, 0x48, 0x65, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x6c, 0x31, 0x48, + 0x65, 0x61, 0x64, 0x22, 0x89, 0x01, 0x0a, 0x0d, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x43, 0x68, 0x61, + 0x69, 0x6e, 0x4d, 0x73, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x1a, 0x0a, + 0x08, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x08, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x4e, 0x6f, 0x6e, + 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x4e, 0x6f, 0x6e, 0x63, 0x65, 0x12, + 0x14, 0x0a, 0x05, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, + 0x54, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x18, 0x0a, 0x07, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, + 0x6e, 0x0a, 0x0b, 0x45, 0x78, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x73, 0x67, 0x12, 0x31, + 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, + 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, + 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0c, 0x52, 0x08, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x12, 0x10, 0x0a, + 0x03, 0x74, 0x78, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x74, 0x78, 0x73, 0x22, + 0xc0, 0x04, 0x0a, 0x0e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, + 0x73, 0x67, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x48, 0x61, + 0x73, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x05, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x12, 0x12, 0x0a, 0x04, 0x52, 0x6f, 0x6f, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x16, 0x0a, 0x06, + 0x54, 0x78, 0x48, 0x61, 0x73, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x54, 0x78, + 0x48, 0x61, 0x73, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x2a, 0x0a, 0x10, + 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x72, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x10, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, + 0x72, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x12, 0x20, 0x0a, 0x0b, 0x52, 0x65, 0x63, 0x65, + 0x69, 0x70, 0x74, 0x48, 0x61, 0x73, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x52, + 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x48, 0x61, 0x73, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x45, 0x78, + 0x74, 0x72, 0x61, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x45, 0x78, 0x74, 0x72, 0x61, + 0x12, 0x0c, 0x0a, 0x01, 0x52, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x01, 0x52, 0x12, 0x0c, + 0x0a, 0x01, 0x53, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x01, 0x53, 0x12, 0x1a, 0x0a, 0x08, + 0x47, 0x61, 0x73, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, + 0x47, 0x61, 0x73, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x61, 0x73, 0x55, + 0x73, 0x65, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x47, 0x61, 0x73, 0x55, 0x73, + 0x65, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x04, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x42, 0x61, 0x73, 0x65, 0x46, 0x65, + 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x42, 0x61, 0x73, 0x65, 0x46, 0x65, 0x65, + 0x12, 0x44, 0x0a, 0x1d, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x48, 0x65, 0x69, 0x67, 0x68, - 0x74, 0x12, 0x40, 0x0a, 0x1b, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x49, 0x6e, 0x62, 0x6f, 0x75, - 0x6e, 0x64, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x48, 0x61, 0x73, 0x68, - 0x18, 0x10, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x1b, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x49, 0x6e, - 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x48, - 0x61, 0x73, 0x68, 0x12, 0x48, 0x0a, 0x12, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x43, 0x68, 0x61, 0x69, - 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x11, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x18, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x43, 0x72, 0x6f, 0x73, - 0x73, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x4d, 0x73, 0x67, 0x52, 0x12, 0x43, 0x72, 0x6f, 0x73, 0x73, - 0x43, 0x68, 0x61, 0x69, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x22, 0x8c, 0x01, - 0x0a, 0x0c, 0x45, 0x78, 0x74, 0x52, 0x6f, 0x6c, 0x6c, 0x75, 0x70, 0x4d, 0x73, 0x67, 0x12, 0x32, - 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x52, 0x6f, 0x6c, 0x6c, 0x75, - 0x70, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, - 0x65, 0x72, 0x12, 0x24, 0x0a, 0x0d, 0x62, 0x61, 0x74, 0x63, 0x68, 0x50, 0x61, 0x79, 0x6c, 0x6f, - 0x61, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d, 0x62, 0x61, 0x74, 0x63, 0x68, - 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x62, 0x61, 0x74, 0x63, - 0x68, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, - 0x62, 0x61, 0x74, 0x63, 0x68, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x22, 0xbf, 0x02, 0x0a, - 0x0f, 0x52, 0x6f, 0x6c, 0x6c, 0x75, 0x70, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x73, 0x67, - 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, - 0x12, 0x14, 0x0a, 0x05, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, - 0x05, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x12, 0x20, 0x0a, 0x0b, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x4e, - 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x50, 0x72, 0x6f, - 0x6f, 0x66, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x4e, 0x75, 0x6d, 0x62, - 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, - 0x12, 0x12, 0x0a, 0x04, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, - 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x43, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, - 0x12, 0x48, 0x0a, 0x12, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x4d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, - 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x43, 0x68, - 0x61, 0x69, 0x6e, 0x4d, 0x73, 0x67, 0x52, 0x12, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x43, 0x68, 0x61, - 0x69, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, 0x0c, 0x0a, 0x01, 0x52, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x01, 0x52, 0x12, 0x0c, 0x0a, 0x01, 0x53, 0x18, 0x09, 0x20, - 0x01, 0x28, 0x0c, 0x52, 0x01, 0x53, 0x12, 0x26, 0x0a, 0x0e, 0x4c, 0x61, 0x73, 0x74, 0x42, 0x61, - 0x74, 0x63, 0x68, 0x53, 0x65, 0x71, 0x4e, 0x6f, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, - 0x4c, 0x61, 0x73, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x53, 0x65, 0x71, 0x4e, 0x6f, 0x22, 0xa9, - 0x01, 0x0a, 0x11, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x4d, 0x73, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x20, 0x0a, 0x0b, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0c, 0x52, 0x0b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x12, 0x20, - 0x0a, 0x0b, 0x48, 0x6f, 0x73, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x48, 0x6f, 0x73, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, - 0x12, 0x38, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, - 0x64, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0b, 0x73, - 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x61, 0x0a, 0x0d, 0x57, 0x69, - 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x4d, 0x73, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x61, - 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x61, 0x6d, 0x6f, - 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, - 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0c, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x32, 0xaf, 0x13, - 0x0a, 0x0c, 0x45, 0x6e, 0x63, 0x6c, 0x61, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x3f, - 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, - 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x4e, 0x0a, 0x0b, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, - 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x41, 0x74, 0x74, 0x65, 0x73, - 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, - 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x57, 0x0a, 0x0e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x53, 0x65, 0x63, 0x72, 0x65, - 0x74, 0x12, 0x20, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x47, 0x65, - 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, - 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x0b, 0x49, 0x6e, 0x69, 0x74, - 0x45, 0x6e, 0x63, 0x6c, 0x61, 0x76, 0x65, 0x12, 0x1d, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, - 0x74, 0x65, 0x64, 0x2e, 0x49, 0x6e, 0x69, 0x74, 0x45, 0x6e, 0x63, 0x6c, 0x61, 0x76, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, - 0x65, 0x64, 0x2e, 0x49, 0x6e, 0x69, 0x74, 0x45, 0x6e, 0x63, 0x6c, 0x61, 0x76, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x50, 0x0a, 0x0d, 0x53, 0x75, 0x62, 0x6d, - 0x69, 0x74, 0x4c, 0x31, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x1d, 0x2e, 0x67, 0x65, 0x6e, 0x65, - 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x42, 0x6c, 0x6f, 0x63, - 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, - 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x45, 0x0a, 0x08, 0x53, 0x75, - 0x62, 0x6d, 0x69, 0x74, 0x54, 0x78, 0x12, 0x1a, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, - 0x65, 0x64, 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x54, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, - 0x75, 0x62, 0x6d, 0x69, 0x74, 0x54, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x4e, 0x0a, 0x0b, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, - 0x12, 0x1d, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x75, 0x62, - 0x6d, 0x69, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x1e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x75, 0x62, 0x6d, - 0x69, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x42, 0x0a, 0x07, 0x4f, 0x62, 0x73, 0x43, 0x61, 0x6c, 0x6c, 0x12, 0x19, 0x2e, 0x67, + 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x1d, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x49, + 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x43, 0x68, 0x61, 0x69, 0x6e, + 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x40, 0x0a, 0x1b, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, + 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x43, 0x68, 0x61, 0x69, + 0x6e, 0x48, 0x61, 0x73, 0x68, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x1b, 0x4c, 0x61, 0x74, + 0x65, 0x73, 0x74, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x43, + 0x68, 0x61, 0x69, 0x6e, 0x48, 0x61, 0x73, 0x68, 0x12, 0x48, 0x0a, 0x12, 0x43, 0x72, 0x6f, 0x73, + 0x73, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x11, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, + 0x2e, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x4d, 0x73, 0x67, 0x52, 0x12, + 0x43, 0x72, 0x6f, 0x73, 0x73, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x73, 0x22, 0x8c, 0x01, 0x0a, 0x0c, 0x45, 0x78, 0x74, 0x52, 0x6f, 0x6c, 0x6c, 0x75, 0x70, + 0x4d, 0x73, 0x67, 0x12, 0x32, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, + 0x52, 0x6f, 0x6c, 0x6c, 0x75, 0x70, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x52, + 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x24, 0x0a, 0x0d, 0x62, 0x61, 0x74, 0x63, 0x68, + 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d, + 0x62, 0x61, 0x74, 0x63, 0x68, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x12, 0x22, 0x0a, + 0x0c, 0x62, 0x61, 0x74, 0x63, 0x68, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x62, 0x61, 0x74, 0x63, 0x68, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x73, 0x22, 0xbf, 0x02, 0x0a, 0x0f, 0x52, 0x6f, 0x6c, 0x6c, 0x75, 0x70, 0x48, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x48, + 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x50, 0x61, 0x72, 0x65, 0x6e, + 0x74, 0x48, 0x61, 0x73, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x12, 0x20, 0x0a, 0x0b, 0x50, + 0x72, 0x6f, 0x6f, 0x66, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x0b, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x16, 0x0a, + 0x06, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x4e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x04, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x6f, 0x69, + 0x6e, 0x62, 0x61, 0x73, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x43, 0x6f, 0x69, + 0x6e, 0x62, 0x61, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x12, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x43, 0x68, + 0x61, 0x69, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x43, 0x72, + 0x6f, 0x73, 0x73, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x4d, 0x73, 0x67, 0x52, 0x12, 0x43, 0x72, 0x6f, + 0x73, 0x73, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, + 0x0c, 0x0a, 0x01, 0x52, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x01, 0x52, 0x12, 0x0c, 0x0a, + 0x01, 0x53, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x01, 0x53, 0x12, 0x26, 0x0a, 0x0e, 0x4c, + 0x61, 0x73, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x53, 0x65, 0x71, 0x4e, 0x6f, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x0e, 0x4c, 0x61, 0x73, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x53, 0x65, + 0x71, 0x4e, 0x6f, 0x22, 0xa9, 0x01, 0x0a, 0x11, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x73, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x65, 0x63, + 0x72, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x53, 0x65, 0x63, 0x72, 0x65, + 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, + 0x72, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x48, 0x6f, 0x73, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x48, 0x6f, 0x73, 0x74, 0x41, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x38, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, + 0x72, 0x72, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x65, 0x6e, + 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, + 0x6f, 0x72, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, + 0x61, 0x0a, 0x0d, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x4d, 0x73, 0x67, + 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x63, 0x69, + 0x70, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x72, 0x65, 0x63, + 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, + 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, + 0x63, 0x74, 0x32, 0xf0, 0x13, 0x0a, 0x0c, 0x45, 0x6e, 0x63, 0x6c, 0x61, 0x76, 0x65, 0x50, 0x72, + 0x6f, 0x74, 0x6f, 0x12, 0x3f, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, 0x2e, + 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, + 0x74, 0x65, 0x64, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x0b, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, + 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x41, + 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x57, 0x0a, 0x0e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, + 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x20, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, + 0x65, 0x64, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x53, 0x65, 0x63, 0x72, 0x65, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, + 0x61, 0x74, 0x65, 0x64, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x53, 0x65, 0x63, + 0x72, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4e, 0x0a, + 0x0b, 0x49, 0x6e, 0x69, 0x74, 0x45, 0x6e, 0x63, 0x6c, 0x61, 0x76, 0x65, 0x12, 0x1d, 0x2e, 0x67, + 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x49, 0x6e, 0x69, 0x74, 0x45, 0x6e, 0x63, + 0x6c, 0x61, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x67, 0x65, + 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x49, 0x6e, 0x69, 0x74, 0x45, 0x6e, 0x63, 0x6c, + 0x61, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x50, 0x0a, + 0x0d, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x4c, 0x31, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x1d, + 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69, + 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, + 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, + 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, + 0x45, 0x0a, 0x08, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x54, 0x78, 0x12, 0x1a, 0x2e, 0x67, 0x65, + 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x54, 0x78, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, + 0x74, 0x65, 0x64, 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x54, 0x78, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x0b, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, + 0x42, 0x61, 0x74, 0x63, 0x68, 0x12, 0x1d, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, + 0x64, 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, + 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x07, 0x4f, 0x62, 0x73, 0x43, 0x61, 0x6c, + 0x6c, 0x12, 0x19, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x4f, 0x62, + 0x73, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x4f, 0x62, 0x73, 0x43, 0x61, 0x6c, 0x6c, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x66, 0x0a, 0x13, 0x47, 0x65, + 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x12, 0x25, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x47, 0x65, + 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, + 0x61, 0x74, 0x65, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x39, 0x0a, 0x04, 0x53, 0x74, 0x6f, 0x70, 0x12, 0x16, 0x2e, 0x67, 0x65, 0x6e, + 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, + 0x74, 0x6f, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x57, 0x0a, + 0x0e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x20, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x21, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x47, 0x65, + 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6c, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, + 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x12, + 0x27, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, + 0x61, 0x74, 0x65, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, + 0x63, 0x65, 0x12, 0x1c, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x47, + 0x65, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x1d, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x47, 0x65, 0x74, + 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x00, 0x12, 0x42, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x19, 0x2e, 0x67, + 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, - 0x74, 0x65, 0x64, 0x2e, 0x4f, 0x62, 0x73, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x66, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, - 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x25, 0x2e, 0x67, - 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, - 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, - 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x39, 0x0a, - 0x04, 0x53, 0x74, 0x6f, 0x70, 0x12, 0x16, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, - 0x64, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, - 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x57, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x54, - 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x2e, 0x67, 0x65, 0x6e, - 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x67, - 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, - 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x6c, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x12, 0x27, 0x2e, 0x67, 0x65, 0x6e, - 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, - 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x63, 0x65, 0x69, 0x70, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x4b, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1c, 0x2e, - 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x61, 0x6c, - 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x65, - 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, - 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x07, - 0x47, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x19, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, - 0x74, 0x65, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x47, - 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x48, 0x0a, 0x09, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x12, 0x1b, 0x2e, - 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, - 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x67, 0x65, 0x6e, - 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x0b, 0x55, 0x6e, - 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x12, 0x1d, 0x2e, 0x67, 0x65, 0x6e, 0x65, - 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x55, 0x6e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, - 0x61, 0x74, 0x65, 0x64, 0x2e, 0x55, 0x6e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x0b, 0x45, 0x73, - 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x47, 0x61, 0x73, 0x12, 0x1d, 0x2e, 0x67, 0x65, 0x6e, 0x65, - 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x47, 0x61, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, - 0x61, 0x74, 0x65, 0x64, 0x2e, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x47, 0x61, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x07, 0x47, 0x65, - 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x19, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, - 0x64, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x1a, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x47, 0x65, 0x74, - 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x45, - 0x0a, 0x0b, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x14, 0x2e, - 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x41, - 0x72, 0x67, 0x73, 0x1a, 0x1e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, - 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x45, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x42, 0x61, 0x74, 0x63, - 0x68, 0x12, 0x1a, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x47, 0x65, - 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, - 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x61, 0x74, - 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x53, 0x0a, 0x0f, - 0x47, 0x65, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x42, 0x79, 0x53, 0x65, 0x71, 0x4e, 0x6f, 0x12, - 0x21, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x42, - 0x61, 0x74, 0x63, 0x68, 0x42, 0x79, 0x53, 0x65, 0x71, 0x4e, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x74, 0x65, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x48, 0x0a, 0x09, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, + 0x62, 0x65, 0x12, 0x1b, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, + 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x1c, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x75, 0x62, 0x73, + 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, + 0x4e, 0x0a, 0x0b, 0x55, 0x6e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x12, 0x1d, + 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x55, 0x6e, 0x73, 0x75, 0x62, + 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, + 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x55, 0x6e, 0x73, 0x75, 0x62, 0x73, + 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, + 0x4e, 0x0a, 0x0b, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x47, 0x61, 0x73, 0x12, 0x1d, + 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x45, 0x73, 0x74, 0x69, 0x6d, + 0x61, 0x74, 0x65, 0x47, 0x61, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, + 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, + 0x74, 0x65, 0x47, 0x61, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, + 0x42, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x19, 0x2e, 0x67, 0x65, 0x6e, + 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, + 0x64, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x12, 0x45, 0x0a, 0x0b, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, + 0x63, 0x6b, 0x12, 0x14, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x45, + 0x6d, 0x70, 0x74, 0x79, 0x41, 0x72, 0x67, 0x73, 0x1a, 0x1e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, + 0x61, 0x74, 0x65, 0x64, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x45, 0x0a, 0x08, 0x47, 0x65, + 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x12, 0x1a, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, + 0x65, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x4e, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, - 0x12, 0x1d, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x1e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x51, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x6c, 0x75, - 0x70, 0x12, 0x1e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x6c, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x1f, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x6c, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x6c, 0x0a, 0x15, 0x44, 0x65, 0x62, 0x75, 0x67, 0x54, 0x72, 0x61, - 0x63, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x2e, - 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x44, 0x65, 0x62, 0x75, 0x67, 0x54, - 0x72, 0x61, 0x63, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x00, 0x12, 0x53, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x42, 0x79, 0x53, + 0x65, 0x71, 0x4e, 0x6f, 0x12, 0x21, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, + 0x2e, 0x47, 0x65, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x42, 0x79, 0x53, 0x65, 0x71, 0x4e, 0x6f, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, + 0x74, 0x65, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x42, 0x61, 0x74, 0x63, 0x68, 0x12, 0x1d, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, + 0x64, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, + 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x51, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x52, 0x6f, 0x6c, 0x6c, 0x75, 0x70, 0x12, 0x1e, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, + 0x65, 0x64, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x6c, 0x75, 0x70, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, + 0x65, 0x64, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x6c, 0x75, 0x70, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6c, 0x0a, 0x15, 0x44, 0x65, 0x62, + 0x75, 0x67, 0x54, 0x72, 0x61, 0x63, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x27, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x44, + 0x65, 0x62, 0x75, 0x67, 0x54, 0x72, 0x61, 0x63, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x67, 0x65, + 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x44, 0x65, 0x62, 0x75, 0x67, 0x54, 0x72, 0x61, + 0x63, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5a, 0x0a, 0x0f, 0x53, 0x74, 0x72, 0x65, 0x61, + 0x6d, 0x4c, 0x32, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x12, 0x21, 0x2e, 0x67, 0x65, 0x6e, + 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4c, 0x32, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, + 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x65, + 0x64, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x00, 0x30, 0x01, 0x12, 0x6f, 0x0a, 0x16, 0x44, 0x65, 0x62, 0x75, 0x67, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x4c, 0x6f, 0x67, 0x52, 0x65, 0x6c, 0x65, 0x76, 0x61, 0x6e, 0x63, 0x79, 0x12, 0x28, 0x2e, + 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x44, 0x65, 0x62, 0x75, 0x67, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x67, 0x52, 0x65, 0x6c, 0x65, 0x76, 0x61, 0x6e, 0x63, 0x79, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, + 0x74, 0x65, 0x64, 0x2e, 0x44, 0x65, 0x62, 0x75, 0x67, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4c, 0x6f, + 0x67, 0x52, 0x65, 0x6c, 0x65, 0x76, 0x61, 0x6e, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x6c, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x74, 0x61, 0x6c, + 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x27, 0x2e, + 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x74, + 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, - 0x65, 0x64, 0x2e, 0x44, 0x65, 0x62, 0x75, 0x67, 0x54, 0x72, 0x61, 0x63, 0x65, 0x54, 0x72, 0x61, - 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x5a, 0x0a, 0x0f, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4c, 0x32, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x73, 0x12, 0x21, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, - 0x64, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4c, 0x32, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, - 0x61, 0x74, 0x65, 0x64, 0x2e, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x6f, - 0x0a, 0x16, 0x44, 0x65, 0x62, 0x75, 0x67, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x67, 0x52, - 0x65, 0x6c, 0x65, 0x76, 0x61, 0x6e, 0x63, 0x79, 0x12, 0x28, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, - 0x61, 0x74, 0x65, 0x64, 0x2e, 0x44, 0x65, 0x62, 0x75, 0x67, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4c, - 0x6f, 0x67, 0x52, 0x65, 0x6c, 0x65, 0x76, 0x61, 0x6e, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x44, - 0x65, 0x62, 0x75, 0x67, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x67, 0x52, 0x65, 0x6c, 0x65, - 0x76, 0x61, 0x6e, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x6c, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x74, 0x72, - 0x61, 0x63, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x27, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, - 0x61, 0x74, 0x65, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x6e, - 0x74, 0x72, 0x61, 0x63, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x28, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x47, 0x65, - 0x74, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x69, 0x0a, - 0x14, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x73, 0x42, 0x79, 0x41, 0x64, - 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x26, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, - 0x64, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x73, 0x42, 0x79, 0x41, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, - 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63, - 0x65, 0x69, 0x70, 0x74, 0x73, 0x42, 0x79, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x75, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x50, - 0x75, 0x62, 0x6c, 0x69, 0x63, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x44, 0x61, 0x74, 0x61, 0x12, 0x2a, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, - 0x2e, 0x47, 0x65, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x2b, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x47, 0x65, 0x74, - 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, - 0x17, 0x5a, 0x15, 0x65, 0x6e, 0x63, 0x6c, 0x61, 0x76, 0x65, 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x67, - 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x65, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x74, 0x72, + 0x61, 0x63, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x69, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, + 0x73, 0x42, 0x79, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x26, 0x2e, 0x67, 0x65, 0x6e, + 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, + 0x74, 0x73, 0x42, 0x79, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x47, + 0x65, 0x74, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x73, 0x42, 0x79, 0x41, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x75, 0x0a, + 0x18, 0x47, 0x65, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2a, 0x2e, 0x67, 0x65, 0x6e, 0x65, + 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, + 0x64, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x3f, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x18, + 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, + 0x61, 0x74, 0x65, 0x64, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x17, 0x5a, 0x15, 0x65, 0x6e, 0x63, 0x6c, 0x61, 0x76, 0x65, + 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -4506,184 +4611,189 @@ func file_enclave_proto_rawDescGZIP() []byte { return file_enclave_proto_rawDescData } -var file_enclave_proto_msgTypes = make([]protoimpl.MessageInfo, 71) +var file_enclave_proto_msgTypes = make([]protoimpl.MessageInfo, 73) var file_enclave_proto_goTypes = []interface{}{ - (*GetPublicTransactionDataRequest)(nil), // 0: generated.GetPublicTransactionDataRequest - (*GetPublicTransactionDataResponse)(nil), // 1: generated.GetPublicTransactionDataResponse - (*GetReceiptsByAddressRequest)(nil), // 2: generated.GetReceiptsByAddressRequest - (*GetReceiptsByAddressResponse)(nil), // 3: generated.GetReceiptsByAddressResponse - (*GetBatchRequest)(nil), // 4: generated.GetBatchRequest - (*GetBatchBySeqNoRequest)(nil), // 5: generated.GetBatchBySeqNoRequest - (*GetBatchResponse)(nil), // 6: generated.GetBatchResponse - (*StreamL2UpdatesRequest)(nil), // 7: generated.StreamL2UpdatesRequest - (*EncodedUpdateResponse)(nil), // 8: generated.EncodedUpdateResponse - (*Pagination)(nil), // 9: generated.Pagination - (*SystemError)(nil), // 10: generated.SystemError - (*GetTotalContractCountRequest)(nil), // 11: generated.GetTotalContractCountRequest - (*GetTotalContractCountResponse)(nil), // 12: generated.GetTotalContractCountResponse - (*DebugEventLogRelevancyRequest)(nil), // 13: generated.DebugEventLogRelevancyRequest - (*DebugEventLogRelevancyResponse)(nil), // 14: generated.DebugEventLogRelevancyResponse - (*DebugTraceTransactionRequest)(nil), // 15: generated.DebugTraceTransactionRequest - (*DebugTraceTransactionResponse)(nil), // 16: generated.DebugTraceTransactionResponse - (*CreateBatchRequest)(nil), // 17: generated.CreateBatchRequest - (*CreateBatchResponse)(nil), // 18: generated.CreateBatchResponse - (*CreateRollupRequest)(nil), // 19: generated.CreateRollupRequest - (*CreateRollupResponse)(nil), // 20: generated.CreateRollupResponse - (*StatusRequest)(nil), // 21: generated.StatusRequest - (*StatusResponse)(nil), // 22: generated.StatusResponse - (*AttestationRequest)(nil), // 23: generated.AttestationRequest - (*AttestationResponse)(nil), // 24: generated.AttestationResponse - (*GenerateSecretRequest)(nil), // 25: generated.GenerateSecretRequest - (*GenerateSecretResponse)(nil), // 26: generated.GenerateSecretResponse - (*InitEnclaveRequest)(nil), // 27: generated.InitEnclaveRequest - (*InitEnclaveResponse)(nil), // 28: generated.InitEnclaveResponse - (*StartRequest)(nil), // 29: generated.StartRequest - (*StartResponse)(nil), // 30: generated.StartResponse - (*SubmitBlockRequest)(nil), // 31: generated.SubmitBlockRequest - (*SubmitBlockResponse)(nil), // 32: generated.SubmitBlockResponse - (*SubmitTxRequest)(nil), // 33: generated.SubmitTxRequest - (*SubmitTxResponse)(nil), // 34: generated.SubmitTxResponse - (*SubmitBatchRequest)(nil), // 35: generated.SubmitBatchRequest - (*SubmitBatchResponse)(nil), // 36: generated.SubmitBatchResponse - (*ObsCallRequest)(nil), // 37: generated.ObsCallRequest - (*ObsCallResponse)(nil), // 38: generated.ObsCallResponse - (*GetTransactionCountRequest)(nil), // 39: generated.GetTransactionCountRequest - (*GetTransactionCountResponse)(nil), // 40: generated.GetTransactionCountResponse - (*StopRequest)(nil), // 41: generated.StopRequest - (*StopResponse)(nil), // 42: generated.StopResponse - (*GetTransactionRequest)(nil), // 43: generated.GetTransactionRequest - (*GetTransactionResponse)(nil), // 44: generated.GetTransactionResponse - (*GetTransactionReceiptRequest)(nil), // 45: generated.GetTransactionReceiptRequest - (*GetTransactionReceiptResponse)(nil), // 46: generated.GetTransactionReceiptResponse - (*GetBalanceRequest)(nil), // 47: generated.GetBalanceRequest - (*GetBalanceResponse)(nil), // 48: generated.GetBalanceResponse - (*GetCodeRequest)(nil), // 49: generated.GetCodeRequest - (*GetCodeResponse)(nil), // 50: generated.GetCodeResponse - (*SubscribeRequest)(nil), // 51: generated.SubscribeRequest - (*SubscribeResponse)(nil), // 52: generated.SubscribeResponse - (*UnsubscribeRequest)(nil), // 53: generated.UnsubscribeRequest - (*UnsubscribeResponse)(nil), // 54: generated.UnsubscribeResponse - (*EstimateGasRequest)(nil), // 55: generated.EstimateGasRequest - (*EstimateGasResponse)(nil), // 56: generated.EstimateGasResponse - (*GetLogsRequest)(nil), // 57: generated.GetLogsRequest - (*GetLogsResponse)(nil), // 58: generated.GetLogsResponse - (*HealthCheckResponse)(nil), // 59: generated.HealthCheckResponse - (*EmptyArgs)(nil), // 60: generated.EmptyArgs - (*AttestationReportMsg)(nil), // 61: generated.AttestationReportMsg - (*BlockSubmissionResponseMsg)(nil), // 62: generated.BlockSubmissionResponseMsg - (*BlockSubmissionErrorMsg)(nil), // 63: generated.BlockSubmissionErrorMsg - (*CrossChainMsg)(nil), // 64: generated.CrossChainMsg - (*ExtBatchMsg)(nil), // 65: generated.ExtBatchMsg - (*BatchHeaderMsg)(nil), // 66: generated.BatchHeaderMsg - (*ExtRollupMsg)(nil), // 67: generated.ExtRollupMsg - (*RollupHeaderMsg)(nil), // 68: generated.RollupHeaderMsg - (*SecretResponseMsg)(nil), // 69: generated.SecretResponseMsg - (*WithdrawalMsg)(nil), // 70: generated.WithdrawalMsg + (*ConfigRequest)(nil), // 0: generated.ConfigRequest + (*ConfigResponse)(nil), // 1: generated.ConfigResponse + (*GetPublicTransactionDataRequest)(nil), // 2: generated.GetPublicTransactionDataRequest + (*GetPublicTransactionDataResponse)(nil), // 3: generated.GetPublicTransactionDataResponse + (*GetReceiptsByAddressRequest)(nil), // 4: generated.GetReceiptsByAddressRequest + (*GetReceiptsByAddressResponse)(nil), // 5: generated.GetReceiptsByAddressResponse + (*GetBatchRequest)(nil), // 6: generated.GetBatchRequest + (*GetBatchBySeqNoRequest)(nil), // 7: generated.GetBatchBySeqNoRequest + (*GetBatchResponse)(nil), // 8: generated.GetBatchResponse + (*StreamL2UpdatesRequest)(nil), // 9: generated.StreamL2UpdatesRequest + (*EncodedUpdateResponse)(nil), // 10: generated.EncodedUpdateResponse + (*Pagination)(nil), // 11: generated.Pagination + (*SystemError)(nil), // 12: generated.SystemError + (*GetTotalContractCountRequest)(nil), // 13: generated.GetTotalContractCountRequest + (*GetTotalContractCountResponse)(nil), // 14: generated.GetTotalContractCountResponse + (*DebugEventLogRelevancyRequest)(nil), // 15: generated.DebugEventLogRelevancyRequest + (*DebugEventLogRelevancyResponse)(nil), // 16: generated.DebugEventLogRelevancyResponse + (*DebugTraceTransactionRequest)(nil), // 17: generated.DebugTraceTransactionRequest + (*DebugTraceTransactionResponse)(nil), // 18: generated.DebugTraceTransactionResponse + (*CreateBatchRequest)(nil), // 19: generated.CreateBatchRequest + (*CreateBatchResponse)(nil), // 20: generated.CreateBatchResponse + (*CreateRollupRequest)(nil), // 21: generated.CreateRollupRequest + (*CreateRollupResponse)(nil), // 22: generated.CreateRollupResponse + (*StatusRequest)(nil), // 23: generated.StatusRequest + (*StatusResponse)(nil), // 24: generated.StatusResponse + (*AttestationRequest)(nil), // 25: generated.AttestationRequest + (*AttestationResponse)(nil), // 26: generated.AttestationResponse + (*GenerateSecretRequest)(nil), // 27: generated.GenerateSecretRequest + (*GenerateSecretResponse)(nil), // 28: generated.GenerateSecretResponse + (*InitEnclaveRequest)(nil), // 29: generated.InitEnclaveRequest + (*InitEnclaveResponse)(nil), // 30: generated.InitEnclaveResponse + (*StartRequest)(nil), // 31: generated.StartRequest + (*StartResponse)(nil), // 32: generated.StartResponse + (*SubmitBlockRequest)(nil), // 33: generated.SubmitBlockRequest + (*SubmitBlockResponse)(nil), // 34: generated.SubmitBlockResponse + (*SubmitTxRequest)(nil), // 35: generated.SubmitTxRequest + (*SubmitTxResponse)(nil), // 36: generated.SubmitTxResponse + (*SubmitBatchRequest)(nil), // 37: generated.SubmitBatchRequest + (*SubmitBatchResponse)(nil), // 38: generated.SubmitBatchResponse + (*ObsCallRequest)(nil), // 39: generated.ObsCallRequest + (*ObsCallResponse)(nil), // 40: generated.ObsCallResponse + (*GetTransactionCountRequest)(nil), // 41: generated.GetTransactionCountRequest + (*GetTransactionCountResponse)(nil), // 42: generated.GetTransactionCountResponse + (*StopRequest)(nil), // 43: generated.StopRequest + (*StopResponse)(nil), // 44: generated.StopResponse + (*GetTransactionRequest)(nil), // 45: generated.GetTransactionRequest + (*GetTransactionResponse)(nil), // 46: generated.GetTransactionResponse + (*GetTransactionReceiptRequest)(nil), // 47: generated.GetTransactionReceiptRequest + (*GetTransactionReceiptResponse)(nil), // 48: generated.GetTransactionReceiptResponse + (*GetBalanceRequest)(nil), // 49: generated.GetBalanceRequest + (*GetBalanceResponse)(nil), // 50: generated.GetBalanceResponse + (*GetCodeRequest)(nil), // 51: generated.GetCodeRequest + (*GetCodeResponse)(nil), // 52: generated.GetCodeResponse + (*SubscribeRequest)(nil), // 53: generated.SubscribeRequest + (*SubscribeResponse)(nil), // 54: generated.SubscribeResponse + (*UnsubscribeRequest)(nil), // 55: generated.UnsubscribeRequest + (*UnsubscribeResponse)(nil), // 56: generated.UnsubscribeResponse + (*EstimateGasRequest)(nil), // 57: generated.EstimateGasRequest + (*EstimateGasResponse)(nil), // 58: generated.EstimateGasResponse + (*GetLogsRequest)(nil), // 59: generated.GetLogsRequest + (*GetLogsResponse)(nil), // 60: generated.GetLogsResponse + (*HealthCheckResponse)(nil), // 61: generated.HealthCheckResponse + (*EmptyArgs)(nil), // 62: generated.EmptyArgs + (*AttestationReportMsg)(nil), // 63: generated.AttestationReportMsg + (*BlockSubmissionResponseMsg)(nil), // 64: generated.BlockSubmissionResponseMsg + (*BlockSubmissionErrorMsg)(nil), // 65: generated.BlockSubmissionErrorMsg + (*CrossChainMsg)(nil), // 66: generated.CrossChainMsg + (*ExtBatchMsg)(nil), // 67: generated.ExtBatchMsg + (*BatchHeaderMsg)(nil), // 68: generated.BatchHeaderMsg + (*ExtRollupMsg)(nil), // 69: generated.ExtRollupMsg + (*RollupHeaderMsg)(nil), // 70: generated.RollupHeaderMsg + (*SecretResponseMsg)(nil), // 71: generated.SecretResponseMsg + (*WithdrawalMsg)(nil), // 72: generated.WithdrawalMsg } var file_enclave_proto_depIdxs = []int32{ - 9, // 0: generated.GetPublicTransactionDataRequest.pagination:type_name -> generated.Pagination - 10, // 1: generated.GetPublicTransactionDataResponse.systemError:type_name -> generated.SystemError - 10, // 2: generated.GetReceiptsByAddressResponse.systemError:type_name -> generated.SystemError - 10, // 3: generated.GetBatchResponse.systemError:type_name -> generated.SystemError - 10, // 4: generated.GetTotalContractCountResponse.systemError:type_name -> generated.SystemError - 10, // 5: generated.DebugEventLogRelevancyResponse.systemError:type_name -> generated.SystemError - 10, // 6: generated.DebugTraceTransactionResponse.systemError:type_name -> generated.SystemError - 67, // 7: generated.CreateRollupResponse.msg:type_name -> generated.ExtRollupMsg - 10, // 8: generated.CreateRollupResponse.systemError:type_name -> generated.SystemError - 10, // 9: generated.StatusResponse.systemError:type_name -> generated.SystemError - 61, // 10: generated.AttestationResponse.attestationReportMsg:type_name -> generated.AttestationReportMsg - 10, // 11: generated.AttestationResponse.systemError:type_name -> generated.SystemError - 10, // 12: generated.GenerateSecretResponse.systemError:type_name -> generated.SystemError - 10, // 13: generated.InitEnclaveResponse.systemError:type_name -> generated.SystemError - 10, // 14: generated.StartResponse.systemError:type_name -> generated.SystemError - 62, // 15: generated.SubmitBlockResponse.blockSubmissionResponse:type_name -> generated.BlockSubmissionResponseMsg - 10, // 16: generated.SubmitBlockResponse.systemError:type_name -> generated.SystemError - 10, // 17: generated.SubmitTxResponse.systemError:type_name -> generated.SystemError - 65, // 18: generated.SubmitBatchRequest.batch:type_name -> generated.ExtBatchMsg - 10, // 19: generated.SubmitBatchResponse.systemError:type_name -> generated.SystemError - 10, // 20: generated.ObsCallResponse.systemError:type_name -> generated.SystemError - 10, // 21: generated.GetTransactionCountResponse.systemError:type_name -> generated.SystemError - 10, // 22: generated.StopResponse.systemError:type_name -> generated.SystemError - 10, // 23: generated.GetTransactionResponse.systemError:type_name -> generated.SystemError - 10, // 24: generated.GetTransactionReceiptResponse.systemError:type_name -> generated.SystemError - 10, // 25: generated.GetBalanceResponse.systemError:type_name -> generated.SystemError - 10, // 26: generated.GetCodeResponse.systemError:type_name -> generated.SystemError - 10, // 27: generated.SubscribeResponse.systemError:type_name -> generated.SystemError - 10, // 28: generated.UnsubscribeResponse.systemError:type_name -> generated.SystemError - 10, // 29: generated.EstimateGasResponse.systemError:type_name -> generated.SystemError - 10, // 30: generated.GetLogsResponse.systemError:type_name -> generated.SystemError - 10, // 31: generated.HealthCheckResponse.systemError:type_name -> generated.SystemError - 10, // 32: generated.AttestationReportMsg.systemError:type_name -> generated.SystemError - 69, // 33: generated.BlockSubmissionResponseMsg.producedSecretResponses:type_name -> generated.SecretResponseMsg - 63, // 34: generated.BlockSubmissionResponseMsg.error:type_name -> generated.BlockSubmissionErrorMsg - 66, // 35: generated.ExtBatchMsg.header:type_name -> generated.BatchHeaderMsg - 64, // 36: generated.BatchHeaderMsg.CrossChainMessages:type_name -> generated.CrossChainMsg - 68, // 37: generated.ExtRollupMsg.header:type_name -> generated.RollupHeaderMsg - 64, // 38: generated.RollupHeaderMsg.CrossChainMessages:type_name -> generated.CrossChainMsg - 10, // 39: generated.SecretResponseMsg.systemError:type_name -> generated.SystemError - 21, // 40: generated.EnclaveProto.Status:input_type -> generated.StatusRequest - 23, // 41: generated.EnclaveProto.Attestation:input_type -> generated.AttestationRequest - 25, // 42: generated.EnclaveProto.GenerateSecret:input_type -> generated.GenerateSecretRequest - 27, // 43: generated.EnclaveProto.InitEnclave:input_type -> generated.InitEnclaveRequest - 31, // 44: generated.EnclaveProto.SubmitL1Block:input_type -> generated.SubmitBlockRequest - 33, // 45: generated.EnclaveProto.SubmitTx:input_type -> generated.SubmitTxRequest - 35, // 46: generated.EnclaveProto.SubmitBatch:input_type -> generated.SubmitBatchRequest - 37, // 47: generated.EnclaveProto.ObsCall:input_type -> generated.ObsCallRequest - 39, // 48: generated.EnclaveProto.GetTransactionCount:input_type -> generated.GetTransactionCountRequest - 41, // 49: generated.EnclaveProto.Stop:input_type -> generated.StopRequest - 43, // 50: generated.EnclaveProto.GetTransaction:input_type -> generated.GetTransactionRequest - 45, // 51: generated.EnclaveProto.GetTransactionReceipt:input_type -> generated.GetTransactionReceiptRequest - 47, // 52: generated.EnclaveProto.GetBalance:input_type -> generated.GetBalanceRequest - 49, // 53: generated.EnclaveProto.GetCode:input_type -> generated.GetCodeRequest - 51, // 54: generated.EnclaveProto.Subscribe:input_type -> generated.SubscribeRequest - 53, // 55: generated.EnclaveProto.Unsubscribe:input_type -> generated.UnsubscribeRequest - 55, // 56: generated.EnclaveProto.EstimateGas:input_type -> generated.EstimateGasRequest - 57, // 57: generated.EnclaveProto.GetLogs:input_type -> generated.GetLogsRequest - 60, // 58: generated.EnclaveProto.HealthCheck:input_type -> generated.EmptyArgs - 4, // 59: generated.EnclaveProto.GetBatch:input_type -> generated.GetBatchRequest - 5, // 60: generated.EnclaveProto.GetBatchBySeqNo:input_type -> generated.GetBatchBySeqNoRequest - 17, // 61: generated.EnclaveProto.CreateBatch:input_type -> generated.CreateBatchRequest - 19, // 62: generated.EnclaveProto.CreateRollup:input_type -> generated.CreateRollupRequest - 15, // 63: generated.EnclaveProto.DebugTraceTransaction:input_type -> generated.DebugTraceTransactionRequest - 7, // 64: generated.EnclaveProto.StreamL2Updates:input_type -> generated.StreamL2UpdatesRequest - 13, // 65: generated.EnclaveProto.DebugEventLogRelevancy:input_type -> generated.DebugEventLogRelevancyRequest - 11, // 66: generated.EnclaveProto.GetTotalContractCount:input_type -> generated.GetTotalContractCountRequest - 2, // 67: generated.EnclaveProto.GetReceiptsByAddress:input_type -> generated.GetReceiptsByAddressRequest - 0, // 68: generated.EnclaveProto.GetPublicTransactionData:input_type -> generated.GetPublicTransactionDataRequest - 22, // 69: generated.EnclaveProto.Status:output_type -> generated.StatusResponse - 24, // 70: generated.EnclaveProto.Attestation:output_type -> generated.AttestationResponse - 26, // 71: generated.EnclaveProto.GenerateSecret:output_type -> generated.GenerateSecretResponse - 28, // 72: generated.EnclaveProto.InitEnclave:output_type -> generated.InitEnclaveResponse - 32, // 73: generated.EnclaveProto.SubmitL1Block:output_type -> generated.SubmitBlockResponse - 34, // 74: generated.EnclaveProto.SubmitTx:output_type -> generated.SubmitTxResponse - 36, // 75: generated.EnclaveProto.SubmitBatch:output_type -> generated.SubmitBatchResponse - 38, // 76: generated.EnclaveProto.ObsCall:output_type -> generated.ObsCallResponse - 40, // 77: generated.EnclaveProto.GetTransactionCount:output_type -> generated.GetTransactionCountResponse - 42, // 78: generated.EnclaveProto.Stop:output_type -> generated.StopResponse - 44, // 79: generated.EnclaveProto.GetTransaction:output_type -> generated.GetTransactionResponse - 46, // 80: generated.EnclaveProto.GetTransactionReceipt:output_type -> generated.GetTransactionReceiptResponse - 48, // 81: generated.EnclaveProto.GetBalance:output_type -> generated.GetBalanceResponse - 50, // 82: generated.EnclaveProto.GetCode:output_type -> generated.GetCodeResponse - 52, // 83: generated.EnclaveProto.Subscribe:output_type -> generated.SubscribeResponse - 54, // 84: generated.EnclaveProto.Unsubscribe:output_type -> generated.UnsubscribeResponse - 56, // 85: generated.EnclaveProto.EstimateGas:output_type -> generated.EstimateGasResponse - 58, // 86: generated.EnclaveProto.GetLogs:output_type -> generated.GetLogsResponse - 59, // 87: generated.EnclaveProto.HealthCheck:output_type -> generated.HealthCheckResponse - 6, // 88: generated.EnclaveProto.GetBatch:output_type -> generated.GetBatchResponse - 6, // 89: generated.EnclaveProto.GetBatchBySeqNo:output_type -> generated.GetBatchResponse - 18, // 90: generated.EnclaveProto.CreateBatch:output_type -> generated.CreateBatchResponse - 20, // 91: generated.EnclaveProto.CreateRollup:output_type -> generated.CreateRollupResponse - 16, // 92: generated.EnclaveProto.DebugTraceTransaction:output_type -> generated.DebugTraceTransactionResponse - 8, // 93: generated.EnclaveProto.StreamL2Updates:output_type -> generated.EncodedUpdateResponse - 14, // 94: generated.EnclaveProto.DebugEventLogRelevancy:output_type -> generated.DebugEventLogRelevancyResponse - 12, // 95: generated.EnclaveProto.GetTotalContractCount:output_type -> generated.GetTotalContractCountResponse - 3, // 96: generated.EnclaveProto.GetReceiptsByAddress:output_type -> generated.GetReceiptsByAddressResponse - 1, // 97: generated.EnclaveProto.GetPublicTransactionData:output_type -> generated.GetPublicTransactionDataResponse - 69, // [69:98] is the sub-list for method output_type - 40, // [40:69] is the sub-list for method input_type - 40, // [40:40] is the sub-list for extension type_name - 40, // [40:40] is the sub-list for extension extendee - 0, // [0:40] is the sub-list for field type_name + 12, // 0: generated.ConfigResponse.systemError:type_name -> generated.SystemError + 11, // 1: generated.GetPublicTransactionDataRequest.pagination:type_name -> generated.Pagination + 12, // 2: generated.GetPublicTransactionDataResponse.systemError:type_name -> generated.SystemError + 12, // 3: generated.GetReceiptsByAddressResponse.systemError:type_name -> generated.SystemError + 12, // 4: generated.GetBatchResponse.systemError:type_name -> generated.SystemError + 12, // 5: generated.GetTotalContractCountResponse.systemError:type_name -> generated.SystemError + 12, // 6: generated.DebugEventLogRelevancyResponse.systemError:type_name -> generated.SystemError + 12, // 7: generated.DebugTraceTransactionResponse.systemError:type_name -> generated.SystemError + 69, // 8: generated.CreateRollupResponse.msg:type_name -> generated.ExtRollupMsg + 12, // 9: generated.CreateRollupResponse.systemError:type_name -> generated.SystemError + 12, // 10: generated.StatusResponse.systemError:type_name -> generated.SystemError + 63, // 11: generated.AttestationResponse.attestationReportMsg:type_name -> generated.AttestationReportMsg + 12, // 12: generated.AttestationResponse.systemError:type_name -> generated.SystemError + 12, // 13: generated.GenerateSecretResponse.systemError:type_name -> generated.SystemError + 12, // 14: generated.InitEnclaveResponse.systemError:type_name -> generated.SystemError + 12, // 15: generated.StartResponse.systemError:type_name -> generated.SystemError + 64, // 16: generated.SubmitBlockResponse.blockSubmissionResponse:type_name -> generated.BlockSubmissionResponseMsg + 12, // 17: generated.SubmitBlockResponse.systemError:type_name -> generated.SystemError + 12, // 18: generated.SubmitTxResponse.systemError:type_name -> generated.SystemError + 67, // 19: generated.SubmitBatchRequest.batch:type_name -> generated.ExtBatchMsg + 12, // 20: generated.SubmitBatchResponse.systemError:type_name -> generated.SystemError + 12, // 21: generated.ObsCallResponse.systemError:type_name -> generated.SystemError + 12, // 22: generated.GetTransactionCountResponse.systemError:type_name -> generated.SystemError + 12, // 23: generated.StopResponse.systemError:type_name -> generated.SystemError + 12, // 24: generated.GetTransactionResponse.systemError:type_name -> generated.SystemError + 12, // 25: generated.GetTransactionReceiptResponse.systemError:type_name -> generated.SystemError + 12, // 26: generated.GetBalanceResponse.systemError:type_name -> generated.SystemError + 12, // 27: generated.GetCodeResponse.systemError:type_name -> generated.SystemError + 12, // 28: generated.SubscribeResponse.systemError:type_name -> generated.SystemError + 12, // 29: generated.UnsubscribeResponse.systemError:type_name -> generated.SystemError + 12, // 30: generated.EstimateGasResponse.systemError:type_name -> generated.SystemError + 12, // 31: generated.GetLogsResponse.systemError:type_name -> generated.SystemError + 12, // 32: generated.HealthCheckResponse.systemError:type_name -> generated.SystemError + 12, // 33: generated.AttestationReportMsg.systemError:type_name -> generated.SystemError + 71, // 34: generated.BlockSubmissionResponseMsg.producedSecretResponses:type_name -> generated.SecretResponseMsg + 65, // 35: generated.BlockSubmissionResponseMsg.error:type_name -> generated.BlockSubmissionErrorMsg + 68, // 36: generated.ExtBatchMsg.header:type_name -> generated.BatchHeaderMsg + 66, // 37: generated.BatchHeaderMsg.CrossChainMessages:type_name -> generated.CrossChainMsg + 70, // 38: generated.ExtRollupMsg.header:type_name -> generated.RollupHeaderMsg + 66, // 39: generated.RollupHeaderMsg.CrossChainMessages:type_name -> generated.CrossChainMsg + 12, // 40: generated.SecretResponseMsg.systemError:type_name -> generated.SystemError + 23, // 41: generated.EnclaveProto.Status:input_type -> generated.StatusRequest + 25, // 42: generated.EnclaveProto.Attestation:input_type -> generated.AttestationRequest + 27, // 43: generated.EnclaveProto.GenerateSecret:input_type -> generated.GenerateSecretRequest + 29, // 44: generated.EnclaveProto.InitEnclave:input_type -> generated.InitEnclaveRequest + 33, // 45: generated.EnclaveProto.SubmitL1Block:input_type -> generated.SubmitBlockRequest + 35, // 46: generated.EnclaveProto.SubmitTx:input_type -> generated.SubmitTxRequest + 37, // 47: generated.EnclaveProto.SubmitBatch:input_type -> generated.SubmitBatchRequest + 39, // 48: generated.EnclaveProto.ObsCall:input_type -> generated.ObsCallRequest + 41, // 49: generated.EnclaveProto.GetTransactionCount:input_type -> generated.GetTransactionCountRequest + 43, // 50: generated.EnclaveProto.Stop:input_type -> generated.StopRequest + 45, // 51: generated.EnclaveProto.GetTransaction:input_type -> generated.GetTransactionRequest + 47, // 52: generated.EnclaveProto.GetTransactionReceipt:input_type -> generated.GetTransactionReceiptRequest + 49, // 53: generated.EnclaveProto.GetBalance:input_type -> generated.GetBalanceRequest + 51, // 54: generated.EnclaveProto.GetCode:input_type -> generated.GetCodeRequest + 53, // 55: generated.EnclaveProto.Subscribe:input_type -> generated.SubscribeRequest + 55, // 56: generated.EnclaveProto.Unsubscribe:input_type -> generated.UnsubscribeRequest + 57, // 57: generated.EnclaveProto.EstimateGas:input_type -> generated.EstimateGasRequest + 59, // 58: generated.EnclaveProto.GetLogs:input_type -> generated.GetLogsRequest + 62, // 59: generated.EnclaveProto.HealthCheck:input_type -> generated.EmptyArgs + 6, // 60: generated.EnclaveProto.GetBatch:input_type -> generated.GetBatchRequest + 7, // 61: generated.EnclaveProto.GetBatchBySeqNo:input_type -> generated.GetBatchBySeqNoRequest + 19, // 62: generated.EnclaveProto.CreateBatch:input_type -> generated.CreateBatchRequest + 21, // 63: generated.EnclaveProto.CreateRollup:input_type -> generated.CreateRollupRequest + 17, // 64: generated.EnclaveProto.DebugTraceTransaction:input_type -> generated.DebugTraceTransactionRequest + 9, // 65: generated.EnclaveProto.StreamL2Updates:input_type -> generated.StreamL2UpdatesRequest + 15, // 66: generated.EnclaveProto.DebugEventLogRelevancy:input_type -> generated.DebugEventLogRelevancyRequest + 13, // 67: generated.EnclaveProto.GetTotalContractCount:input_type -> generated.GetTotalContractCountRequest + 4, // 68: generated.EnclaveProto.GetReceiptsByAddress:input_type -> generated.GetReceiptsByAddressRequest + 2, // 69: generated.EnclaveProto.GetPublicTransactionData:input_type -> generated.GetPublicTransactionDataRequest + 0, // 70: generated.EnclaveProto.Config:input_type -> generated.ConfigRequest + 24, // 71: generated.EnclaveProto.Status:output_type -> generated.StatusResponse + 26, // 72: generated.EnclaveProto.Attestation:output_type -> generated.AttestationResponse + 28, // 73: generated.EnclaveProto.GenerateSecret:output_type -> generated.GenerateSecretResponse + 30, // 74: generated.EnclaveProto.InitEnclave:output_type -> generated.InitEnclaveResponse + 34, // 75: generated.EnclaveProto.SubmitL1Block:output_type -> generated.SubmitBlockResponse + 36, // 76: generated.EnclaveProto.SubmitTx:output_type -> generated.SubmitTxResponse + 38, // 77: generated.EnclaveProto.SubmitBatch:output_type -> generated.SubmitBatchResponse + 40, // 78: generated.EnclaveProto.ObsCall:output_type -> generated.ObsCallResponse + 42, // 79: generated.EnclaveProto.GetTransactionCount:output_type -> generated.GetTransactionCountResponse + 44, // 80: generated.EnclaveProto.Stop:output_type -> generated.StopResponse + 46, // 81: generated.EnclaveProto.GetTransaction:output_type -> generated.GetTransactionResponse + 48, // 82: generated.EnclaveProto.GetTransactionReceipt:output_type -> generated.GetTransactionReceiptResponse + 50, // 83: generated.EnclaveProto.GetBalance:output_type -> generated.GetBalanceResponse + 52, // 84: generated.EnclaveProto.GetCode:output_type -> generated.GetCodeResponse + 54, // 85: generated.EnclaveProto.Subscribe:output_type -> generated.SubscribeResponse + 56, // 86: generated.EnclaveProto.Unsubscribe:output_type -> generated.UnsubscribeResponse + 58, // 87: generated.EnclaveProto.EstimateGas:output_type -> generated.EstimateGasResponse + 60, // 88: generated.EnclaveProto.GetLogs:output_type -> generated.GetLogsResponse + 61, // 89: generated.EnclaveProto.HealthCheck:output_type -> generated.HealthCheckResponse + 8, // 90: generated.EnclaveProto.GetBatch:output_type -> generated.GetBatchResponse + 8, // 91: generated.EnclaveProto.GetBatchBySeqNo:output_type -> generated.GetBatchResponse + 20, // 92: generated.EnclaveProto.CreateBatch:output_type -> generated.CreateBatchResponse + 22, // 93: generated.EnclaveProto.CreateRollup:output_type -> generated.CreateRollupResponse + 18, // 94: generated.EnclaveProto.DebugTraceTransaction:output_type -> generated.DebugTraceTransactionResponse + 10, // 95: generated.EnclaveProto.StreamL2Updates:output_type -> generated.EncodedUpdateResponse + 16, // 96: generated.EnclaveProto.DebugEventLogRelevancy:output_type -> generated.DebugEventLogRelevancyResponse + 14, // 97: generated.EnclaveProto.GetTotalContractCount:output_type -> generated.GetTotalContractCountResponse + 5, // 98: generated.EnclaveProto.GetReceiptsByAddress:output_type -> generated.GetReceiptsByAddressResponse + 3, // 99: generated.EnclaveProto.GetPublicTransactionData:output_type -> generated.GetPublicTransactionDataResponse + 1, // 100: generated.EnclaveProto.Config:output_type -> generated.ConfigResponse + 71, // [71:101] is the sub-list for method output_type + 41, // [41:71] is the sub-list for method input_type + 41, // [41:41] is the sub-list for extension type_name + 41, // [41:41] is the sub-list for extension extendee + 0, // [0:41] is the sub-list for field type_name } func init() { file_enclave_proto_init() } @@ -4693,7 +4803,7 @@ func file_enclave_proto_init() { } if !protoimpl.UnsafeEnabled { file_enclave_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetPublicTransactionDataRequest); i { + switch v := v.(*ConfigRequest); i { case 0: return &v.state case 1: @@ -4705,7 +4815,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetPublicTransactionDataResponse); i { + switch v := v.(*ConfigResponse); i { case 0: return &v.state case 1: @@ -4717,7 +4827,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetReceiptsByAddressRequest); i { + switch v := v.(*GetPublicTransactionDataRequest); i { case 0: return &v.state case 1: @@ -4729,7 +4839,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetReceiptsByAddressResponse); i { + switch v := v.(*GetPublicTransactionDataResponse); i { case 0: return &v.state case 1: @@ -4741,7 +4851,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetBatchRequest); i { + switch v := v.(*GetReceiptsByAddressRequest); i { case 0: return &v.state case 1: @@ -4753,7 +4863,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetBatchBySeqNoRequest); i { + switch v := v.(*GetReceiptsByAddressResponse); i { case 0: return &v.state case 1: @@ -4765,7 +4875,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetBatchResponse); i { + switch v := v.(*GetBatchRequest); i { case 0: return &v.state case 1: @@ -4777,7 +4887,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StreamL2UpdatesRequest); i { + switch v := v.(*GetBatchBySeqNoRequest); i { case 0: return &v.state case 1: @@ -4789,7 +4899,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EncodedUpdateResponse); i { + switch v := v.(*GetBatchResponse); i { case 0: return &v.state case 1: @@ -4801,7 +4911,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Pagination); i { + switch v := v.(*StreamL2UpdatesRequest); i { case 0: return &v.state case 1: @@ -4813,7 +4923,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SystemError); i { + switch v := v.(*EncodedUpdateResponse); i { case 0: return &v.state case 1: @@ -4825,7 +4935,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetTotalContractCountRequest); i { + switch v := v.(*Pagination); i { case 0: return &v.state case 1: @@ -4837,7 +4947,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetTotalContractCountResponse); i { + switch v := v.(*SystemError); i { case 0: return &v.state case 1: @@ -4849,7 +4959,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DebugEventLogRelevancyRequest); i { + switch v := v.(*GetTotalContractCountRequest); i { case 0: return &v.state case 1: @@ -4861,7 +4971,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DebugEventLogRelevancyResponse); i { + switch v := v.(*GetTotalContractCountResponse); i { case 0: return &v.state case 1: @@ -4873,7 +4983,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DebugTraceTransactionRequest); i { + switch v := v.(*DebugEventLogRelevancyRequest); i { case 0: return &v.state case 1: @@ -4885,7 +4995,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DebugTraceTransactionResponse); i { + switch v := v.(*DebugEventLogRelevancyResponse); i { case 0: return &v.state case 1: @@ -4897,7 +5007,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateBatchRequest); i { + switch v := v.(*DebugTraceTransactionRequest); i { case 0: return &v.state case 1: @@ -4909,7 +5019,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateBatchResponse); i { + switch v := v.(*DebugTraceTransactionResponse); i { case 0: return &v.state case 1: @@ -4921,7 +5031,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateRollupRequest); i { + switch v := v.(*CreateBatchRequest); i { case 0: return &v.state case 1: @@ -4933,7 +5043,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateRollupResponse); i { + switch v := v.(*CreateBatchResponse); i { case 0: return &v.state case 1: @@ -4945,7 +5055,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StatusRequest); i { + switch v := v.(*CreateRollupRequest); i { case 0: return &v.state case 1: @@ -4957,7 +5067,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StatusResponse); i { + switch v := v.(*CreateRollupResponse); i { case 0: return &v.state case 1: @@ -4969,7 +5079,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AttestationRequest); i { + switch v := v.(*StatusRequest); i { case 0: return &v.state case 1: @@ -4981,7 +5091,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AttestationResponse); i { + switch v := v.(*StatusResponse); i { case 0: return &v.state case 1: @@ -4993,7 +5103,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GenerateSecretRequest); i { + switch v := v.(*AttestationRequest); i { case 0: return &v.state case 1: @@ -5005,7 +5115,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GenerateSecretResponse); i { + switch v := v.(*AttestationResponse); i { case 0: return &v.state case 1: @@ -5017,7 +5127,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*InitEnclaveRequest); i { + switch v := v.(*GenerateSecretRequest); i { case 0: return &v.state case 1: @@ -5029,7 +5139,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*InitEnclaveResponse); i { + switch v := v.(*GenerateSecretResponse); i { case 0: return &v.state case 1: @@ -5041,7 +5151,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StartRequest); i { + switch v := v.(*InitEnclaveRequest); i { case 0: return &v.state case 1: @@ -5053,7 +5163,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StartResponse); i { + switch v := v.(*InitEnclaveResponse); i { case 0: return &v.state case 1: @@ -5065,7 +5175,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubmitBlockRequest); i { + switch v := v.(*StartRequest); i { case 0: return &v.state case 1: @@ -5077,7 +5187,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubmitBlockResponse); i { + switch v := v.(*StartResponse); i { case 0: return &v.state case 1: @@ -5089,7 +5199,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubmitTxRequest); i { + switch v := v.(*SubmitBlockRequest); i { case 0: return &v.state case 1: @@ -5101,7 +5211,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubmitTxResponse); i { + switch v := v.(*SubmitBlockResponse); i { case 0: return &v.state case 1: @@ -5113,7 +5223,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubmitBatchRequest); i { + switch v := v.(*SubmitTxRequest); i { case 0: return &v.state case 1: @@ -5125,7 +5235,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubmitBatchResponse); i { + switch v := v.(*SubmitTxResponse); i { case 0: return &v.state case 1: @@ -5137,7 +5247,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ObsCallRequest); i { + switch v := v.(*SubmitBatchRequest); i { case 0: return &v.state case 1: @@ -5149,7 +5259,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ObsCallResponse); i { + switch v := v.(*SubmitBatchResponse); i { case 0: return &v.state case 1: @@ -5161,7 +5271,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetTransactionCountRequest); i { + switch v := v.(*ObsCallRequest); i { case 0: return &v.state case 1: @@ -5173,7 +5283,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetTransactionCountResponse); i { + switch v := v.(*ObsCallResponse); i { case 0: return &v.state case 1: @@ -5185,7 +5295,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StopRequest); i { + switch v := v.(*GetTransactionCountRequest); i { case 0: return &v.state case 1: @@ -5197,7 +5307,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StopResponse); i { + switch v := v.(*GetTransactionCountResponse); i { case 0: return &v.state case 1: @@ -5209,7 +5319,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetTransactionRequest); i { + switch v := v.(*StopRequest); i { case 0: return &v.state case 1: @@ -5221,7 +5331,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetTransactionResponse); i { + switch v := v.(*StopResponse); i { case 0: return &v.state case 1: @@ -5233,7 +5343,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetTransactionReceiptRequest); i { + switch v := v.(*GetTransactionRequest); i { case 0: return &v.state case 1: @@ -5245,7 +5355,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetTransactionReceiptResponse); i { + switch v := v.(*GetTransactionResponse); i { case 0: return &v.state case 1: @@ -5257,7 +5367,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetBalanceRequest); i { + switch v := v.(*GetTransactionReceiptRequest); i { case 0: return &v.state case 1: @@ -5269,7 +5379,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetBalanceResponse); i { + switch v := v.(*GetTransactionReceiptResponse); i { case 0: return &v.state case 1: @@ -5281,7 +5391,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetCodeRequest); i { + switch v := v.(*GetBalanceRequest); i { case 0: return &v.state case 1: @@ -5293,7 +5403,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetCodeResponse); i { + switch v := v.(*GetBalanceResponse); i { case 0: return &v.state case 1: @@ -5305,7 +5415,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubscribeRequest); i { + switch v := v.(*GetCodeRequest); i { case 0: return &v.state case 1: @@ -5317,7 +5427,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubscribeResponse); i { + switch v := v.(*GetCodeResponse); i { case 0: return &v.state case 1: @@ -5329,7 +5439,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UnsubscribeRequest); i { + switch v := v.(*SubscribeRequest); i { case 0: return &v.state case 1: @@ -5341,7 +5451,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UnsubscribeResponse); i { + switch v := v.(*SubscribeResponse); i { case 0: return &v.state case 1: @@ -5353,7 +5463,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EstimateGasRequest); i { + switch v := v.(*UnsubscribeRequest); i { case 0: return &v.state case 1: @@ -5365,7 +5475,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EstimateGasResponse); i { + switch v := v.(*UnsubscribeResponse); i { case 0: return &v.state case 1: @@ -5377,7 +5487,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetLogsRequest); i { + switch v := v.(*EstimateGasRequest); i { case 0: return &v.state case 1: @@ -5389,7 +5499,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetLogsResponse); i { + switch v := v.(*EstimateGasResponse); i { case 0: return &v.state case 1: @@ -5401,7 +5511,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HealthCheckResponse); i { + switch v := v.(*GetLogsRequest); i { case 0: return &v.state case 1: @@ -5413,7 +5523,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EmptyArgs); i { + switch v := v.(*GetLogsResponse); i { case 0: return &v.state case 1: @@ -5425,7 +5535,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AttestationReportMsg); i { + switch v := v.(*HealthCheckResponse); i { case 0: return &v.state case 1: @@ -5437,7 +5547,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BlockSubmissionResponseMsg); i { + switch v := v.(*EmptyArgs); i { case 0: return &v.state case 1: @@ -5449,7 +5559,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BlockSubmissionErrorMsg); i { + switch v := v.(*AttestationReportMsg); i { case 0: return &v.state case 1: @@ -5461,7 +5571,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CrossChainMsg); i { + switch v := v.(*BlockSubmissionResponseMsg); i { case 0: return &v.state case 1: @@ -5473,7 +5583,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExtBatchMsg); i { + switch v := v.(*BlockSubmissionErrorMsg); i { case 0: return &v.state case 1: @@ -5485,7 +5595,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BatchHeaderMsg); i { + switch v := v.(*CrossChainMsg); i { case 0: return &v.state case 1: @@ -5497,7 +5607,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExtRollupMsg); i { + switch v := v.(*ExtBatchMsg); i { case 0: return &v.state case 1: @@ -5509,7 +5619,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RollupHeaderMsg); i { + switch v := v.(*BatchHeaderMsg); i { case 0: return &v.state case 1: @@ -5521,7 +5631,7 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SecretResponseMsg); i { + switch v := v.(*ExtRollupMsg); i { case 0: return &v.state case 1: @@ -5533,6 +5643,30 @@ func file_enclave_proto_init() { } } file_enclave_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RollupHeaderMsg); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_enclave_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SecretResponseMsg); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_enclave_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WithdrawalMsg); i { case 0: return &v.state @@ -5545,14 +5679,14 @@ func file_enclave_proto_init() { } } } - file_enclave_proto_msgTypes[19].OneofWrappers = []interface{}{} + file_enclave_proto_msgTypes[21].OneofWrappers = []interface{}{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_enclave_proto_rawDesc, NumEnums: 0, - NumMessages: 71, + NumMessages: 73, NumExtensions: 0, NumServices: 1, }, diff --git a/go/common/rpc/generated/enclave.proto b/go/common/rpc/generated/enclave.proto index 6ec88bab49..00aa0892d6 100644 --- a/go/common/rpc/generated/enclave.proto +++ b/go/common/rpc/generated/enclave.proto @@ -91,6 +91,15 @@ service EnclaveProto { rpc GetPublicTransactionData(GetPublicTransactionDataRequest) returns (GetPublicTransactionDataResponse) {} + rpc Config(ConfigRequest) returns (ConfigResponse) {} + +} + +message ConfigRequest {} + +message ConfigResponse{ + bytes config = 1; + SystemError systemError = 2; } message GetPublicTransactionDataRequest { diff --git a/go/common/rpc/generated/enclave_grpc.pb.go b/go/common/rpc/generated/enclave_grpc.pb.go index ce77edf796..9c4ce9d0dd 100644 --- a/go/common/rpc/generated/enclave_grpc.pb.go +++ b/go/common/rpc/generated/enclave_grpc.pb.go @@ -77,6 +77,7 @@ type EnclaveProtoClient interface { GetTotalContractCount(ctx context.Context, in *GetTotalContractCountRequest, opts ...grpc.CallOption) (*GetTotalContractCountResponse, error) GetReceiptsByAddress(ctx context.Context, in *GetReceiptsByAddressRequest, opts ...grpc.CallOption) (*GetReceiptsByAddressResponse, error) GetPublicTransactionData(ctx context.Context, in *GetPublicTransactionDataRequest, opts ...grpc.CallOption) (*GetPublicTransactionDataResponse, error) + Config(ctx context.Context, in *ConfigRequest, opts ...grpc.CallOption) (*ConfigResponse, error) } type enclaveProtoClient struct { @@ -371,6 +372,15 @@ func (c *enclaveProtoClient) GetPublicTransactionData(ctx context.Context, in *G return out, nil } +func (c *enclaveProtoClient) Config(ctx context.Context, in *ConfigRequest, opts ...grpc.CallOption) (*ConfigResponse, error) { + out := new(ConfigResponse) + err := c.cc.Invoke(ctx, "/generated.EnclaveProto/Config", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // EnclaveProtoServer is the server API for EnclaveProto service. // All implementations must embed UnimplementedEnclaveProtoServer // for forward compatibility @@ -430,6 +440,7 @@ type EnclaveProtoServer interface { GetTotalContractCount(context.Context, *GetTotalContractCountRequest) (*GetTotalContractCountResponse, error) GetReceiptsByAddress(context.Context, *GetReceiptsByAddressRequest) (*GetReceiptsByAddressResponse, error) GetPublicTransactionData(context.Context, *GetPublicTransactionDataRequest) (*GetPublicTransactionDataResponse, error) + Config(context.Context, *ConfigRequest) (*ConfigResponse, error) mustEmbedUnimplementedEnclaveProtoServer() } @@ -524,6 +535,9 @@ func (UnimplementedEnclaveProtoServer) GetReceiptsByAddress(context.Context, *Ge func (UnimplementedEnclaveProtoServer) GetPublicTransactionData(context.Context, *GetPublicTransactionDataRequest) (*GetPublicTransactionDataResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetPublicTransactionData not implemented") } +func (UnimplementedEnclaveProtoServer) Config(context.Context, *ConfigRequest) (*ConfigResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Config not implemented") +} func (UnimplementedEnclaveProtoServer) mustEmbedUnimplementedEnclaveProtoServer() {} // UnsafeEnclaveProtoServer may be embedded to opt out of forward compatibility for this service. @@ -1062,6 +1076,24 @@ func _EnclaveProto_GetPublicTransactionData_Handler(srv interface{}, ctx context return interceptor(ctx, in, info, handler) } +func _EnclaveProto_Config_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ConfigRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(EnclaveProtoServer).Config(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/generated.EnclaveProto/Config", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(EnclaveProtoServer).Config(ctx, req.(*ConfigRequest)) + } + return interceptor(ctx, in, info, handler) +} + // EnclaveProto_ServiceDesc is the grpc.ServiceDesc for EnclaveProto service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -1181,6 +1213,10 @@ var EnclaveProto_ServiceDesc = grpc.ServiceDesc{ MethodName: "GetPublicTransactionData", Handler: _EnclaveProto_GetPublicTransactionData_Handler, }, + { + MethodName: "Config", + Handler: _EnclaveProto_Config_Handler, + }, }, Streams: []grpc.StreamDesc{ { diff --git a/go/enclave/enclave.go b/go/enclave/enclave.go index 3f22ef4acc..cddbccce6f 100644 --- a/go/enclave/enclave.go +++ b/go/enclave/enclave.go @@ -1388,6 +1388,13 @@ func (e *enclaveImpl) GetPublicTransactionData(pagination *common.QueryPaginatio }, nil } +func (e *enclaveImpl) Config() (*common.ObscuroEnclaveInfo, common.SystemError) { + return &common.ObscuroEnclaveInfo{ + SequencerID: e.config.SequencerID, + MessageBusAddress: e.config.MessageBusAddress, + }, nil +} + // Create a helper to check if a gas allowance results in an executable transaction // isGasEnough returns whether the gaslimit should be raised, lowered, or if it was impossible to execute the message func (e *enclaveImpl) isGasEnough(args *gethapi.TransactionArgs, gas uint64, blkNumber *gethrpc.BlockNumber) (bool, *gethcore.ExecutionResult, error) { diff --git a/go/enclave/rpc_server.go b/go/enclave/rpc_server.go index 78faf593bf..132a5b5cd9 100644 --- a/go/enclave/rpc_server.go +++ b/go/enclave/rpc_server.go @@ -422,6 +422,18 @@ func (s *RPCServer) GetPublicTransactionData(_ context.Context, req *generated.G return &generated.GetPublicTransactionDataResponse{PublicTransactionData: marshal}, nil } +func (s *RPCServer) Config(_ context.Context, _ *generated.ConfigRequest) (*generated.ConfigResponse, error) { + config, _ := s.enclave.Config() // No reason to error out, but we want to maintain the signature for RPC methods + + marshal, err := json.Marshal(config) + if err != nil { + s.logger.Error("Error marshalling config data", log.ErrKey, err) + return &generated.ConfigResponse{SystemError: toRPCError(err)}, nil + } + + return &generated.ConfigResponse{Config: marshal}, nil +} + func (s *RPCServer) decodeBlock(encodedBlock []byte) types.Block { block := types.Block{} err := rlp.DecodeBytes(encodedBlock, &block) diff --git a/go/host/host.go b/go/host/host.go index ca93e52b99..d91c51d662 100644 --- a/go/host/host.go +++ b/go/host/host.go @@ -51,6 +51,7 @@ type host struct { metricRegistry gethmetrics.Registry interrupter breaker.Interface + enclaveConfig *common.ObscuroEnclaveInfo } func NewHost(config *config.HostConfig, hostServices *ServicesRegistry, p2p P2PHostService, ethClient ethadapter.EthClient, enclaveClient common.Enclave, ethWallet wallet.Wallet, mgmtContractLib mgmtcontractlib.MgmtContractLib, logger gethlog.Logger, regMetrics gethmetrics.Registry) hostcommon.Host { @@ -218,6 +219,25 @@ func (h *host) HealthCheck() (*hostcommon.HealthCheck, error) { }, nil } +// ObscuroConfig returns info on the Obscuro network +func (h *host) ObscuroConfig() (*common.ObscuroNetworkInfo, error) { + if h.enclaveConfig != nil { + enclaveConfig, err := h.EnclaveClient().Config() + if err != nil { + return nil, fmt.Errorf("unable to `retrieve` enclave info - %w", err) + } + h.enclaveConfig = enclaveConfig + } + + return &common.ObscuroNetworkInfo{ + ManagementContractAddress: h.config.ManagementContractAddress, + L1StartHash: h.config.L1StartHash, + + SequencerID: h.enclaveConfig.SequencerID, + MessageBusAddress: h.enclaveConfig.MessageBusAddress, + }, nil +} + // Checks the host config is valid. func (h *host) validateConfig() { if h.config.IsGenesis && h.config.NodeType != common.Sequencer { diff --git a/go/host/rpc/clientapi/client_api_obscuro.go b/go/host/rpc/clientapi/client_api_obscuro.go index 120b903aa6..7b0ce3643a 100644 --- a/go/host/rpc/clientapi/client_api_obscuro.go +++ b/go/host/rpc/clientapi/client_api_obscuro.go @@ -1,6 +1,7 @@ package clientapi import ( + "github.com/obscuronet/go-obscuro/go/common" "github.com/obscuronet/go-obscuro/go/common/host" ) @@ -19,3 +20,8 @@ func NewObscuroAPI(host host.Host) *ObscuroAPI { func (api *ObscuroAPI) Health() (*host.HealthCheck, error) { return api.host.HealthCheck() } + +// Config returns the config status of obscuro host + enclave + db +func (api *ObscuroAPI) Config() (*common.ObscuroNetworkInfo, error) { + return api.host.ObscuroConfig() +} diff --git a/go/host/rpc/enclaverpc/enclave_client.go b/go/host/rpc/enclaverpc/enclave_client.go index d493b4c56c..391387318a 100644 --- a/go/host/rpc/enclaverpc/enclave_client.go +++ b/go/host/rpc/enclaverpc/enclave_client.go @@ -596,3 +596,24 @@ func (c *Client) GetPublicTransactionData(pagination *common.QueryPagination) (* return &result, nil } + +func (c *Client) Config() (*common.ObscuroEnclaveInfo, common.SystemError) { + timeoutCtx, cancel := context.WithTimeout(context.Background(), c.config.EnclaveRPCTimeout) + defer cancel() + + response, err := c.protoClient.Config(timeoutCtx, &generated.ConfigRequest{}) + if err != nil { + return nil, syserr.NewRPCError(err) + } + if response != nil && response.SystemError != nil { + return nil, syserr.NewInternalError(fmt.Errorf("%s", response.SystemError.ErrorString)) + } + + var result common.ObscuroEnclaveInfo + err = json.Unmarshal(response.Config, &result) + if err != nil { + return nil, syserr.NewInternalError(fmt.Errorf("%s", response.SystemError.ErrorString)) + } + + return &result, nil +} diff --git a/go/obsclient/obsclient.go b/go/obsclient/obsclient.go index 08852d4c8a..4643d75cc7 100644 --- a/go/obsclient/obsclient.go +++ b/go/obsclient/obsclient.go @@ -158,3 +158,13 @@ func (oc *ObsClient) GetBlockListing(pagination *common.QueryPagination) (*commo } return &result, nil } + +// GetConfig returns the network config for obscuro +func (oc *ObsClient) GetConfig() (*common.ObscuroNetworkInfo, error) { + var result common.ObscuroNetworkInfo + err := oc.rpcClient.Call(&result, rpc.Config) + if err != nil { + return nil, err + } + return &result, nil +} diff --git a/go/rpc/client.go b/go/rpc/client.go index 56e37e24b4..d5ba448a12 100644 --- a/go/rpc/client.go +++ b/go/rpc/client.go @@ -22,17 +22,20 @@ const ( EstimateGas = "eth_estimateGas" GetLogs = "eth_getLogs" GetStorageAt = "eth_getStorageAt" - Health = "obscuro_health" - GetBlockHeaderByHash = "obscuroscan_getBlockHeaderByHash" - GetBatch = "obscuroscan_getBatch" - GetBatchForTx = "obscuroscan_getBatchForTx" - GetLatestTxs = "obscuroscan_getLatestTransactions" - GetTotalTxs = "obscuroscan_getTotalTransactions" - Attestation = "obscuroscan_attestation" - StopHost = "test_stopHost" - Subscribe = "eth_subscribe" - SubscribeNamespace = "eth" - SubscriptionTypeLogs = "logs" + + Health = "obscuro_health" + Config = "obscuro_config" + + GetBlockHeaderByHash = "obscuroscan_getBlockHeaderByHash" + GetBatch = "obscuroscan_getBatch" + GetBatchForTx = "obscuroscan_getBatchForTx" + GetLatestTxs = "obscuroscan_getLatestTransactions" + GetTotalTxs = "obscuroscan_getTotalTransactions" + Attestation = "obscuroscan_attestation" + StopHost = "test_stopHost" + Subscribe = "eth_subscribe" + SubscribeNamespace = "eth" + SubscriptionTypeLogs = "logs" // GetL1RollupHeaderByHash = "scan_getL1RollupHeaderByHash" // GetActiveNodeCount = "scan_getActiveNodeCount" diff --git a/integration/obscuroscan/obscuroscan_test.go b/integration/obscuroscan/obscuroscan_test.go index 6d4125a584..765bfd2ea6 100644 --- a/integration/obscuroscan/obscuroscan_test.go +++ b/integration/obscuroscan/obscuroscan_test.go @@ -158,6 +158,19 @@ func TestObscuroscan(t *testing.T) { assert.NoError(t, err) assert.Equal(t, batchlistingObj.Result.BatchesData[0].Hash(), batchObj.Item.Hash()) + statusCode, body, err = fasthttp.Get(nil, fmt.Sprintf("%s/info/obscuro/", serverAddress)) + assert.NoError(t, err) + assert.Equal(t, 200, statusCode) + + type configFetch struct { + Item common.ObscuroNetworkInfo `json:"item"` + } + + configFetchObj := configFetch{} + err = json.Unmarshal(body, &configFetchObj) + assert.NoError(t, err) + assert.NotEqual(t, configFetchObj.Item.SequencerID, gethcommon.Address{}) + issueTransactions( t, fmt.Sprintf("ws://127.0.0.1:%d", startPort+integration.DefaultHostRPCWSOffset), diff --git a/tools/obscuroscan_v2/backend/obscuroscan_backend.go b/tools/obscuroscan_v2/backend/obscuroscan_backend.go index 7ae0378e72..d2df5cb46d 100644 --- a/tools/obscuroscan_v2/backend/obscuroscan_backend.go +++ b/tools/obscuroscan_v2/backend/obscuroscan_backend.go @@ -122,3 +122,7 @@ func (b *Backend) DecryptTxBlob(payload string) ([]*common.L2Tx, error) { return cleartextTxs, nil } + +func (b *Backend) GetConfig() (*common.ObscuroNetworkInfo, error) { + return b.obsClient.GetConfig() +} diff --git a/tools/obscuroscan_v2/backend/webserver/webserver.go b/tools/obscuroscan_v2/backend/webserver/webserver.go index 205f0f77d3..41ef14cf66 100644 --- a/tools/obscuroscan_v2/backend/webserver/webserver.go +++ b/tools/obscuroscan_v2/backend/webserver/webserver.go @@ -5,15 +5,12 @@ import ( "encoding/json" "fmt" "net/http" - "strconv" "time" "github.com/ethereum/go-ethereum/log" "github.com/gin-contrib/cors" "github.com/gin-gonic/gin" "github.com/obscuronet/go-obscuro/tools/obscuroscan_v2/backend" - - gethcommon "github.com/ethereum/go-ethereum/common" ) type WebServer struct { @@ -44,17 +41,13 @@ func New(backend *backend.Backend, bindAddress string, logger log.Logger) *WebSe } // routes + routeItems(r, server) + routeCounts(r, server) + + // todo group/format these into items, counts, actions r.GET("/health/", server.health) - r.GET("/count/contracts/", server.getTotalContractCount) - r.GET("/count/transactions/", server.getTotalTransactionCount) - r.GET("/items/batch/latest/", server.getLatestBatch) - r.GET("/items/rollup/latest/", server.getLatestRollupHeader) r.GET("/batchHeader/:hash", server.getBatchHeader) - r.GET("/items/batch/:hash", server.getBatch) r.GET("/tx/:hash", server.getTransaction) - r.GET("/items/transactions/", server.getPublicTransactions) - r.GET("/items/batches/", server.getBatchListing) - r.GET("/items/blocks/", server.getBlockListing) r.POST("/actions/decryptTxBlob/", server.decryptTxBlob) return server @@ -92,157 +85,6 @@ func (w *WebServer) health(c *gin.Context) { c.JSON(http.StatusOK, gin.H{"healthy": true}) } -func (w *WebServer) getTotalContractCount(c *gin.Context) { - count, err := w.backend.GetTotalContractCount() - if err != nil { - errorHandler(c, fmt.Errorf("unable to execute request %w", err), w.logger) - return - } - - c.JSON(http.StatusOK, gin.H{"count": count}) -} - -func (w *WebServer) getTotalTransactionCount(c *gin.Context) { - count, err := w.backend.GetTotalTransactionCount() - if err != nil { - errorHandler(c, fmt.Errorf("unable to execute request %w", err), w.logger) - return - } - - c.JSON(http.StatusOK, gin.H{"count": count}) -} - -func (w *WebServer) getLatestBatch(c *gin.Context) { - batch, err := w.backend.GetLatestBatch() - if err != nil { - errorHandler(c, fmt.Errorf("unable to execute request %w", err), w.logger) - return - } - - c.JSON(http.StatusOK, gin.H{"item": batch}) -} - -func (w *WebServer) getLatestRollupHeader(c *gin.Context) { - block, err := w.backend.GetLatestRollupHeader() - if err != nil { - errorHandler(c, fmt.Errorf("unable to execute request %w", err), w.logger) - return - } - - c.JSON(http.StatusOK, gin.H{"item": block}) -} - -func (w *WebServer) getBatch(c *gin.Context) { - hash := c.Param("hash") - parsedHash := gethcommon.HexToHash(hash) - batch, err := w.backend.GetBatchByHash(parsedHash) - if err != nil { - errorHandler(c, fmt.Errorf("unable to execute request %w", err), w.logger) - return - } - - c.JSON(http.StatusOK, gin.H{"item": batch}) -} - -func (w *WebServer) getBatchHeader(c *gin.Context) { - hash := c.Param("hash") - parsedHash := gethcommon.HexToHash(hash) - batch, err := w.backend.GetBatchHeader(parsedHash) - if err != nil { - errorHandler(c, fmt.Errorf("unable to execute request %w", err), w.logger) - return - } - - c.JSON(http.StatusOK, gin.H{"item": batch}) -} - -func (w *WebServer) getTransaction(c *gin.Context) { - hash := c.Param("hash") - parsedHash := gethcommon.HexToHash(hash) - batch, err := w.backend.GetTransaction(parsedHash) - if err != nil { - errorHandler(c, fmt.Errorf("unable to execute request %w", err), w.logger) - return - } - - c.JSON(http.StatusOK, gin.H{"item": batch}) -} - -func (w *WebServer) getPublicTransactions(c *gin.Context) { - offsetStr := c.DefaultQuery("offset", "0") - sizeStr := c.DefaultQuery("size", "10") - - offset, err := strconv.ParseUint(offsetStr, 10, 32) - if err != nil { - errorHandler(c, fmt.Errorf("unable to execute request %w", err), w.logger) - return - } - - parseUint, err := strconv.ParseUint(sizeStr, 10, 64) - if err != nil { - errorHandler(c, fmt.Errorf("unable to execute request %w", err), w.logger) - return - } - - publicTxs, err := w.backend.GetPublicTransactions(offset, parseUint) - if err != nil { - errorHandler(c, fmt.Errorf("unable to execute request %w", err), w.logger) - return - } - - c.JSON(http.StatusOK, gin.H{"result": publicTxs}) -} - -func (w *WebServer) getBatchListing(c *gin.Context) { - offsetStr := c.DefaultQuery("offset", "0") - sizeStr := c.DefaultQuery("size", "10") - - offset, err := strconv.ParseUint(offsetStr, 10, 32) - if err != nil { - errorHandler(c, fmt.Errorf("unable to execute request %w", err), w.logger) - return - } - - parseUint, err := strconv.ParseUint(sizeStr, 10, 64) - if err != nil { - errorHandler(c, fmt.Errorf("unable to execute request %w", err), w.logger) - return - } - - batchesListing, err := w.backend.GetBatchesListing(offset, parseUint) - if err != nil { - errorHandler(c, fmt.Errorf("unable to execute request %w", err), w.logger) - return - } - - c.JSON(http.StatusOK, gin.H{"result": batchesListing}) -} - -func (w *WebServer) getBlockListing(c *gin.Context) { - offsetStr := c.DefaultQuery("offset", "0") - sizeStr := c.DefaultQuery("size", "10") - - offset, err := strconv.ParseUint(offsetStr, 10, 32) - if err != nil { - errorHandler(c, fmt.Errorf("unable to execute request %w", err), w.logger) - return - } - - parseUint, err := strconv.ParseUint(sizeStr, 10, 64) - if err != nil { - errorHandler(c, fmt.Errorf("unable to execute request %w", err), w.logger) - return - } - - batchesListing, err := w.backend.GetBlockListing(offset, parseUint) - if err != nil { - errorHandler(c, fmt.Errorf("unable to execute request %w", err), w.logger) - return - } - - c.JSON(http.StatusOK, gin.H{"result": batchesListing}) -} - func (w *WebServer) decryptTxBlob(c *gin.Context) { // Read the payload as a string payloadBytes, err := c.GetRawData() diff --git a/tools/obscuroscan_v2/backend/webserver/webserver_routes_counts.go b/tools/obscuroscan_v2/backend/webserver/webserver_routes_counts.go new file mode 100644 index 0000000000..21429fe950 --- /dev/null +++ b/tools/obscuroscan_v2/backend/webserver/webserver_routes_counts.go @@ -0,0 +1,33 @@ +package webserver + +import ( + "fmt" + "net/http" + + "github.com/gin-gonic/gin" +) + +func routeCounts(r *gin.Engine, server *WebServer) { + r.GET("/count/contracts/", server.getTotalContractCount) + r.GET("/count/transactions/", server.getTotalTransactionCount) +} + +func (w *WebServer) getTotalContractCount(c *gin.Context) { + count, err := w.backend.GetTotalContractCount() + if err != nil { + errorHandler(c, fmt.Errorf("unable to execute request %w", err), w.logger) + return + } + + c.JSON(http.StatusOK, gin.H{"count": count}) +} + +func (w *WebServer) getTotalTransactionCount(c *gin.Context) { + count, err := w.backend.GetTotalTransactionCount() + if err != nil { + errorHandler(c, fmt.Errorf("unable to execute request %w", err), w.logger) + return + } + + c.JSON(http.StatusOK, gin.H{"count": count}) +} diff --git a/tools/obscuroscan_v2/backend/webserver/webserver_routes_items.go b/tools/obscuroscan_v2/backend/webserver/webserver_routes_items.go new file mode 100644 index 0000000000..352d435a67 --- /dev/null +++ b/tools/obscuroscan_v2/backend/webserver/webserver_routes_items.go @@ -0,0 +1,161 @@ +package webserver + +import ( + "fmt" + "net/http" + "strconv" + + gethcommon "github.com/ethereum/go-ethereum/common" + "github.com/gin-gonic/gin" +) + +func routeItems(r *gin.Engine, server *WebServer) { + r.GET("/items/batch/latest/", server.getLatestBatch) + r.GET("/items/rollup/latest/", server.getLatestRollupHeader) + r.GET("/items/batch/:hash", server.getBatch) + r.GET("/items/transactions/", server.getPublicTransactions) + r.GET("/items/batches/", server.getBatchListing) + r.GET("/items/blocks/", server.getBlockListing) + r.GET("/info/obscuro/", server.getConfig) +} + +func (w *WebServer) getLatestBatch(c *gin.Context) { + batch, err := w.backend.GetLatestBatch() + if err != nil { + errorHandler(c, fmt.Errorf("unable to execute request %w", err), w.logger) + return + } + + c.JSON(http.StatusOK, gin.H{"item": batch}) +} + +func (w *WebServer) getLatestRollupHeader(c *gin.Context) { + block, err := w.backend.GetLatestRollupHeader() + if err != nil { + errorHandler(c, fmt.Errorf("unable to execute request %w", err), w.logger) + return + } + + c.JSON(http.StatusOK, gin.H{"item": block}) +} + +func (w *WebServer) getBatch(c *gin.Context) { + hash := c.Param("hash") + parsedHash := gethcommon.HexToHash(hash) + batch, err := w.backend.GetBatchByHash(parsedHash) + if err != nil { + errorHandler(c, fmt.Errorf("unable to execute request %w", err), w.logger) + return + } + + c.JSON(http.StatusOK, gin.H{"item": batch}) +} + +func (w *WebServer) getBatchHeader(c *gin.Context) { + hash := c.Param("hash") + parsedHash := gethcommon.HexToHash(hash) + batch, err := w.backend.GetBatchHeader(parsedHash) + if err != nil { + errorHandler(c, fmt.Errorf("unable to execute request %w", err), w.logger) + return + } + + c.JSON(http.StatusOK, gin.H{"item": batch}) +} + +func (w *WebServer) getTransaction(c *gin.Context) { + hash := c.Param("hash") + parsedHash := gethcommon.HexToHash(hash) + batch, err := w.backend.GetTransaction(parsedHash) + if err != nil { + errorHandler(c, fmt.Errorf("unable to execute request %w", err), w.logger) + return + } + + c.JSON(http.StatusOK, gin.H{"item": batch}) +} + +func (w *WebServer) getPublicTransactions(c *gin.Context) { + offsetStr := c.DefaultQuery("offset", "0") + sizeStr := c.DefaultQuery("size", "10") + + offset, err := strconv.ParseUint(offsetStr, 10, 32) + if err != nil { + errorHandler(c, fmt.Errorf("unable to execute request %w", err), w.logger) + return + } + + parseUint, err := strconv.ParseUint(sizeStr, 10, 64) + if err != nil { + errorHandler(c, fmt.Errorf("unable to execute request %w", err), w.logger) + return + } + + publicTxs, err := w.backend.GetPublicTransactions(offset, parseUint) + if err != nil { + errorHandler(c, fmt.Errorf("unable to execute request %w", err), w.logger) + return + } + + c.JSON(http.StatusOK, gin.H{"result": publicTxs}) +} + +func (w *WebServer) getBatchListing(c *gin.Context) { + offsetStr := c.DefaultQuery("offset", "0") + sizeStr := c.DefaultQuery("size", "10") + + offset, err := strconv.ParseUint(offsetStr, 10, 32) + if err != nil { + errorHandler(c, fmt.Errorf("unable to execute request %w", err), w.logger) + return + } + + parseUint, err := strconv.ParseUint(sizeStr, 10, 64) + if err != nil { + errorHandler(c, fmt.Errorf("unable to execute request %w", err), w.logger) + return + } + + batchesListing, err := w.backend.GetBatchesListing(offset, parseUint) + if err != nil { + errorHandler(c, fmt.Errorf("unable to execute request %w", err), w.logger) + return + } + + c.JSON(http.StatusOK, gin.H{"result": batchesListing}) +} + +func (w *WebServer) getBlockListing(c *gin.Context) { + offsetStr := c.DefaultQuery("offset", "0") + sizeStr := c.DefaultQuery("size", "10") + + offset, err := strconv.ParseUint(offsetStr, 10, 32) + if err != nil { + errorHandler(c, fmt.Errorf("unable to execute request %w", err), w.logger) + return + } + + parseUint, err := strconv.ParseUint(sizeStr, 10, 64) + if err != nil { + errorHandler(c, fmt.Errorf("unable to execute request %w", err), w.logger) + return + } + + batchesListing, err := w.backend.GetBlockListing(offset, parseUint) + if err != nil { + errorHandler(c, fmt.Errorf("unable to execute request %w", err), w.logger) + return + } + + c.JSON(http.StatusOK, gin.H{"result": batchesListing}) +} + +func (w *WebServer) getConfig(c *gin.Context) { + config, err := w.backend.GetConfig() + if err != nil { + errorHandler(c, fmt.Errorf("unable to execute request %w", err), w.logger) + return + } + + c.JSON(http.StatusOK, gin.H{"item": config}) +} diff --git a/tools/obscuroscan_v2/frontend/src/components/VerifiedContractsDataGrid.vue b/tools/obscuroscan_v2/frontend/src/components/VerifiedContractsDataGrid.vue new file mode 100644 index 0000000000..e9f03cbafa --- /dev/null +++ b/tools/obscuroscan_v2/frontend/src/components/VerifiedContractsDataGrid.vue @@ -0,0 +1,54 @@ + + + + + \ No newline at end of file diff --git a/tools/obscuroscan_v2/frontend/src/router/index.js b/tools/obscuroscan_v2/frontend/src/router/index.js index 9f55fb63f3..f9830e81fc 100644 --- a/tools/obscuroscan_v2/frontend/src/router/index.js +++ b/tools/obscuroscan_v2/frontend/src/router/index.js @@ -36,8 +36,8 @@ const router = createRouter({ }, { path: '/verified', - name: 'verifiedContracts', - component: () => import('../views/VerifiedContracts.vue') + name: 'verifiedData', + component: () => import('../views/VerifiedData.vue') } ] }) diff --git a/tools/obscuroscan_v2/frontend/src/stores/verifiedContractStore.js b/tools/obscuroscan_v2/frontend/src/stores/verifiedContractStore.js new file mode 100644 index 0000000000..5a32ca02b4 --- /dev/null +++ b/tools/obscuroscan_v2/frontend/src/stores/verifiedContractStore.js @@ -0,0 +1,46 @@ +import {defineStore} from 'pinia'; +import Config from "@/lib/config"; + +export const useVerifiedContractStore = defineStore({ + id: 'VerifiedContractStore', + state: () => ({ + contracts: null, + sequencerData: null + }), + actions: { + async update() { + try { + const response = await fetch( Config.backendServerAddress+`/info/obscuro/`); + + const data = await response.json(); + this.contracts = + [ + { + "name": "Management Contract", + "address": data.item.ManagementContractAddress, + "confirmed": true + }, + { + "name": "Message Bus Contract", + "address": data.item.MessageBusAddress, + "confirmed": true + } + ]; + this.sequencerData = [ + { + "name": "Sequencer ID", + "address": data.item.SequencerID, + "confirmed": true, + }, + { + "name": "L1 Start Hash", + "address": data.item.L1StartHash, + "confirmed": true, + } + ] + } catch (error) { + console.error("Failed to fetch item:", error); + } + }, + }, +}); diff --git a/tools/obscuroscan_v2/frontend/src/views/NavbarView.vue b/tools/obscuroscan_v2/frontend/src/views/NavbarView.vue index 64c1f52b50..a75a23f6a0 100644 --- a/tools/obscuroscan_v2/frontend/src/views/NavbarView.vue +++ b/tools/obscuroscan_v2/frontend/src/views/NavbarView.vue @@ -34,6 +34,7 @@ diff --git a/tools/obscuroscan_v2/frontend/src/views/VerifiedContracts.vue b/tools/obscuroscan_v2/frontend/src/views/VerifiedData.vue similarity index 51% rename from tools/obscuroscan_v2/frontend/src/views/VerifiedContracts.vue rename to tools/obscuroscan_v2/frontend/src/views/VerifiedData.vue index 5a31bfca7e..9b11d4eacc 100644 --- a/tools/obscuroscan_v2/frontend/src/views/VerifiedContracts.vue +++ b/tools/obscuroscan_v2/frontend/src/views/VerifiedData.vue @@ -2,8 +2,8 @@ - Personal Transactions - + Official Verified Data + @@ -11,10 +11,10 @@