diff --git a/.gitignore b/.gitignore index 3cee79f..b963faf 100644 --- a/.gitignore +++ b/.gitignore @@ -1,20 +1,4 @@ /.idea -/.vscode -/vendor -/runtime -*.log -.env -app/.DS_Store -.DS_Store -composer_test.lock -.phpunit.result.cache -config/pem -config/bale -config/alipaycash -config/wechatcash -config/wechat_cert.pem -config/wechat_private_key.pem -/app/api/ForExample.php -/route/test.php -/public/data/ -/app/api/Test.php +/config +/test +/genModel.sh \ No newline at end of file diff --git a/cmd/rpc/internal/logic/marketKeyDiscardLogic.go b/cmd/rpc/internal/logic/marketKeyDiscardLogic.go new file mode 100644 index 0000000..d901232 --- /dev/null +++ b/cmd/rpc/internal/logic/marketKeyDiscardLogic.go @@ -0,0 +1,30 @@ +package logic + +import ( + "context" + + "trasfer_middleware/cmd/rpc/internal/svc" + "trasfer_middleware/cmd/rpc/pb/transfer" + + "github.com/zeromicro/go-zero/core/logx" +) + +type MarketKeyDiscardLogic struct { + ctx context.Context + svcCtx *svc.ServiceContext + logx.Logger +} + +func NewMarketKeyDiscardLogic(ctx context.Context, svcCtx *svc.ServiceContext) *MarketKeyDiscardLogic { + return &MarketKeyDiscardLogic{ + ctx: ctx, + svcCtx: svcCtx, + Logger: logx.WithContext(ctx), + } +} + +func (l *MarketKeyDiscardLogic) MarketKeyDiscard(in *transfer.MarketKeyDiscardReq) (*transfer.MarketKeyDiscardRes, error) { + // todo: add your logic here and delete this line + + return &transfer.MarketKeyDiscardRes{}, nil +} diff --git a/cmd/rpc/internal/logic/marketKeySendLogic.go b/cmd/rpc/internal/logic/marketKeySendLogic.go new file mode 100644 index 0000000..b9b5843 --- /dev/null +++ b/cmd/rpc/internal/logic/marketKeySendLogic.go @@ -0,0 +1,30 @@ +package logic + +import ( + "context" + + "trasfer_middleware/cmd/rpc/internal/svc" + "trasfer_middleware/cmd/rpc/pb/transfer" + + "github.com/zeromicro/go-zero/core/logx" +) + +type MarketKeySendLogic struct { + ctx context.Context + svcCtx *svc.ServiceContext + logx.Logger +} + +func NewMarketKeySendLogic(ctx context.Context, svcCtx *svc.ServiceContext) *MarketKeySendLogic { + return &MarketKeySendLogic{ + ctx: ctx, + svcCtx: svcCtx, + Logger: logx.WithContext(ctx), + } +} + +func (l *MarketKeySendLogic) MarketKeySend(in *transfer.MarketKeySendReq) (*transfer.MarketKeySendRes, error) { + // todo: add your logic here and delete this line + + return &transfer.MarketKeySendRes{}, nil +} diff --git a/cmd/rpc/internal/logic/marketQueryLogic.go b/cmd/rpc/internal/logic/marketQueryLogic.go new file mode 100644 index 0000000..fef7b19 --- /dev/null +++ b/cmd/rpc/internal/logic/marketQueryLogic.go @@ -0,0 +1,30 @@ +package logic + +import ( + "context" + + "trasfer_middleware/cmd/rpc/internal/svc" + "trasfer_middleware/cmd/rpc/pb/transfer" + + "github.com/zeromicro/go-zero/core/logx" +) + +type MarketQueryLogic struct { + ctx context.Context + svcCtx *svc.ServiceContext + logx.Logger +} + +func NewMarketQueryLogic(ctx context.Context, svcCtx *svc.ServiceContext) *MarketQueryLogic { + return &MarketQueryLogic{ + ctx: ctx, + svcCtx: svcCtx, + Logger: logx.WithContext(ctx), + } +} + +func (l *MarketQueryLogic) MarketQuery(in *transfer.MarketQueryReq) (*transfer.MarketQueryRes, error) { + // todo: add your logic here and delete this line + + return &transfer.MarketQueryRes{}, nil +} diff --git a/cmd/rpc/internal/logic/po/market/market.go b/cmd/rpc/internal/logic/po/market/market.go new file mode 100644 index 0000000..0274b03 --- /dev/null +++ b/cmd/rpc/internal/logic/po/market/market.go @@ -0,0 +1 @@ +package market diff --git a/cmd/rpc/internal/server/transferServer.go b/cmd/rpc/internal/server/transferServer.go index bac3b10..e26e8fc 100755 --- a/cmd/rpc/internal/server/transferServer.go +++ b/cmd/rpc/internal/server/transferServer.go @@ -22,11 +22,6 @@ func NewTransferServer(svcCtx *svc.ServiceContext) *TransferServer { } } -func (s *TransferServer) GetResellerByAppId(ctx context.Context, in *transfer.GetResellerByAppIdReq) (*transfer.GetResellerByAppIdRes, error) { - l := logic.NewGetResellerByAppIdLogic(ctx, s.svcCtx) - return l.GetResellerByAppId(in) -} - func (s *TransferServer) ZltxOrderRecharge(ctx context.Context, in *transfer.ZltxOrderRechargeReq) (*transfer.DefaultRes, error) { l := logic.NewZltxOrderRechargeLogic(ctx, s.svcCtx) return l.ZltxOrderRecharge(in) @@ -61,3 +56,18 @@ func (s *TransferServer) ZltxRechargeProduct(ctx context.Context, in *transfer.D l := logic.NewZltxRechargeProductLogic(ctx, s.svcCtx) return l.ZltxRechargeProduct(in) } + +func (s *TransferServer) MarketKeySend(ctx context.Context, in *transfer.MarketKeySendReq) (*transfer.MarketKeySendRes, error) { + l := logic.NewMarketKeySendLogic(ctx, s.svcCtx) + return l.MarketKeySend(in) +} + +func (s *TransferServer) MarketKeyDiscard(ctx context.Context, in *transfer.MarketKeyDiscardReq) (*transfer.MarketKeyDiscardRes, error) { + l := logic.NewMarketKeyDiscardLogic(ctx, s.svcCtx) + return l.MarketKeyDiscard(in) +} + +func (s *TransferServer) MarketQuery(ctx context.Context, in *transfer.MarketQueryReq) (*transfer.MarketQueryRes, error) { + l := logic.NewMarketQueryLogic(ctx, s.svcCtx) + return l.MarketQuery(in) +} diff --git a/cmd/rpc/pb/transfer.proto b/cmd/rpc/pb/transfer.proto index 496bd50..6b39049 100755 --- a/cmd/rpc/pb/transfer.proto +++ b/cmd/rpc/pb/transfer.proto @@ -17,17 +17,7 @@ message DefaultReq { } -service Zltx { - rpc zltxOrderRecharge(ZltxOrderRechargeReq) returns(DefaultRes); - rpc zltxOrderRechargeQuery(ZltxOrderRechargeQueryReq) returns(ZltxOrderRechargeQueryRes); - rpc zltxOrderCard(ZltxOrderCardReq) returns(DefaultRes); - rpc zltxOrderCardQuery(ZltxOrderCardQueryReq) returns(ZltxOrderCardQueryRes); - rpc zltxOrderSms(ZltxOrderSmsReq) returns(ZltxOrderSmsRes); - rpc zltxRechargeInfo(DefaultReq) returns(ZltxRechargeInfoRes); - rpc zltxRechargeProduct(DefaultReq) returns(ZltxRechargeProductRes); -} - -service Market { +service Transfer { rpc zltxOrderRecharge(ZltxOrderRechargeReq) returns(DefaultRes); rpc zltxOrderRechargeQuery(ZltxOrderRechargeQueryReq) returns(ZltxOrderRechargeQueryRes); rpc zltxOrderCard(ZltxOrderCardReq) returns(DefaultRes); @@ -36,8 +26,88 @@ service Market { rpc zltxRechargeInfo(DefaultReq) returns(ZltxRechargeInfoRes); rpc zltxRechargeProduct(DefaultReq) returns(ZltxRechargeProductRes); + rpc marketKeySend(MarketKeySendReq) returns(MarketKeySendRes); + rpc marketKeyDiscard(MarketKeyDiscardReq) returns(MarketKeyDiscardRes); + rpc marketQuery(MarketQueryReq) returns(MarketQueryRes); } + + +message MarketQueryRes { + string errCode=1; + string msg=2; + Data data=3; + message Data{ + string voucherId = 1; + string voucherCode = 2; + string voucherStatus = 5; + } +} + +message MarketQueryReq { + string appId = 1; + uint64 sign = 2; + string reqCode = 3; + string memId = 4; + string reqSerialNo = 5; + string timestamp = 6; + string voucherId = 8; + string voucherCode = 9; +} + + +message MarketKeyDiscardRes { + string errCode=1; + string msg=2; + Data data=3; + message Data{ + string voucherId = 1; + string voucherCode = 2; + string voucherDate = 4; + string voucherStatus = 5; + } +} + +message MarketKeyDiscardReq { + string appId = 1; + uint64 sign = 2; + string reqCode = 3; + string memId = 4; + string reqSerialNo = 5; + string timestamp = 6; + string voucherId = 8; + string voucherCode = 9; +} + + +message MarketKeySendRes { + string errCode=1; + string msg=2; + Data data=3; + message Data{ + string voucherId = 1; + string voucherCode = 2; + string shortUrl = 3; + string voucherSdate = 4; + string voucherEdate = 5; + string codeType = 6; + } +} +message MarketKeySendReq { + string appId = 1; + uint64 sign = 2; + string reqCode = 3; + string memId = 4; + string reqSerialNo = 5; + string timestamp = 6; + string posId = 7; + string voucherId = 8; + int64 voucherNum = 9; + string mobileNo = 10; + string sendMsg = 11; +} + + message ZltxRechargeProductRes { string code=1; repeated Product products=2; diff --git a/cmd/rpc/pb/transfer/transfer.pb.go b/cmd/rpc/pb/transfer/transfer.pb.go index bf2bbed..30ae259 100644 --- a/cmd/rpc/pb/transfer/transfer.pb.go +++ b/cmd/rpc/pb/transfer/transfer.pb.go @@ -138,6 +138,528 @@ func (x *DefaultReq) GetSign() string { return "" } +type MarketQueryRes struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ErrCode string `protobuf:"bytes,1,opt,name=errCode,proto3" json:"errCode,omitempty"` + Msg string `protobuf:"bytes,2,opt,name=msg,proto3" json:"msg,omitempty"` + Data *MarketQueryRes_Data `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"` +} + +func (x *MarketQueryRes) Reset() { + *x = MarketQueryRes{} + if protoimpl.UnsafeEnabled { + mi := &file_transfer_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MarketQueryRes) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MarketQueryRes) ProtoMessage() {} + +func (x *MarketQueryRes) ProtoReflect() protoreflect.Message { + mi := &file_transfer_proto_msgTypes[2] + 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 MarketQueryRes.ProtoReflect.Descriptor instead. +func (*MarketQueryRes) Descriptor() ([]byte, []int) { + return file_transfer_proto_rawDescGZIP(), []int{2} +} + +func (x *MarketQueryRes) GetErrCode() string { + if x != nil { + return x.ErrCode + } + return "" +} + +func (x *MarketQueryRes) GetMsg() string { + if x != nil { + return x.Msg + } + return "" +} + +func (x *MarketQueryRes) GetData() *MarketQueryRes_Data { + if x != nil { + return x.Data + } + return nil +} + +type MarketQueryReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AppId string `protobuf:"bytes,1,opt,name=appId,proto3" json:"appId,omitempty"` + Sign uint64 `protobuf:"varint,2,opt,name=sign,proto3" json:"sign,omitempty"` + ReqCode string `protobuf:"bytes,3,opt,name=reqCode,proto3" json:"reqCode,omitempty"` + MemId string `protobuf:"bytes,4,opt,name=memId,proto3" json:"memId,omitempty"` + ReqSerialNo string `protobuf:"bytes,5,opt,name=reqSerialNo,proto3" json:"reqSerialNo,omitempty"` + Timestamp string `protobuf:"bytes,6,opt,name=timestamp,proto3" json:"timestamp,omitempty"` + VoucherId string `protobuf:"bytes,8,opt,name=voucherId,proto3" json:"voucherId,omitempty"` + VoucherCode string `protobuf:"bytes,9,opt,name=voucherCode,proto3" json:"voucherCode,omitempty"` +} + +func (x *MarketQueryReq) Reset() { + *x = MarketQueryReq{} + if protoimpl.UnsafeEnabled { + mi := &file_transfer_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MarketQueryReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MarketQueryReq) ProtoMessage() {} + +func (x *MarketQueryReq) ProtoReflect() protoreflect.Message { + mi := &file_transfer_proto_msgTypes[3] + 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 MarketQueryReq.ProtoReflect.Descriptor instead. +func (*MarketQueryReq) Descriptor() ([]byte, []int) { + return file_transfer_proto_rawDescGZIP(), []int{3} +} + +func (x *MarketQueryReq) GetAppId() string { + if x != nil { + return x.AppId + } + return "" +} + +func (x *MarketQueryReq) GetSign() uint64 { + if x != nil { + return x.Sign + } + return 0 +} + +func (x *MarketQueryReq) GetReqCode() string { + if x != nil { + return x.ReqCode + } + return "" +} + +func (x *MarketQueryReq) GetMemId() string { + if x != nil { + return x.MemId + } + return "" +} + +func (x *MarketQueryReq) GetReqSerialNo() string { + if x != nil { + return x.ReqSerialNo + } + return "" +} + +func (x *MarketQueryReq) GetTimestamp() string { + if x != nil { + return x.Timestamp + } + return "" +} + +func (x *MarketQueryReq) GetVoucherId() string { + if x != nil { + return x.VoucherId + } + return "" +} + +func (x *MarketQueryReq) GetVoucherCode() string { + if x != nil { + return x.VoucherCode + } + return "" +} + +type MarketKeyDiscardRes struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ErrCode string `protobuf:"bytes,1,opt,name=errCode,proto3" json:"errCode,omitempty"` + Msg string `protobuf:"bytes,2,opt,name=msg,proto3" json:"msg,omitempty"` + Data *MarketKeyDiscardRes_Data `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"` +} + +func (x *MarketKeyDiscardRes) Reset() { + *x = MarketKeyDiscardRes{} + if protoimpl.UnsafeEnabled { + mi := &file_transfer_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MarketKeyDiscardRes) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MarketKeyDiscardRes) ProtoMessage() {} + +func (x *MarketKeyDiscardRes) ProtoReflect() protoreflect.Message { + mi := &file_transfer_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 MarketKeyDiscardRes.ProtoReflect.Descriptor instead. +func (*MarketKeyDiscardRes) Descriptor() ([]byte, []int) { + return file_transfer_proto_rawDescGZIP(), []int{4} +} + +func (x *MarketKeyDiscardRes) GetErrCode() string { + if x != nil { + return x.ErrCode + } + return "" +} + +func (x *MarketKeyDiscardRes) GetMsg() string { + if x != nil { + return x.Msg + } + return "" +} + +func (x *MarketKeyDiscardRes) GetData() *MarketKeyDiscardRes_Data { + if x != nil { + return x.Data + } + return nil +} + +type MarketKeyDiscardReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AppId string `protobuf:"bytes,1,opt,name=appId,proto3" json:"appId,omitempty"` + Sign uint64 `protobuf:"varint,2,opt,name=sign,proto3" json:"sign,omitempty"` + ReqCode string `protobuf:"bytes,3,opt,name=reqCode,proto3" json:"reqCode,omitempty"` + MemId string `protobuf:"bytes,4,opt,name=memId,proto3" json:"memId,omitempty"` + ReqSerialNo string `protobuf:"bytes,5,opt,name=reqSerialNo,proto3" json:"reqSerialNo,omitempty"` + Timestamp string `protobuf:"bytes,6,opt,name=timestamp,proto3" json:"timestamp,omitempty"` + VoucherId string `protobuf:"bytes,8,opt,name=voucherId,proto3" json:"voucherId,omitempty"` + VoucherCode string `protobuf:"bytes,9,opt,name=voucherCode,proto3" json:"voucherCode,omitempty"` +} + +func (x *MarketKeyDiscardReq) Reset() { + *x = MarketKeyDiscardReq{} + if protoimpl.UnsafeEnabled { + mi := &file_transfer_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MarketKeyDiscardReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MarketKeyDiscardReq) ProtoMessage() {} + +func (x *MarketKeyDiscardReq) ProtoReflect() protoreflect.Message { + mi := &file_transfer_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 MarketKeyDiscardReq.ProtoReflect.Descriptor instead. +func (*MarketKeyDiscardReq) Descriptor() ([]byte, []int) { + return file_transfer_proto_rawDescGZIP(), []int{5} +} + +func (x *MarketKeyDiscardReq) GetAppId() string { + if x != nil { + return x.AppId + } + return "" +} + +func (x *MarketKeyDiscardReq) GetSign() uint64 { + if x != nil { + return x.Sign + } + return 0 +} + +func (x *MarketKeyDiscardReq) GetReqCode() string { + if x != nil { + return x.ReqCode + } + return "" +} + +func (x *MarketKeyDiscardReq) GetMemId() string { + if x != nil { + return x.MemId + } + return "" +} + +func (x *MarketKeyDiscardReq) GetReqSerialNo() string { + if x != nil { + return x.ReqSerialNo + } + return "" +} + +func (x *MarketKeyDiscardReq) GetTimestamp() string { + if x != nil { + return x.Timestamp + } + return "" +} + +func (x *MarketKeyDiscardReq) GetVoucherId() string { + if x != nil { + return x.VoucherId + } + return "" +} + +func (x *MarketKeyDiscardReq) GetVoucherCode() string { + if x != nil { + return x.VoucherCode + } + return "" +} + +type MarketKeySendRes struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ErrCode string `protobuf:"bytes,1,opt,name=errCode,proto3" json:"errCode,omitempty"` + Msg string `protobuf:"bytes,2,opt,name=msg,proto3" json:"msg,omitempty"` + Data *MarketKeySendRes_Data `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"` +} + +func (x *MarketKeySendRes) Reset() { + *x = MarketKeySendRes{} + if protoimpl.UnsafeEnabled { + mi := &file_transfer_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MarketKeySendRes) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MarketKeySendRes) ProtoMessage() {} + +func (x *MarketKeySendRes) ProtoReflect() protoreflect.Message { + mi := &file_transfer_proto_msgTypes[6] + 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 MarketKeySendRes.ProtoReflect.Descriptor instead. +func (*MarketKeySendRes) Descriptor() ([]byte, []int) { + return file_transfer_proto_rawDescGZIP(), []int{6} +} + +func (x *MarketKeySendRes) GetErrCode() string { + if x != nil { + return x.ErrCode + } + return "" +} + +func (x *MarketKeySendRes) GetMsg() string { + if x != nil { + return x.Msg + } + return "" +} + +func (x *MarketKeySendRes) GetData() *MarketKeySendRes_Data { + if x != nil { + return x.Data + } + return nil +} + +type MarketKeySendReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AppId string `protobuf:"bytes,1,opt,name=appId,proto3" json:"appId,omitempty"` + Sign uint64 `protobuf:"varint,2,opt,name=sign,proto3" json:"sign,omitempty"` + ReqCode string `protobuf:"bytes,3,opt,name=reqCode,proto3" json:"reqCode,omitempty"` + MemId string `protobuf:"bytes,4,opt,name=memId,proto3" json:"memId,omitempty"` + ReqSerialNo string `protobuf:"bytes,5,opt,name=reqSerialNo,proto3" json:"reqSerialNo,omitempty"` + Timestamp string `protobuf:"bytes,6,opt,name=timestamp,proto3" json:"timestamp,omitempty"` + PosId string `protobuf:"bytes,7,opt,name=posId,proto3" json:"posId,omitempty"` + VoucherId string `protobuf:"bytes,8,opt,name=voucherId,proto3" json:"voucherId,omitempty"` + VoucherNum int64 `protobuf:"varint,9,opt,name=voucherNum,proto3" json:"voucherNum,omitempty"` + MobileNo string `protobuf:"bytes,10,opt,name=mobileNo,proto3" json:"mobileNo,omitempty"` + SendMsg string `protobuf:"bytes,11,opt,name=sendMsg,proto3" json:"sendMsg,omitempty"` +} + +func (x *MarketKeySendReq) Reset() { + *x = MarketKeySendReq{} + if protoimpl.UnsafeEnabled { + mi := &file_transfer_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MarketKeySendReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MarketKeySendReq) ProtoMessage() {} + +func (x *MarketKeySendReq) ProtoReflect() protoreflect.Message { + mi := &file_transfer_proto_msgTypes[7] + 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 MarketKeySendReq.ProtoReflect.Descriptor instead. +func (*MarketKeySendReq) Descriptor() ([]byte, []int) { + return file_transfer_proto_rawDescGZIP(), []int{7} +} + +func (x *MarketKeySendReq) GetAppId() string { + if x != nil { + return x.AppId + } + return "" +} + +func (x *MarketKeySendReq) GetSign() uint64 { + if x != nil { + return x.Sign + } + return 0 +} + +func (x *MarketKeySendReq) GetReqCode() string { + if x != nil { + return x.ReqCode + } + return "" +} + +func (x *MarketKeySendReq) GetMemId() string { + if x != nil { + return x.MemId + } + return "" +} + +func (x *MarketKeySendReq) GetReqSerialNo() string { + if x != nil { + return x.ReqSerialNo + } + return "" +} + +func (x *MarketKeySendReq) GetTimestamp() string { + if x != nil { + return x.Timestamp + } + return "" +} + +func (x *MarketKeySendReq) GetPosId() string { + if x != nil { + return x.PosId + } + return "" +} + +func (x *MarketKeySendReq) GetVoucherId() string { + if x != nil { + return x.VoucherId + } + return "" +} + +func (x *MarketKeySendReq) GetVoucherNum() int64 { + if x != nil { + return x.VoucherNum + } + return 0 +} + +func (x *MarketKeySendReq) GetMobileNo() string { + if x != nil { + return x.MobileNo + } + return "" +} + +func (x *MarketKeySendReq) GetSendMsg() string { + if x != nil { + return x.SendMsg + } + return "" +} + type ZltxRechargeProductRes struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -150,7 +672,7 @@ type ZltxRechargeProductRes struct { func (x *ZltxRechargeProductRes) Reset() { *x = ZltxRechargeProductRes{} if protoimpl.UnsafeEnabled { - mi := &file_transfer_proto_msgTypes[2] + mi := &file_transfer_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -163,7 +685,7 @@ func (x *ZltxRechargeProductRes) String() string { func (*ZltxRechargeProductRes) ProtoMessage() {} func (x *ZltxRechargeProductRes) ProtoReflect() protoreflect.Message { - mi := &file_transfer_proto_msgTypes[2] + mi := &file_transfer_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -176,7 +698,7 @@ func (x *ZltxRechargeProductRes) ProtoReflect() protoreflect.Message { // Deprecated: Use ZltxRechargeProductRes.ProtoReflect.Descriptor instead. func (*ZltxRechargeProductRes) Descriptor() ([]byte, []int) { - return file_transfer_proto_rawDescGZIP(), []int{2} + return file_transfer_proto_rawDescGZIP(), []int{8} } func (x *ZltxRechargeProductRes) GetCode() string { @@ -205,7 +727,7 @@ type ZltxRechargeInfoRes struct { func (x *ZltxRechargeInfoRes) Reset() { *x = ZltxRechargeInfoRes{} if protoimpl.UnsafeEnabled { - mi := &file_transfer_proto_msgTypes[3] + mi := &file_transfer_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -218,7 +740,7 @@ func (x *ZltxRechargeInfoRes) String() string { func (*ZltxRechargeInfoRes) ProtoMessage() {} func (x *ZltxRechargeInfoRes) ProtoReflect() protoreflect.Message { - mi := &file_transfer_proto_msgTypes[3] + mi := &file_transfer_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -231,7 +753,7 @@ func (x *ZltxRechargeInfoRes) ProtoReflect() protoreflect.Message { // Deprecated: Use ZltxRechargeInfoRes.ProtoReflect.Descriptor instead. func (*ZltxRechargeInfoRes) Descriptor() ([]byte, []int) { - return file_transfer_proto_rawDescGZIP(), []int{3} + return file_transfer_proto_rawDescGZIP(), []int{9} } func (x *ZltxRechargeInfoRes) GetCode() string { @@ -262,7 +784,7 @@ type ZltxOrderSmsRes struct { func (x *ZltxOrderSmsRes) Reset() { *x = ZltxOrderSmsRes{} if protoimpl.UnsafeEnabled { - mi := &file_transfer_proto_msgTypes[4] + mi := &file_transfer_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -275,7 +797,7 @@ func (x *ZltxOrderSmsRes) String() string { func (*ZltxOrderSmsRes) ProtoMessage() {} func (x *ZltxOrderSmsRes) ProtoReflect() protoreflect.Message { - mi := &file_transfer_proto_msgTypes[4] + mi := &file_transfer_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -288,7 +810,7 @@ func (x *ZltxOrderSmsRes) ProtoReflect() protoreflect.Message { // Deprecated: Use ZltxOrderSmsRes.ProtoReflect.Descriptor instead. func (*ZltxOrderSmsRes) Descriptor() ([]byte, []int) { - return file_transfer_proto_rawDescGZIP(), []int{4} + return file_transfer_proto_rawDescGZIP(), []int{10} } func (x *ZltxOrderSmsRes) GetCode() string { @@ -333,7 +855,7 @@ type ZltxOrderSmsReq struct { func (x *ZltxOrderSmsReq) Reset() { *x = ZltxOrderSmsReq{} if protoimpl.UnsafeEnabled { - mi := &file_transfer_proto_msgTypes[5] + mi := &file_transfer_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -346,7 +868,7 @@ func (x *ZltxOrderSmsReq) String() string { func (*ZltxOrderSmsReq) ProtoMessage() {} func (x *ZltxOrderSmsReq) ProtoReflect() protoreflect.Message { - mi := &file_transfer_proto_msgTypes[5] + mi := &file_transfer_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -359,7 +881,7 @@ func (x *ZltxOrderSmsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ZltxOrderSmsReq.ProtoReflect.Descriptor instead. func (*ZltxOrderSmsReq) Descriptor() ([]byte, []int) { - return file_transfer_proto_rawDescGZIP(), []int{5} + return file_transfer_proto_rawDescGZIP(), []int{11} } func (x *ZltxOrderSmsReq) GetMerchantId() string { @@ -404,7 +926,7 @@ type ZltxOrderCardQueryRes struct { func (x *ZltxOrderCardQueryRes) Reset() { *x = ZltxOrderCardQueryRes{} if protoimpl.UnsafeEnabled { - mi := &file_transfer_proto_msgTypes[6] + mi := &file_transfer_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -417,7 +939,7 @@ func (x *ZltxOrderCardQueryRes) String() string { func (*ZltxOrderCardQueryRes) ProtoMessage() {} func (x *ZltxOrderCardQueryRes) ProtoReflect() protoreflect.Message { - mi := &file_transfer_proto_msgTypes[6] + mi := &file_transfer_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -430,7 +952,7 @@ func (x *ZltxOrderCardQueryRes) ProtoReflect() protoreflect.Message { // Deprecated: Use ZltxOrderCardQueryRes.ProtoReflect.Descriptor instead. func (*ZltxOrderCardQueryRes) Descriptor() ([]byte, []int) { - return file_transfer_proto_rawDescGZIP(), []int{6} + return file_transfer_proto_rawDescGZIP(), []int{12} } func (x *ZltxOrderCardQueryRes) GetCode() string { @@ -475,7 +997,7 @@ type ZltxOrderCardQueryReq struct { func (x *ZltxOrderCardQueryReq) Reset() { *x = ZltxOrderCardQueryReq{} if protoimpl.UnsafeEnabled { - mi := &file_transfer_proto_msgTypes[7] + mi := &file_transfer_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -488,7 +1010,7 @@ func (x *ZltxOrderCardQueryReq) String() string { func (*ZltxOrderCardQueryReq) ProtoMessage() {} func (x *ZltxOrderCardQueryReq) ProtoReflect() protoreflect.Message { - mi := &file_transfer_proto_msgTypes[7] + mi := &file_transfer_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -501,7 +1023,7 @@ func (x *ZltxOrderCardQueryReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ZltxOrderCardQueryReq.ProtoReflect.Descriptor instead. func (*ZltxOrderCardQueryReq) Descriptor() ([]byte, []int) { - return file_transfer_proto_rawDescGZIP(), []int{7} + return file_transfer_proto_rawDescGZIP(), []int{13} } func (x *ZltxOrderCardQueryReq) GetMerchantId() string { @@ -552,7 +1074,7 @@ type ZltxOrderCardReq struct { func (x *ZltxOrderCardReq) Reset() { *x = ZltxOrderCardReq{} if protoimpl.UnsafeEnabled { - mi := &file_transfer_proto_msgTypes[8] + mi := &file_transfer_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -565,7 +1087,7 @@ func (x *ZltxOrderCardReq) String() string { func (*ZltxOrderCardReq) ProtoMessage() {} func (x *ZltxOrderCardReq) ProtoReflect() protoreflect.Message { - mi := &file_transfer_proto_msgTypes[8] + mi := &file_transfer_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -578,7 +1100,7 @@ func (x *ZltxOrderCardReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ZltxOrderCardReq.ProtoReflect.Descriptor instead. func (*ZltxOrderCardReq) Descriptor() ([]byte, []int) { - return file_transfer_proto_rawDescGZIP(), []int{8} + return file_transfer_proto_rawDescGZIP(), []int{14} } func (x *ZltxOrderCardReq) GetMerchantId() string { @@ -665,7 +1187,7 @@ type ZltxOrderRechargeQueryRes struct { func (x *ZltxOrderRechargeQueryRes) Reset() { *x = ZltxOrderRechargeQueryRes{} if protoimpl.UnsafeEnabled { - mi := &file_transfer_proto_msgTypes[9] + mi := &file_transfer_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -678,7 +1200,7 @@ func (x *ZltxOrderRechargeQueryRes) String() string { func (*ZltxOrderRechargeQueryRes) ProtoMessage() {} func (x *ZltxOrderRechargeQueryRes) ProtoReflect() protoreflect.Message { - mi := &file_transfer_proto_msgTypes[9] + mi := &file_transfer_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -691,7 +1213,7 @@ func (x *ZltxOrderRechargeQueryRes) ProtoReflect() protoreflect.Message { // Deprecated: Use ZltxOrderRechargeQueryRes.ProtoReflect.Descriptor instead. func (*ZltxOrderRechargeQueryRes) Descriptor() ([]byte, []int) { - return file_transfer_proto_rawDescGZIP(), []int{9} + return file_transfer_proto_rawDescGZIP(), []int{15} } func (x *ZltxOrderRechargeQueryRes) GetCode() string { @@ -736,7 +1258,7 @@ type ZltxOrderRechargeQueryReq struct { func (x *ZltxOrderRechargeQueryReq) Reset() { *x = ZltxOrderRechargeQueryReq{} if protoimpl.UnsafeEnabled { - mi := &file_transfer_proto_msgTypes[10] + mi := &file_transfer_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -749,7 +1271,7 @@ func (x *ZltxOrderRechargeQueryReq) String() string { func (*ZltxOrderRechargeQueryReq) ProtoMessage() {} func (x *ZltxOrderRechargeQueryReq) ProtoReflect() protoreflect.Message { - mi := &file_transfer_proto_msgTypes[10] + mi := &file_transfer_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -762,7 +1284,7 @@ func (x *ZltxOrderRechargeQueryReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ZltxOrderRechargeQueryReq.ProtoReflect.Descriptor instead. func (*ZltxOrderRechargeQueryReq) Descriptor() ([]byte, []int) { - return file_transfer_proto_rawDescGZIP(), []int{10} + return file_transfer_proto_rawDescGZIP(), []int{16} } func (x *ZltxOrderRechargeQueryReq) GetMerchantId() string { @@ -813,7 +1335,7 @@ type ZltxOrderRechargeReq struct { func (x *ZltxOrderRechargeReq) Reset() { *x = ZltxOrderRechargeReq{} if protoimpl.UnsafeEnabled { - mi := &file_transfer_proto_msgTypes[11] + mi := &file_transfer_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -826,7 +1348,7 @@ func (x *ZltxOrderRechargeReq) String() string { func (*ZltxOrderRechargeReq) ProtoMessage() {} func (x *ZltxOrderRechargeReq) ProtoReflect() protoreflect.Message { - mi := &file_transfer_proto_msgTypes[11] + mi := &file_transfer_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -839,7 +1361,7 @@ func (x *ZltxOrderRechargeReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ZltxOrderRechargeReq.ProtoReflect.Descriptor instead. func (*ZltxOrderRechargeReq) Descriptor() ([]byte, []int) { - return file_transfer_proto_rawDescGZIP(), []int{11} + return file_transfer_proto_rawDescGZIP(), []int{17} } func (x *ZltxOrderRechargeReq) GetMerchantId() string { @@ -923,7 +1445,7 @@ type GetResellerByAppIdReq struct { func (x *GetResellerByAppIdReq) Reset() { *x = GetResellerByAppIdReq{} if protoimpl.UnsafeEnabled { - mi := &file_transfer_proto_msgTypes[12] + mi := &file_transfer_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -936,7 +1458,7 @@ func (x *GetResellerByAppIdReq) String() string { func (*GetResellerByAppIdReq) ProtoMessage() {} func (x *GetResellerByAppIdReq) ProtoReflect() protoreflect.Message { - mi := &file_transfer_proto_msgTypes[12] + mi := &file_transfer_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -949,7 +1471,7 @@ func (x *GetResellerByAppIdReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetResellerByAppIdReq.ProtoReflect.Descriptor instead. func (*GetResellerByAppIdReq) Descriptor() ([]byte, []int) { - return file_transfer_proto_rawDescGZIP(), []int{12} + return file_transfer_proto_rawDescGZIP(), []int{18} } func (x *GetResellerByAppIdReq) GetAppId() string { @@ -984,7 +1506,7 @@ type GetResellerByAppIdRes struct { func (x *GetResellerByAppIdRes) Reset() { *x = GetResellerByAppIdRes{} if protoimpl.UnsafeEnabled { - mi := &file_transfer_proto_msgTypes[13] + mi := &file_transfer_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -997,7 +1519,7 @@ func (x *GetResellerByAppIdRes) String() string { func (*GetResellerByAppIdRes) ProtoMessage() {} func (x *GetResellerByAppIdRes) ProtoReflect() protoreflect.Message { - mi := &file_transfer_proto_msgTypes[13] + mi := &file_transfer_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1010,7 +1532,7 @@ func (x *GetResellerByAppIdRes) ProtoReflect() protoreflect.Message { // Deprecated: Use GetResellerByAppIdRes.ProtoReflect.Descriptor instead. func (*GetResellerByAppIdRes) Descriptor() ([]byte, []int) { - return file_transfer_proto_rawDescGZIP(), []int{13} + return file_transfer_proto_rawDescGZIP(), []int{19} } func (x *GetResellerByAppIdRes) GetId() int64 { @@ -1118,6 +1640,227 @@ func (x *GetResellerByAppIdRes) GetCreateTime() string { return "" } +type MarketQueryRes_Data struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + VoucherId string `protobuf:"bytes,1,opt,name=voucherId,proto3" json:"voucherId,omitempty"` + VoucherCode string `protobuf:"bytes,2,opt,name=voucherCode,proto3" json:"voucherCode,omitempty"` + VoucherStatus string `protobuf:"bytes,5,opt,name=voucherStatus,proto3" json:"voucherStatus,omitempty"` +} + +func (x *MarketQueryRes_Data) Reset() { + *x = MarketQueryRes_Data{} + if protoimpl.UnsafeEnabled { + mi := &file_transfer_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MarketQueryRes_Data) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MarketQueryRes_Data) ProtoMessage() {} + +func (x *MarketQueryRes_Data) ProtoReflect() protoreflect.Message { + mi := &file_transfer_proto_msgTypes[20] + 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 MarketQueryRes_Data.ProtoReflect.Descriptor instead. +func (*MarketQueryRes_Data) Descriptor() ([]byte, []int) { + return file_transfer_proto_rawDescGZIP(), []int{2, 0} +} + +func (x *MarketQueryRes_Data) GetVoucherId() string { + if x != nil { + return x.VoucherId + } + return "" +} + +func (x *MarketQueryRes_Data) GetVoucherCode() string { + if x != nil { + return x.VoucherCode + } + return "" +} + +func (x *MarketQueryRes_Data) GetVoucherStatus() string { + if x != nil { + return x.VoucherStatus + } + return "" +} + +type MarketKeyDiscardRes_Data struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + VoucherId string `protobuf:"bytes,1,opt,name=voucherId,proto3" json:"voucherId,omitempty"` + VoucherCode string `protobuf:"bytes,2,opt,name=voucherCode,proto3" json:"voucherCode,omitempty"` + VoucherDate string `protobuf:"bytes,4,opt,name=voucherDate,proto3" json:"voucherDate,omitempty"` + VoucherStatus string `protobuf:"bytes,5,opt,name=voucherStatus,proto3" json:"voucherStatus,omitempty"` +} + +func (x *MarketKeyDiscardRes_Data) Reset() { + *x = MarketKeyDiscardRes_Data{} + if protoimpl.UnsafeEnabled { + mi := &file_transfer_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MarketKeyDiscardRes_Data) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MarketKeyDiscardRes_Data) ProtoMessage() {} + +func (x *MarketKeyDiscardRes_Data) ProtoReflect() protoreflect.Message { + mi := &file_transfer_proto_msgTypes[21] + 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 MarketKeyDiscardRes_Data.ProtoReflect.Descriptor instead. +func (*MarketKeyDiscardRes_Data) Descriptor() ([]byte, []int) { + return file_transfer_proto_rawDescGZIP(), []int{4, 0} +} + +func (x *MarketKeyDiscardRes_Data) GetVoucherId() string { + if x != nil { + return x.VoucherId + } + return "" +} + +func (x *MarketKeyDiscardRes_Data) GetVoucherCode() string { + if x != nil { + return x.VoucherCode + } + return "" +} + +func (x *MarketKeyDiscardRes_Data) GetVoucherDate() string { + if x != nil { + return x.VoucherDate + } + return "" +} + +func (x *MarketKeyDiscardRes_Data) GetVoucherStatus() string { + if x != nil { + return x.VoucherStatus + } + return "" +} + +type MarketKeySendRes_Data struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + VoucherId string `protobuf:"bytes,1,opt,name=voucherId,proto3" json:"voucherId,omitempty"` + VoucherCode string `protobuf:"bytes,2,opt,name=voucherCode,proto3" json:"voucherCode,omitempty"` + ShortUrl string `protobuf:"bytes,3,opt,name=shortUrl,proto3" json:"shortUrl,omitempty"` + VoucherSdate string `protobuf:"bytes,4,opt,name=voucherSdate,proto3" json:"voucherSdate,omitempty"` + VoucherEdate string `protobuf:"bytes,5,opt,name=voucherEdate,proto3" json:"voucherEdate,omitempty"` + CodeType string `protobuf:"bytes,6,opt,name=codeType,proto3" json:"codeType,omitempty"` +} + +func (x *MarketKeySendRes_Data) Reset() { + *x = MarketKeySendRes_Data{} + if protoimpl.UnsafeEnabled { + mi := &file_transfer_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MarketKeySendRes_Data) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MarketKeySendRes_Data) ProtoMessage() {} + +func (x *MarketKeySendRes_Data) ProtoReflect() protoreflect.Message { + mi := &file_transfer_proto_msgTypes[22] + 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 MarketKeySendRes_Data.ProtoReflect.Descriptor instead. +func (*MarketKeySendRes_Data) Descriptor() ([]byte, []int) { + return file_transfer_proto_rawDescGZIP(), []int{6, 0} +} + +func (x *MarketKeySendRes_Data) GetVoucherId() string { + if x != nil { + return x.VoucherId + } + return "" +} + +func (x *MarketKeySendRes_Data) GetVoucherCode() string { + if x != nil { + return x.VoucherCode + } + return "" +} + +func (x *MarketKeySendRes_Data) GetShortUrl() string { + if x != nil { + return x.ShortUrl + } + return "" +} + +func (x *MarketKeySendRes_Data) GetVoucherSdate() string { + if x != nil { + return x.VoucherSdate + } + return "" +} + +func (x *MarketKeySendRes_Data) GetVoucherEdate() string { + if x != nil { + return x.VoucherEdate + } + return "" +} + +func (x *MarketKeySendRes_Data) GetCodeType() string { + if x != nil { + return x.CodeType + } + return "" +} + type ZltxRechargeProductRes_Product struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1132,7 +1875,7 @@ type ZltxRechargeProductRes_Product struct { func (x *ZltxRechargeProductRes_Product) Reset() { *x = ZltxRechargeProductRes_Product{} if protoimpl.UnsafeEnabled { - mi := &file_transfer_proto_msgTypes[14] + mi := &file_transfer_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1145,7 +1888,7 @@ func (x *ZltxRechargeProductRes_Product) String() string { func (*ZltxRechargeProductRes_Product) ProtoMessage() {} func (x *ZltxRechargeProductRes_Product) ProtoReflect() protoreflect.Message { - mi := &file_transfer_proto_msgTypes[14] + mi := &file_transfer_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1158,7 +1901,7 @@ func (x *ZltxRechargeProductRes_Product) ProtoReflect() protoreflect.Message { // Deprecated: Use ZltxRechargeProductRes_Product.ProtoReflect.Descriptor instead. func (*ZltxRechargeProductRes_Product) Descriptor() ([]byte, []int) { - return file_transfer_proto_rawDescGZIP(), []int{2, 0} + return file_transfer_proto_rawDescGZIP(), []int{8, 0} } func (x *ZltxRechargeProductRes_Product) GetProductId() int64 { @@ -1203,192 +1946,300 @@ var file_transfer_proto_rawDesc = []byte{ 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x67, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x73, 0x69, 0x67, 0x6e, 0x22, 0x82, 0x02, 0x0a, 0x16, 0x5a, 0x6c, 0x74, 0x78, 0x52, - 0x65, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x65, - 0x73, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x44, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, - 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, - 0x65, 0x72, 0x2e, 0x5a, 0x6c, 0x74, 0x78, 0x52, 0x65, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x50, - 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x65, 0x73, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, - 0x74, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x1a, 0x8d, 0x01, 0x0a, 0x07, - 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, - 0x63, 0x74, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, - 0x75, 0x63, 0x74, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, - 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x68, 0x61, - 0x6e, 0x6e, 0x65, 0x6c, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x74, 0x65, - 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x74, 0x65, - 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, - 0x6c, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x72, - 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x69, 0x63, 0x65, 0x22, 0x43, 0x0a, 0x13, 0x5a, - 0x6c, 0x74, 0x78, 0x52, 0x65, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, - 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, - 0x22, 0x77, 0x0a, 0x0f, 0x5a, 0x6c, 0x74, 0x78, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x6d, 0x73, - 0x52, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x6f, 0x75, 0x74, - 0x54, 0x72, 0x61, 0x64, 0x65, 0x4e, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, - 0x75, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x4e, 0x6f, 0x22, 0x83, 0x01, 0x0a, 0x0f, 0x5a, 0x6c, - 0x74, 0x78, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x12, 0x1e, 0x0a, - 0x0a, 0x6d, 0x65, 0x72, 0x63, 0x68, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0a, 0x6d, 0x65, 0x72, 0x63, 0x68, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1c, 0x0a, - 0x09, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x73, - 0x69, 0x67, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x69, 0x67, 0x6e, 0x12, - 0x1e, 0x0a, 0x0a, 0x6f, 0x75, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x4e, 0x6f, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x75, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x4e, 0x6f, 0x22, - 0x7d, 0x0a, 0x15, 0x5a, 0x6c, 0x74, 0x78, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x43, 0x61, 0x72, 0x64, - 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, - 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1e, - 0x0a, 0x0a, 0x6f, 0x75, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x4e, 0x6f, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x75, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x4e, 0x6f, 0x22, 0x89, - 0x01, 0x0a, 0x15, 0x5a, 0x6c, 0x74, 0x78, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x43, 0x61, 0x72, 0x64, - 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x65, 0x72, 0x63, - 0x68, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x65, - 0x72, 0x63, 0x68, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, - 0x53, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x74, 0x69, 0x6d, - 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x67, 0x6e, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x69, 0x67, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x6f, 0x75, - 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x4e, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, - 0x6f, 0x75, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x4e, 0x6f, 0x22, 0xbc, 0x02, 0x0a, 0x10, 0x5a, - 0x6c, 0x74, 0x78, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x43, 0x61, 0x72, 0x64, 0x52, 0x65, 0x71, 0x12, - 0x1e, 0x0a, 0x0a, 0x6d, 0x65, 0x72, 0x63, 0x68, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x65, 0x72, 0x63, 0x68, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x12, - 0x12, 0x0a, 0x04, 0x73, 0x69, 0x67, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, - 0x69, 0x67, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, - 0x70, 0x12, 0x1e, 0x0a, 0x0a, 0x6f, 0x75, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x4e, 0x6f, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x75, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x4e, - 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x64, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x64, 0x12, - 0x16, 0x0a, 0x06, 0x6d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x6d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x75, 0x6d, - 0x62, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, - 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x55, 0x72, 0x6c, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x55, 0x72, 0x6c, 0x12, - 0x28, 0x0a, 0x0f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, - 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, - 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x22, 0x81, 0x01, 0x0a, 0x19, 0x5a, 0x6c, - 0x74, 0x78, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x51, - 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, + 0x52, 0x04, 0x73, 0x69, 0x67, 0x6e, 0x22, 0xdd, 0x01, 0x0a, 0x0e, 0x4d, 0x61, 0x72, 0x6b, 0x65, + 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x72, 0x72, + 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x65, 0x72, 0x72, 0x43, + 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, 0x31, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x2e, 0x4d, + 0x61, 0x72, 0x6b, 0x65, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x2e, 0x44, 0x61, + 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x6c, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, + 0x12, 0x1c, 0x0a, 0x09, 0x76, 0x6f, 0x75, 0x63, 0x68, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x76, 0x6f, 0x75, 0x63, 0x68, 0x65, 0x72, 0x49, 0x64, 0x12, 0x20, + 0x0a, 0x0b, 0x76, 0x6f, 0x75, 0x63, 0x68, 0x65, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0b, 0x76, 0x6f, 0x75, 0x63, 0x68, 0x65, 0x72, 0x43, 0x6f, 0x64, 0x65, + 0x12, 0x24, 0x0a, 0x0d, 0x76, 0x6f, 0x75, 0x63, 0x68, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x76, 0x6f, 0x75, 0x63, 0x68, 0x65, 0x72, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xea, 0x01, 0x0a, 0x0e, 0x4d, 0x61, 0x72, 0x6b, 0x65, + 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x70, 0x70, + 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, + 0x12, 0x0a, 0x04, 0x73, 0x69, 0x67, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, + 0x69, 0x67, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x71, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x14, 0x0a, + 0x05, 0x6d, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6d, 0x65, + 0x6d, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x72, 0x65, 0x71, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, + 0x4e, 0x6f, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x71, 0x53, 0x65, 0x72, + 0x69, 0x61, 0x6c, 0x4e, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x12, 0x1c, 0x0a, 0x09, 0x76, 0x6f, 0x75, 0x63, 0x68, 0x65, 0x72, 0x49, 0x64, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x76, 0x6f, 0x75, 0x63, 0x68, 0x65, 0x72, 0x49, + 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x76, 0x6f, 0x75, 0x63, 0x68, 0x65, 0x72, 0x43, 0x6f, 0x64, 0x65, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x76, 0x6f, 0x75, 0x63, 0x68, 0x65, 0x72, 0x43, + 0x6f, 0x64, 0x65, 0x22, 0x8a, 0x02, 0x0a, 0x13, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x4b, 0x65, + 0x79, 0x44, 0x69, 0x73, 0x63, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x65, + 0x72, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x65, 0x72, + 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, 0x36, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, + 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x44, 0x69, 0x73, 0x63, 0x61, 0x72, + 0x64, 0x52, 0x65, 0x73, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x1a, + 0x8e, 0x01, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1c, 0x0a, 0x09, 0x76, 0x6f, 0x75, 0x63, + 0x68, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x76, 0x6f, 0x75, + 0x63, 0x68, 0x65, 0x72, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x76, 0x6f, 0x75, 0x63, 0x68, 0x65, + 0x72, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x76, 0x6f, 0x75, + 0x63, 0x68, 0x65, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x76, 0x6f, 0x75, 0x63, + 0x68, 0x65, 0x72, 0x44, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x76, + 0x6f, 0x75, 0x63, 0x68, 0x65, 0x72, 0x44, 0x61, 0x74, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x76, 0x6f, + 0x75, 0x63, 0x68, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0d, 0x76, 0x6f, 0x75, 0x63, 0x68, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x22, 0xef, 0x01, 0x0a, 0x13, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x44, 0x69, + 0x73, 0x63, 0x61, 0x72, 0x64, 0x52, 0x65, 0x71, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x70, 0x70, 0x49, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x12, + 0x0a, 0x04, 0x73, 0x69, 0x67, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x69, + 0x67, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x71, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x05, + 0x6d, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6d, 0x65, 0x6d, + 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x72, 0x65, 0x71, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x4e, + 0x6f, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x71, 0x53, 0x65, 0x72, 0x69, + 0x61, 0x6c, 0x4e, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x12, 0x1c, 0x0a, 0x09, 0x76, 0x6f, 0x75, 0x63, 0x68, 0x65, 0x72, 0x49, 0x64, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x76, 0x6f, 0x75, 0x63, 0x68, 0x65, 0x72, 0x49, 0x64, + 0x12, 0x20, 0x0a, 0x0b, 0x76, 0x6f, 0x75, 0x63, 0x68, 0x65, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x76, 0x6f, 0x75, 0x63, 0x68, 0x65, 0x72, 0x43, 0x6f, + 0x64, 0x65, 0x22, 0xbc, 0x02, 0x0a, 0x10, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x4b, 0x65, 0x79, + 0x53, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x43, 0x6f, + 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x65, 0x72, 0x72, 0x43, 0x6f, 0x64, + 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x6d, 0x73, 0x67, 0x12, 0x33, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x2e, 0x4d, 0x61, 0x72, + 0x6b, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x2e, 0x44, 0x61, + 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x1a, 0xc6, 0x01, 0x0a, 0x04, 0x44, 0x61, 0x74, + 0x61, 0x12, 0x1c, 0x0a, 0x09, 0x76, 0x6f, 0x75, 0x63, 0x68, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x76, 0x6f, 0x75, 0x63, 0x68, 0x65, 0x72, 0x49, 0x64, 0x12, + 0x20, 0x0a, 0x0b, 0x76, 0x6f, 0x75, 0x63, 0x68, 0x65, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x76, 0x6f, 0x75, 0x63, 0x68, 0x65, 0x72, 0x43, 0x6f, 0x64, + 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x55, 0x72, 0x6c, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x55, 0x72, 0x6c, 0x12, 0x22, 0x0a, + 0x0c, 0x76, 0x6f, 0x75, 0x63, 0x68, 0x65, 0x72, 0x53, 0x64, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0c, 0x76, 0x6f, 0x75, 0x63, 0x68, 0x65, 0x72, 0x53, 0x64, 0x61, 0x74, + 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x76, 0x6f, 0x75, 0x63, 0x68, 0x65, 0x72, 0x45, 0x64, 0x61, 0x74, + 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x76, 0x6f, 0x75, 0x63, 0x68, 0x65, 0x72, + 0x45, 0x64, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x64, 0x65, 0x54, 0x79, 0x70, + 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x64, 0x65, 0x54, 0x79, 0x70, + 0x65, 0x22, 0xb6, 0x02, 0x0a, 0x10, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x53, + 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, + 0x73, 0x69, 0x67, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x69, 0x67, 0x6e, + 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x72, 0x65, 0x71, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x65, + 0x6d, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6d, 0x65, 0x6d, 0x49, 0x64, + 0x12, 0x20, 0x0a, 0x0b, 0x72, 0x65, 0x71, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x4e, 0x6f, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x71, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, + 0x4e, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x12, 0x14, 0x0a, 0x05, 0x70, 0x6f, 0x73, 0x49, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x70, 0x6f, 0x73, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x76, 0x6f, 0x75, 0x63, 0x68, 0x65, + 0x72, 0x49, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x76, 0x6f, 0x75, 0x63, 0x68, + 0x65, 0x72, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x76, 0x6f, 0x75, 0x63, 0x68, 0x65, 0x72, 0x4e, + 0x75, 0x6d, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x76, 0x6f, 0x75, 0x63, 0x68, 0x65, + 0x72, 0x4e, 0x75, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x4e, 0x6f, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x4e, 0x6f, + 0x12, 0x18, 0x0a, 0x07, 0x73, 0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67, 0x18, 0x0b, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x73, 0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67, 0x22, 0x82, 0x02, 0x0a, 0x16, 0x5a, + 0x6c, 0x74, 0x78, 0x52, 0x65, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, + 0x63, 0x74, 0x52, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x44, 0x0a, 0x08, 0x70, 0x72, 0x6f, + 0x64, 0x75, 0x63, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x74, 0x72, + 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x2e, 0x5a, 0x6c, 0x74, 0x78, 0x52, 0x65, 0x63, 0x68, 0x61, + 0x72, 0x67, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x65, 0x73, 0x2e, 0x50, 0x72, + 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x1a, + 0x8d, 0x01, 0x0a, 0x07, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x70, + 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, + 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x68, 0x61, + 0x6e, 0x6e, 0x65, 0x6c, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0c, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x1a, 0x0a, + 0x08, 0x69, 0x74, 0x65, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x69, 0x74, 0x65, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x6f, 0x72, 0x69, + 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0d, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x69, 0x63, 0x65, 0x22, + 0x43, 0x0a, 0x13, 0x5a, 0x6c, 0x74, 0x78, 0x52, 0x65, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x61, + 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x61, 0x6c, + 0x61, 0x6e, 0x63, 0x65, 0x22, 0x77, 0x0a, 0x0f, 0x5a, 0x6c, 0x74, 0x78, 0x4f, 0x72, 0x64, 0x65, + 0x72, 0x53, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x6f, 0x75, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x4e, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0a, 0x6f, 0x75, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x4e, 0x6f, 0x22, 0x8d, 0x01, + 0x09, 0x52, 0x0a, 0x6f, 0x75, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x4e, 0x6f, 0x22, 0x83, 0x01, + 0x0a, 0x0f, 0x5a, 0x6c, 0x74, 0x78, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x6d, 0x73, 0x52, 0x65, + 0x71, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x65, 0x72, 0x63, 0x68, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x65, 0x72, 0x63, 0x68, 0x61, 0x6e, 0x74, 0x49, + 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x12, + 0x12, 0x0a, 0x04, 0x73, 0x69, 0x67, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, + 0x69, 0x67, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x6f, 0x75, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x4e, + 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x75, 0x74, 0x54, 0x72, 0x61, 0x64, + 0x65, 0x4e, 0x6f, 0x22, 0x7d, 0x0a, 0x15, 0x5a, 0x6c, 0x74, 0x78, 0x4f, 0x72, 0x64, 0x65, 0x72, + 0x43, 0x61, 0x72, 0x64, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, + 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, + 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x6f, 0x75, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x4e, 0x6f, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x75, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, + 0x4e, 0x6f, 0x22, 0x89, 0x01, 0x0a, 0x15, 0x5a, 0x6c, 0x74, 0x78, 0x4f, 0x72, 0x64, 0x65, 0x72, + 0x43, 0x61, 0x72, 0x64, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x12, 0x1e, 0x0a, 0x0a, + 0x6d, 0x65, 0x72, 0x63, 0x68, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x6d, 0x65, 0x72, 0x63, 0x68, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, + 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x09, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, + 0x67, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x69, 0x67, 0x6e, 0x12, 0x1e, + 0x0a, 0x0a, 0x6f, 0x75, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x4e, 0x6f, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x75, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x4e, 0x6f, 0x22, 0xbc, + 0x02, 0x0a, 0x10, 0x5a, 0x6c, 0x74, 0x78, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x43, 0x61, 0x72, 0x64, + 0x52, 0x65, 0x71, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x65, 0x72, 0x63, 0x68, 0x61, 0x6e, 0x74, 0x49, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x65, 0x72, 0x63, 0x68, 0x61, 0x6e, + 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x67, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x73, 0x69, 0x67, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x53, + 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, + 0x53, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1e, 0x0a, 0x0a, 0x6f, 0x75, 0x74, 0x54, 0x72, 0x61, 0x64, + 0x65, 0x4e, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x75, 0x74, 0x54, 0x72, + 0x61, 0x64, 0x65, 0x4e, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, + 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, + 0x74, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x0b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, + 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x55, + 0x72, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x79, + 0x55, 0x72, 0x6c, 0x12, 0x28, 0x0a, 0x0f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x65, 0x78, + 0x74, 0x65, 0x6e, 0x64, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x22, 0x81, 0x01, 0x0a, 0x19, 0x5a, 0x6c, 0x74, 0x78, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, 0x68, 0x61, - 0x72, 0x67, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, - 0x65, 0x72, 0x63, 0x68, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x6d, 0x65, 0x72, 0x63, 0x68, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x74, - 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, - 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x67, - 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x69, 0x67, 0x6e, 0x12, 0x1e, 0x0a, - 0x0a, 0x6f, 0x75, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x4e, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0a, 0x6f, 0x75, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x4e, 0x6f, 0x22, 0xc0, 0x02, - 0x0a, 0x14, 0x5a, 0x6c, 0x74, 0x78, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, 0x68, 0x61, - 0x72, 0x67, 0x65, 0x52, 0x65, 0x71, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x65, 0x72, 0x63, 0x68, 0x61, - 0x6e, 0x74, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x65, 0x72, 0x63, - 0x68, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x67, 0x6e, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x69, 0x67, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, - 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x74, - 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1e, 0x0a, 0x0a, 0x6f, 0x75, 0x74, 0x54, - 0x72, 0x61, 0x64, 0x65, 0x4e, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x75, - 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x4e, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, - 0x75, 0x63, 0x74, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x70, 0x72, 0x6f, - 0x64, 0x75, 0x63, 0x74, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x6f, 0x62, 0x69, 0x6c, 0x65, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x12, 0x20, - 0x0a, 0x0b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x6f, 0x74, 0x69, - 0x66, 0x79, 0x55, 0x72, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x6f, 0x74, - 0x69, 0x66, 0x79, 0x55, 0x72, 0x6c, 0x12, 0x28, 0x0a, 0x0f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, - 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, - 0x22, 0x2d, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x65, 0x6c, 0x6c, 0x65, 0x72, 0x42, - 0x79, 0x41, 0x70, 0x70, 0x49, 0x64, 0x52, 0x65, 0x71, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x70, 0x70, - 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x22, - 0xcd, 0x03, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x65, 0x6c, 0x6c, 0x65, 0x72, 0x42, - 0x79, 0x41, 0x70, 0x70, 0x49, 0x64, 0x52, 0x65, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x65, 0x72, - 0x63, 0x68, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, - 0x65, 0x72, 0x63, 0x68, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x72, 0x65, 0x73, - 0x65, 0x6c, 0x6c, 0x65, 0x72, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, - 0x65, 0x73, 0x65, 0x6c, 0x6c, 0x65, 0x72, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x70, 0x70, - 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, - 0x14, 0x0a, 0x05, 0x70, 0x6f, 0x73, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x70, 0x6f, 0x73, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x49, 0x64, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x49, 0x64, 0x12, - 0x16, 0x0a, 0x06, 0x61, 0x70, 0x69, 0x4d, 0x6f, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x06, 0x61, 0x70, 0x69, 0x4d, 0x6f, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, - 0x63, 0x4b, 0x65, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, - 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, - 0x4b, 0x65, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x69, 0x76, 0x61, - 0x74, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x11, 0x6d, 0x65, 0x72, 0x63, 0x68, 0x61, 0x6e, - 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x11, 0x6d, 0x65, 0x72, 0x63, 0x68, 0x61, 0x6e, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, - 0x4b, 0x65, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x4b, 0x65, 0x79, - 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x4b, 0x65, - 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x55, 0x72, 0x6c, 0x18, 0x0c, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x55, 0x72, 0x6c, 0x12, - 0x26, 0x0a, 0x0e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x45, 0x76, 0x65, 0x6e, - 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, - 0x62, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, - 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0f, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x32, - 0x8a, 0x05, 0x0a, 0x08, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x12, 0x56, 0x0a, 0x12, - 0x67, 0x65, 0x74, 0x52, 0x65, 0x73, 0x65, 0x6c, 0x6c, 0x65, 0x72, 0x42, 0x79, 0x41, 0x70, 0x70, - 0x49, 0x64, 0x12, 0x1f, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x2e, 0x47, 0x65, - 0x74, 0x52, 0x65, 0x73, 0x65, 0x6c, 0x6c, 0x65, 0x72, 0x42, 0x79, 0x41, 0x70, 0x70, 0x49, 0x64, - 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x2e, 0x47, - 0x65, 0x74, 0x52, 0x65, 0x73, 0x65, 0x6c, 0x6c, 0x65, 0x72, 0x42, 0x79, 0x41, 0x70, 0x70, 0x49, - 0x64, 0x52, 0x65, 0x73, 0x12, 0x49, 0x0a, 0x11, 0x7a, 0x6c, 0x74, 0x78, 0x4f, 0x72, 0x64, 0x65, - 0x72, 0x52, 0x65, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x12, 0x1e, 0x2e, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x66, 0x65, 0x72, 0x2e, 0x5a, 0x6c, 0x74, 0x78, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, - 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x14, 0x2e, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x66, 0x65, 0x72, 0x2e, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x73, 0x12, - 0x62, 0x0a, 0x16, 0x7a, 0x6c, 0x74, 0x78, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, 0x68, - 0x61, 0x72, 0x67, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x23, 0x2e, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x66, 0x65, 0x72, 0x2e, 0x5a, 0x6c, 0x74, 0x78, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, - 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x1a, 0x23, - 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x2e, 0x5a, 0x6c, 0x74, 0x78, 0x4f, 0x72, - 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, - 0x52, 0x65, 0x73, 0x12, 0x41, 0x0a, 0x0d, 0x7a, 0x6c, 0x74, 0x78, 0x4f, 0x72, 0x64, 0x65, 0x72, - 0x43, 0x61, 0x72, 0x64, 0x12, 0x1a, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x2e, - 0x5a, 0x6c, 0x74, 0x78, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x43, 0x61, 0x72, 0x64, 0x52, 0x65, 0x71, - 0x1a, 0x14, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x2e, 0x44, 0x65, 0x66, 0x61, - 0x75, 0x6c, 0x74, 0x52, 0x65, 0x73, 0x12, 0x56, 0x0a, 0x12, 0x7a, 0x6c, 0x74, 0x78, 0x4f, 0x72, - 0x64, 0x65, 0x72, 0x43, 0x61, 0x72, 0x64, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x1f, 0x2e, 0x74, - 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x2e, 0x5a, 0x6c, 0x74, 0x78, 0x4f, 0x72, 0x64, 0x65, - 0x72, 0x43, 0x61, 0x72, 0x64, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, - 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x2e, 0x5a, 0x6c, 0x74, 0x78, 0x4f, 0x72, 0x64, - 0x65, 0x72, 0x43, 0x61, 0x72, 0x64, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x12, 0x44, - 0x0a, 0x0c, 0x7a, 0x6c, 0x74, 0x78, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x6d, 0x73, 0x12, 0x19, - 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x2e, 0x5a, 0x6c, 0x74, 0x78, 0x4f, 0x72, - 0x64, 0x65, 0x72, 0x53, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x19, 0x2e, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x66, 0x65, 0x72, 0x2e, 0x5a, 0x6c, 0x74, 0x78, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x6d, - 0x73, 0x52, 0x65, 0x73, 0x12, 0x47, 0x0a, 0x10, 0x7a, 0x6c, 0x74, 0x78, 0x52, 0x65, 0x63, 0x68, - 0x61, 0x72, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, - 0x66, 0x65, 0x72, 0x2e, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1d, - 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x2e, 0x5a, 0x6c, 0x74, 0x78, 0x52, 0x65, - 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x12, 0x4d, 0x0a, - 0x13, 0x7a, 0x6c, 0x74, 0x78, 0x52, 0x65, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x50, 0x72, 0x6f, - 0x64, 0x75, 0x63, 0x74, 0x12, 0x14, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x2e, - 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x74, 0x72, 0x61, + 0x72, 0x67, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x63, + 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, + 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x6f, 0x75, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x4e, 0x6f, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x75, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x4e, + 0x6f, 0x22, 0x8d, 0x01, 0x0a, 0x19, 0x5a, 0x6c, 0x74, 0x78, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, + 0x65, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x12, + 0x1e, 0x0a, 0x0a, 0x6d, 0x65, 0x72, 0x63, 0x68, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x65, 0x72, 0x63, 0x68, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x12, + 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x12, 0x0a, + 0x04, 0x73, 0x69, 0x67, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x69, 0x67, + 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x6f, 0x75, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x4e, 0x6f, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x75, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x4e, + 0x6f, 0x22, 0xc0, 0x02, 0x0a, 0x14, 0x5a, 0x6c, 0x74, 0x78, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, + 0x65, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x52, 0x65, 0x71, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x65, + 0x72, 0x63, 0x68, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x6d, 0x65, 0x72, 0x63, 0x68, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, + 0x67, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x69, 0x67, 0x6e, 0x12, 0x1c, + 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1e, 0x0a, 0x0a, + 0x6f, 0x75, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x4e, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x6f, 0x75, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x4e, 0x6f, 0x12, 0x1c, 0x0a, 0x09, + 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x6f, + 0x62, 0x69, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x6f, 0x62, 0x69, + 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x79, 0x70, + 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, + 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x55, 0x72, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x55, 0x72, 0x6c, 0x12, 0x28, 0x0a, 0x0f, 0x65, 0x78, + 0x74, 0x65, 0x6e, 0x64, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x65, 0x74, 0x65, 0x72, 0x22, 0x2d, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x65, 0x6c, + 0x6c, 0x65, 0x72, 0x42, 0x79, 0x41, 0x70, 0x70, 0x49, 0x64, 0x52, 0x65, 0x71, 0x12, 0x14, 0x0a, + 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x70, + 0x70, 0x49, 0x64, 0x22, 0xcd, 0x03, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x65, 0x6c, + 0x6c, 0x65, 0x72, 0x42, 0x79, 0x41, 0x70, 0x70, 0x49, 0x64, 0x52, 0x65, 0x73, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1e, 0x0a, + 0x0a, 0x6d, 0x65, 0x72, 0x63, 0x68, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x6d, 0x65, 0x72, 0x63, 0x68, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1e, 0x0a, + 0x0a, 0x72, 0x65, 0x73, 0x65, 0x6c, 0x6c, 0x65, 0x72, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x72, 0x65, 0x73, 0x65, 0x6c, 0x6c, 0x65, 0x72, 0x49, 0x64, 0x12, 0x14, 0x0a, + 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x70, + 0x70, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x6f, 0x73, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x70, 0x6f, 0x73, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x74, 0x6f, + 0x72, 0x65, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x74, 0x6f, 0x72, + 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x70, 0x69, 0x4d, 0x6f, 0x64, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x06, 0x61, 0x70, 0x69, 0x4d, 0x6f, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x70, + 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x69, + 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, + 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x11, 0x6d, 0x65, 0x72, + 0x63, 0x68, 0x61, 0x6e, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x18, 0x0a, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x6d, 0x65, 0x72, 0x63, 0x68, 0x61, 0x6e, 0x74, 0x50, 0x75, + 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x65, 0x63, 0x72, 0x65, + 0x74, 0x4b, 0x65, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x63, 0x72, + 0x65, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x55, + 0x72, 0x6c, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x79, + 0x55, 0x72, 0x6c, 0x12, 0x26, 0x0a, 0x0e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x75, 0x62, + 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, + 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, + 0x69, 0x6d, 0x65, 0x32, 0x90, 0x06, 0x0a, 0x08, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, + 0x12, 0x49, 0x0a, 0x11, 0x7a, 0x6c, 0x74, 0x78, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, + 0x68, 0x61, 0x72, 0x67, 0x65, 0x12, 0x1e, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, + 0x2e, 0x5a, 0x6c, 0x74, 0x78, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, 0x68, 0x61, 0x72, + 0x67, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x14, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, + 0x2e, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x73, 0x12, 0x62, 0x0a, 0x16, 0x7a, + 0x6c, 0x74, 0x78, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x23, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, + 0x2e, 0x5a, 0x6c, 0x74, 0x78, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, 0x68, 0x61, 0x72, + 0x67, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x1a, 0x23, 0x2e, 0x74, 0x72, 0x61, + 0x6e, 0x73, 0x66, 0x65, 0x72, 0x2e, 0x5a, 0x6c, 0x74, 0x78, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, + 0x65, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x12, + 0x41, 0x0a, 0x0d, 0x7a, 0x6c, 0x74, 0x78, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x43, 0x61, 0x72, 0x64, + 0x12, 0x1a, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x2e, 0x5a, 0x6c, 0x74, 0x78, + 0x4f, 0x72, 0x64, 0x65, 0x72, 0x43, 0x61, 0x72, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x14, 0x2e, 0x74, + 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x2e, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, + 0x65, 0x73, 0x12, 0x56, 0x0a, 0x12, 0x7a, 0x6c, 0x74, 0x78, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x43, + 0x61, 0x72, 0x64, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x1f, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, + 0x66, 0x65, 0x72, 0x2e, 0x5a, 0x6c, 0x74, 0x78, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x43, 0x61, 0x72, + 0x64, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x74, 0x72, 0x61, 0x6e, + 0x73, 0x66, 0x65, 0x72, 0x2e, 0x5a, 0x6c, 0x74, 0x78, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x43, 0x61, + 0x72, 0x64, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x12, 0x44, 0x0a, 0x0c, 0x7a, 0x6c, + 0x74, 0x78, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x6d, 0x73, 0x12, 0x19, 0x2e, 0x74, 0x72, 0x61, + 0x6e, 0x73, 0x66, 0x65, 0x72, 0x2e, 0x5a, 0x6c, 0x74, 0x78, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x53, + 0x6d, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x19, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, + 0x2e, 0x5a, 0x6c, 0x74, 0x78, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x6d, 0x73, 0x52, 0x65, 0x73, + 0x12, 0x47, 0x0a, 0x10, 0x7a, 0x6c, 0x74, 0x78, 0x52, 0x65, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, + 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x2e, + 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x2e, 0x5a, 0x6c, 0x74, 0x78, 0x52, 0x65, 0x63, 0x68, 0x61, 0x72, - 0x67, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x65, 0x73, 0x42, 0x0c, 0x5a, 0x0a, - 0x2e, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x33, + 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x12, 0x4d, 0x0a, 0x13, 0x7a, 0x6c, 0x74, + 0x78, 0x52, 0x65, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, + 0x12, 0x14, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x2e, 0x44, 0x65, 0x66, 0x61, + 0x75, 0x6c, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, + 0x72, 0x2e, 0x5a, 0x6c, 0x74, 0x78, 0x52, 0x65, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x50, 0x72, + 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x65, 0x73, 0x12, 0x47, 0x0a, 0x0d, 0x6d, 0x61, 0x72, 0x6b, + 0x65, 0x74, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6e, 0x64, 0x12, 0x1a, 0x2e, 0x74, 0x72, 0x61, 0x6e, + 0x73, 0x66, 0x65, 0x72, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x53, 0x65, + 0x6e, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, + 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6e, 0x64, 0x52, 0x65, + 0x73, 0x12, 0x50, 0x0a, 0x10, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x44, 0x69, + 0x73, 0x63, 0x61, 0x72, 0x64, 0x12, 0x1d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, + 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x44, 0x69, 0x73, 0x63, 0x61, 0x72, + 0x64, 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x2e, + 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x44, 0x69, 0x73, 0x63, 0x61, 0x72, 0x64, + 0x52, 0x65, 0x73, 0x12, 0x41, 0x0a, 0x0b, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x12, 0x18, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x2e, 0x4d, 0x61, + 0x72, 0x6b, 0x65, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x1a, 0x18, 0x2e, 0x74, + 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x51, 0x75, + 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x42, 0x0c, 0x5a, 0x0a, 0x2e, 0x2f, 0x74, 0x72, 0x61, 0x6e, + 0x73, 0x66, 0x65, 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1403,47 +2254,63 @@ func file_transfer_proto_rawDescGZIP() []byte { return file_transfer_proto_rawDescData } -var file_transfer_proto_msgTypes = make([]protoimpl.MessageInfo, 15) +var file_transfer_proto_msgTypes = make([]protoimpl.MessageInfo, 24) var file_transfer_proto_goTypes = []interface{}{ (*DefaultRes)(nil), // 0: transfer.DefaultRes (*DefaultReq)(nil), // 1: transfer.DefaultReq - (*ZltxRechargeProductRes)(nil), // 2: transfer.ZltxRechargeProductRes - (*ZltxRechargeInfoRes)(nil), // 3: transfer.ZltxRechargeInfoRes - (*ZltxOrderSmsRes)(nil), // 4: transfer.ZltxOrderSmsRes - (*ZltxOrderSmsReq)(nil), // 5: transfer.ZltxOrderSmsReq - (*ZltxOrderCardQueryRes)(nil), // 6: transfer.ZltxOrderCardQueryRes - (*ZltxOrderCardQueryReq)(nil), // 7: transfer.ZltxOrderCardQueryReq - (*ZltxOrderCardReq)(nil), // 8: transfer.ZltxOrderCardReq - (*ZltxOrderRechargeQueryRes)(nil), // 9: transfer.ZltxOrderRechargeQueryRes - (*ZltxOrderRechargeQueryReq)(nil), // 10: transfer.ZltxOrderRechargeQueryReq - (*ZltxOrderRechargeReq)(nil), // 11: transfer.ZltxOrderRechargeReq - (*GetResellerByAppIdReq)(nil), // 12: transfer.GetResellerByAppIdReq - (*GetResellerByAppIdRes)(nil), // 13: transfer.GetResellerByAppIdRes - (*ZltxRechargeProductRes_Product)(nil), // 14: transfer.ZltxRechargeProductRes.Product + (*MarketQueryRes)(nil), // 2: transfer.MarketQueryRes + (*MarketQueryReq)(nil), // 3: transfer.MarketQueryReq + (*MarketKeyDiscardRes)(nil), // 4: transfer.MarketKeyDiscardRes + (*MarketKeyDiscardReq)(nil), // 5: transfer.MarketKeyDiscardReq + (*MarketKeySendRes)(nil), // 6: transfer.MarketKeySendRes + (*MarketKeySendReq)(nil), // 7: transfer.MarketKeySendReq + (*ZltxRechargeProductRes)(nil), // 8: transfer.ZltxRechargeProductRes + (*ZltxRechargeInfoRes)(nil), // 9: transfer.ZltxRechargeInfoRes + (*ZltxOrderSmsRes)(nil), // 10: transfer.ZltxOrderSmsRes + (*ZltxOrderSmsReq)(nil), // 11: transfer.ZltxOrderSmsReq + (*ZltxOrderCardQueryRes)(nil), // 12: transfer.ZltxOrderCardQueryRes + (*ZltxOrderCardQueryReq)(nil), // 13: transfer.ZltxOrderCardQueryReq + (*ZltxOrderCardReq)(nil), // 14: transfer.ZltxOrderCardReq + (*ZltxOrderRechargeQueryRes)(nil), // 15: transfer.ZltxOrderRechargeQueryRes + (*ZltxOrderRechargeQueryReq)(nil), // 16: transfer.ZltxOrderRechargeQueryReq + (*ZltxOrderRechargeReq)(nil), // 17: transfer.ZltxOrderRechargeReq + (*GetResellerByAppIdReq)(nil), // 18: transfer.GetResellerByAppIdReq + (*GetResellerByAppIdRes)(nil), // 19: transfer.GetResellerByAppIdRes + (*MarketQueryRes_Data)(nil), // 20: transfer.MarketQueryRes.Data + (*MarketKeyDiscardRes_Data)(nil), // 21: transfer.MarketKeyDiscardRes.Data + (*MarketKeySendRes_Data)(nil), // 22: transfer.MarketKeySendRes.Data + (*ZltxRechargeProductRes_Product)(nil), // 23: transfer.ZltxRechargeProductRes.Product } var file_transfer_proto_depIdxs = []int32{ - 14, // 0: transfer.ZltxRechargeProductRes.products:type_name -> transfer.ZltxRechargeProductRes.Product - 12, // 1: transfer.Transfer.getResellerByAppId:input_type -> transfer.GetResellerByAppIdReq - 11, // 2: transfer.Transfer.zltxOrderRecharge:input_type -> transfer.ZltxOrderRechargeReq - 10, // 3: transfer.Transfer.zltxOrderRechargeQuery:input_type -> transfer.ZltxOrderRechargeQueryReq - 8, // 4: transfer.Transfer.zltxOrderCard:input_type -> transfer.ZltxOrderCardReq - 7, // 5: transfer.Transfer.zltxOrderCardQuery:input_type -> transfer.ZltxOrderCardQueryReq - 5, // 6: transfer.Transfer.zltxOrderSms:input_type -> transfer.ZltxOrderSmsReq - 1, // 7: transfer.Transfer.zltxRechargeInfo:input_type -> transfer.DefaultReq - 1, // 8: transfer.Transfer.zltxRechargeProduct:input_type -> transfer.DefaultReq - 13, // 9: transfer.Transfer.getResellerByAppId:output_type -> transfer.GetResellerByAppIdRes - 0, // 10: transfer.Transfer.zltxOrderRecharge:output_type -> transfer.DefaultRes - 9, // 11: transfer.Transfer.zltxOrderRechargeQuery:output_type -> transfer.ZltxOrderRechargeQueryRes - 0, // 12: transfer.Transfer.zltxOrderCard:output_type -> transfer.DefaultRes - 6, // 13: transfer.Transfer.zltxOrderCardQuery:output_type -> transfer.ZltxOrderCardQueryRes - 4, // 14: transfer.Transfer.zltxOrderSms:output_type -> transfer.ZltxOrderSmsRes - 3, // 15: transfer.Transfer.zltxRechargeInfo:output_type -> transfer.ZltxRechargeInfoRes - 2, // 16: transfer.Transfer.zltxRechargeProduct:output_type -> transfer.ZltxRechargeProductRes - 9, // [9:17] is the sub-list for method output_type - 1, // [1:9] is the sub-list for method input_type - 1, // [1:1] is the sub-list for extension type_name - 1, // [1:1] is the sub-list for extension extendee - 0, // [0:1] is the sub-list for field type_name + 20, // 0: transfer.MarketQueryRes.data:type_name -> transfer.MarketQueryRes.Data + 21, // 1: transfer.MarketKeyDiscardRes.data:type_name -> transfer.MarketKeyDiscardRes.Data + 22, // 2: transfer.MarketKeySendRes.data:type_name -> transfer.MarketKeySendRes.Data + 23, // 3: transfer.ZltxRechargeProductRes.products:type_name -> transfer.ZltxRechargeProductRes.Product + 17, // 4: transfer.Transfer.zltxOrderRecharge:input_type -> transfer.ZltxOrderRechargeReq + 16, // 5: transfer.Transfer.zltxOrderRechargeQuery:input_type -> transfer.ZltxOrderRechargeQueryReq + 14, // 6: transfer.Transfer.zltxOrderCard:input_type -> transfer.ZltxOrderCardReq + 13, // 7: transfer.Transfer.zltxOrderCardQuery:input_type -> transfer.ZltxOrderCardQueryReq + 11, // 8: transfer.Transfer.zltxOrderSms:input_type -> transfer.ZltxOrderSmsReq + 1, // 9: transfer.Transfer.zltxRechargeInfo:input_type -> transfer.DefaultReq + 1, // 10: transfer.Transfer.zltxRechargeProduct:input_type -> transfer.DefaultReq + 7, // 11: transfer.Transfer.marketKeySend:input_type -> transfer.MarketKeySendReq + 5, // 12: transfer.Transfer.marketKeyDiscard:input_type -> transfer.MarketKeyDiscardReq + 3, // 13: transfer.Transfer.marketQuery:input_type -> transfer.MarketQueryReq + 0, // 14: transfer.Transfer.zltxOrderRecharge:output_type -> transfer.DefaultRes + 15, // 15: transfer.Transfer.zltxOrderRechargeQuery:output_type -> transfer.ZltxOrderRechargeQueryRes + 0, // 16: transfer.Transfer.zltxOrderCard:output_type -> transfer.DefaultRes + 12, // 17: transfer.Transfer.zltxOrderCardQuery:output_type -> transfer.ZltxOrderCardQueryRes + 10, // 18: transfer.Transfer.zltxOrderSms:output_type -> transfer.ZltxOrderSmsRes + 9, // 19: transfer.Transfer.zltxRechargeInfo:output_type -> transfer.ZltxRechargeInfoRes + 8, // 20: transfer.Transfer.zltxRechargeProduct:output_type -> transfer.ZltxRechargeProductRes + 6, // 21: transfer.Transfer.marketKeySend:output_type -> transfer.MarketKeySendRes + 4, // 22: transfer.Transfer.marketKeyDiscard:output_type -> transfer.MarketKeyDiscardRes + 2, // 23: transfer.Transfer.marketQuery:output_type -> transfer.MarketQueryRes + 14, // [14:24] is the sub-list for method output_type + 4, // [4:14] is the sub-list for method input_type + 4, // [4:4] is the sub-list for extension type_name + 4, // [4:4] is the sub-list for extension extendee + 0, // [0:4] is the sub-list for field type_name } func init() { file_transfer_proto_init() } @@ -1477,7 +2344,7 @@ func file_transfer_proto_init() { } } file_transfer_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ZltxRechargeProductRes); i { + switch v := v.(*MarketQueryRes); i { case 0: return &v.state case 1: @@ -1489,7 +2356,7 @@ func file_transfer_proto_init() { } } file_transfer_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ZltxRechargeInfoRes); i { + switch v := v.(*MarketQueryReq); i { case 0: return &v.state case 1: @@ -1501,7 +2368,7 @@ func file_transfer_proto_init() { } } file_transfer_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ZltxOrderSmsRes); i { + switch v := v.(*MarketKeyDiscardRes); i { case 0: return &v.state case 1: @@ -1513,7 +2380,7 @@ func file_transfer_proto_init() { } } file_transfer_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ZltxOrderSmsReq); i { + switch v := v.(*MarketKeyDiscardReq); i { case 0: return &v.state case 1: @@ -1525,7 +2392,7 @@ func file_transfer_proto_init() { } } file_transfer_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ZltxOrderCardQueryRes); i { + switch v := v.(*MarketKeySendRes); i { case 0: return &v.state case 1: @@ -1537,7 +2404,7 @@ func file_transfer_proto_init() { } } file_transfer_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ZltxOrderCardQueryReq); i { + switch v := v.(*MarketKeySendReq); i { case 0: return &v.state case 1: @@ -1549,7 +2416,7 @@ func file_transfer_proto_init() { } } file_transfer_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ZltxOrderCardReq); i { + switch v := v.(*ZltxRechargeProductRes); i { case 0: return &v.state case 1: @@ -1561,7 +2428,7 @@ func file_transfer_proto_init() { } } file_transfer_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ZltxOrderRechargeQueryRes); i { + switch v := v.(*ZltxRechargeInfoRes); i { case 0: return &v.state case 1: @@ -1573,7 +2440,7 @@ func file_transfer_proto_init() { } } file_transfer_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ZltxOrderRechargeQueryReq); i { + switch v := v.(*ZltxOrderSmsRes); i { case 0: return &v.state case 1: @@ -1585,7 +2452,7 @@ func file_transfer_proto_init() { } } file_transfer_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ZltxOrderRechargeReq); i { + switch v := v.(*ZltxOrderSmsReq); i { case 0: return &v.state case 1: @@ -1597,7 +2464,7 @@ func file_transfer_proto_init() { } } file_transfer_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetResellerByAppIdReq); i { + switch v := v.(*ZltxOrderCardQueryRes); i { case 0: return &v.state case 1: @@ -1609,7 +2476,7 @@ func file_transfer_proto_init() { } } file_transfer_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetResellerByAppIdRes); i { + switch v := v.(*ZltxOrderCardQueryReq); i { case 0: return &v.state case 1: @@ -1621,6 +2488,114 @@ func file_transfer_proto_init() { } } file_transfer_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ZltxOrderCardReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_transfer_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ZltxOrderRechargeQueryRes); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_transfer_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ZltxOrderRechargeQueryReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_transfer_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ZltxOrderRechargeReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_transfer_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetResellerByAppIdReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_transfer_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetResellerByAppIdRes); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_transfer_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MarketQueryRes_Data); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_transfer_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MarketKeyDiscardRes_Data); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_transfer_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MarketKeySendRes_Data); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_transfer_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ZltxRechargeProductRes_Product); i { case 0: return &v.state @@ -1639,7 +2614,7 @@ func file_transfer_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_transfer_proto_rawDesc, NumEnums: 0, - NumMessages: 15, + NumMessages: 24, NumExtensions: 0, NumServices: 1, }, diff --git a/cmd/rpc/pb/transfer/transfer_grpc.pb.go b/cmd/rpc/pb/transfer/transfer_grpc.pb.go index 3c4245a..970fbe5 100644 --- a/cmd/rpc/pb/transfer/transfer_grpc.pb.go +++ b/cmd/rpc/pb/transfer/transfer_grpc.pb.go @@ -19,7 +19,6 @@ import ( const _ = grpc.SupportPackageIsVersion7 const ( - Transfer_GetResellerByAppId_FullMethodName = "/transfer.Transfer/getResellerByAppId" Transfer_ZltxOrderRecharge_FullMethodName = "/transfer.Transfer/zltxOrderRecharge" Transfer_ZltxOrderRechargeQuery_FullMethodName = "/transfer.Transfer/zltxOrderRechargeQuery" Transfer_ZltxOrderCard_FullMethodName = "/transfer.Transfer/zltxOrderCard" @@ -27,13 +26,15 @@ const ( Transfer_ZltxOrderSms_FullMethodName = "/transfer.Transfer/zltxOrderSms" Transfer_ZltxRechargeInfo_FullMethodName = "/transfer.Transfer/zltxRechargeInfo" Transfer_ZltxRechargeProduct_FullMethodName = "/transfer.Transfer/zltxRechargeProduct" + Transfer_MarketKeySend_FullMethodName = "/transfer.Transfer/marketKeySend" + Transfer_MarketKeyDiscard_FullMethodName = "/transfer.Transfer/marketKeyDiscard" + Transfer_MarketQuery_FullMethodName = "/transfer.Transfer/marketQuery" ) // TransferClient is the client API for Transfer service. // // 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 TransferClient interface { - GetResellerByAppId(ctx context.Context, in *GetResellerByAppIdReq, opts ...grpc.CallOption) (*GetResellerByAppIdRes, error) ZltxOrderRecharge(ctx context.Context, in *ZltxOrderRechargeReq, opts ...grpc.CallOption) (*DefaultRes, error) ZltxOrderRechargeQuery(ctx context.Context, in *ZltxOrderRechargeQueryReq, opts ...grpc.CallOption) (*ZltxOrderRechargeQueryRes, error) ZltxOrderCard(ctx context.Context, in *ZltxOrderCardReq, opts ...grpc.CallOption) (*DefaultRes, error) @@ -41,6 +42,9 @@ type TransferClient interface { ZltxOrderSms(ctx context.Context, in *ZltxOrderSmsReq, opts ...grpc.CallOption) (*ZltxOrderSmsRes, error) ZltxRechargeInfo(ctx context.Context, in *DefaultReq, opts ...grpc.CallOption) (*ZltxRechargeInfoRes, error) ZltxRechargeProduct(ctx context.Context, in *DefaultReq, opts ...grpc.CallOption) (*ZltxRechargeProductRes, error) + MarketKeySend(ctx context.Context, in *MarketKeySendReq, opts ...grpc.CallOption) (*MarketKeySendRes, error) + MarketKeyDiscard(ctx context.Context, in *MarketKeyDiscardReq, opts ...grpc.CallOption) (*MarketKeyDiscardRes, error) + MarketQuery(ctx context.Context, in *MarketQueryReq, opts ...grpc.CallOption) (*MarketQueryRes, error) } type transferClient struct { @@ -51,15 +55,6 @@ func NewTransferClient(cc grpc.ClientConnInterface) TransferClient { return &transferClient{cc} } -func (c *transferClient) GetResellerByAppId(ctx context.Context, in *GetResellerByAppIdReq, opts ...grpc.CallOption) (*GetResellerByAppIdRes, error) { - out := new(GetResellerByAppIdRes) - err := c.cc.Invoke(ctx, Transfer_GetResellerByAppId_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - func (c *transferClient) ZltxOrderRecharge(ctx context.Context, in *ZltxOrderRechargeReq, opts ...grpc.CallOption) (*DefaultRes, error) { out := new(DefaultRes) err := c.cc.Invoke(ctx, Transfer_ZltxOrderRecharge_FullMethodName, in, out, opts...) @@ -123,11 +118,37 @@ func (c *transferClient) ZltxRechargeProduct(ctx context.Context, in *DefaultReq return out, nil } +func (c *transferClient) MarketKeySend(ctx context.Context, in *MarketKeySendReq, opts ...grpc.CallOption) (*MarketKeySendRes, error) { + out := new(MarketKeySendRes) + err := c.cc.Invoke(ctx, Transfer_MarketKeySend_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *transferClient) MarketKeyDiscard(ctx context.Context, in *MarketKeyDiscardReq, opts ...grpc.CallOption) (*MarketKeyDiscardRes, error) { + out := new(MarketKeyDiscardRes) + err := c.cc.Invoke(ctx, Transfer_MarketKeyDiscard_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *transferClient) MarketQuery(ctx context.Context, in *MarketQueryReq, opts ...grpc.CallOption) (*MarketQueryRes, error) { + out := new(MarketQueryRes) + err := c.cc.Invoke(ctx, Transfer_MarketQuery_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // TransferServer is the server API for Transfer service. // All implementations must embed UnimplementedTransferServer // for forward compatibility type TransferServer interface { - GetResellerByAppId(context.Context, *GetResellerByAppIdReq) (*GetResellerByAppIdRes, error) ZltxOrderRecharge(context.Context, *ZltxOrderRechargeReq) (*DefaultRes, error) ZltxOrderRechargeQuery(context.Context, *ZltxOrderRechargeQueryReq) (*ZltxOrderRechargeQueryRes, error) ZltxOrderCard(context.Context, *ZltxOrderCardReq) (*DefaultRes, error) @@ -135,6 +156,9 @@ type TransferServer interface { ZltxOrderSms(context.Context, *ZltxOrderSmsReq) (*ZltxOrderSmsRes, error) ZltxRechargeInfo(context.Context, *DefaultReq) (*ZltxRechargeInfoRes, error) ZltxRechargeProduct(context.Context, *DefaultReq) (*ZltxRechargeProductRes, error) + MarketKeySend(context.Context, *MarketKeySendReq) (*MarketKeySendRes, error) + MarketKeyDiscard(context.Context, *MarketKeyDiscardReq) (*MarketKeyDiscardRes, error) + MarketQuery(context.Context, *MarketQueryReq) (*MarketQueryRes, error) mustEmbedUnimplementedTransferServer() } @@ -142,9 +166,6 @@ type TransferServer interface { type UnimplementedTransferServer struct { } -func (UnimplementedTransferServer) GetResellerByAppId(context.Context, *GetResellerByAppIdReq) (*GetResellerByAppIdRes, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetResellerByAppId not implemented") -} func (UnimplementedTransferServer) ZltxOrderRecharge(context.Context, *ZltxOrderRechargeReq) (*DefaultRes, error) { return nil, status.Errorf(codes.Unimplemented, "method ZltxOrderRecharge not implemented") } @@ -166,6 +187,15 @@ func (UnimplementedTransferServer) ZltxRechargeInfo(context.Context, *DefaultReq func (UnimplementedTransferServer) ZltxRechargeProduct(context.Context, *DefaultReq) (*ZltxRechargeProductRes, error) { return nil, status.Errorf(codes.Unimplemented, "method ZltxRechargeProduct not implemented") } +func (UnimplementedTransferServer) MarketKeySend(context.Context, *MarketKeySendReq) (*MarketKeySendRes, error) { + return nil, status.Errorf(codes.Unimplemented, "method MarketKeySend not implemented") +} +func (UnimplementedTransferServer) MarketKeyDiscard(context.Context, *MarketKeyDiscardReq) (*MarketKeyDiscardRes, error) { + return nil, status.Errorf(codes.Unimplemented, "method MarketKeyDiscard not implemented") +} +func (UnimplementedTransferServer) MarketQuery(context.Context, *MarketQueryReq) (*MarketQueryRes, error) { + return nil, status.Errorf(codes.Unimplemented, "method MarketQuery not implemented") +} func (UnimplementedTransferServer) mustEmbedUnimplementedTransferServer() {} // UnsafeTransferServer may be embedded to opt out of forward compatibility for this service. @@ -179,24 +209,6 @@ func RegisterTransferServer(s grpc.ServiceRegistrar, srv TransferServer) { s.RegisterService(&Transfer_ServiceDesc, srv) } -func _Transfer_GetResellerByAppId_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetResellerByAppIdReq) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(TransferServer).GetResellerByAppId(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: Transfer_GetResellerByAppId_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(TransferServer).GetResellerByAppId(ctx, req.(*GetResellerByAppIdReq)) - } - return interceptor(ctx, in, info, handler) -} - func _Transfer_ZltxOrderRecharge_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(ZltxOrderRechargeReq) if err := dec(in); err != nil { @@ -323,6 +335,60 @@ func _Transfer_ZltxRechargeProduct_Handler(srv interface{}, ctx context.Context, return interceptor(ctx, in, info, handler) } +func _Transfer_MarketKeySend_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MarketKeySendReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(TransferServer).MarketKeySend(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Transfer_MarketKeySend_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(TransferServer).MarketKeySend(ctx, req.(*MarketKeySendReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _Transfer_MarketKeyDiscard_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MarketKeyDiscardReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(TransferServer).MarketKeyDiscard(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Transfer_MarketKeyDiscard_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(TransferServer).MarketKeyDiscard(ctx, req.(*MarketKeyDiscardReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _Transfer_MarketQuery_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MarketQueryReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(TransferServer).MarketQuery(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Transfer_MarketQuery_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(TransferServer).MarketQuery(ctx, req.(*MarketQueryReq)) + } + return interceptor(ctx, in, info, handler) +} + // Transfer_ServiceDesc is the grpc.ServiceDesc for Transfer service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -330,10 +396,6 @@ var Transfer_ServiceDesc = grpc.ServiceDesc{ ServiceName: "transfer.Transfer", HandlerType: (*TransferServer)(nil), Methods: []grpc.MethodDesc{ - { - MethodName: "getResellerByAppId", - Handler: _Transfer_GetResellerByAppId_Handler, - }, { MethodName: "zltxOrderRecharge", Handler: _Transfer_ZltxOrderRecharge_Handler, @@ -362,6 +424,18 @@ var Transfer_ServiceDesc = grpc.ServiceDesc{ MethodName: "zltxRechargeProduct", Handler: _Transfer_ZltxRechargeProduct_Handler, }, + { + MethodName: "marketKeySend", + Handler: _Transfer_MarketKeySend_Handler, + }, + { + MethodName: "marketKeyDiscard", + Handler: _Transfer_MarketKeyDiscard_Handler, + }, + { + MethodName: "marketQuery", + Handler: _Transfer_MarketQuery_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "transfer.proto", diff --git a/genModel/serverClientModel_gen.go b/genModel/serverClientModel_gen.go index ecdb34e..12d0e2f 100755 --- a/genModel/serverClientModel_gen.go +++ b/genModel/serverClientModel_gen.go @@ -22,7 +22,7 @@ var ( serverClientRowsExpectAutoSet = strings.Join(stringx.Remove(serverClientFieldNames, "`create_at`", "`create_time`", "`created_at`", "`update_at`", "`update_time`", "`updated_at`"), ",") serverClientRowsWithPlaceHolder = strings.Join(stringx.Remove(serverClientFieldNames, "`client_id`", "`create_at`", "`create_time`", "`created_at`", "`update_at`", "`update_time`", "`updated_at`"), "=?,") + "=?" - cacheTransferServerClientClientIdPrefix = "cache:transfer:serverClient:clientId:" + cacheTransferServerClientClientIdPrefix = "cache:transfer:serverClient:clientId:" cacheTransferServerClientClientIndexPrefix = "cache:transfer:serverClient:clientIndex:" ) diff --git a/pkg/common/market.go b/pkg/common/market.go new file mode 100644 index 0000000..436d3f9 --- /dev/null +++ b/pkg/common/market.go @@ -0,0 +1,137 @@ +package common + +import ( + "crypto" + "crypto/rand" + "crypto/rsa" + "crypto/sha256" + "crypto/x509" + "encoding/base64" + "encoding/pem" + "errors" + "fmt" + "sort" +) + +// getSignString 使用 xx=aa&yy=bb 的字符串拼接 +func getSignString(data map[string]interface{}) string { + keys := make([]string, 0, len(data)) + for key := range data { + keys = append(keys, key) + } + sort.Strings(keys) + + signString := "" + separator := "" + for _, key := range keys { + value := data[key] + if key == "sign" || value == nil { + continue + } + signString += fmt.Sprintf("%s%s=%v", separator, key, value) + separator = "&" + } + return signString +} + +// VerifyRsaSign 签名验证 +func VerifyRsaSign(publicKey string, data map[string]interface{}) (map[string]interface{}, error) { + // 对 sign nonce timestamp appId 升序排序 + // 使用 xx=aa&yy=bb 的字符串拼接 + // 商户的公钥验签 RSA2验签 + signString := getSignString(data) + + rsaPubKey, err := parseRSAPublicKeyFromPEM([]byte(publicKey)) + if err != nil { + return nil, err + } + + signature, err := base64.StdEncoding.DecodeString(data["sign"].(string)) + if err != nil { + return nil, err + } + + hashed := sha256.Sum256([]byte(signString)) + err = rsa.VerifyPKCS1v15(rsaPubKey, crypto.SHA256, hashed[:], signature) + if err != nil { + return nil, errors.New("签名验证失败") + } + + return data, nil +} + +// MakeRsaSign 生成签名 +func MakeRsaSign(privateKey string, data map[string]interface{}) (string, error) { + // 对 sign nonce timestamp appId 升序排序 + // 使用 xx=aa&yy=bb 的字符串拼接 + // 营销系统生成的私钥生成签名 RSA2加签 + signString := getSignString(data) + + privKey, err := parseRSAPrivateKeyFromPEM([]byte(privateKey)) + if err != nil { + return "", errors.New("私钥解析失败") + } + + hashed := sha256.Sum256([]byte(signString)) + signature, err := rsa.SignPKCS1v15(rand.Reader, privKey, crypto.SHA256, hashed[:]) + if err != nil { + return "", errors.New("签名失败") + } + + return base64.StdEncoding.EncodeToString(signature), nil +} + +// ParseRSAPrivateKeyFromPEM 解析私钥 +func parseRSAPrivateKeyFromPEM(key []byte) (*rsa.PrivateKey, error) { + var err error + + // Parse PEM block + var block *pem.Block + if block, _ = pem.Decode(key); block == nil { + return nil, errors.New("私钥解析失败: 无效的PEM格式") + } + + var parsedKey interface{} + if parsedKey, err = x509.ParsePKCS1PrivateKey(block.Bytes); err != nil { + if parsedKey, err = x509.ParsePKCS8PrivateKey(block.Bytes); err != nil { + return nil, err + } + } + + var pkey *rsa.PrivateKey + var ok bool + if pkey, ok = parsedKey.(*rsa.PrivateKey); !ok { + return nil, errors.New("密钥不是有效的RSA私钥") + } + + return pkey, nil +} + +// parseRSAPublicKeyFromPEM parses a PEM encoded PKCS1 or PKCS8 public key +func parseRSAPublicKeyFromPEM(key []byte) (*rsa.PublicKey, error) { + var err error + + // Parse PEM block + var block *pem.Block + if block, _ = pem.Decode(key); block == nil { + return nil, errors.New("公钥解析失败: 无效的PEM格式") + } + + // Parse the key + var parsedKey interface{} + if parsedKey, err = x509.ParsePKIXPublicKey(block.Bytes); err != nil { + if cert, err := x509.ParseCertificate(block.Bytes); err == nil { + parsedKey = cert.PublicKey + } else { + return nil, err + } + } + + var pkey *rsa.PublicKey + var ok bool + if pkey, ok = parsedKey.(*rsa.PublicKey); !ok { + return nil, errors.New("密钥不是有效的RSA公钥") + } + + return pkey, nil +} diff --git a/pkg/request/test/wxbiz_test.go b/pkg/request/test/wxbiz_test.go index 90cd03b..06a49bb 100755 --- a/pkg/request/test/wxbiz_test.go +++ b/pkg/request/test/wxbiz_test.go @@ -2,8 +2,8 @@ package test import ( "fmt" - "msgc/pkg/request" "testing" + "trasfer_middleware/pkg/request" ) // 发送GET 请求