From 15f9997d1fcd957675f85415c5f7333a39f569ed Mon Sep 17 00:00:00 2001 From: LINCKODE Date: Mon, 17 Jun 2024 17:03:09 +0300 Subject: [PATCH] Implement endpoints for tick transactions with additional info. --- protobuff/archive.pb.go | 1791 +++++++++++++++++++--------------- protobuff/archive.pb.gw.go | 341 ++++++- protobuff/archive.proto | 60 +- protobuff/archive_grpc.pb.go | 145 ++- rpc/rpc_server.go | 222 ++++- 5 files changed, 1742 insertions(+), 817 deletions(-) diff --git a/protobuff/archive.pb.go b/protobuff/archive.pb.go index d50aec1..33aa8d1 100644 --- a/protobuff/archive.pb.go +++ b/protobuff/archive.pb.go @@ -338,116 +338,6 @@ func (x *Transaction) GetTxId() string { return "" } -type GetTransactionDataRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - TxId string `protobuf:"bytes,1,opt,name=tx_id,json=txId,proto3" json:"tx_id,omitempty"` -} - -func (x *GetTransactionDataRequest) Reset() { - *x = GetTransactionDataRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_archive_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetTransactionDataRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetTransactionDataRequest) ProtoMessage() {} - -func (x *GetTransactionDataRequest) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[4] - 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 GetTransactionDataRequest.ProtoReflect.Descriptor instead. -func (*GetTransactionDataRequest) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{4} -} - -func (x *GetTransactionDataRequest) GetTxId() string { - if x != nil { - return x.TxId - } - return "" -} - -type GetTransactionDataResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Transaction *Transaction `protobuf:"bytes,1,opt,name=transaction,proto3" json:"transaction,omitempty"` - Timestamp uint64 `protobuf:"varint,2,opt,name=timestamp,proto3" json:"timestamp,omitempty"` - MoneyFlew bool `protobuf:"varint,3,opt,name=money_flew,json=moneyFlew,proto3" json:"money_flew,omitempty"` -} - -func (x *GetTransactionDataResponse) Reset() { - *x = GetTransactionDataResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_archive_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetTransactionDataResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetTransactionDataResponse) ProtoMessage() {} - -func (x *GetTransactionDataResponse) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[5] - 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 GetTransactionDataResponse.ProtoReflect.Descriptor instead. -func (*GetTransactionDataResponse) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{5} -} - -func (x *GetTransactionDataResponse) GetTransaction() *Transaction { - if x != nil { - return x.Transaction - } - return nil -} - -func (x *GetTransactionDataResponse) GetTimestamp() uint64 { - if x != nil { - return x.Timestamp - } - return 0 -} - -func (x *GetTransactionDataResponse) GetMoneyFlew() bool { - if x != nil { - return x.MoneyFlew - } - return false -} - type TransactionStatus struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -460,7 +350,7 @@ type TransactionStatus struct { func (x *TransactionStatus) Reset() { *x = TransactionStatus{} if protoimpl.UnsafeEnabled { - mi := &file_archive_proto_msgTypes[6] + mi := &file_archive_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -473,7 +363,7 @@ func (x *TransactionStatus) String() string { func (*TransactionStatus) ProtoMessage() {} func (x *TransactionStatus) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[6] + mi := &file_archive_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -486,7 +376,7 @@ func (x *TransactionStatus) ProtoReflect() protoreflect.Message { // Deprecated: Use TransactionStatus.ProtoReflect.Descriptor instead. func (*TransactionStatus) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{6} + return file_archive_proto_rawDescGZIP(), []int{4} } func (x *TransactionStatus) GetTxId() string { @@ -514,7 +404,7 @@ type TickTransactionsStatus struct { func (x *TickTransactionsStatus) Reset() { *x = TickTransactionsStatus{} if protoimpl.UnsafeEnabled { - mi := &file_archive_proto_msgTypes[7] + mi := &file_archive_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -527,7 +417,7 @@ func (x *TickTransactionsStatus) String() string { func (*TickTransactionsStatus) ProtoMessage() {} func (x *TickTransactionsStatus) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[7] + mi := &file_archive_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -540,7 +430,7 @@ func (x *TickTransactionsStatus) ProtoReflect() protoreflect.Message { // Deprecated: Use TickTransactionsStatus.ProtoReflect.Descriptor instead. func (*TickTransactionsStatus) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{7} + return file_archive_proto_rawDescGZIP(), []int{5} } func (x *TickTransactionsStatus) GetTransactions() []*TransactionStatus { @@ -561,7 +451,7 @@ type NextAvailableTick struct { func (x *NextAvailableTick) Reset() { *x = NextAvailableTick{} if protoimpl.UnsafeEnabled { - mi := &file_archive_proto_msgTypes[8] + mi := &file_archive_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -574,7 +464,7 @@ func (x *NextAvailableTick) String() string { func (*NextAvailableTick) ProtoMessage() {} func (x *NextAvailableTick) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[8] + mi := &file_archive_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -587,7 +477,7 @@ func (x *NextAvailableTick) ProtoReflect() protoreflect.Message { // Deprecated: Use NextAvailableTick.ProtoReflect.Descriptor instead. func (*NextAvailableTick) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{8} + return file_archive_proto_rawDescGZIP(), []int{6} } func (x *NextAvailableTick) GetNextTickNumber() uint32 { @@ -608,7 +498,7 @@ type LastProcessedTick struct { func (x *LastProcessedTick) Reset() { *x = LastProcessedTick{} if protoimpl.UnsafeEnabled { - mi := &file_archive_proto_msgTypes[9] + mi := &file_archive_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -621,7 +511,7 @@ func (x *LastProcessedTick) String() string { func (*LastProcessedTick) ProtoMessage() {} func (x *LastProcessedTick) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[9] + mi := &file_archive_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -634,7 +524,7 @@ func (x *LastProcessedTick) ProtoReflect() protoreflect.Message { // Deprecated: Use LastProcessedTick.ProtoReflect.Descriptor instead. func (*LastProcessedTick) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{9} + return file_archive_proto_rawDescGZIP(), []int{7} } func (x *LastProcessedTick) GetLastProcessedTick() uint32 { @@ -655,7 +545,7 @@ type GetTransactionRequest struct { func (x *GetTransactionRequest) Reset() { *x = GetTransactionRequest{} if protoimpl.UnsafeEnabled { - mi := &file_archive_proto_msgTypes[10] + mi := &file_archive_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -668,7 +558,7 @@ func (x *GetTransactionRequest) String() string { func (*GetTransactionRequest) ProtoMessage() {} func (x *GetTransactionRequest) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[10] + mi := &file_archive_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -681,7 +571,7 @@ func (x *GetTransactionRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTransactionRequest.ProtoReflect.Descriptor instead. func (*GetTransactionRequest) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{10} + return file_archive_proto_rawDescGZIP(), []int{8} } func (x *GetTransactionRequest) GetTxId() string { @@ -702,7 +592,7 @@ type GetTransactionResponse struct { func (x *GetTransactionResponse) Reset() { *x = GetTransactionResponse{} if protoimpl.UnsafeEnabled { - mi := &file_archive_proto_msgTypes[11] + mi := &file_archive_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -715,7 +605,7 @@ func (x *GetTransactionResponse) String() string { func (*GetTransactionResponse) ProtoMessage() {} func (x *GetTransactionResponse) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[11] + mi := &file_archive_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -728,7 +618,7 @@ func (x *GetTransactionResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTransactionResponse.ProtoReflect.Descriptor instead. func (*GetTransactionResponse) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{11} + return file_archive_proto_rawDescGZIP(), []int{9} } func (x *GetTransactionResponse) GetTransaction() *Transaction { @@ -749,7 +639,7 @@ type GetTransactionStatusRequest struct { func (x *GetTransactionStatusRequest) Reset() { *x = GetTransactionStatusRequest{} if protoimpl.UnsafeEnabled { - mi := &file_archive_proto_msgTypes[12] + mi := &file_archive_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -762,7 +652,7 @@ func (x *GetTransactionStatusRequest) String() string { func (*GetTransactionStatusRequest) ProtoMessage() {} func (x *GetTransactionStatusRequest) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[12] + mi := &file_archive_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -775,7 +665,7 @@ func (x *GetTransactionStatusRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTransactionStatusRequest.ProtoReflect.Descriptor instead. func (*GetTransactionStatusRequest) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{12} + return file_archive_proto_rawDescGZIP(), []int{10} } func (x *GetTransactionStatusRequest) GetTxId() string { @@ -796,7 +686,7 @@ type GetTransactionStatusResponse struct { func (x *GetTransactionStatusResponse) Reset() { *x = GetTransactionStatusResponse{} if protoimpl.UnsafeEnabled { - mi := &file_archive_proto_msgTypes[13] + mi := &file_archive_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -809,7 +699,7 @@ func (x *GetTransactionStatusResponse) String() string { func (*GetTransactionStatusResponse) ProtoMessage() {} func (x *GetTransactionStatusResponse) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[13] + mi := &file_archive_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -822,7 +712,7 @@ func (x *GetTransactionStatusResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTransactionStatusResponse.ProtoReflect.Descriptor instead. func (*GetTransactionStatusResponse) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{13} + return file_archive_proto_rawDescGZIP(), []int{11} } func (x *GetTransactionStatusResponse) GetTransactionStatus() *TransactionStatus { @@ -843,7 +733,7 @@ type GetTickTransactionsRequest struct { func (x *GetTickTransactionsRequest) Reset() { *x = GetTickTransactionsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_archive_proto_msgTypes[14] + mi := &file_archive_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -856,7 +746,7 @@ func (x *GetTickTransactionsRequest) String() string { func (*GetTickTransactionsRequest) ProtoMessage() {} func (x *GetTickTransactionsRequest) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[14] + mi := &file_archive_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -869,7 +759,7 @@ func (x *GetTickTransactionsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTickTransactionsRequest.ProtoReflect.Descriptor instead. func (*GetTickTransactionsRequest) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{14} + return file_archive_proto_rawDescGZIP(), []int{12} } func (x *GetTickTransactionsRequest) GetTickNumber() uint32 { @@ -890,7 +780,7 @@ type GetTickTransactionsResponse struct { func (x *GetTickTransactionsResponse) Reset() { *x = GetTickTransactionsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_archive_proto_msgTypes[15] + mi := &file_archive_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -903,7 +793,7 @@ func (x *GetTickTransactionsResponse) String() string { func (*GetTickTransactionsResponse) ProtoMessage() {} func (x *GetTickTransactionsResponse) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[15] + mi := &file_archive_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -916,7 +806,7 @@ func (x *GetTickTransactionsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTickTransactionsResponse.ProtoReflect.Descriptor instead. func (*GetTickTransactionsResponse) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{15} + return file_archive_proto_rawDescGZIP(), []int{13} } func (x *GetTickTransactionsResponse) GetTransactions() []*Transaction { @@ -937,7 +827,7 @@ type GetTickApprovedTransactionsRequest struct { func (x *GetTickApprovedTransactionsRequest) Reset() { *x = GetTickApprovedTransactionsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_archive_proto_msgTypes[16] + mi := &file_archive_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -950,7 +840,7 @@ func (x *GetTickApprovedTransactionsRequest) String() string { func (*GetTickApprovedTransactionsRequest) ProtoMessage() {} func (x *GetTickApprovedTransactionsRequest) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[16] + mi := &file_archive_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -963,7 +853,7 @@ func (x *GetTickApprovedTransactionsRequest) ProtoReflect() protoreflect.Message // Deprecated: Use GetTickApprovedTransactionsRequest.ProtoReflect.Descriptor instead. func (*GetTickApprovedTransactionsRequest) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{16} + return file_archive_proto_rawDescGZIP(), []int{14} } func (x *GetTickApprovedTransactionsRequest) GetTickNumber() uint32 { @@ -984,7 +874,7 @@ type GetTickApprovedTransactionsResponse struct { func (x *GetTickApprovedTransactionsResponse) Reset() { *x = GetTickApprovedTransactionsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_archive_proto_msgTypes[17] + mi := &file_archive_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -997,7 +887,7 @@ func (x *GetTickApprovedTransactionsResponse) String() string { func (*GetTickApprovedTransactionsResponse) ProtoMessage() {} func (x *GetTickApprovedTransactionsResponse) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[17] + mi := &file_archive_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1010,7 +900,7 @@ func (x *GetTickApprovedTransactionsResponse) ProtoReflect() protoreflect.Messag // Deprecated: Use GetTickApprovedTransactionsResponse.ProtoReflect.Descriptor instead. func (*GetTickApprovedTransactionsResponse) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{17} + return file_archive_proto_rawDescGZIP(), []int{15} } func (x *GetTickApprovedTransactionsResponse) GetApprovedTransactions() []*Transaction { @@ -1036,7 +926,7 @@ type QuorumDiff struct { func (x *QuorumDiff) Reset() { *x = QuorumDiff{} if protoimpl.UnsafeEnabled { - mi := &file_archive_proto_msgTypes[18] + mi := &file_archive_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1049,7 +939,7 @@ func (x *QuorumDiff) String() string { func (*QuorumDiff) ProtoMessage() {} func (x *QuorumDiff) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[18] + mi := &file_archive_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1062,7 +952,7 @@ func (x *QuorumDiff) ProtoReflect() protoreflect.Message { // Deprecated: Use QuorumDiff.ProtoReflect.Descriptor instead. func (*QuorumDiff) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{18} + return file_archive_proto_rawDescGZIP(), []int{16} } func (x *QuorumDiff) GetSaltedResourceTestingDigestHex() string { @@ -1125,7 +1015,7 @@ type QuorumTickStructure struct { func (x *QuorumTickStructure) Reset() { *x = QuorumTickStructure{} if protoimpl.UnsafeEnabled { - mi := &file_archive_proto_msgTypes[19] + mi := &file_archive_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1138,7 +1028,7 @@ func (x *QuorumTickStructure) String() string { func (*QuorumTickStructure) ProtoMessage() {} func (x *QuorumTickStructure) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[19] + mi := &file_archive_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1151,7 +1041,7 @@ func (x *QuorumTickStructure) ProtoReflect() protoreflect.Message { // Deprecated: Use QuorumTickStructure.ProtoReflect.Descriptor instead. func (*QuorumTickStructure) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{19} + return file_archive_proto_rawDescGZIP(), []int{17} } func (x *QuorumTickStructure) GetEpoch() uint32 { @@ -1222,7 +1112,7 @@ type SkippedTicksInterval struct { func (x *SkippedTicksInterval) Reset() { *x = SkippedTicksInterval{} if protoimpl.UnsafeEnabled { - mi := &file_archive_proto_msgTypes[20] + mi := &file_archive_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1235,7 +1125,7 @@ func (x *SkippedTicksInterval) String() string { func (*SkippedTicksInterval) ProtoMessage() {} func (x *SkippedTicksInterval) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[20] + mi := &file_archive_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1248,7 +1138,7 @@ func (x *SkippedTicksInterval) ProtoReflect() protoreflect.Message { // Deprecated: Use SkippedTicksInterval.ProtoReflect.Descriptor instead. func (*SkippedTicksInterval) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{20} + return file_archive_proto_rawDescGZIP(), []int{18} } func (x *SkippedTicksInterval) GetStartTick() uint32 { @@ -1276,7 +1166,7 @@ type SkippedTicksIntervalList struct { func (x *SkippedTicksIntervalList) Reset() { *x = SkippedTicksIntervalList{} if protoimpl.UnsafeEnabled { - mi := &file_archive_proto_msgTypes[21] + mi := &file_archive_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1289,7 +1179,7 @@ func (x *SkippedTicksIntervalList) String() string { func (*SkippedTicksIntervalList) ProtoMessage() {} func (x *SkippedTicksIntervalList) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[21] + mi := &file_archive_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1302,7 +1192,7 @@ func (x *SkippedTicksIntervalList) ProtoReflect() protoreflect.Message { // Deprecated: Use SkippedTicksIntervalList.ProtoReflect.Descriptor instead. func (*SkippedTicksIntervalList) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{21} + return file_archive_proto_rawDescGZIP(), []int{19} } func (x *SkippedTicksIntervalList) GetSkippedTicks() []*SkippedTicksInterval { @@ -1324,7 +1214,7 @@ type QuorumTickData struct { func (x *QuorumTickData) Reset() { *x = QuorumTickData{} if protoimpl.UnsafeEnabled { - mi := &file_archive_proto_msgTypes[22] + mi := &file_archive_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1337,7 +1227,7 @@ func (x *QuorumTickData) String() string { func (*QuorumTickData) ProtoMessage() {} func (x *QuorumTickData) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[22] + mi := &file_archive_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1350,7 +1240,7 @@ func (x *QuorumTickData) ProtoReflect() protoreflect.Message { // Deprecated: Use QuorumTickData.ProtoReflect.Descriptor instead. func (*QuorumTickData) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{22} + return file_archive_proto_rawDescGZIP(), []int{20} } func (x *QuorumTickData) GetQuorumTickStructure() *QuorumTickStructure { @@ -1378,7 +1268,7 @@ type GetQuorumTickDataRequest struct { func (x *GetQuorumTickDataRequest) Reset() { *x = GetQuorumTickDataRequest{} if protoimpl.UnsafeEnabled { - mi := &file_archive_proto_msgTypes[23] + mi := &file_archive_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1391,7 +1281,7 @@ func (x *GetQuorumTickDataRequest) String() string { func (*GetQuorumTickDataRequest) ProtoMessage() {} func (x *GetQuorumTickDataRequest) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[23] + mi := &file_archive_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1404,7 +1294,7 @@ func (x *GetQuorumTickDataRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetQuorumTickDataRequest.ProtoReflect.Descriptor instead. func (*GetQuorumTickDataRequest) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{23} + return file_archive_proto_rawDescGZIP(), []int{21} } func (x *GetQuorumTickDataRequest) GetTickNumber() uint32 { @@ -1425,7 +1315,7 @@ type GetQuorumTickDataResponse struct { func (x *GetQuorumTickDataResponse) Reset() { *x = GetQuorumTickDataResponse{} if protoimpl.UnsafeEnabled { - mi := &file_archive_proto_msgTypes[24] + mi := &file_archive_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1438,7 +1328,7 @@ func (x *GetQuorumTickDataResponse) String() string { func (*GetQuorumTickDataResponse) ProtoMessage() {} func (x *GetQuorumTickDataResponse) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[24] + mi := &file_archive_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1451,7 +1341,7 @@ func (x *GetQuorumTickDataResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetQuorumTickDataResponse.ProtoReflect.Descriptor instead. func (*GetQuorumTickDataResponse) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{24} + return file_archive_proto_rawDescGZIP(), []int{22} } func (x *GetQuorumTickDataResponse) GetQuorumTickData() *QuorumTickData { @@ -1474,7 +1364,7 @@ type Computors struct { func (x *Computors) Reset() { *x = Computors{} if protoimpl.UnsafeEnabled { - mi := &file_archive_proto_msgTypes[25] + mi := &file_archive_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1487,7 +1377,7 @@ func (x *Computors) String() string { func (*Computors) ProtoMessage() {} func (x *Computors) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[25] + mi := &file_archive_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1500,7 +1390,7 @@ func (x *Computors) ProtoReflect() protoreflect.Message { // Deprecated: Use Computors.ProtoReflect.Descriptor instead. func (*Computors) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{25} + return file_archive_proto_rawDescGZIP(), []int{23} } func (x *Computors) GetEpoch() uint32 { @@ -1535,7 +1425,7 @@ type GetComputorsRequest struct { func (x *GetComputorsRequest) Reset() { *x = GetComputorsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_archive_proto_msgTypes[26] + mi := &file_archive_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1548,7 +1438,7 @@ func (x *GetComputorsRequest) String() string { func (*GetComputorsRequest) ProtoMessage() {} func (x *GetComputorsRequest) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[26] + mi := &file_archive_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1561,7 +1451,7 @@ func (x *GetComputorsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetComputorsRequest.ProtoReflect.Descriptor instead. func (*GetComputorsRequest) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{26} + return file_archive_proto_rawDescGZIP(), []int{24} } func (x *GetComputorsRequest) GetEpoch() uint32 { @@ -1582,7 +1472,7 @@ type GetComputorsResponse struct { func (x *GetComputorsResponse) Reset() { *x = GetComputorsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_archive_proto_msgTypes[27] + mi := &file_archive_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1595,7 +1485,7 @@ func (x *GetComputorsResponse) String() string { func (*GetComputorsResponse) ProtoMessage() {} func (x *GetComputorsResponse) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[27] + mi := &file_archive_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1608,7 +1498,7 @@ func (x *GetComputorsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetComputorsResponse.ProtoReflect.Descriptor instead. func (*GetComputorsResponse) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{27} + return file_archive_proto_rawDescGZIP(), []int{25} } func (x *GetComputorsResponse) GetComputors() *Computors { @@ -1631,7 +1521,7 @@ type TransferTransactionsPerTick struct { func (x *TransferTransactionsPerTick) Reset() { *x = TransferTransactionsPerTick{} if protoimpl.UnsafeEnabled { - mi := &file_archive_proto_msgTypes[28] + mi := &file_archive_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1644,7 +1534,7 @@ func (x *TransferTransactionsPerTick) String() string { func (*TransferTransactionsPerTick) ProtoMessage() {} func (x *TransferTransactionsPerTick) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[28] + mi := &file_archive_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1657,7 +1547,7 @@ func (x *TransferTransactionsPerTick) ProtoReflect() protoreflect.Message { // Deprecated: Use TransferTransactionsPerTick.ProtoReflect.Descriptor instead. func (*TransferTransactionsPerTick) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{28} + return file_archive_proto_rawDescGZIP(), []int{26} } func (x *TransferTransactionsPerTick) GetTickNumber() uint32 { @@ -1693,7 +1583,7 @@ type ProcessedTick struct { func (x *ProcessedTick) Reset() { *x = ProcessedTick{} if protoimpl.UnsafeEnabled { - mi := &file_archive_proto_msgTypes[29] + mi := &file_archive_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1706,7 +1596,7 @@ func (x *ProcessedTick) String() string { func (*ProcessedTick) ProtoMessage() {} func (x *ProcessedTick) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[29] + mi := &file_archive_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1719,7 +1609,7 @@ func (x *ProcessedTick) ProtoReflect() protoreflect.Message { // Deprecated: Use ProcessedTick.ProtoReflect.Descriptor instead. func (*ProcessedTick) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{29} + return file_archive_proto_rawDescGZIP(), []int{27} } func (x *ProcessedTick) GetTickNumber() uint32 { @@ -1750,7 +1640,7 @@ type GetStatusResponse struct { func (x *GetStatusResponse) Reset() { *x = GetStatusResponse{} if protoimpl.UnsafeEnabled { - mi := &file_archive_proto_msgTypes[30] + mi := &file_archive_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1763,7 +1653,7 @@ func (x *GetStatusResponse) String() string { func (*GetStatusResponse) ProtoMessage() {} func (x *GetStatusResponse) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[30] + mi := &file_archive_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1776,7 +1666,7 @@ func (x *GetStatusResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetStatusResponse.ProtoReflect.Descriptor instead. func (*GetStatusResponse) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{30} + return file_archive_proto_rawDescGZIP(), []int{28} } func (x *GetStatusResponse) GetLastProcessedTick() *ProcessedTick { @@ -1818,7 +1708,7 @@ type GetHealthCheckResponse struct { func (x *GetHealthCheckResponse) Reset() { *x = GetHealthCheckResponse{} if protoimpl.UnsafeEnabled { - mi := &file_archive_proto_msgTypes[31] + mi := &file_archive_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1831,7 +1721,7 @@ func (x *GetHealthCheckResponse) String() string { func (*GetHealthCheckResponse) ProtoMessage() {} func (x *GetHealthCheckResponse) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[31] + mi := &file_archive_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1844,7 +1734,7 @@ func (x *GetHealthCheckResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetHealthCheckResponse.ProtoReflect.Descriptor instead. func (*GetHealthCheckResponse) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{31} + return file_archive_proto_rawDescGZIP(), []int{29} } func (x *GetHealthCheckResponse) GetStatus() bool { @@ -1865,7 +1755,7 @@ type GetLatestTickResponse struct { func (x *GetLatestTickResponse) Reset() { *x = GetLatestTickResponse{} if protoimpl.UnsafeEnabled { - mi := &file_archive_proto_msgTypes[32] + mi := &file_archive_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1878,7 +1768,7 @@ func (x *GetLatestTickResponse) String() string { func (*GetLatestTickResponse) ProtoMessage() {} func (x *GetLatestTickResponse) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[32] + mi := &file_archive_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1891,7 +1781,7 @@ func (x *GetLatestTickResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetLatestTickResponse.ProtoReflect.Descriptor instead. func (*GetLatestTickResponse) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{32} + return file_archive_proto_rawDescGZIP(), []int{30} } func (x *GetLatestTickResponse) GetLatestTick() uint32 { @@ -1914,7 +1804,7 @@ type GetTransferTransactionsPerTickRequest struct { func (x *GetTransferTransactionsPerTickRequest) Reset() { *x = GetTransferTransactionsPerTickRequest{} if protoimpl.UnsafeEnabled { - mi := &file_archive_proto_msgTypes[33] + mi := &file_archive_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1927,7 +1817,7 @@ func (x *GetTransferTransactionsPerTickRequest) String() string { func (*GetTransferTransactionsPerTickRequest) ProtoMessage() {} func (x *GetTransferTransactionsPerTickRequest) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[33] + mi := &file_archive_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1940,7 +1830,7 @@ func (x *GetTransferTransactionsPerTickRequest) ProtoReflect() protoreflect.Mess // Deprecated: Use GetTransferTransactionsPerTickRequest.ProtoReflect.Descriptor instead. func (*GetTransferTransactionsPerTickRequest) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{33} + return file_archive_proto_rawDescGZIP(), []int{31} } func (x *GetTransferTransactionsPerTickRequest) GetIdentity() string { @@ -1975,7 +1865,7 @@ type GetTransferTransactionsPerTickResponse struct { func (x *GetTransferTransactionsPerTickResponse) Reset() { *x = GetTransferTransactionsPerTickResponse{} if protoimpl.UnsafeEnabled { - mi := &file_archive_proto_msgTypes[34] + mi := &file_archive_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1988,7 +1878,7 @@ func (x *GetTransferTransactionsPerTickResponse) String() string { func (*GetTransferTransactionsPerTickResponse) ProtoMessage() {} func (x *GetTransferTransactionsPerTickResponse) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[34] + mi := &file_archive_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2001,7 +1891,7 @@ func (x *GetTransferTransactionsPerTickResponse) ProtoReflect() protoreflect.Mes // Deprecated: Use GetTransferTransactionsPerTickResponse.ProtoReflect.Descriptor instead. func (*GetTransferTransactionsPerTickResponse) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{34} + return file_archive_proto_rawDescGZIP(), []int{32} } func (x *GetTransferTransactionsPerTickResponse) GetTransferTransactionsPerTick() []*TransferTransactionsPerTick { @@ -2022,7 +1912,7 @@ type GetChainHashRequest struct { func (x *GetChainHashRequest) Reset() { *x = GetChainHashRequest{} if protoimpl.UnsafeEnabled { - mi := &file_archive_proto_msgTypes[35] + mi := &file_archive_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2035,7 +1925,7 @@ func (x *GetChainHashRequest) String() string { func (*GetChainHashRequest) ProtoMessage() {} func (x *GetChainHashRequest) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[35] + mi := &file_archive_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2048,7 +1938,7 @@ func (x *GetChainHashRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetChainHashRequest.ProtoReflect.Descriptor instead. func (*GetChainHashRequest) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{35} + return file_archive_proto_rawDescGZIP(), []int{33} } func (x *GetChainHashRequest) GetTickNumber() uint32 { @@ -2069,7 +1959,7 @@ type GetChainHashResponse struct { func (x *GetChainHashResponse) Reset() { *x = GetChainHashResponse{} if protoimpl.UnsafeEnabled { - mi := &file_archive_proto_msgTypes[36] + mi := &file_archive_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2082,7 +1972,7 @@ func (x *GetChainHashResponse) String() string { func (*GetChainHashResponse) ProtoMessage() {} func (x *GetChainHashResponse) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[36] + mi := &file_archive_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2095,7 +1985,7 @@ func (x *GetChainHashResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetChainHashResponse.ProtoReflect.Descriptor instead. func (*GetChainHashResponse) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{36} + return file_archive_proto_rawDescGZIP(), []int{34} } func (x *GetChainHashResponse) GetHexDigest() string { @@ -2117,7 +2007,7 @@ type ProcessedTickInterval struct { func (x *ProcessedTickInterval) Reset() { *x = ProcessedTickInterval{} if protoimpl.UnsafeEnabled { - mi := &file_archive_proto_msgTypes[37] + mi := &file_archive_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2130,7 +2020,7 @@ func (x *ProcessedTickInterval) String() string { func (*ProcessedTickInterval) ProtoMessage() {} func (x *ProcessedTickInterval) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[37] + mi := &file_archive_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2143,7 +2033,7 @@ func (x *ProcessedTickInterval) ProtoReflect() protoreflect.Message { // Deprecated: Use ProcessedTickInterval.ProtoReflect.Descriptor instead. func (*ProcessedTickInterval) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{37} + return file_archive_proto_rawDescGZIP(), []int{35} } func (x *ProcessedTickInterval) GetInitialProcessedTick() uint32 { @@ -2172,7 +2062,7 @@ type ProcessedTickIntervalsPerEpoch struct { func (x *ProcessedTickIntervalsPerEpoch) Reset() { *x = ProcessedTickIntervalsPerEpoch{} if protoimpl.UnsafeEnabled { - mi := &file_archive_proto_msgTypes[38] + mi := &file_archive_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2185,7 +2075,7 @@ func (x *ProcessedTickIntervalsPerEpoch) String() string { func (*ProcessedTickIntervalsPerEpoch) ProtoMessage() {} func (x *ProcessedTickIntervalsPerEpoch) ProtoReflect() protoreflect.Message { - mi := &file_archive_proto_msgTypes[38] + mi := &file_archive_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2198,7 +2088,7 @@ func (x *ProcessedTickIntervalsPerEpoch) ProtoReflect() protoreflect.Message { // Deprecated: Use ProcessedTickIntervalsPerEpoch.ProtoReflect.Descriptor instead. func (*ProcessedTickIntervalsPerEpoch) Descriptor() ([]byte, []int) { - return file_archive_proto_rawDescGZIP(), []int{38} + return file_archive_proto_rawDescGZIP(), []int{36} } func (x *ProcessedTickIntervalsPerEpoch) GetEpoch() uint32 { @@ -2215,6 +2105,276 @@ func (x *ProcessedTickIntervalsPerEpoch) GetIntervals() []*ProcessedTickInterval return nil } +// Wrapper around transaction and additional data +type TransactionData struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Transaction *Transaction `protobuf:"bytes,1,opt,name=transaction,proto3" json:"transaction,omitempty"` + Timestamp uint64 `protobuf:"varint,2,opt,name=timestamp,proto3" json:"timestamp,omitempty"` + MoneyFlew bool `protobuf:"varint,3,opt,name=money_flew,json=moneyFlew,proto3" json:"money_flew,omitempty"` +} + +func (x *TransactionData) Reset() { + *x = TransactionData{} + if protoimpl.UnsafeEnabled { + mi := &file_archive_proto_msgTypes[37] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TransactionData) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TransactionData) ProtoMessage() {} + +func (x *TransactionData) ProtoReflect() protoreflect.Message { + mi := &file_archive_proto_msgTypes[37] + 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 TransactionData.ProtoReflect.Descriptor instead. +func (*TransactionData) Descriptor() ([]byte, []int) { + return file_archive_proto_rawDescGZIP(), []int{37} +} + +func (x *TransactionData) GetTransaction() *Transaction { + if x != nil { + return x.Transaction + } + return nil +} + +func (x *TransactionData) GetTimestamp() uint64 { + if x != nil { + return x.Timestamp + } + return 0 +} + +func (x *TransactionData) GetMoneyFlew() bool { + if x != nil { + return x.MoneyFlew + } + return false +} + +// Tick Transactions +type GetTickTransactionsRequestV2 struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + TickNumber uint32 `protobuf:"varint,1,opt,name=tick_number,json=tickNumber,proto3" json:"tick_number,omitempty"` +} + +func (x *GetTickTransactionsRequestV2) Reset() { + *x = GetTickTransactionsRequestV2{} + if protoimpl.UnsafeEnabled { + mi := &file_archive_proto_msgTypes[38] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetTickTransactionsRequestV2) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetTickTransactionsRequestV2) ProtoMessage() {} + +func (x *GetTickTransactionsRequestV2) ProtoReflect() protoreflect.Message { + mi := &file_archive_proto_msgTypes[38] + 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 GetTickTransactionsRequestV2.ProtoReflect.Descriptor instead. +func (*GetTickTransactionsRequestV2) Descriptor() ([]byte, []int) { + return file_archive_proto_rawDescGZIP(), []int{38} +} + +func (x *GetTickTransactionsRequestV2) GetTickNumber() uint32 { + if x != nil { + return x.TickNumber + } + return 0 +} + +type GetTickTransactionsResponseV2 struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Transactions []*TransactionData `protobuf:"bytes,1,rep,name=transactions,proto3" json:"transactions,omitempty"` +} + +func (x *GetTickTransactionsResponseV2) Reset() { + *x = GetTickTransactionsResponseV2{} + if protoimpl.UnsafeEnabled { + mi := &file_archive_proto_msgTypes[39] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetTickTransactionsResponseV2) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetTickTransactionsResponseV2) ProtoMessage() {} + +func (x *GetTickTransactionsResponseV2) ProtoReflect() protoreflect.Message { + mi := &file_archive_proto_msgTypes[39] + 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 GetTickTransactionsResponseV2.ProtoReflect.Descriptor instead. +func (*GetTickTransactionsResponseV2) Descriptor() ([]byte, []int) { + return file_archive_proto_rawDescGZIP(), []int{39} +} + +func (x *GetTickTransactionsResponseV2) GetTransactions() []*TransactionData { + if x != nil { + return x.Transactions + } + return nil +} + +// Get Transaction +type GetTransactionRequestV2 struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + TxId string `protobuf:"bytes,1,opt,name=tx_id,json=txId,proto3" json:"tx_id,omitempty"` +} + +func (x *GetTransactionRequestV2) Reset() { + *x = GetTransactionRequestV2{} + if protoimpl.UnsafeEnabled { + mi := &file_archive_proto_msgTypes[40] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetTransactionRequestV2) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetTransactionRequestV2) ProtoMessage() {} + +func (x *GetTransactionRequestV2) ProtoReflect() protoreflect.Message { + mi := &file_archive_proto_msgTypes[40] + 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 GetTransactionRequestV2.ProtoReflect.Descriptor instead. +func (*GetTransactionRequestV2) Descriptor() ([]byte, []int) { + return file_archive_proto_rawDescGZIP(), []int{40} +} + +func (x *GetTransactionRequestV2) GetTxId() string { + if x != nil { + return x.TxId + } + return "" +} + +type GetTransactionResponseV2 struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Transaction *Transaction `protobuf:"bytes,1,opt,name=transaction,proto3" json:"transaction,omitempty"` + Timestamp uint64 `protobuf:"varint,2,opt,name=timestamp,proto3" json:"timestamp,omitempty"` + MoneyFlew bool `protobuf:"varint,3,opt,name=money_flew,json=moneyFlew,proto3" json:"money_flew,omitempty"` +} + +func (x *GetTransactionResponseV2) Reset() { + *x = GetTransactionResponseV2{} + if protoimpl.UnsafeEnabled { + mi := &file_archive_proto_msgTypes[41] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetTransactionResponseV2) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetTransactionResponseV2) ProtoMessage() {} + +func (x *GetTransactionResponseV2) ProtoReflect() protoreflect.Message { + mi := &file_archive_proto_msgTypes[41] + 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 GetTransactionResponseV2.ProtoReflect.Descriptor instead. +func (*GetTransactionResponseV2) Descriptor() ([]byte, []int) { + return file_archive_proto_rawDescGZIP(), []int{41} +} + +func (x *GetTransactionResponseV2) GetTransaction() *Transaction { + if x != nil { + return x.Transaction + } + return nil +} + +func (x *GetTransactionResponseV2) GetTimestamp() uint64 { + if x != nil { + return x.Timestamp + } + return 0 +} + +func (x *GetTransactionResponseV2) GetMoneyFlew() bool { + if x != nil { + return x.MoneyFlew + } + return false +} + var File_archive_proto protoreflect.FileDescriptor var file_archive_proto_rawDesc = []byte{ @@ -2270,448 +2430,506 @@ var file_archive_proto_rawDesc = []byte{ 0x74, 0x75, 0x72, 0x65, 0x5f, 0x68, 0x65, 0x78, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x48, 0x65, 0x78, 0x12, 0x13, 0x0a, 0x05, 0x74, 0x78, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x78, 0x49, - 0x64, 0x22, 0x30, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x13, - 0x0a, 0x05, 0x74, 0x78, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, - 0x78, 0x49, 0x64, 0x22, 0xa3, 0x01, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x48, 0x0a, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, - 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, - 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, - 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x6f, - 0x6e, 0x65, 0x79, 0x5f, 0x66, 0x6c, 0x65, 0x77, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, - 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x46, 0x6c, 0x65, 0x77, 0x22, 0x46, 0x0a, 0x11, 0x54, 0x72, 0x61, - 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x13, - 0x0a, 0x05, 0x74, 0x78, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, - 0x78, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x46, 0x6c, 0x65, 0x77, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x46, 0x6c, 0x65, - 0x77, 0x22, 0x6a, 0x0a, 0x16, 0x54, 0x69, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x50, 0x0a, 0x0c, 0x74, - 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x2c, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, - 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x72, - 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, - 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x3d, 0x0a, - 0x11, 0x4e, 0x65, 0x78, 0x74, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x69, - 0x63, 0x6b, 0x12, 0x28, 0x0a, 0x10, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x5f, - 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x6e, 0x65, - 0x78, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x43, 0x0a, 0x11, - 0x4c, 0x61, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x54, 0x69, 0x63, - 0x6b, 0x12, 0x2e, 0x0a, 0x13, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, - 0x73, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, - 0x6c, 0x61, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x54, 0x69, 0x63, - 0x6b, 0x22, 0x2c, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x13, 0x0a, 0x05, 0x74, 0x78, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x78, 0x49, 0x64, 0x22, - 0x62, 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, 0x48, 0x0a, 0x0b, 0x74, 0x72, 0x61, - 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, - 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, - 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x22, 0x32, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x64, 0x22, 0x46, 0x0a, 0x11, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x13, 0x0a, 0x05, 0x74, 0x78, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x78, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6d, + 0x6f, 0x6e, 0x65, 0x79, 0x46, 0x6c, 0x65, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, + 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x46, 0x6c, 0x65, 0x77, 0x22, 0x6a, 0x0a, 0x16, 0x54, 0x69, 0x63, + 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x12, 0x50, 0x0a, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x71, 0x75, 0x62, 0x69, + 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, + 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x3d, 0x0a, 0x11, 0x4e, 0x65, 0x78, 0x74, 0x41, 0x76, 0x61, + 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x69, 0x63, 0x6b, 0x12, 0x28, 0x0a, 0x10, 0x6e, 0x65, + 0x78, 0x74, 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x6e, 0x65, 0x78, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x4e, 0x75, + 0x6d, 0x62, 0x65, 0x72, 0x22, 0x43, 0x0a, 0x11, 0x4c, 0x61, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x63, + 0x65, 0x73, 0x73, 0x65, 0x64, 0x54, 0x69, 0x63, 0x6b, 0x12, 0x2e, 0x0a, 0x13, 0x6c, 0x61, 0x73, + 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x63, 0x6b, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, 0x6c, 0x61, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x63, + 0x65, 0x73, 0x73, 0x65, 0x64, 0x54, 0x69, 0x63, 0x6b, 0x22, 0x2c, 0x0a, 0x15, 0x47, 0x65, 0x74, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x13, 0x0a, 0x05, 0x74, 0x78, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x74, 0x78, 0x49, 0x64, 0x22, 0x7b, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x54, 0x72, - 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5b, 0x0a, 0x12, 0x74, 0x72, 0x61, 0x6e, 0x73, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, - 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, - 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x52, 0x11, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x22, 0x3d, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x54, - 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, - 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x69, 0x63, 0x6b, 0x4e, 0x75, 0x6d, - 0x62, 0x65, 0x72, 0x22, 0x69, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x54, 0x72, - 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x4a, 0x0a, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, - 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, - 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x45, - 0x0a, 0x22, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, - 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, - 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x69, 0x63, 0x6b, 0x4e, - 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x82, 0x01, 0x0a, 0x23, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, + 0x09, 0x52, 0x04, 0x74, 0x78, 0x49, 0x64, 0x22, 0x62, 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, 0x48, 0x0a, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, + 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, + 0x70, 0x62, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, + 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x32, 0x0a, 0x1b, 0x47, + 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x13, 0x0a, 0x05, 0x74, 0x78, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x78, 0x49, 0x64, 0x22, + 0x7b, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x5b, 0x0a, 0x12, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x71, 0x75, + 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, + 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x11, 0x74, 0x72, 0x61, 0x6e, 0x73, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x3d, 0x0a, 0x1a, + 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x69, + 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x0a, 0x74, 0x69, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x69, 0x0a, 0x1b, 0x47, + 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4a, 0x0a, 0x0c, 0x74, 0x72, + 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x26, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, + 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x72, 0x61, + 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x45, 0x0a, 0x22, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5b, 0x0a, - 0x15, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x64, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x71, - 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, - 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x14, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x64, 0x54, 0x72, - 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xfb, 0x02, 0x0a, 0x0a, 0x51, - 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x44, 0x69, 0x66, 0x66, 0x12, 0x4a, 0x0a, 0x22, 0x73, 0x61, 0x6c, - 0x74, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x65, 0x73, - 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x78, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1e, 0x73, 0x61, 0x6c, 0x74, 0x65, 0x64, 0x52, 0x65, 0x73, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, + 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x0a, 0x74, 0x69, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x82, 0x01, + 0x0a, 0x23, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, + 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5b, 0x0a, 0x15, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, + 0x64, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, + 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, + 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x14, 0x61, 0x70, + 0x70, 0x72, 0x6f, 0x76, 0x65, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x22, 0xfb, 0x02, 0x0a, 0x0a, 0x51, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x44, 0x69, 0x66, + 0x66, 0x12, 0x4a, 0x0a, 0x22, 0x73, 0x61, 0x6c, 0x74, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x69, 0x67, + 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1e, 0x73, + 0x61, 0x6c, 0x74, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x65, 0x73, + 0x74, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x48, 0x65, 0x78, 0x12, 0x3b, 0x0a, + 0x1a, 0x73, 0x61, 0x6c, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x74, 0x72, 0x75, 0x6d, + 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x17, 0x73, 0x61, 0x6c, 0x74, 0x65, 0x64, 0x53, 0x70, 0x65, 0x63, 0x74, 0x72, 0x75, + 0x6d, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x48, 0x65, 0x78, 0x12, 0x3b, 0x0a, 0x1a, 0x73, 0x61, + 0x6c, 0x74, 0x65, 0x64, 0x5f, 0x75, 0x6e, 0x69, 0x76, 0x65, 0x72, 0x73, 0x65, 0x5f, 0x64, 0x69, + 0x67, 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, + 0x73, 0x61, 0x6c, 0x74, 0x65, 0x64, 0x55, 0x6e, 0x69, 0x76, 0x65, 0x72, 0x73, 0x65, 0x44, 0x69, + 0x67, 0x65, 0x73, 0x74, 0x48, 0x65, 0x78, 0x12, 0x3b, 0x0a, 0x1a, 0x73, 0x61, 0x6c, 0x74, 0x65, + 0x64, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, + 0x74, 0x5f, 0x68, 0x65, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, 0x73, 0x61, 0x6c, + 0x74, 0x65, 0x64, 0x43, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x72, 0x44, 0x69, 0x67, 0x65, 0x73, + 0x74, 0x48, 0x65, 0x78, 0x12, 0x45, 0x0a, 0x20, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, + 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x74, 0x78, 0x5f, 0x64, 0x69, + 0x67, 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1b, + 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x4e, 0x65, 0x78, 0x74, 0x54, 0x69, 0x63, 0x6b, + 0x54, 0x78, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x48, 0x65, 0x78, 0x12, 0x23, 0x0a, 0x0d, 0x73, + 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x68, 0x65, 0x78, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0c, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x48, 0x65, 0x78, + 0x22, 0x81, 0x03, 0x0a, 0x13, 0x51, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x54, 0x69, 0x63, 0x6b, 0x53, + 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, + 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x1f, + 0x0a, 0x0b, 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x69, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, + 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x46, 0x0a, + 0x20, 0x70, 0x72, 0x65, 0x76, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, + 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, + 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1c, 0x70, 0x72, 0x65, 0x76, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x67, 0x65, - 0x73, 0x74, 0x48, 0x65, 0x78, 0x12, 0x3b, 0x0a, 0x1a, 0x73, 0x61, 0x6c, 0x74, 0x65, 0x64, 0x5f, - 0x73, 0x70, 0x65, 0x63, 0x74, 0x72, 0x75, 0x6d, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x5f, - 0x68, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, 0x73, 0x61, 0x6c, 0x74, 0x65, - 0x64, 0x53, 0x70, 0x65, 0x63, 0x74, 0x72, 0x75, 0x6d, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x48, - 0x65, 0x78, 0x12, 0x3b, 0x0a, 0x1a, 0x73, 0x61, 0x6c, 0x74, 0x65, 0x64, 0x5f, 0x75, 0x6e, 0x69, - 0x76, 0x65, 0x72, 0x73, 0x65, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x78, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, 0x73, 0x61, 0x6c, 0x74, 0x65, 0x64, 0x55, 0x6e, - 0x69, 0x76, 0x65, 0x72, 0x73, 0x65, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x48, 0x65, 0x78, 0x12, - 0x3b, 0x0a, 0x1a, 0x73, 0x61, 0x6c, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, - 0x65, 0x72, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x78, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x17, 0x73, 0x61, 0x6c, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x6d, 0x70, 0x75, - 0x74, 0x65, 0x72, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x48, 0x65, 0x78, 0x12, 0x45, 0x0a, 0x20, - 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x74, 0x69, - 0x63, 0x6b, 0x5f, 0x74, 0x78, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x78, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1b, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, - 0x4e, 0x65, 0x78, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x54, 0x78, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, - 0x48, 0x65, 0x78, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, - 0x5f, 0x68, 0x65, 0x78, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x69, 0x67, 0x6e, - 0x61, 0x74, 0x75, 0x72, 0x65, 0x48, 0x65, 0x78, 0x22, 0x81, 0x03, 0x0a, 0x13, 0x51, 0x75, 0x6f, - 0x72, 0x75, 0x6d, 0x54, 0x69, 0x63, 0x6b, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, - 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x6e, - 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x69, 0x63, - 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x46, 0x0a, 0x20, 0x70, 0x72, 0x65, 0x76, 0x5f, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x64, - 0x69, 0x67, 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x1c, 0x70, 0x72, 0x65, 0x76, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x65, 0x73, - 0x74, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x48, 0x65, 0x78, 0x12, 0x37, 0x0a, - 0x18, 0x70, 0x72, 0x65, 0x76, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x74, 0x72, 0x75, 0x6d, 0x5f, 0x64, - 0x69, 0x67, 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x78, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x15, 0x70, 0x72, 0x65, 0x76, 0x53, 0x70, 0x65, 0x63, 0x74, 0x72, 0x75, 0x6d, 0x44, 0x69, 0x67, - 0x65, 0x73, 0x74, 0x48, 0x65, 0x78, 0x12, 0x37, 0x0a, 0x18, 0x70, 0x72, 0x65, 0x76, 0x5f, 0x75, - 0x6e, 0x69, 0x76, 0x65, 0x72, 0x73, 0x65, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x5f, 0x68, - 0x65, 0x78, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x70, 0x72, 0x65, 0x76, 0x55, 0x6e, - 0x69, 0x76, 0x65, 0x72, 0x73, 0x65, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x48, 0x65, 0x78, 0x12, - 0x37, 0x0a, 0x18, 0x70, 0x72, 0x65, 0x76, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x72, - 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x78, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x15, 0x70, 0x72, 0x65, 0x76, 0x43, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x72, 0x44, - 0x69, 0x67, 0x65, 0x73, 0x74, 0x48, 0x65, 0x78, 0x12, 0x22, 0x0a, 0x0d, 0x74, 0x78, 0x5f, 0x64, - 0x69, 0x67, 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x78, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0b, 0x74, 0x78, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x48, 0x65, 0x78, 0x22, 0x50, 0x0a, 0x14, - 0x53, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x54, 0x69, 0x63, 0x6b, 0x73, 0x49, 0x6e, 0x74, 0x65, - 0x72, 0x76, 0x61, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, - 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, - 0x69, 0x63, 0x6b, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x63, 0x6b, 0x22, 0x70, - 0x0a, 0x18, 0x53, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x54, 0x69, 0x63, 0x6b, 0x73, 0x49, 0x6e, - 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x54, 0x0a, 0x0d, 0x73, 0x6b, - 0x69, 0x70, 0x70, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x2f, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, - 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x6b, - 0x69, 0x70, 0x70, 0x65, 0x64, 0x54, 0x69, 0x63, 0x6b, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, - 0x61, 0x6c, 0x52, 0x0c, 0x73, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x54, 0x69, 0x63, 0x6b, 0x73, - 0x22, 0xe4, 0x02, 0x0a, 0x0e, 0x51, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x54, 0x69, 0x63, 0x6b, 0x44, - 0x61, 0x74, 0x61, 0x12, 0x62, 0x0a, 0x15, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x5f, 0x74, 0x69, - 0x63, 0x6b, 0x5f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, - 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x51, - 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x54, 0x69, 0x63, 0x6b, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, - 0x72, 0x65, 0x52, 0x13, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x54, 0x69, 0x63, 0x6b, 0x53, 0x74, - 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x12, 0x7d, 0x0a, 0x18, 0x71, 0x75, 0x6f, 0x72, 0x75, - 0x6d, 0x5f, 0x64, 0x69, 0x66, 0x66, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x75, - 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x71, 0x75, 0x62, 0x69, + 0x73, 0x74, 0x48, 0x65, 0x78, 0x12, 0x37, 0x0a, 0x18, 0x70, 0x72, 0x65, 0x76, 0x5f, 0x73, 0x70, + 0x65, 0x63, 0x74, 0x72, 0x75, 0x6d, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, + 0x78, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x70, 0x72, 0x65, 0x76, 0x53, 0x70, 0x65, + 0x63, 0x74, 0x72, 0x75, 0x6d, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x48, 0x65, 0x78, 0x12, 0x37, + 0x0a, 0x18, 0x70, 0x72, 0x65, 0x76, 0x5f, 0x75, 0x6e, 0x69, 0x76, 0x65, 0x72, 0x73, 0x65, 0x5f, + 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x78, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x15, 0x70, 0x72, 0x65, 0x76, 0x55, 0x6e, 0x69, 0x76, 0x65, 0x72, 0x73, 0x65, 0x44, 0x69, + 0x67, 0x65, 0x73, 0x74, 0x48, 0x65, 0x78, 0x12, 0x37, 0x0a, 0x18, 0x70, 0x72, 0x65, 0x76, 0x5f, + 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x5f, + 0x68, 0x65, 0x78, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x70, 0x72, 0x65, 0x76, 0x43, + 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x72, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x48, 0x65, 0x78, + 0x12, 0x22, 0x0a, 0x0d, 0x74, 0x78, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, + 0x78, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x78, 0x44, 0x69, 0x67, 0x65, 0x73, + 0x74, 0x48, 0x65, 0x78, 0x22, 0x50, 0x0a, 0x14, 0x53, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x54, + 0x69, 0x63, 0x6b, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x12, 0x19, 0x0a, 0x08, 0x65, + 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x65, + 0x6e, 0x64, 0x54, 0x69, 0x63, 0x6b, 0x22, 0x70, 0x0a, 0x18, 0x53, 0x6b, 0x69, 0x70, 0x70, 0x65, + 0x64, 0x54, 0x69, 0x63, 0x6b, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x4c, 0x69, + 0x73, 0x74, 0x12, 0x54, 0x0a, 0x0d, 0x73, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x5f, 0x74, 0x69, + 0x63, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, - 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x51, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x54, 0x69, 0x63, 0x6b, - 0x44, 0x61, 0x74, 0x61, 0x2e, 0x51, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x44, 0x69, 0x66, 0x66, 0x50, - 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x6f, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, - 0x15, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x44, 0x69, 0x66, 0x66, 0x50, 0x65, 0x72, 0x43, 0x6f, - 0x6d, 0x70, 0x75, 0x74, 0x6f, 0x72, 0x1a, 0x6f, 0x0a, 0x1a, 0x51, 0x75, 0x6f, 0x72, 0x75, 0x6d, - 0x44, 0x69, 0x66, 0x66, 0x50, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x6f, 0x72, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3b, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, - 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, - 0x62, 0x2e, 0x51, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x44, 0x69, 0x66, 0x66, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x3b, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x51, 0x75, - 0x6f, 0x72, 0x75, 0x6d, 0x54, 0x69, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, - 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x69, 0x63, 0x6b, 0x4e, 0x75, - 0x6d, 0x62, 0x65, 0x72, 0x22, 0x70, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x51, 0x75, 0x6f, 0x72, 0x75, - 0x6d, 0x54, 0x69, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x53, 0x0a, 0x10, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x5f, 0x74, 0x69, 0x63, 0x6b, - 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x71, 0x75, - 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, - 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x51, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x54, 0x69, - 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0e, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x54, 0x69, - 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x22, 0x66, 0x0a, 0x09, 0x43, 0x6f, 0x6d, 0x70, 0x75, 0x74, - 0x6f, 0x72, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x69, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x69, 0x67, - 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x68, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0c, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x48, 0x65, 0x78, 0x22, 0x2b, - 0x0a, 0x13, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x22, 0x5a, 0x0a, 0x14, 0x47, - 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x6f, 0x72, 0x73, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, - 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, - 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x09, 0x63, 0x6f, - 0x6d, 0x70, 0x75, 0x74, 0x6f, 0x72, 0x73, 0x22, 0xa6, 0x01, 0x0a, 0x1b, 0x54, 0x72, 0x61, 0x6e, - 0x73, 0x66, 0x65, 0x72, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x50, 0x65, 0x72, 0x54, 0x69, 0x63, 0x6b, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x69, 0x63, 0x6b, 0x5f, - 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x69, - 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x74, 0x79, 0x12, 0x4a, 0x0a, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x71, 0x75, 0x62, + 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x54, 0x69, 0x63, + 0x6b, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x52, 0x0c, 0x73, 0x6b, 0x69, 0x70, + 0x70, 0x65, 0x64, 0x54, 0x69, 0x63, 0x6b, 0x73, 0x22, 0xe4, 0x02, 0x0a, 0x0e, 0x51, 0x75, 0x6f, + 0x72, 0x75, 0x6d, 0x54, 0x69, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x12, 0x62, 0x0a, 0x15, 0x71, + 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x73, 0x74, 0x72, 0x75, 0x63, + 0x74, 0x75, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, - 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x22, 0x46, 0x0a, 0x0d, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x54, 0x69, 0x63, - 0x6b, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x69, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, - 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x22, 0xad, 0x04, 0x0a, 0x11, 0x47, 0x65, 0x74, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x58, - 0x0a, 0x13, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, - 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x71, 0x75, - 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, - 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, - 0x64, 0x54, 0x69, 0x63, 0x6b, 0x52, 0x11, 0x6c, 0x61, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x63, 0x65, - 0x73, 0x73, 0x65, 0x64, 0x54, 0x69, 0x63, 0x6b, 0x12, 0x90, 0x01, 0x0a, 0x1e, 0x6c, 0x61, 0x73, - 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x63, 0x6b, - 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x4c, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, - 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, - 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, - 0x4c, 0x61, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x54, 0x69, 0x63, - 0x6b, 0x73, 0x50, 0x65, 0x72, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, - 0x1a, 0x6c, 0x61, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x54, 0x69, - 0x63, 0x6b, 0x73, 0x50, 0x65, 0x72, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x54, 0x0a, 0x0d, 0x73, - 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x73, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, - 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x53, - 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x54, 0x69, 0x63, 0x6b, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x72, - 0x76, 0x61, 0x6c, 0x52, 0x0c, 0x73, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x54, 0x69, 0x63, 0x6b, - 0x73, 0x12, 0x85, 0x01, 0x0a, 0x22, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x5f, - 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x5f, 0x70, - 0x65, 0x72, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, + 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x51, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x54, 0x69, 0x63, + 0x6b, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x52, 0x13, 0x71, 0x75, 0x6f, 0x72, + 0x75, 0x6d, 0x54, 0x69, 0x63, 0x6b, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x12, + 0x7d, 0x0a, 0x18, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x5f, 0x64, 0x69, 0x66, 0x66, 0x5f, 0x70, + 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x44, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, + 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x51, 0x75, + 0x6f, 0x72, 0x75, 0x6d, 0x54, 0x69, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x51, 0x75, 0x6f, + 0x72, 0x75, 0x6d, 0x44, 0x69, 0x66, 0x66, 0x50, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x70, 0x75, 0x74, + 0x6f, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x15, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x44, + 0x69, 0x66, 0x66, 0x50, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x6f, 0x72, 0x1a, 0x6f, + 0x0a, 0x1a, 0x51, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x44, 0x69, 0x66, 0x66, 0x50, 0x65, 0x72, 0x43, + 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x6f, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3b, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, + 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, + 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x51, 0x75, 0x6f, 0x72, 0x75, 0x6d, + 0x44, 0x69, 0x66, 0x66, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, + 0x3b, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x51, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x54, 0x69, 0x63, 0x6b, + 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x74, + 0x69, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x0a, 0x74, 0x69, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x70, 0x0a, 0x19, + 0x47, 0x65, 0x74, 0x51, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x54, 0x69, 0x63, 0x6b, 0x44, 0x61, 0x74, + 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x53, 0x0a, 0x10, 0x71, 0x75, 0x6f, + 0x72, 0x75, 0x6d, 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, + 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, + 0x51, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x54, 0x69, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0e, + 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x54, 0x69, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x22, 0x66, + 0x0a, 0x09, 0x43, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x65, + 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, + 0x68, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, + 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x68, + 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, + 0x75, 0x72, 0x65, 0x48, 0x65, 0x78, 0x22, 0x2b, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, + 0x70, 0x75, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, + 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x65, 0x70, + 0x6f, 0x63, 0x68, 0x22, 0x5a, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x75, 0x74, + 0x6f, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x09, 0x63, + 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, - 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, - 0x73, 0x73, 0x65, 0x64, 0x54, 0x69, 0x63, 0x6b, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, - 0x73, 0x50, 0x65, 0x72, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, 0x1e, 0x70, 0x72, 0x6f, 0x63, 0x65, - 0x73, 0x73, 0x65, 0x64, 0x54, 0x69, 0x63, 0x6b, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, - 0x73, 0x50, 0x65, 0x72, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x1a, 0x4d, 0x0a, 0x1f, 0x4c, 0x61, 0x73, - 0x74, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x54, 0x69, 0x63, 0x6b, 0x73, 0x50, - 0x65, 0x72, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x30, 0x0a, 0x16, 0x47, 0x65, 0x74, 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, 0x22, 0x38, 0x0a, 0x15, 0x47, 0x65, - 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x74, 0x69, - 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, - 0x54, 0x69, 0x63, 0x6b, 0x22, 0x7d, 0x0a, 0x25, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x66, 0x65, 0x72, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x50, - 0x65, 0x72, 0x54, 0x69, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, - 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x73, - 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, - 0x74, 0x69, 0x63, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, - 0x69, 0x63, 0x6b, 0x22, 0xa5, 0x01, 0x0a, 0x26, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x66, 0x65, 0x72, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x50, - 0x65, 0x72, 0x54, 0x69, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7b, - 0x0a, 0x1e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x74, 0x69, 0x63, 0x6b, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, - 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, - 0x70, 0x62, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x50, 0x65, 0x72, 0x54, 0x69, 0x63, 0x6b, 0x52, 0x1b, - 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x50, 0x65, 0x72, 0x54, 0x69, 0x63, 0x6b, 0x22, 0x36, 0x0a, 0x13, 0x47, - 0x65, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x48, 0x61, 0x73, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, - 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x69, 0x63, 0x6b, 0x4e, 0x75, 0x6d, - 0x62, 0x65, 0x72, 0x22, 0x35, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x48, - 0x61, 0x73, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x68, - 0x65, 0x78, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x68, 0x65, 0x78, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x22, 0x7d, 0x0a, 0x15, 0x50, 0x72, - 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x54, 0x69, 0x63, 0x6b, 0x49, 0x6e, 0x74, 0x65, 0x72, - 0x76, 0x61, 0x6c, 0x12, 0x34, 0x0a, 0x16, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x70, + 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x75, + 0x74, 0x6f, 0x72, 0x73, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x6f, 0x72, 0x73, 0x22, + 0xa6, 0x01, 0x0a, 0x1b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x72, 0x61, 0x6e, + 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x50, 0x65, 0x72, 0x54, 0x69, 0x63, 0x6b, 0x12, + 0x1f, 0x0a, 0x0b, 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x69, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, + 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x4a, 0x0a, 0x0c, + 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, + 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x74, 0x72, 0x61, 0x6e, + 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x46, 0x0a, 0x0d, 0x50, 0x72, 0x6f, 0x63, + 0x65, 0x73, 0x73, 0x65, 0x64, 0x54, 0x69, 0x63, 0x6b, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x69, 0x63, + 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, + 0x74, 0x69, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, + 0x6f, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, + 0x22, 0xad, 0x04, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x58, 0x0a, 0x13, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x14, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x63, - 0x65, 0x73, 0x73, 0x65, 0x64, 0x54, 0x69, 0x63, 0x6b, 0x12, 0x2e, 0x0a, 0x13, 0x6c, 0x61, 0x73, - 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x63, 0x6b, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, 0x6c, 0x61, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x63, - 0x65, 0x73, 0x73, 0x65, 0x64, 0x54, 0x69, 0x63, 0x6b, 0x22, 0x86, 0x01, 0x0a, 0x1e, 0x50, 0x72, - 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x54, 0x69, 0x63, 0x6b, 0x49, 0x6e, 0x74, 0x65, 0x72, - 0x76, 0x61, 0x6c, 0x73, 0x50, 0x65, 0x72, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x14, 0x0a, 0x05, - 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x65, 0x70, 0x6f, - 0x63, 0x68, 0x12, 0x4e, 0x0a, 0x09, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, - 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, - 0x62, 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x54, 0x69, 0x63, 0x6b, 0x49, - 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x52, 0x09, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, - 0x6c, 0x73, 0x32, 0x9b, 0x13, 0x0a, 0x0e, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x53, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0xa2, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, - 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x34, 0x2e, 0x71, - 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, - 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, - 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, - 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, - 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, - 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x19, 0x12, 0x17, 0x2f, 0x76, 0x32, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x2f, 0x7b, 0x74, 0x78, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x97, 0x01, 0x0a, 0x0b, 0x47, - 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2d, 0x2e, 0x71, 0x75, 0x62, - 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, - 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x44, 0x61, - 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x71, 0x75, 0x62, 0x69, + 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, + 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, + 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x54, 0x69, 0x63, 0x6b, 0x52, 0x11, 0x6c, + 0x61, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x54, 0x69, 0x63, 0x6b, + 0x12, 0x90, 0x01, 0x0a, 0x1e, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, + 0x73, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x65, 0x70, + 0x6f, 0x63, 0x68, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4c, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, - 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x44, 0x61, 0x74, - 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x23, 0x12, 0x21, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x69, 0x63, 0x6b, 0x73, 0x2f, 0x7b, 0x74, 0x69, - 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x7d, 0x2f, 0x74, 0x69, 0x63, 0x6b, 0x2d, - 0x64, 0x61, 0x74, 0x61, 0x12, 0xb0, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x51, 0x75, 0x6f, 0x72, - 0x75, 0x6d, 0x54, 0x69, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x12, 0x33, 0x2e, 0x71, 0x75, 0x62, + 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4c, 0x61, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x63, + 0x65, 0x73, 0x73, 0x65, 0x64, 0x54, 0x69, 0x63, 0x6b, 0x73, 0x50, 0x65, 0x72, 0x45, 0x70, 0x6f, + 0x63, 0x68, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x1a, 0x6c, 0x61, 0x73, 0x74, 0x50, 0x72, 0x6f, + 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x54, 0x69, 0x63, 0x6b, 0x73, 0x50, 0x65, 0x72, 0x45, 0x70, + 0x6f, 0x63, 0x68, 0x12, 0x54, 0x0a, 0x0d, 0x73, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x5f, 0x74, + 0x69, 0x63, 0x6b, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, - 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x51, 0x75, 0x6f, 0x72, 0x75, 0x6d, - 0x54, 0x69, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x34, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, - 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x51, - 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x54, 0x69, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x30, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x12, 0x28, 0x2f, - 0x76, 0x31, 0x2f, 0x74, 0x69, 0x63, 0x6b, 0x73, 0x2f, 0x7b, 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x6e, - 0x75, 0x6d, 0x62, 0x65, 0x72, 0x7d, 0x2f, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x2d, 0x74, 0x69, - 0x63, 0x6b, 0x2d, 0x64, 0x61, 0x74, 0x61, 0x12, 0xb2, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x54, - 0x69, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, - 0x35, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, - 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, - 0x69, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, + 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x54, 0x69, + 0x63, 0x6b, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x52, 0x0c, 0x73, 0x6b, 0x69, + 0x70, 0x70, 0x65, 0x64, 0x54, 0x69, 0x63, 0x6b, 0x73, 0x12, 0x85, 0x01, 0x0a, 0x22, 0x70, 0x72, + 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x69, 0x6e, 0x74, + 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, + 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, - 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2c, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x12, 0x24, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x69, 0x63, 0x6b, - 0x73, 0x2f, 0x7b, 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x7d, 0x2f, - 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xc3, 0x01, 0x0a, - 0x1b, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, - 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x35, 0x2e, 0x71, - 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, - 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, - 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, + 0x70, 0x62, 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x54, 0x69, 0x63, 0x6b, + 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x50, 0x65, 0x72, 0x45, 0x70, 0x6f, 0x63, + 0x68, 0x52, 0x1e, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x54, 0x69, 0x63, 0x6b, + 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x50, 0x65, 0x72, 0x45, 0x70, 0x6f, 0x63, + 0x68, 0x1a, 0x4d, 0x0a, 0x1f, 0x4c, 0x61, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, + 0x65, 0x64, 0x54, 0x69, 0x63, 0x6b, 0x73, 0x50, 0x65, 0x72, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x22, 0x30, 0x0a, 0x16, 0x47, 0x65, 0x74, 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, 0x22, 0x38, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x54, + 0x69, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, + 0x61, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x0a, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x22, 0x7d, 0x0a, 0x25, + 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x50, 0x65, 0x72, 0x54, 0x69, 0x63, 0x6b, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, + 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x63, 0x6b, + 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x63, 0x6b, 0x22, 0xa5, 0x01, 0x0a, 0x26, + 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x50, 0x65, 0x72, 0x54, 0x69, 0x63, 0x6b, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7b, 0x0a, 0x1e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, + 0x65, 0x72, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, + 0x70, 0x65, 0x72, 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, + 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, + 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x66, 0x65, 0x72, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x50, + 0x65, 0x72, 0x54, 0x69, 0x63, 0x6b, 0x52, 0x1b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x50, 0x65, 0x72, 0x54, + 0x69, 0x63, 0x6b, 0x22, 0x36, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x48, + 0x61, 0x73, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x69, + 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x0a, 0x74, 0x69, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x35, 0x0a, 0x14, 0x47, + 0x65, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x48, 0x61, 0x73, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x68, 0x65, 0x78, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x68, 0x65, 0x78, 0x44, 0x69, 0x67, 0x65, + 0x73, 0x74, 0x22, 0x7d, 0x0a, 0x15, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x54, + 0x69, 0x63, 0x6b, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x34, 0x0a, 0x16, 0x69, + 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, + 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x14, 0x69, 0x6e, 0x69, + 0x74, 0x69, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x54, 0x69, 0x63, + 0x6b, 0x12, 0x2e, 0x0a, 0x13, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, + 0x73, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, + 0x6c, 0x61, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x54, 0x69, 0x63, + 0x6b, 0x22, 0x86, 0x01, 0x0a, 0x1e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x54, + 0x69, 0x63, 0x6b, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x50, 0x65, 0x72, 0x45, + 0x70, 0x6f, 0x63, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x4e, 0x0a, 0x09, 0x69, 0x6e, + 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, + 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, + 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, + 0x73, 0x65, 0x64, 0x54, 0x69, 0x63, 0x6b, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x52, + 0x09, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x22, 0x98, 0x01, 0x0a, 0x0f, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x48, + 0x0a, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, - 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x35, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x2f, 0x12, 0x2d, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x69, 0x63, 0x6b, 0x73, 0x2f, 0x7b, - 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x7d, 0x2f, 0x74, 0x72, 0x61, - 0x6e, 0x73, 0x66, 0x65, 0x72, 0x2d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x12, 0xd3, 0x01, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x41, 0x70, - 0x70, 0x72, 0x6f, 0x76, 0x65, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x12, 0x3d, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, - 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, - 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x64, 0x54, 0x72, - 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x3e, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, - 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, - 0x74, 0x54, 0x69, 0x63, 0x6b, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x64, 0x54, 0x72, 0x61, - 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x35, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x12, 0x2d, 0x2f, 0x76, 0x31, 0x2f, 0x74, - 0x69, 0x63, 0x6b, 0x73, 0x2f, 0x7b, 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, - 0x72, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x64, 0x2d, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x9b, 0x01, 0x0a, 0x0c, 0x47, 0x65, 0x74, - 0x43, 0x68, 0x61, 0x69, 0x6e, 0x48, 0x61, 0x73, 0x68, 0x12, 0x2e, 0x2e, 0x71, 0x75, 0x62, 0x69, - 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, - 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x48, 0x61, - 0x73, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x71, 0x75, 0x62, 0x69, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x74, 0x72, 0x61, + 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x74, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x5f, + 0x66, 0x6c, 0x65, 0x77, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x6d, 0x6f, 0x6e, 0x65, + 0x79, 0x46, 0x6c, 0x65, 0x77, 0x22, 0x3f, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x56, 0x32, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x6e, 0x75, + 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x69, 0x63, 0x6b, + 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x6f, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, + 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x56, 0x32, 0x12, 0x4e, 0x0a, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, + 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, + 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x2e, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x56, 0x32, 0x12, 0x13, 0x0a, 0x05, 0x74, 0x78, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x74, 0x78, 0x49, 0x64, 0x22, 0xa1, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x56, 0x32, 0x12, 0x48, 0x0a, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, - 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x48, 0x61, - 0x73, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2a, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x24, 0x12, 0x22, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x69, 0x63, 0x6b, 0x73, 0x2f, 0x7b, 0x74, - 0x69, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x7d, 0x2f, 0x63, 0x68, 0x61, 0x69, - 0x6e, 0x2d, 0x68, 0x61, 0x73, 0x68, 0x12, 0x9b, 0x01, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x53, 0x74, - 0x6f, 0x72, 0x65, 0x48, 0x61, 0x73, 0x68, 0x12, 0x2e, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, - 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, - 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x48, 0x61, 0x73, 0x68, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, - 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, - 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x48, 0x61, 0x73, 0x68, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x24, - 0x12, 0x22, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x69, 0x63, 0x6b, 0x73, 0x2f, 0x7b, 0x74, 0x69, 0x63, - 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x7d, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2d, - 0x68, 0x61, 0x73, 0x68, 0x12, 0x97, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, - 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x30, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, - 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, - 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x71, 0x75, 0x62, 0x69, + 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, + 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1d, 0x0a, 0x0a, + 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x5f, 0x66, 0x6c, 0x65, 0x77, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x09, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x46, 0x6c, 0x65, 0x77, 0x32, 0xf3, 0x17, 0x0a, 0x0e, + 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0xba, + 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x69, 0x63, 0x6b, 0x54, 0x72, 0x61, + 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x56, 0x32, 0x12, 0x37, 0x2e, 0x71, 0x75, + 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, + 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x56, 0x32, 0x1a, 0x38, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, + 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, + 0x2e, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x56, 0x32, 0x22, 0x2b, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x12, 0x23, 0x2f, 0x76, 0x32, 0x2f, 0x74, 0x69, 0x63, 0x6b, + 0x2f, 0x7b, 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x7d, 0x2f, 0x74, + 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xc9, 0x01, 0x0a, 0x1d, + 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x69, 0x63, 0x6b, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x56, 0x32, 0x12, 0x37, 0x2e, + 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, + 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, + 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x56, 0x32, 0x1a, 0x38, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, + 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, + 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x56, 0x32, + 0x22, 0x35, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x12, 0x2d, 0x2f, 0x76, 0x32, 0x2f, 0x74, 0x69, + 0x63, 0x6b, 0x2f, 0x7b, 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x7d, + 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x74, 0x72, + 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x12, 0xd2, 0x01, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x41, + 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x64, 0x54, 0x69, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x56, 0x32, 0x12, 0x37, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, - 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x20, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x1a, 0x12, 0x18, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x74, 0x78, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xa6, - 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x36, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, + 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x54, 0x72, 0x61, + 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x56, 0x32, 0x1a, 0x38, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, + 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, + 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x56, 0x32, 0x22, 0x3e, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x38, 0x12, 0x36, 0x2f, 0x76, 0x32, 0x2f, 0x74, 0x69, 0x63, 0x6b, 0x2f, 0x7b, + 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x7d, 0x2f, 0x74, 0x72, 0x61, + 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, + 0x65, 0x72, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x64, 0x12, 0x9c, 0x01, 0x0a, + 0x10, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x56, + 0x32, 0x12, 0x32, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, + 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, + 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x56, 0x32, 0x1a, 0x33, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, + 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, + 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x56, 0x32, 0x22, 0x1f, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x19, 0x12, 0x17, 0x2f, 0x76, 0x32, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x2f, 0x7b, 0x74, 0x78, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x97, 0x01, 0x0a, 0x0b, + 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2d, 0x2e, 0x71, 0x75, + 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, + 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x44, + 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x71, 0x75, 0x62, + 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, + 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x44, 0x61, + 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x23, 0x12, 0x21, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x69, 0x63, 0x6b, 0x73, 0x2f, 0x7b, 0x74, + 0x69, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x7d, 0x2f, 0x74, 0x69, 0x63, 0x6b, + 0x2d, 0x64, 0x61, 0x74, 0x61, 0x12, 0xb0, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x51, 0x75, 0x6f, + 0x72, 0x75, 0x6d, 0x54, 0x69, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x12, 0x33, 0x2e, 0x71, 0x75, + 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, + 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x51, 0x75, 0x6f, 0x72, 0x75, + 0x6d, 0x54, 0x69, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x34, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, + 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, + 0x51, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x54, 0x69, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x30, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x12, 0x28, + 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x69, 0x63, 0x6b, 0x73, 0x2f, 0x7b, 0x74, 0x69, 0x63, 0x6b, 0x5f, + 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x7d, 0x2f, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x2d, 0x74, + 0x69, 0x63, 0x6b, 0x2d, 0x64, 0x61, 0x74, 0x61, 0x12, 0xb2, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, + 0x54, 0x69, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x12, 0x35, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, + 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, + 0x54, 0x69, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, - 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x37, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, - 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, - 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, - 0x12, 0x15, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x78, 0x2d, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2f, - 0x7b, 0x74, 0x78, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xde, 0x01, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x54, - 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x50, 0x65, 0x72, 0x54, 0x69, 0x63, 0x6b, 0x12, 0x40, 0x2e, 0x71, 0x75, 0x62, + 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x2c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x12, 0x24, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x69, 0x63, + 0x6b, 0x73, 0x2f, 0x7b, 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x7d, + 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xc3, 0x01, + 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, + 0x72, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x35, 0x2e, + 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, + 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, + 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, + 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, + 0x2e, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x35, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x2f, 0x12, 0x2d, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x69, 0x63, 0x6b, 0x73, 0x2f, + 0x7b, 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x7d, 0x2f, 0x74, 0x72, + 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x2d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x12, 0xd3, 0x01, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x41, + 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x12, 0x3d, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, + 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, + 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x64, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x3e, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, + 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, + 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x64, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x35, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x12, 0x2d, 0x2f, 0x76, 0x31, 0x2f, + 0x74, 0x69, 0x63, 0x6b, 0x73, 0x2f, 0x7b, 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x64, 0x2d, 0x74, 0x72, 0x61, + 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x9b, 0x01, 0x0a, 0x0c, 0x47, 0x65, + 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x48, 0x61, 0x73, 0x68, 0x12, 0x2e, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, - 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, - 0x65, 0x72, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x50, 0x65, - 0x72, 0x54, 0x69, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x41, 0x2e, 0x71, - 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, - 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, - 0x73, 0x66, 0x65, 0x72, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x50, 0x65, 0x72, 0x54, 0x69, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x37, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x12, 0x2f, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, - 0x79, 0x7d, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x2d, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x95, 0x01, 0x0a, 0x0c, 0x47, 0x65, 0x74, - 0x43, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x2e, 0x2e, 0x71, 0x75, 0x62, 0x69, - 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, - 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x6f, - 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x71, 0x75, 0x62, 0x69, - 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, - 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x6f, - 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x24, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x1e, 0x12, 0x1c, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x2f, 0x7b, - 0x65, 0x70, 0x6f, 0x63, 0x68, 0x7d, 0x2f, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x6f, 0x72, 0x73, - 0x12, 0x65, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x2e, + 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x48, + 0x61, 0x73, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x71, 0x75, 0x62, + 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, + 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x48, + 0x61, 0x73, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2a, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x24, 0x12, 0x22, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x69, 0x63, 0x6b, 0x73, 0x2f, 0x7b, + 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x7d, 0x2f, 0x63, 0x68, 0x61, + 0x69, 0x6e, 0x2d, 0x68, 0x61, 0x73, 0x68, 0x12, 0x9b, 0x01, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x53, + 0x74, 0x6f, 0x72, 0x65, 0x48, 0x61, 0x73, 0x68, 0x12, 0x2e, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, + 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, + 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x48, 0x61, 0x73, + 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, + 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, + 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x48, 0x61, 0x73, + 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2a, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x24, 0x12, 0x22, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x69, 0x63, 0x6b, 0x73, 0x2f, 0x7b, 0x74, 0x69, + 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x7d, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, + 0x2d, 0x68, 0x61, 0x73, 0x68, 0x12, 0x97, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, + 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x30, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, + 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, + 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x71, 0x75, 0x62, + 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, + 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x20, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x12, 0x18, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x74, 0x78, 0x5f, 0x69, 0x64, 0x7d, 0x12, + 0xa6, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x36, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, + 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, + 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x37, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, + 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x17, 0x12, 0x15, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x78, 0x2d, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x2f, 0x7b, 0x74, 0x78, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xde, 0x01, 0x0a, 0x1e, 0x47, 0x65, 0x74, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x50, 0x65, 0x72, 0x54, 0x69, 0x63, 0x6b, 0x12, 0x40, 0x2e, 0x71, 0x75, + 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, + 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x66, 0x65, 0x72, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x50, + 0x65, 0x72, 0x54, 0x69, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x41, 0x2e, + 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, + 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, + 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x50, 0x65, 0x72, 0x54, 0x69, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x37, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x12, 0x2f, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x74, 0x79, 0x7d, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x2d, 0x74, 0x72, 0x61, + 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x95, 0x01, 0x0a, 0x0c, 0x47, 0x65, + 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x2e, 0x2e, 0x71, 0x75, 0x62, + 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, + 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x75, 0x74, + 0x6f, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x71, 0x75, 0x62, + 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, + 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x75, 0x74, + 0x6f, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x24, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x1e, 0x12, 0x1c, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x2f, + 0x7b, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x7d, 0x2f, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x6f, 0x72, + 0x73, 0x12, 0x65, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x2c, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, + 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, + 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x12, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0c, 0x12, 0x0a, 0x2f, 0x76, + 0x31, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x71, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x4c, + 0x61, 0x74, 0x65, 0x73, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, + 0x79, 0x1a, 0x30, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, + 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, + 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x16, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x10, 0x12, 0x0e, 0x2f, 0x76, 0x31, + 0x2f, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x12, 0x74, 0x0a, 0x0e, 0x47, + 0x65, 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x2c, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, + 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x31, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, - 0x62, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x12, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0c, 0x12, 0x0a, 0x2f, 0x76, 0x31, - 0x2f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x71, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x4c, 0x61, - 0x74, 0x65, 0x73, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, - 0x1a, 0x30, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, - 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, - 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x16, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x10, 0x12, 0x0e, 0x2f, 0x76, 0x31, 0x2f, - 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x12, 0x74, 0x0a, 0x0e, 0x47, 0x65, - 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x16, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, - 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x31, 0x2e, 0x71, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x61, 0x72, 0x63, - 0x68, 0x69, 0x76, 0x65, 0x72, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x2e, 0x70, 0x62, - 0x2e, 0x47, 0x65, 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x17, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x11, 0x12, - 0x0f, 0x2f, 0x76, 0x31, 0x2f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x63, 0x68, 0x65, 0x63, 0x6b, - 0x42, 0x29, 0x5a, 0x27, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x71, - 0x75, 0x62, 0x69, 0x63, 0x2f, 0x67, 0x6f, 0x2d, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x72, - 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x66, 0x2f, 0x62, 0x06, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x33, + 0x62, 0x2e, 0x47, 0x65, 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x17, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x11, + 0x12, 0x0f, 0x2f, 0x76, 0x31, 0x2f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x63, 0x68, 0x65, 0x63, + 0x6b, 0x42, 0x29, 0x5a, 0x27, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x71, 0x75, 0x62, 0x69, 0x63, 0x2f, 0x67, 0x6f, 0x2d, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, + 0x72, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x66, 0x2f, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2726,107 +2944,118 @@ func file_archive_proto_rawDescGZIP() []byte { return file_archive_proto_rawDescData } -var file_archive_proto_msgTypes = make([]protoimpl.MessageInfo, 41) +var file_archive_proto_msgTypes = make([]protoimpl.MessageInfo, 44) var file_archive_proto_goTypes = []interface{}{ (*TickData)(nil), // 0: qubic.archiver.archive.pb.TickData (*GetTickDataRequest)(nil), // 1: qubic.archiver.archive.pb.GetTickDataRequest (*GetTickDataResponse)(nil), // 2: qubic.archiver.archive.pb.GetTickDataResponse (*Transaction)(nil), // 3: qubic.archiver.archive.pb.Transaction - (*GetTransactionDataRequest)(nil), // 4: qubic.archiver.archive.pb.GetTransactionDataRequest - (*GetTransactionDataResponse)(nil), // 5: qubic.archiver.archive.pb.GetTransactionDataResponse - (*TransactionStatus)(nil), // 6: qubic.archiver.archive.pb.TransactionStatus - (*TickTransactionsStatus)(nil), // 7: qubic.archiver.archive.pb.TickTransactionsStatus - (*NextAvailableTick)(nil), // 8: qubic.archiver.archive.pb.NextAvailableTick - (*LastProcessedTick)(nil), // 9: qubic.archiver.archive.pb.LastProcessedTick - (*GetTransactionRequest)(nil), // 10: qubic.archiver.archive.pb.GetTransactionRequest - (*GetTransactionResponse)(nil), // 11: qubic.archiver.archive.pb.GetTransactionResponse - (*GetTransactionStatusRequest)(nil), // 12: qubic.archiver.archive.pb.GetTransactionStatusRequest - (*GetTransactionStatusResponse)(nil), // 13: qubic.archiver.archive.pb.GetTransactionStatusResponse - (*GetTickTransactionsRequest)(nil), // 14: qubic.archiver.archive.pb.GetTickTransactionsRequest - (*GetTickTransactionsResponse)(nil), // 15: qubic.archiver.archive.pb.GetTickTransactionsResponse - (*GetTickApprovedTransactionsRequest)(nil), // 16: qubic.archiver.archive.pb.GetTickApprovedTransactionsRequest - (*GetTickApprovedTransactionsResponse)(nil), // 17: qubic.archiver.archive.pb.GetTickApprovedTransactionsResponse - (*QuorumDiff)(nil), // 18: qubic.archiver.archive.pb.QuorumDiff - (*QuorumTickStructure)(nil), // 19: qubic.archiver.archive.pb.QuorumTickStructure - (*SkippedTicksInterval)(nil), // 20: qubic.archiver.archive.pb.SkippedTicksInterval - (*SkippedTicksIntervalList)(nil), // 21: qubic.archiver.archive.pb.SkippedTicksIntervalList - (*QuorumTickData)(nil), // 22: qubic.archiver.archive.pb.QuorumTickData - (*GetQuorumTickDataRequest)(nil), // 23: qubic.archiver.archive.pb.GetQuorumTickDataRequest - (*GetQuorumTickDataResponse)(nil), // 24: qubic.archiver.archive.pb.GetQuorumTickDataResponse - (*Computors)(nil), // 25: qubic.archiver.archive.pb.Computors - (*GetComputorsRequest)(nil), // 26: qubic.archiver.archive.pb.GetComputorsRequest - (*GetComputorsResponse)(nil), // 27: qubic.archiver.archive.pb.GetComputorsResponse - (*TransferTransactionsPerTick)(nil), // 28: qubic.archiver.archive.pb.TransferTransactionsPerTick - (*ProcessedTick)(nil), // 29: qubic.archiver.archive.pb.ProcessedTick - (*GetStatusResponse)(nil), // 30: qubic.archiver.archive.pb.GetStatusResponse - (*GetHealthCheckResponse)(nil), // 31: qubic.archiver.archive.pb.GetHealthCheckResponse - (*GetLatestTickResponse)(nil), // 32: qubic.archiver.archive.pb.GetLatestTickResponse - (*GetTransferTransactionsPerTickRequest)(nil), // 33: qubic.archiver.archive.pb.GetTransferTransactionsPerTickRequest - (*GetTransferTransactionsPerTickResponse)(nil), // 34: qubic.archiver.archive.pb.GetTransferTransactionsPerTickResponse - (*GetChainHashRequest)(nil), // 35: qubic.archiver.archive.pb.GetChainHashRequest - (*GetChainHashResponse)(nil), // 36: qubic.archiver.archive.pb.GetChainHashResponse - (*ProcessedTickInterval)(nil), // 37: qubic.archiver.archive.pb.ProcessedTickInterval - (*ProcessedTickIntervalsPerEpoch)(nil), // 38: qubic.archiver.archive.pb.ProcessedTickIntervalsPerEpoch - nil, // 39: qubic.archiver.archive.pb.QuorumTickData.QuorumDiffPerComputorEntry - nil, // 40: qubic.archiver.archive.pb.GetStatusResponse.LastProcessedTicksPerEpochEntry - (*emptypb.Empty)(nil), // 41: google.protobuf.Empty + (*TransactionStatus)(nil), // 4: qubic.archiver.archive.pb.TransactionStatus + (*TickTransactionsStatus)(nil), // 5: qubic.archiver.archive.pb.TickTransactionsStatus + (*NextAvailableTick)(nil), // 6: qubic.archiver.archive.pb.NextAvailableTick + (*LastProcessedTick)(nil), // 7: qubic.archiver.archive.pb.LastProcessedTick + (*GetTransactionRequest)(nil), // 8: qubic.archiver.archive.pb.GetTransactionRequest + (*GetTransactionResponse)(nil), // 9: qubic.archiver.archive.pb.GetTransactionResponse + (*GetTransactionStatusRequest)(nil), // 10: qubic.archiver.archive.pb.GetTransactionStatusRequest + (*GetTransactionStatusResponse)(nil), // 11: qubic.archiver.archive.pb.GetTransactionStatusResponse + (*GetTickTransactionsRequest)(nil), // 12: qubic.archiver.archive.pb.GetTickTransactionsRequest + (*GetTickTransactionsResponse)(nil), // 13: qubic.archiver.archive.pb.GetTickTransactionsResponse + (*GetTickApprovedTransactionsRequest)(nil), // 14: qubic.archiver.archive.pb.GetTickApprovedTransactionsRequest + (*GetTickApprovedTransactionsResponse)(nil), // 15: qubic.archiver.archive.pb.GetTickApprovedTransactionsResponse + (*QuorumDiff)(nil), // 16: qubic.archiver.archive.pb.QuorumDiff + (*QuorumTickStructure)(nil), // 17: qubic.archiver.archive.pb.QuorumTickStructure + (*SkippedTicksInterval)(nil), // 18: qubic.archiver.archive.pb.SkippedTicksInterval + (*SkippedTicksIntervalList)(nil), // 19: qubic.archiver.archive.pb.SkippedTicksIntervalList + (*QuorumTickData)(nil), // 20: qubic.archiver.archive.pb.QuorumTickData + (*GetQuorumTickDataRequest)(nil), // 21: qubic.archiver.archive.pb.GetQuorumTickDataRequest + (*GetQuorumTickDataResponse)(nil), // 22: qubic.archiver.archive.pb.GetQuorumTickDataResponse + (*Computors)(nil), // 23: qubic.archiver.archive.pb.Computors + (*GetComputorsRequest)(nil), // 24: qubic.archiver.archive.pb.GetComputorsRequest + (*GetComputorsResponse)(nil), // 25: qubic.archiver.archive.pb.GetComputorsResponse + (*TransferTransactionsPerTick)(nil), // 26: qubic.archiver.archive.pb.TransferTransactionsPerTick + (*ProcessedTick)(nil), // 27: qubic.archiver.archive.pb.ProcessedTick + (*GetStatusResponse)(nil), // 28: qubic.archiver.archive.pb.GetStatusResponse + (*GetHealthCheckResponse)(nil), // 29: qubic.archiver.archive.pb.GetHealthCheckResponse + (*GetLatestTickResponse)(nil), // 30: qubic.archiver.archive.pb.GetLatestTickResponse + (*GetTransferTransactionsPerTickRequest)(nil), // 31: qubic.archiver.archive.pb.GetTransferTransactionsPerTickRequest + (*GetTransferTransactionsPerTickResponse)(nil), // 32: qubic.archiver.archive.pb.GetTransferTransactionsPerTickResponse + (*GetChainHashRequest)(nil), // 33: qubic.archiver.archive.pb.GetChainHashRequest + (*GetChainHashResponse)(nil), // 34: qubic.archiver.archive.pb.GetChainHashResponse + (*ProcessedTickInterval)(nil), // 35: qubic.archiver.archive.pb.ProcessedTickInterval + (*ProcessedTickIntervalsPerEpoch)(nil), // 36: qubic.archiver.archive.pb.ProcessedTickIntervalsPerEpoch + (*TransactionData)(nil), // 37: qubic.archiver.archive.pb.TransactionData + (*GetTickTransactionsRequestV2)(nil), // 38: qubic.archiver.archive.pb.GetTickTransactionsRequestV2 + (*GetTickTransactionsResponseV2)(nil), // 39: qubic.archiver.archive.pb.GetTickTransactionsResponseV2 + (*GetTransactionRequestV2)(nil), // 40: qubic.archiver.archive.pb.GetTransactionRequestV2 + (*GetTransactionResponseV2)(nil), // 41: qubic.archiver.archive.pb.GetTransactionResponseV2 + nil, // 42: qubic.archiver.archive.pb.QuorumTickData.QuorumDiffPerComputorEntry + nil, // 43: qubic.archiver.archive.pb.GetStatusResponse.LastProcessedTicksPerEpochEntry + (*emptypb.Empty)(nil), // 44: google.protobuf.Empty } var file_archive_proto_depIdxs = []int32{ 0, // 0: qubic.archiver.archive.pb.GetTickDataResponse.tick_data:type_name -> qubic.archiver.archive.pb.TickData - 3, // 1: qubic.archiver.archive.pb.GetTransactionDataResponse.transaction:type_name -> qubic.archiver.archive.pb.Transaction - 6, // 2: qubic.archiver.archive.pb.TickTransactionsStatus.transactions:type_name -> qubic.archiver.archive.pb.TransactionStatus - 3, // 3: qubic.archiver.archive.pb.GetTransactionResponse.transaction:type_name -> qubic.archiver.archive.pb.Transaction - 6, // 4: qubic.archiver.archive.pb.GetTransactionStatusResponse.transaction_status:type_name -> qubic.archiver.archive.pb.TransactionStatus - 3, // 5: qubic.archiver.archive.pb.GetTickTransactionsResponse.transactions:type_name -> qubic.archiver.archive.pb.Transaction - 3, // 6: qubic.archiver.archive.pb.GetTickApprovedTransactionsResponse.approved_transactions:type_name -> qubic.archiver.archive.pb.Transaction - 20, // 7: qubic.archiver.archive.pb.SkippedTicksIntervalList.skipped_ticks:type_name -> qubic.archiver.archive.pb.SkippedTicksInterval - 19, // 8: qubic.archiver.archive.pb.QuorumTickData.quorum_tick_structure:type_name -> qubic.archiver.archive.pb.QuorumTickStructure - 39, // 9: qubic.archiver.archive.pb.QuorumTickData.quorum_diff_per_computor:type_name -> qubic.archiver.archive.pb.QuorumTickData.QuorumDiffPerComputorEntry - 22, // 10: qubic.archiver.archive.pb.GetQuorumTickDataResponse.quorum_tick_data:type_name -> qubic.archiver.archive.pb.QuorumTickData - 25, // 11: qubic.archiver.archive.pb.GetComputorsResponse.computors:type_name -> qubic.archiver.archive.pb.Computors - 3, // 12: qubic.archiver.archive.pb.TransferTransactionsPerTick.transactions:type_name -> qubic.archiver.archive.pb.Transaction - 29, // 13: qubic.archiver.archive.pb.GetStatusResponse.last_processed_tick:type_name -> qubic.archiver.archive.pb.ProcessedTick - 40, // 14: qubic.archiver.archive.pb.GetStatusResponse.last_processed_ticks_per_epoch:type_name -> qubic.archiver.archive.pb.GetStatusResponse.LastProcessedTicksPerEpochEntry - 20, // 15: qubic.archiver.archive.pb.GetStatusResponse.skipped_ticks:type_name -> qubic.archiver.archive.pb.SkippedTicksInterval - 38, // 16: qubic.archiver.archive.pb.GetStatusResponse.processed_tick_intervals_per_epoch:type_name -> qubic.archiver.archive.pb.ProcessedTickIntervalsPerEpoch - 28, // 17: qubic.archiver.archive.pb.GetTransferTransactionsPerTickResponse.transfer_transactions_per_tick:type_name -> qubic.archiver.archive.pb.TransferTransactionsPerTick - 37, // 18: qubic.archiver.archive.pb.ProcessedTickIntervalsPerEpoch.intervals:type_name -> qubic.archiver.archive.pb.ProcessedTickInterval - 18, // 19: qubic.archiver.archive.pb.QuorumTickData.QuorumDiffPerComputorEntry.value:type_name -> qubic.archiver.archive.pb.QuorumDiff - 4, // 20: qubic.archiver.archive.pb.ArchiveService.GetTransactionData:input_type -> qubic.archiver.archive.pb.GetTransactionDataRequest - 1, // 21: qubic.archiver.archive.pb.ArchiveService.GetTickData:input_type -> qubic.archiver.archive.pb.GetTickDataRequest - 23, // 22: qubic.archiver.archive.pb.ArchiveService.GetQuorumTickData:input_type -> qubic.archiver.archive.pb.GetQuorumTickDataRequest - 14, // 23: qubic.archiver.archive.pb.ArchiveService.GetTickTransactions:input_type -> qubic.archiver.archive.pb.GetTickTransactionsRequest - 14, // 24: qubic.archiver.archive.pb.ArchiveService.GetTickTransferTransactions:input_type -> qubic.archiver.archive.pb.GetTickTransactionsRequest - 16, // 25: qubic.archiver.archive.pb.ArchiveService.GetTickApprovedTransactions:input_type -> qubic.archiver.archive.pb.GetTickApprovedTransactionsRequest - 35, // 26: qubic.archiver.archive.pb.ArchiveService.GetChainHash:input_type -> qubic.archiver.archive.pb.GetChainHashRequest - 35, // 27: qubic.archiver.archive.pb.ArchiveService.GetStoreHash:input_type -> qubic.archiver.archive.pb.GetChainHashRequest - 10, // 28: qubic.archiver.archive.pb.ArchiveService.GetTransaction:input_type -> qubic.archiver.archive.pb.GetTransactionRequest - 12, // 29: qubic.archiver.archive.pb.ArchiveService.GetTransactionStatus:input_type -> qubic.archiver.archive.pb.GetTransactionStatusRequest - 33, // 30: qubic.archiver.archive.pb.ArchiveService.GetTransferTransactionsPerTick:input_type -> qubic.archiver.archive.pb.GetTransferTransactionsPerTickRequest - 26, // 31: qubic.archiver.archive.pb.ArchiveService.GetComputors:input_type -> qubic.archiver.archive.pb.GetComputorsRequest - 41, // 32: qubic.archiver.archive.pb.ArchiveService.GetStatus:input_type -> google.protobuf.Empty - 41, // 33: qubic.archiver.archive.pb.ArchiveService.GetLatestTick:input_type -> google.protobuf.Empty - 41, // 34: qubic.archiver.archive.pb.ArchiveService.GetHealthCheck:input_type -> google.protobuf.Empty - 5, // 35: qubic.archiver.archive.pb.ArchiveService.GetTransactionData:output_type -> qubic.archiver.archive.pb.GetTransactionDataResponse - 2, // 36: qubic.archiver.archive.pb.ArchiveService.GetTickData:output_type -> qubic.archiver.archive.pb.GetTickDataResponse - 24, // 37: qubic.archiver.archive.pb.ArchiveService.GetQuorumTickData:output_type -> qubic.archiver.archive.pb.GetQuorumTickDataResponse - 15, // 38: qubic.archiver.archive.pb.ArchiveService.GetTickTransactions:output_type -> qubic.archiver.archive.pb.GetTickTransactionsResponse - 15, // 39: qubic.archiver.archive.pb.ArchiveService.GetTickTransferTransactions:output_type -> qubic.archiver.archive.pb.GetTickTransactionsResponse - 17, // 40: qubic.archiver.archive.pb.ArchiveService.GetTickApprovedTransactions:output_type -> qubic.archiver.archive.pb.GetTickApprovedTransactionsResponse - 36, // 41: qubic.archiver.archive.pb.ArchiveService.GetChainHash:output_type -> qubic.archiver.archive.pb.GetChainHashResponse - 36, // 42: qubic.archiver.archive.pb.ArchiveService.GetStoreHash:output_type -> qubic.archiver.archive.pb.GetChainHashResponse - 11, // 43: qubic.archiver.archive.pb.ArchiveService.GetTransaction:output_type -> qubic.archiver.archive.pb.GetTransactionResponse - 13, // 44: qubic.archiver.archive.pb.ArchiveService.GetTransactionStatus:output_type -> qubic.archiver.archive.pb.GetTransactionStatusResponse - 34, // 45: qubic.archiver.archive.pb.ArchiveService.GetTransferTransactionsPerTick:output_type -> qubic.archiver.archive.pb.GetTransferTransactionsPerTickResponse - 27, // 46: qubic.archiver.archive.pb.ArchiveService.GetComputors:output_type -> qubic.archiver.archive.pb.GetComputorsResponse - 30, // 47: qubic.archiver.archive.pb.ArchiveService.GetStatus:output_type -> qubic.archiver.archive.pb.GetStatusResponse - 32, // 48: qubic.archiver.archive.pb.ArchiveService.GetLatestTick:output_type -> qubic.archiver.archive.pb.GetLatestTickResponse - 31, // 49: qubic.archiver.archive.pb.ArchiveService.GetHealthCheck:output_type -> qubic.archiver.archive.pb.GetHealthCheckResponse - 35, // [35:50] is the sub-list for method output_type - 20, // [20:35] is the sub-list for method input_type - 20, // [20:20] is the sub-list for extension type_name - 20, // [20:20] is the sub-list for extension extendee - 0, // [0:20] is the sub-list for field type_name + 4, // 1: qubic.archiver.archive.pb.TickTransactionsStatus.transactions:type_name -> qubic.archiver.archive.pb.TransactionStatus + 3, // 2: qubic.archiver.archive.pb.GetTransactionResponse.transaction:type_name -> qubic.archiver.archive.pb.Transaction + 4, // 3: qubic.archiver.archive.pb.GetTransactionStatusResponse.transaction_status:type_name -> qubic.archiver.archive.pb.TransactionStatus + 3, // 4: qubic.archiver.archive.pb.GetTickTransactionsResponse.transactions:type_name -> qubic.archiver.archive.pb.Transaction + 3, // 5: qubic.archiver.archive.pb.GetTickApprovedTransactionsResponse.approved_transactions:type_name -> qubic.archiver.archive.pb.Transaction + 18, // 6: qubic.archiver.archive.pb.SkippedTicksIntervalList.skipped_ticks:type_name -> qubic.archiver.archive.pb.SkippedTicksInterval + 17, // 7: qubic.archiver.archive.pb.QuorumTickData.quorum_tick_structure:type_name -> qubic.archiver.archive.pb.QuorumTickStructure + 42, // 8: qubic.archiver.archive.pb.QuorumTickData.quorum_diff_per_computor:type_name -> qubic.archiver.archive.pb.QuorumTickData.QuorumDiffPerComputorEntry + 20, // 9: qubic.archiver.archive.pb.GetQuorumTickDataResponse.quorum_tick_data:type_name -> qubic.archiver.archive.pb.QuorumTickData + 23, // 10: qubic.archiver.archive.pb.GetComputorsResponse.computors:type_name -> qubic.archiver.archive.pb.Computors + 3, // 11: qubic.archiver.archive.pb.TransferTransactionsPerTick.transactions:type_name -> qubic.archiver.archive.pb.Transaction + 27, // 12: qubic.archiver.archive.pb.GetStatusResponse.last_processed_tick:type_name -> qubic.archiver.archive.pb.ProcessedTick + 43, // 13: qubic.archiver.archive.pb.GetStatusResponse.last_processed_ticks_per_epoch:type_name -> qubic.archiver.archive.pb.GetStatusResponse.LastProcessedTicksPerEpochEntry + 18, // 14: qubic.archiver.archive.pb.GetStatusResponse.skipped_ticks:type_name -> qubic.archiver.archive.pb.SkippedTicksInterval + 36, // 15: qubic.archiver.archive.pb.GetStatusResponse.processed_tick_intervals_per_epoch:type_name -> qubic.archiver.archive.pb.ProcessedTickIntervalsPerEpoch + 26, // 16: qubic.archiver.archive.pb.GetTransferTransactionsPerTickResponse.transfer_transactions_per_tick:type_name -> qubic.archiver.archive.pb.TransferTransactionsPerTick + 35, // 17: qubic.archiver.archive.pb.ProcessedTickIntervalsPerEpoch.intervals:type_name -> qubic.archiver.archive.pb.ProcessedTickInterval + 3, // 18: qubic.archiver.archive.pb.TransactionData.transaction:type_name -> qubic.archiver.archive.pb.Transaction + 37, // 19: qubic.archiver.archive.pb.GetTickTransactionsResponseV2.transactions:type_name -> qubic.archiver.archive.pb.TransactionData + 3, // 20: qubic.archiver.archive.pb.GetTransactionResponseV2.transaction:type_name -> qubic.archiver.archive.pb.Transaction + 16, // 21: qubic.archiver.archive.pb.QuorumTickData.QuorumDiffPerComputorEntry.value:type_name -> qubic.archiver.archive.pb.QuorumDiff + 38, // 22: qubic.archiver.archive.pb.ArchiveService.GetAllTickTransactionsV2:input_type -> qubic.archiver.archive.pb.GetTickTransactionsRequestV2 + 38, // 23: qubic.archiver.archive.pb.ArchiveService.GetTransferTickTransactionsV2:input_type -> qubic.archiver.archive.pb.GetTickTransactionsRequestV2 + 38, // 24: qubic.archiver.archive.pb.ArchiveService.GetApprovedTickTransactionsV2:input_type -> qubic.archiver.archive.pb.GetTickTransactionsRequestV2 + 40, // 25: qubic.archiver.archive.pb.ArchiveService.GetTransactionV2:input_type -> qubic.archiver.archive.pb.GetTransactionRequestV2 + 1, // 26: qubic.archiver.archive.pb.ArchiveService.GetTickData:input_type -> qubic.archiver.archive.pb.GetTickDataRequest + 21, // 27: qubic.archiver.archive.pb.ArchiveService.GetQuorumTickData:input_type -> qubic.archiver.archive.pb.GetQuorumTickDataRequest + 12, // 28: qubic.archiver.archive.pb.ArchiveService.GetTickTransactions:input_type -> qubic.archiver.archive.pb.GetTickTransactionsRequest + 12, // 29: qubic.archiver.archive.pb.ArchiveService.GetTickTransferTransactions:input_type -> qubic.archiver.archive.pb.GetTickTransactionsRequest + 14, // 30: qubic.archiver.archive.pb.ArchiveService.GetTickApprovedTransactions:input_type -> qubic.archiver.archive.pb.GetTickApprovedTransactionsRequest + 33, // 31: qubic.archiver.archive.pb.ArchiveService.GetChainHash:input_type -> qubic.archiver.archive.pb.GetChainHashRequest + 33, // 32: qubic.archiver.archive.pb.ArchiveService.GetStoreHash:input_type -> qubic.archiver.archive.pb.GetChainHashRequest + 8, // 33: qubic.archiver.archive.pb.ArchiveService.GetTransaction:input_type -> qubic.archiver.archive.pb.GetTransactionRequest + 10, // 34: qubic.archiver.archive.pb.ArchiveService.GetTransactionStatus:input_type -> qubic.archiver.archive.pb.GetTransactionStatusRequest + 31, // 35: qubic.archiver.archive.pb.ArchiveService.GetTransferTransactionsPerTick:input_type -> qubic.archiver.archive.pb.GetTransferTransactionsPerTickRequest + 24, // 36: qubic.archiver.archive.pb.ArchiveService.GetComputors:input_type -> qubic.archiver.archive.pb.GetComputorsRequest + 44, // 37: qubic.archiver.archive.pb.ArchiveService.GetStatus:input_type -> google.protobuf.Empty + 44, // 38: qubic.archiver.archive.pb.ArchiveService.GetLatestTick:input_type -> google.protobuf.Empty + 44, // 39: qubic.archiver.archive.pb.ArchiveService.GetHealthCheck:input_type -> google.protobuf.Empty + 39, // 40: qubic.archiver.archive.pb.ArchiveService.GetAllTickTransactionsV2:output_type -> qubic.archiver.archive.pb.GetTickTransactionsResponseV2 + 39, // 41: qubic.archiver.archive.pb.ArchiveService.GetTransferTickTransactionsV2:output_type -> qubic.archiver.archive.pb.GetTickTransactionsResponseV2 + 39, // 42: qubic.archiver.archive.pb.ArchiveService.GetApprovedTickTransactionsV2:output_type -> qubic.archiver.archive.pb.GetTickTransactionsResponseV2 + 41, // 43: qubic.archiver.archive.pb.ArchiveService.GetTransactionV2:output_type -> qubic.archiver.archive.pb.GetTransactionResponseV2 + 2, // 44: qubic.archiver.archive.pb.ArchiveService.GetTickData:output_type -> qubic.archiver.archive.pb.GetTickDataResponse + 22, // 45: qubic.archiver.archive.pb.ArchiveService.GetQuorumTickData:output_type -> qubic.archiver.archive.pb.GetQuorumTickDataResponse + 13, // 46: qubic.archiver.archive.pb.ArchiveService.GetTickTransactions:output_type -> qubic.archiver.archive.pb.GetTickTransactionsResponse + 13, // 47: qubic.archiver.archive.pb.ArchiveService.GetTickTransferTransactions:output_type -> qubic.archiver.archive.pb.GetTickTransactionsResponse + 15, // 48: qubic.archiver.archive.pb.ArchiveService.GetTickApprovedTransactions:output_type -> qubic.archiver.archive.pb.GetTickApprovedTransactionsResponse + 34, // 49: qubic.archiver.archive.pb.ArchiveService.GetChainHash:output_type -> qubic.archiver.archive.pb.GetChainHashResponse + 34, // 50: qubic.archiver.archive.pb.ArchiveService.GetStoreHash:output_type -> qubic.archiver.archive.pb.GetChainHashResponse + 9, // 51: qubic.archiver.archive.pb.ArchiveService.GetTransaction:output_type -> qubic.archiver.archive.pb.GetTransactionResponse + 11, // 52: qubic.archiver.archive.pb.ArchiveService.GetTransactionStatus:output_type -> qubic.archiver.archive.pb.GetTransactionStatusResponse + 32, // 53: qubic.archiver.archive.pb.ArchiveService.GetTransferTransactionsPerTick:output_type -> qubic.archiver.archive.pb.GetTransferTransactionsPerTickResponse + 25, // 54: qubic.archiver.archive.pb.ArchiveService.GetComputors:output_type -> qubic.archiver.archive.pb.GetComputorsResponse + 28, // 55: qubic.archiver.archive.pb.ArchiveService.GetStatus:output_type -> qubic.archiver.archive.pb.GetStatusResponse + 30, // 56: qubic.archiver.archive.pb.ArchiveService.GetLatestTick:output_type -> qubic.archiver.archive.pb.GetLatestTickResponse + 29, // 57: qubic.archiver.archive.pb.ArchiveService.GetHealthCheck:output_type -> qubic.archiver.archive.pb.GetHealthCheckResponse + 40, // [40:58] is the sub-list for method output_type + 22, // [22:40] is the sub-list for method input_type + 22, // [22:22] is the sub-list for extension type_name + 22, // [22:22] is the sub-list for extension extendee + 0, // [0:22] is the sub-list for field type_name } func init() { file_archive_proto_init() } @@ -2884,7 +3113,7 @@ func file_archive_proto_init() { } } file_archive_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetTransactionDataRequest); i { + switch v := v.(*TransactionStatus); i { case 0: return &v.state case 1: @@ -2896,7 +3125,7 @@ func file_archive_proto_init() { } } file_archive_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetTransactionDataResponse); i { + switch v := v.(*TickTransactionsStatus); i { case 0: return &v.state case 1: @@ -2908,7 +3137,7 @@ func file_archive_proto_init() { } } file_archive_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TransactionStatus); i { + switch v := v.(*NextAvailableTick); i { case 0: return &v.state case 1: @@ -2920,7 +3149,7 @@ func file_archive_proto_init() { } } file_archive_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TickTransactionsStatus); i { + switch v := v.(*LastProcessedTick); i { case 0: return &v.state case 1: @@ -2932,7 +3161,7 @@ func file_archive_proto_init() { } } file_archive_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NextAvailableTick); i { + switch v := v.(*GetTransactionRequest); i { case 0: return &v.state case 1: @@ -2944,7 +3173,7 @@ func file_archive_proto_init() { } } file_archive_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LastProcessedTick); i { + switch v := v.(*GetTransactionResponse); i { case 0: return &v.state case 1: @@ -2956,7 +3185,7 @@ func file_archive_proto_init() { } } file_archive_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetTransactionRequest); i { + switch v := v.(*GetTransactionStatusRequest); i { case 0: return &v.state case 1: @@ -2968,7 +3197,7 @@ func file_archive_proto_init() { } } file_archive_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetTransactionResponse); i { + switch v := v.(*GetTransactionStatusResponse); i { case 0: return &v.state case 1: @@ -2980,7 +3209,7 @@ func file_archive_proto_init() { } } file_archive_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetTransactionStatusRequest); i { + switch v := v.(*GetTickTransactionsRequest); i { case 0: return &v.state case 1: @@ -2992,7 +3221,7 @@ func file_archive_proto_init() { } } file_archive_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetTransactionStatusResponse); i { + switch v := v.(*GetTickTransactionsResponse); i { case 0: return &v.state case 1: @@ -3004,7 +3233,7 @@ func file_archive_proto_init() { } } file_archive_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetTickTransactionsRequest); i { + switch v := v.(*GetTickApprovedTransactionsRequest); i { case 0: return &v.state case 1: @@ -3016,7 +3245,7 @@ func file_archive_proto_init() { } } file_archive_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetTickTransactionsResponse); i { + switch v := v.(*GetTickApprovedTransactionsResponse); i { case 0: return &v.state case 1: @@ -3028,7 +3257,7 @@ func file_archive_proto_init() { } } file_archive_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetTickApprovedTransactionsRequest); i { + switch v := v.(*QuorumDiff); i { case 0: return &v.state case 1: @@ -3040,7 +3269,7 @@ func file_archive_proto_init() { } } file_archive_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetTickApprovedTransactionsResponse); i { + switch v := v.(*QuorumTickStructure); i { case 0: return &v.state case 1: @@ -3052,7 +3281,7 @@ func file_archive_proto_init() { } } file_archive_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*QuorumDiff); i { + switch v := v.(*SkippedTicksInterval); i { case 0: return &v.state case 1: @@ -3064,7 +3293,7 @@ func file_archive_proto_init() { } } file_archive_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*QuorumTickStructure); i { + switch v := v.(*SkippedTicksIntervalList); i { case 0: return &v.state case 1: @@ -3076,7 +3305,7 @@ func file_archive_proto_init() { } } file_archive_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SkippedTicksInterval); i { + switch v := v.(*QuorumTickData); i { case 0: return &v.state case 1: @@ -3088,7 +3317,7 @@ func file_archive_proto_init() { } } file_archive_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SkippedTicksIntervalList); i { + switch v := v.(*GetQuorumTickDataRequest); i { case 0: return &v.state case 1: @@ -3100,7 +3329,7 @@ func file_archive_proto_init() { } } file_archive_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*QuorumTickData); i { + switch v := v.(*GetQuorumTickDataResponse); i { case 0: return &v.state case 1: @@ -3112,7 +3341,7 @@ func file_archive_proto_init() { } } file_archive_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetQuorumTickDataRequest); i { + switch v := v.(*Computors); i { case 0: return &v.state case 1: @@ -3124,7 +3353,7 @@ func file_archive_proto_init() { } } file_archive_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetQuorumTickDataResponse); i { + switch v := v.(*GetComputorsRequest); i { case 0: return &v.state case 1: @@ -3136,7 +3365,7 @@ func file_archive_proto_init() { } } file_archive_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Computors); i { + switch v := v.(*GetComputorsResponse); i { case 0: return &v.state case 1: @@ -3148,7 +3377,7 @@ func file_archive_proto_init() { } } file_archive_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetComputorsRequest); i { + switch v := v.(*TransferTransactionsPerTick); i { case 0: return &v.state case 1: @@ -3160,7 +3389,7 @@ func file_archive_proto_init() { } } file_archive_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetComputorsResponse); i { + switch v := v.(*ProcessedTick); i { case 0: return &v.state case 1: @@ -3172,7 +3401,7 @@ func file_archive_proto_init() { } } file_archive_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TransferTransactionsPerTick); i { + switch v := v.(*GetStatusResponse); i { case 0: return &v.state case 1: @@ -3184,7 +3413,7 @@ func file_archive_proto_init() { } } file_archive_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProcessedTick); i { + switch v := v.(*GetHealthCheckResponse); i { case 0: return &v.state case 1: @@ -3196,7 +3425,7 @@ func file_archive_proto_init() { } } file_archive_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetStatusResponse); i { + switch v := v.(*GetLatestTickResponse); i { case 0: return &v.state case 1: @@ -3208,7 +3437,7 @@ func file_archive_proto_init() { } } file_archive_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetHealthCheckResponse); i { + switch v := v.(*GetTransferTransactionsPerTickRequest); i { case 0: return &v.state case 1: @@ -3220,7 +3449,7 @@ func file_archive_proto_init() { } } file_archive_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetLatestTickResponse); i { + switch v := v.(*GetTransferTransactionsPerTickResponse); i { case 0: return &v.state case 1: @@ -3232,7 +3461,7 @@ func file_archive_proto_init() { } } file_archive_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetTransferTransactionsPerTickRequest); i { + switch v := v.(*GetChainHashRequest); i { case 0: return &v.state case 1: @@ -3244,7 +3473,7 @@ func file_archive_proto_init() { } } file_archive_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetTransferTransactionsPerTickResponse); i { + switch v := v.(*GetChainHashResponse); i { case 0: return &v.state case 1: @@ -3256,7 +3485,7 @@ func file_archive_proto_init() { } } file_archive_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetChainHashRequest); i { + switch v := v.(*ProcessedTickInterval); i { case 0: return &v.state case 1: @@ -3268,7 +3497,7 @@ func file_archive_proto_init() { } } file_archive_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetChainHashResponse); i { + switch v := v.(*ProcessedTickIntervalsPerEpoch); i { case 0: return &v.state case 1: @@ -3280,7 +3509,7 @@ func file_archive_proto_init() { } } file_archive_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProcessedTickInterval); i { + switch v := v.(*TransactionData); i { case 0: return &v.state case 1: @@ -3292,7 +3521,43 @@ func file_archive_proto_init() { } } file_archive_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProcessedTickIntervalsPerEpoch); i { + switch v := v.(*GetTickTransactionsRequestV2); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_archive_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetTickTransactionsResponseV2); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_archive_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetTransactionRequestV2); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_archive_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetTransactionResponseV2); i { case 0: return &v.state case 1: @@ -3310,7 +3575,7 @@ func file_archive_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_archive_proto_rawDesc, NumEnums: 0, - NumMessages: 41, + NumMessages: 44, NumExtensions: 0, NumServices: 1, }, diff --git a/protobuff/archive.pb.gw.go b/protobuff/archive.pb.gw.go index 214602c..dc89877 100644 --- a/protobuff/archive.pb.gw.go +++ b/protobuff/archive.pb.gw.go @@ -32,8 +32,164 @@ var _ = runtime.String var _ = utilities.NewDoubleArray var _ = metadata.Join -func request_ArchiveService_GetTransactionData_0(ctx context.Context, marshaler runtime.Marshaler, client ArchiveServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq GetTransactionDataRequest +func request_ArchiveService_GetAllTickTransactionsV2_0(ctx context.Context, marshaler runtime.Marshaler, client ArchiveServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetTickTransactionsRequestV2 + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["tick_number"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "tick_number") + } + + protoReq.TickNumber, err = runtime.Uint32(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "tick_number", err) + } + + msg, err := client.GetAllTickTransactionsV2(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_ArchiveService_GetAllTickTransactionsV2_0(ctx context.Context, marshaler runtime.Marshaler, server ArchiveServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetTickTransactionsRequestV2 + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["tick_number"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "tick_number") + } + + protoReq.TickNumber, err = runtime.Uint32(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "tick_number", err) + } + + msg, err := server.GetAllTickTransactionsV2(ctx, &protoReq) + return msg, metadata, err + +} + +func request_ArchiveService_GetTransferTickTransactionsV2_0(ctx context.Context, marshaler runtime.Marshaler, client ArchiveServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetTickTransactionsRequestV2 + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["tick_number"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "tick_number") + } + + protoReq.TickNumber, err = runtime.Uint32(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "tick_number", err) + } + + msg, err := client.GetTransferTickTransactionsV2(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_ArchiveService_GetTransferTickTransactionsV2_0(ctx context.Context, marshaler runtime.Marshaler, server ArchiveServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetTickTransactionsRequestV2 + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["tick_number"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "tick_number") + } + + protoReq.TickNumber, err = runtime.Uint32(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "tick_number", err) + } + + msg, err := server.GetTransferTickTransactionsV2(ctx, &protoReq) + return msg, metadata, err + +} + +func request_ArchiveService_GetApprovedTickTransactionsV2_0(ctx context.Context, marshaler runtime.Marshaler, client ArchiveServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetTickTransactionsRequestV2 + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["tick_number"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "tick_number") + } + + protoReq.TickNumber, err = runtime.Uint32(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "tick_number", err) + } + + msg, err := client.GetApprovedTickTransactionsV2(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_ArchiveService_GetApprovedTickTransactionsV2_0(ctx context.Context, marshaler runtime.Marshaler, server ArchiveServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetTickTransactionsRequestV2 + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["tick_number"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "tick_number") + } + + protoReq.TickNumber, err = runtime.Uint32(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "tick_number", err) + } + + msg, err := server.GetApprovedTickTransactionsV2(ctx, &protoReq) + return msg, metadata, err + +} + +func request_ArchiveService_GetTransactionV2_0(ctx context.Context, marshaler runtime.Marshaler, client ArchiveServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetTransactionRequestV2 var metadata runtime.ServerMetadata var ( @@ -53,13 +209,13 @@ func request_ArchiveService_GetTransactionData_0(ctx context.Context, marshaler return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "tx_id", err) } - msg, err := client.GetTransactionData(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.GetTransactionV2(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_ArchiveService_GetTransactionData_0(ctx context.Context, marshaler runtime.Marshaler, server ArchiveServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq GetTransactionDataRequest +func local_request_ArchiveService_GetTransactionV2_0(ctx context.Context, marshaler runtime.Marshaler, server ArchiveServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetTransactionRequestV2 var metadata runtime.ServerMetadata var ( @@ -79,7 +235,7 @@ func local_request_ArchiveService_GetTransactionData_0(ctx context.Context, mars return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "tx_id", err) } - msg, err := server.GetTransactionData(ctx, &protoReq) + msg, err := server.GetTransactionV2(ctx, &protoReq) return msg, metadata, err } @@ -734,7 +890,82 @@ func local_request_ArchiveService_GetHealthCheck_0(ctx context.Context, marshale // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterArchiveServiceHandlerFromEndpoint instead. func RegisterArchiveServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, server ArchiveServiceServer) error { - mux.Handle("GET", pattern_ArchiveService_GetTransactionData_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_ArchiveService_GetAllTickTransactionsV2_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/qubic.archiver.archive.pb.ArchiveService/GetAllTickTransactionsV2", runtime.WithHTTPPathPattern("/v2/tick/{tick_number}/transactions")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_ArchiveService_GetAllTickTransactionsV2_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_ArchiveService_GetAllTickTransactionsV2_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_ArchiveService_GetTransferTickTransactionsV2_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/qubic.archiver.archive.pb.ArchiveService/GetTransferTickTransactionsV2", runtime.WithHTTPPathPattern("/v2/tick/{tick_number}/transactions/transfers")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_ArchiveService_GetTransferTickTransactionsV2_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_ArchiveService_GetTransferTickTransactionsV2_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_ArchiveService_GetApprovedTickTransactionsV2_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/qubic.archiver.archive.pb.ArchiveService/GetApprovedTickTransactionsV2", runtime.WithHTTPPathPattern("/v2/tick/{tick_number}/transactions/transfers/approved")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_ArchiveService_GetApprovedTickTransactionsV2_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_ArchiveService_GetApprovedTickTransactionsV2_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_ArchiveService_GetTransactionV2_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() var stream runtime.ServerTransportStream @@ -742,12 +973,12 @@ func RegisterArchiveServiceHandlerServer(ctx context.Context, mux *runtime.Serve inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/qubic.archiver.archive.pb.ArchiveService/GetTransactionData", runtime.WithHTTPPathPattern("/v2/transaction/{tx_id}")) + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/qubic.archiver.archive.pb.ArchiveService/GetTransactionV2", runtime.WithHTTPPathPattern("/v2/transaction/{tx_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_ArchiveService_GetTransactionData_0(annotatedContext, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_ArchiveService_GetTransactionV2_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { @@ -755,7 +986,7 @@ func RegisterArchiveServiceHandlerServer(ctx context.Context, mux *runtime.Serve return } - forward_ArchiveService_GetTransactionData_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ArchiveService_GetTransactionV2_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1150,25 +1381,91 @@ func RegisterArchiveServiceHandler(ctx context.Context, mux *runtime.ServeMux, c // "ArchiveServiceClient" to call the correct interceptors. func RegisterArchiveServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, client ArchiveServiceClient) error { - mux.Handle("GET", pattern_ArchiveService_GetTransactionData_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_ArchiveService_GetAllTickTransactionsV2_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/qubic.archiver.archive.pb.ArchiveService/GetTransactionData", runtime.WithHTTPPathPattern("/v2/transaction/{tx_id}")) + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/qubic.archiver.archive.pb.ArchiveService/GetAllTickTransactionsV2", runtime.WithHTTPPathPattern("/v2/tick/{tick_number}/transactions")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_ArchiveService_GetTransactionData_0(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := request_ArchiveService_GetAllTickTransactionsV2_0(annotatedContext, inboundMarshaler, client, req, pathParams) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ArchiveService_GetTransactionData_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ArchiveService_GetAllTickTransactionsV2_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_ArchiveService_GetTransferTickTransactionsV2_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/qubic.archiver.archive.pb.ArchiveService/GetTransferTickTransactionsV2", runtime.WithHTTPPathPattern("/v2/tick/{tick_number}/transactions/transfers")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_ArchiveService_GetTransferTickTransactionsV2_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_ArchiveService_GetTransferTickTransactionsV2_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_ArchiveService_GetApprovedTickTransactionsV2_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/qubic.archiver.archive.pb.ArchiveService/GetApprovedTickTransactionsV2", runtime.WithHTTPPathPattern("/v2/tick/{tick_number}/transactions/transfers/approved")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_ArchiveService_GetApprovedTickTransactionsV2_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_ArchiveService_GetApprovedTickTransactionsV2_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_ArchiveService_GetTransactionV2_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/qubic.archiver.archive.pb.ArchiveService/GetTransactionV2", runtime.WithHTTPPathPattern("/v2/transaction/{tx_id}")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_ArchiveService_GetTransactionV2_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_ArchiveService_GetTransactionV2_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1484,7 +1781,13 @@ func RegisterArchiveServiceHandlerClient(ctx context.Context, mux *runtime.Serve } var ( - pattern_ArchiveService_GetTransactionData_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"v2", "transaction", "tx_id"}, "")) + pattern_ArchiveService_GetAllTickTransactionsV2_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"v2", "tick", "tick_number", "transactions"}, "")) + + pattern_ArchiveService_GetTransferTickTransactionsV2_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 2, 4}, []string{"v2", "tick", "tick_number", "transactions", "transfers"}, "")) + + pattern_ArchiveService_GetApprovedTickTransactionsV2_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 2, 4, 2, 5}, []string{"v2", "tick", "tick_number", "transactions", "transfers", "approved"}, "")) + + pattern_ArchiveService_GetTransactionV2_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"v2", "transaction", "tx_id"}, "")) pattern_ArchiveService_GetTickData_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"v1", "ticks", "tick_number", "tick-data"}, "")) @@ -1516,7 +1819,13 @@ var ( ) var ( - forward_ArchiveService_GetTransactionData_0 = runtime.ForwardResponseMessage + forward_ArchiveService_GetAllTickTransactionsV2_0 = runtime.ForwardResponseMessage + + forward_ArchiveService_GetTransferTickTransactionsV2_0 = runtime.ForwardResponseMessage + + forward_ArchiveService_GetApprovedTickTransactionsV2_0 = runtime.ForwardResponseMessage + + forward_ArchiveService_GetTransactionV2_0 = runtime.ForwardResponseMessage forward_ArchiveService_GetTickData_0 = runtime.ForwardResponseMessage diff --git a/protobuff/archive.proto b/protobuff/archive.proto index e0d6eaa..3dcda21 100644 --- a/protobuff/archive.proto +++ b/protobuff/archive.proto @@ -38,17 +38,6 @@ message Transaction { string tx_id = 9; } - -message GetTransactionDataRequest { - string tx_id = 1; -} - -message GetTransactionDataResponse { - Transaction transaction = 1; - uint64 timestamp = 2; - bool money_flew = 3; -} - message TransactionStatus { string tx_id = 1; bool moneyFlew = 2; @@ -208,9 +197,56 @@ message ProcessedTickIntervalsPerEpoch { repeated ProcessedTickInterval intervals = 2; } +// Wrapper around transaction and additional data +message TransactionData { + Transaction transaction = 1; + uint64 timestamp = 2; + bool money_flew = 3; +} + +//Ticks + +// Tick Transactions +message GetTickTransactionsRequestV2 { + uint32 tick_number = 1; +} +message GetTickTransactionsResponseV2 { + repeated TransactionData transactions = 1; +} + + +// Get Transaction +message GetTransactionRequestV2 { + string tx_id = 1; +} +message GetTransactionResponseV2 { + Transaction transaction = 1; + uint64 timestamp = 2; + bool money_flew = 3; +} + + service ArchiveService { - rpc GetTransactionData(GetTransactionDataRequest) returns (GetTransactionDataResponse) { + //Tick + rpc GetAllTickTransactionsV2(GetTickTransactionsRequestV2) returns (GetTickTransactionsResponseV2){ + option (google.api.http) = { + get: "/v2/tick/{tick_number}/transactions" + }; + }; + rpc GetTransferTickTransactionsV2(GetTickTransactionsRequestV2) returns (GetTickTransactionsResponseV2){ + option (google.api.http) = { + get: "/v2/tick/{tick_number}/transactions/transfers" + }; + }; + rpc GetApprovedTickTransactionsV2(GetTickTransactionsRequestV2) returns (GetTickTransactionsResponseV2){ + option (google.api.http) = { + get: "/v2/tick/{tick_number}/transactions/transfers/approved" + }; + }; + + //Transaction + rpc GetTransactionV2(GetTransactionRequestV2) returns (GetTransactionResponseV2) { option (google.api.http) = { get: "/v2/transaction/{tx_id}" }; diff --git a/protobuff/archive_grpc.pb.go b/protobuff/archive_grpc.pb.go index 91b538d..55ec445 100644 --- a/protobuff/archive_grpc.pb.go +++ b/protobuff/archive_grpc.pb.go @@ -20,7 +20,10 @@ import ( const _ = grpc.SupportPackageIsVersion7 const ( - ArchiveService_GetTransactionData_FullMethodName = "/qubic.archiver.archive.pb.ArchiveService/GetTransactionData" + ArchiveService_GetAllTickTransactionsV2_FullMethodName = "/qubic.archiver.archive.pb.ArchiveService/GetAllTickTransactionsV2" + ArchiveService_GetTransferTickTransactionsV2_FullMethodName = "/qubic.archiver.archive.pb.ArchiveService/GetTransferTickTransactionsV2" + ArchiveService_GetApprovedTickTransactionsV2_FullMethodName = "/qubic.archiver.archive.pb.ArchiveService/GetApprovedTickTransactionsV2" + ArchiveService_GetTransactionV2_FullMethodName = "/qubic.archiver.archive.pb.ArchiveService/GetTransactionV2" ArchiveService_GetTickData_FullMethodName = "/qubic.archiver.archive.pb.ArchiveService/GetTickData" ArchiveService_GetQuorumTickData_FullMethodName = "/qubic.archiver.archive.pb.ArchiveService/GetQuorumTickData" ArchiveService_GetTickTransactions_FullMethodName = "/qubic.archiver.archive.pb.ArchiveService/GetTickTransactions" @@ -41,7 +44,12 @@ const ( // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. type ArchiveServiceClient interface { - GetTransactionData(ctx context.Context, in *GetTransactionDataRequest, opts ...grpc.CallOption) (*GetTransactionDataResponse, error) + // Tick + GetAllTickTransactionsV2(ctx context.Context, in *GetTickTransactionsRequestV2, opts ...grpc.CallOption) (*GetTickTransactionsResponseV2, error) + GetTransferTickTransactionsV2(ctx context.Context, in *GetTickTransactionsRequestV2, opts ...grpc.CallOption) (*GetTickTransactionsResponseV2, error) + GetApprovedTickTransactionsV2(ctx context.Context, in *GetTickTransactionsRequestV2, opts ...grpc.CallOption) (*GetTickTransactionsResponseV2, error) + // Transaction + GetTransactionV2(ctx context.Context, in *GetTransactionRequestV2, opts ...grpc.CallOption) (*GetTransactionResponseV2, error) GetTickData(ctx context.Context, in *GetTickDataRequest, opts ...grpc.CallOption) (*GetTickDataResponse, error) GetQuorumTickData(ctx context.Context, in *GetQuorumTickDataRequest, opts ...grpc.CallOption) (*GetQuorumTickDataResponse, error) GetTickTransactions(ctx context.Context, in *GetTickTransactionsRequest, opts ...grpc.CallOption) (*GetTickTransactionsResponse, error) @@ -66,9 +74,36 @@ func NewArchiveServiceClient(cc grpc.ClientConnInterface) ArchiveServiceClient { return &archiveServiceClient{cc} } -func (c *archiveServiceClient) GetTransactionData(ctx context.Context, in *GetTransactionDataRequest, opts ...grpc.CallOption) (*GetTransactionDataResponse, error) { - out := new(GetTransactionDataResponse) - err := c.cc.Invoke(ctx, ArchiveService_GetTransactionData_FullMethodName, in, out, opts...) +func (c *archiveServiceClient) GetAllTickTransactionsV2(ctx context.Context, in *GetTickTransactionsRequestV2, opts ...grpc.CallOption) (*GetTickTransactionsResponseV2, error) { + out := new(GetTickTransactionsResponseV2) + err := c.cc.Invoke(ctx, ArchiveService_GetAllTickTransactionsV2_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *archiveServiceClient) GetTransferTickTransactionsV2(ctx context.Context, in *GetTickTransactionsRequestV2, opts ...grpc.CallOption) (*GetTickTransactionsResponseV2, error) { + out := new(GetTickTransactionsResponseV2) + err := c.cc.Invoke(ctx, ArchiveService_GetTransferTickTransactionsV2_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *archiveServiceClient) GetApprovedTickTransactionsV2(ctx context.Context, in *GetTickTransactionsRequestV2, opts ...grpc.CallOption) (*GetTickTransactionsResponseV2, error) { + out := new(GetTickTransactionsResponseV2) + err := c.cc.Invoke(ctx, ArchiveService_GetApprovedTickTransactionsV2_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *archiveServiceClient) GetTransactionV2(ctx context.Context, in *GetTransactionRequestV2, opts ...grpc.CallOption) (*GetTransactionResponseV2, error) { + out := new(GetTransactionResponseV2) + err := c.cc.Invoke(ctx, ArchiveService_GetTransactionV2_FullMethodName, in, out, opts...) if err != nil { return nil, err } @@ -205,7 +240,12 @@ func (c *archiveServiceClient) GetHealthCheck(ctx context.Context, in *emptypb.E // All implementations must embed UnimplementedArchiveServiceServer // for forward compatibility type ArchiveServiceServer interface { - GetTransactionData(context.Context, *GetTransactionDataRequest) (*GetTransactionDataResponse, error) + // Tick + GetAllTickTransactionsV2(context.Context, *GetTickTransactionsRequestV2) (*GetTickTransactionsResponseV2, error) + GetTransferTickTransactionsV2(context.Context, *GetTickTransactionsRequestV2) (*GetTickTransactionsResponseV2, error) + GetApprovedTickTransactionsV2(context.Context, *GetTickTransactionsRequestV2) (*GetTickTransactionsResponseV2, error) + // Transaction + GetTransactionV2(context.Context, *GetTransactionRequestV2) (*GetTransactionResponseV2, error) GetTickData(context.Context, *GetTickDataRequest) (*GetTickDataResponse, error) GetQuorumTickData(context.Context, *GetQuorumTickDataRequest) (*GetQuorumTickDataResponse, error) GetTickTransactions(context.Context, *GetTickTransactionsRequest) (*GetTickTransactionsResponse, error) @@ -227,8 +267,17 @@ type ArchiveServiceServer interface { type UnimplementedArchiveServiceServer struct { } -func (UnimplementedArchiveServiceServer) GetTransactionData(context.Context, *GetTransactionDataRequest) (*GetTransactionDataResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetTransactionData not implemented") +func (UnimplementedArchiveServiceServer) GetAllTickTransactionsV2(context.Context, *GetTickTransactionsRequestV2) (*GetTickTransactionsResponseV2, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetAllTickTransactionsV2 not implemented") +} +func (UnimplementedArchiveServiceServer) GetTransferTickTransactionsV2(context.Context, *GetTickTransactionsRequestV2) (*GetTickTransactionsResponseV2, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetTransferTickTransactionsV2 not implemented") +} +func (UnimplementedArchiveServiceServer) GetApprovedTickTransactionsV2(context.Context, *GetTickTransactionsRequestV2) (*GetTickTransactionsResponseV2, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetApprovedTickTransactionsV2 not implemented") +} +func (UnimplementedArchiveServiceServer) GetTransactionV2(context.Context, *GetTransactionRequestV2) (*GetTransactionResponseV2, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetTransactionV2 not implemented") } func (UnimplementedArchiveServiceServer) GetTickData(context.Context, *GetTickDataRequest) (*GetTickDataResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetTickData not implemented") @@ -285,20 +334,74 @@ func RegisterArchiveServiceServer(s grpc.ServiceRegistrar, srv ArchiveServiceSer s.RegisterService(&ArchiveService_ServiceDesc, srv) } -func _ArchiveService_GetTransactionData_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetTransactionDataRequest) +func _ArchiveService_GetAllTickTransactionsV2_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetTickTransactionsRequestV2) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ArchiveServiceServer).GetAllTickTransactionsV2(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: ArchiveService_GetAllTickTransactionsV2_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ArchiveServiceServer).GetAllTickTransactionsV2(ctx, req.(*GetTickTransactionsRequestV2)) + } + return interceptor(ctx, in, info, handler) +} + +func _ArchiveService_GetTransferTickTransactionsV2_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetTickTransactionsRequestV2) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(ArchiveServiceServer).GetTransactionData(ctx, in) + return srv.(ArchiveServiceServer).GetTransferTickTransactionsV2(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: ArchiveService_GetTransactionData_FullMethodName, + FullMethod: ArchiveService_GetTransferTickTransactionsV2_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ArchiveServiceServer).GetTransactionData(ctx, req.(*GetTransactionDataRequest)) + return srv.(ArchiveServiceServer).GetTransferTickTransactionsV2(ctx, req.(*GetTickTransactionsRequestV2)) + } + return interceptor(ctx, in, info, handler) +} + +func _ArchiveService_GetApprovedTickTransactionsV2_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetTickTransactionsRequestV2) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ArchiveServiceServer).GetApprovedTickTransactionsV2(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: ArchiveService_GetApprovedTickTransactionsV2_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ArchiveServiceServer).GetApprovedTickTransactionsV2(ctx, req.(*GetTickTransactionsRequestV2)) + } + return interceptor(ctx, in, info, handler) +} + +func _ArchiveService_GetTransactionV2_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetTransactionRequestV2) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ArchiveServiceServer).GetTransactionV2(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: ArchiveService_GetTransactionV2_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ArchiveServiceServer).GetTransactionV2(ctx, req.(*GetTransactionRequestV2)) } return interceptor(ctx, in, info, handler) } @@ -563,8 +666,20 @@ var ArchiveService_ServiceDesc = grpc.ServiceDesc{ HandlerType: (*ArchiveServiceServer)(nil), Methods: []grpc.MethodDesc{ { - MethodName: "GetTransactionData", - Handler: _ArchiveService_GetTransactionData_Handler, + MethodName: "GetAllTickTransactionsV2", + Handler: _ArchiveService_GetAllTickTransactionsV2_Handler, + }, + { + MethodName: "GetTransferTickTransactionsV2", + Handler: _ArchiveService_GetTransferTickTransactionsV2_Handler, + }, + { + MethodName: "GetApprovedTickTransactionsV2", + Handler: _ArchiveService_GetApprovedTickTransactionsV2_Handler, + }, + { + MethodName: "GetTransactionV2", + Handler: _ArchiveService_GetTransactionV2_Handler, }, { MethodName: "GetTickData", diff --git a/rpc/rpc_server.go b/rpc/rpc_server.go index ae0b55e..67e1c5f 100644 --- a/rpc/rpc_server.go +++ b/rpc/rpc_server.go @@ -27,6 +27,11 @@ var _ protobuff.ArchiveServiceServer = &Server{} var emptyTd = &protobuff.TickData{} +type TransactionInfo struct { + timestamp uint64 + moneyFlew bool +} + type Server struct { protobuff.UnimplementedArchiveServiceServer listenAddrGRPC string @@ -48,30 +53,225 @@ func NewServer(listenAddrGRPC, listenAddrHTTP string, syncThreshold int, chainTi } } -func (s *Server) GetTransactionData(ctx context.Context, req *protobuff.GetTransactionDataRequest) (*protobuff.GetTransactionDataResponse, error) { +func getTransactionInfo(ctx context.Context, pebbleStore *store.PebbleStore, transactionId string, tickNumber uint32) (*TransactionInfo, error) { - tx, err := s.store.GetTransaction(ctx, req.TxId) + txStatus, err := pebbleStore.GetTransactionStatus(ctx, transactionId) + if err != nil { + return nil, errors.Wrap(err, "getting transaction status") + } + + tickData, err := pebbleStore.GetTickData(ctx, tickNumber) + if err != nil { + return nil, errors.Wrap(err, "getting tick data") + } + + return &TransactionInfo{ + timestamp: tickData.Timestamp, + moneyFlew: txStatus.MoneyFlew, + }, nil + +} + +func (s *Server) GetAllTickTransactionsV2(ctx context.Context, req *protobuff.GetTickTransactionsRequestV2) (*protobuff.GetTickTransactionsResponseV2, error) { + lastProcessedTick, err := s.store.GetLastProcessedTick(ctx) + if err != nil { + return nil, status.Errorf(codes.Internal, "getting last processed tick: %v", err) + } + if req.TickNumber > lastProcessedTick.TickNumber { + st := status.Newf(codes.FailedPrecondition, "requested tick number %d is greater than last processed tick %d", req.TickNumber, lastProcessedTick.TickNumber) + st, err = st.WithDetails(&protobuff.LastProcessedTick{LastProcessedTick: lastProcessedTick.TickNumber}) + if err != nil { + return nil, status.Errorf(codes.Internal, "creating custom status") + } + + return nil, st.Err() + } + + processedTickIntervalsPerEpoch, err := s.store.GetProcessedTickIntervals(ctx) + if err != nil { + return nil, status.Errorf(codes.Internal, "getting processed tick intervals per epoch") + } + + wasSkipped, nextAvailableTick := wasTickSkippedByArchive(req.TickNumber, processedTickIntervalsPerEpoch) + if wasSkipped == true { + st := status.Newf(codes.OutOfRange, "provided tick number %d was skipped by the system, next available tick is %d", req.TickNumber, nextAvailableTick) + st, err = st.WithDetails(&protobuff.NextAvailableTick{NextTickNumber: nextAvailableTick}) + if err != nil { + return nil, status.Errorf(codes.Internal, "creating custom status") + } + + return nil, st.Err() + } + + txs, err := s.store.GetTickTransactions(ctx, req.TickNumber) if err != nil { if errors.Is(err, store.ErrNotFound) { - return nil, status.Errorf(codes.NotFound, "transaction not found") + return nil, status.Errorf(codes.NotFound, "tick transactions for specified tick not found") } - return nil, status.Errorf(codes.Internal, "getting transaction: %v", err) + return nil, status.Errorf(codes.Internal, "getting tick transactions: %v", err) } - txStatus, err := s.store.GetTransactionStatus(ctx, req.TxId) + var transactions []*protobuff.TransactionData + + for _, transaction := range txs { + + transactionInfo, err := getTransactionInfo(ctx, s.store, transaction.TxId, transaction.TickNumber) + if err != nil { + return nil, status.Errorf(codes.Internal, "failed to get transaction info: %v", err) + } + + transactions = append(transactions, &protobuff.TransactionData{ + Transaction: transaction, + Timestamp: transactionInfo.timestamp, + MoneyFlew: transactionInfo.moneyFlew, + }) + + } + + return &protobuff.GetTickTransactionsResponseV2{Transactions: transactions}, nil +} + +func (s *Server) GetTransferTickTransactionsV2(ctx context.Context, req *protobuff.GetTickTransactionsRequestV2) (*protobuff.GetTickTransactionsResponseV2, error) { + lastProcessedTick, err := s.store.GetLastProcessedTick(ctx) if err != nil { - return nil, status.Errorf(codes.Internal, "getting tx status: %v", err) + return nil, status.Errorf(codes.Internal, "getting last processed tick: %v", err) + } + if req.TickNumber > lastProcessedTick.TickNumber { + st := status.Newf(codes.FailedPrecondition, "requested tick number %d is greater than last processed tick %d", req.TickNumber, lastProcessedTick.TickNumber) + st, err = st.WithDetails(&protobuff.LastProcessedTick{LastProcessedTick: lastProcessedTick.TickNumber}) + if err != nil { + return nil, status.Errorf(codes.Internal, "creating custom status") + } + + return nil, st.Err() } - tickData, err := s.store.GetTickData(ctx, tx.TickNumber) + processedTickIntervalsPerEpoch, err := s.store.GetProcessedTickIntervals(ctx) if err != nil { - return nil, status.Errorf(codes.Internal, "getting tick data: %v", err) + return nil, status.Errorf(codes.Internal, "getting processed tick intervals per epoch") + } + + wasSkipped, nextAvailableTick := wasTickSkippedByArchive(req.TickNumber, processedTickIntervalsPerEpoch) + if wasSkipped == true { + st := status.Newf(codes.OutOfRange, "provided tick number %d was skipped by the system, next available tick is %d", req.TickNumber, nextAvailableTick) + st, err = st.WithDetails(&protobuff.NextAvailableTick{NextTickNumber: nextAvailableTick}) + if err != nil { + return nil, status.Errorf(codes.Internal, "creating custom status") + } + + return nil, st.Err() + } + + txs, err := s.store.GetTickTransferTransactions(ctx, req.TickNumber) + if err != nil { + if errors.Is(err, store.ErrNotFound) { + return nil, status.Errorf(codes.NotFound, "tick transfer transactions for specified tick not found") + } + return nil, status.Errorf(codes.Internal, "getting tick transactions: %v", err) + } + + var transactions []*protobuff.TransactionData + + for _, transaction := range txs { + + transactionInfo, err := getTransactionInfo(ctx, s.store, transaction.TxId, transaction.TickNumber) + if err != nil { + return nil, status.Errorf(codes.Internal, "failed to get transaction info: %v", err) + } + + transactions = append(transactions, &protobuff.TransactionData{ + Transaction: transaction, + Timestamp: transactionInfo.timestamp, + MoneyFlew: transactionInfo.moneyFlew, + }) + + } + + return &protobuff.GetTickTransactionsResponseV2{Transactions: transactions}, nil +} + +func (s *Server) GetApprovedTickTransactionsV2(ctx context.Context, req *protobuff.GetTickTransactionsRequestV2) (*protobuff.GetTickTransactionsResponseV2, error) { + lastProcessedTick, err := s.store.GetLastProcessedTick(ctx) + if err != nil { + return nil, status.Errorf(codes.Internal, "getting last processed tick: %v", err) + } + if req.TickNumber > lastProcessedTick.TickNumber { + st := status.Newf(codes.FailedPrecondition, "requested tick number %d is greater than last processed tick %d", req.TickNumber, lastProcessedTick.TickNumber) + st, err = st.WithDetails(&protobuff.LastProcessedTick{LastProcessedTick: lastProcessedTick.TickNumber}) + if err != nil { + return nil, status.Errorf(codes.Internal, "creating custom status") + } + + return nil, st.Err() + } + + processedTickIntervalsPerEpoch, err := s.store.GetProcessedTickIntervals(ctx) + if err != nil { + return nil, status.Errorf(codes.Internal, "getting processed tick intervals per epoch") + } + + wasSkipped, nextAvailableTick := wasTickSkippedByArchive(req.TickNumber, processedTickIntervalsPerEpoch) + if wasSkipped == true { + st := status.Newf(codes.OutOfRange, "provided tick number %d was skipped by the system, next available tick is %d", req.TickNumber, nextAvailableTick) + st, err = st.WithDetails(&protobuff.NextAvailableTick{NextTickNumber: nextAvailableTick}) + if err != nil { + return nil, status.Errorf(codes.Internal, "creating custom status") + } + + return nil, st.Err() + } + + txs, err := s.store.GetTickTransferTransactions(ctx, req.TickNumber) + if err != nil { + if errors.Is(err, store.ErrNotFound) { + return nil, status.Errorf(codes.NotFound, "tick transfer transactions for specified tick not found") + } + return nil, status.Errorf(codes.Internal, "getting tick transactions: %v", err) + } + + var transactions []*protobuff.TransactionData + + for _, transaction := range txs { + + transactionInfo, err := getTransactionInfo(ctx, s.store, transaction.TxId, transaction.TickNumber) + if err != nil { + return nil, status.Errorf(codes.Internal, "failed to get transaction info: %v", err) + } + + if transactionInfo.moneyFlew == false { + continue + } + + transactions = append(transactions, &protobuff.TransactionData{ + Transaction: transaction, + Timestamp: transactionInfo.timestamp, + MoneyFlew: transactionInfo.moneyFlew, + }) + + } + + return &protobuff.GetTickTransactionsResponseV2{Transactions: transactions}, nil +} + +func (s *Server) GetTransactionV2(ctx context.Context, req *protobuff.GetTransactionRequestV2) (*protobuff.GetTransactionResponseV2, error) { + + tx, err := s.store.GetTransaction(ctx, req.TxId) + if err != nil { + if errors.Is(err, store.ErrNotFound) { + return nil, status.Errorf(codes.NotFound, "transaction not found") + } + return nil, status.Errorf(codes.Internal, "getting transaction: %v", err) + } + + transactionInfo, err := getTransactionInfo(ctx, s.store, tx.TxId, tx.TickNumber) + if err != nil { + return nil, status.Errorf(codes.Internal, "getting transaction info") } - res := protobuff.GetTransactionDataResponse{ + res := protobuff.GetTransactionResponseV2{ Transaction: tx, - MoneyFlew: txStatus.MoneyFlew, - Timestamp: tickData.Timestamp, + MoneyFlew: transactionInfo.moneyFlew, + Timestamp: transactionInfo.timestamp, } return &res, nil