diff --git a/client/client.go b/client/client.go index 195715fa..1cb53083 100644 --- a/client/client.go +++ b/client/client.go @@ -118,6 +118,7 @@ func NewClientMd5(uin int64, passwordMd5 [16]byte) *QQClient { "friendlist.GetTroopMemberListReq": decodeGroupMemberListResponse, "ImgStore.GroupPicUp": decodeGroupImageStoreResponse, "PttStore.GroupPttUp": decodeGroupPttStoreResponse, + "PttStore.GroupPttDown": decodeGroupPttDownResponse, "LongConn.OffPicUp": decodeOffPicUpResponse, "ProfileService.Pb.ReqSystemMsgNew.Group": decodeSystemMsgGroupPacket, "ProfileService.Pb.ReqSystemMsgNew.Friend": decodeSystemMsgFriendPacket, @@ -826,7 +827,7 @@ func (c *QQClient) netLoop() { go func() { defer func() { if pan := recover(); pan != nil { - // + fmt.Println("panic on decoder:", pan) } }() decoder, ok := c.decoders[pkt.CommandName] diff --git a/client/global.go b/client/global.go index 81acd80d..a11830bb 100644 --- a/client/global.go +++ b/client/global.go @@ -272,10 +272,10 @@ func (c *QQClient) parseGroupMessage(m *msg.Message) *message.GroupMessage { if m.Body.RichText.Ptt != nil { g.Elements = []message.IMessageElement{ &message.VoiceElement{ - Name: m.Body.RichText.Ptt.FileName, - Md5: m.Body.RichText.Ptt.FileMd5, - Size: m.Body.RichText.Ptt.FileSize, - DownloadPara: string(m.Body.RichText.Ptt.DownPara), + Name: m.Body.RichText.Ptt.FileName, + Md5: m.Body.RichText.Ptt.FileMd5, + Size: m.Body.RichText.Ptt.FileSize, + Url: "http://grouptalk.c2c.qq.com" + string(m.Body.RichText.Ptt.DownPara), }, } } diff --git a/client/pb/data.pb.go b/client/pb/data.pb.go index f51cd2cc..e346c2e3 100644 --- a/client/pb/data.pb.go +++ b/client/pb/data.pb.go @@ -370,12 +370,13 @@ type D388ReqBody struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - NetType int32 `protobuf:"varint,1,opt,name=netType,proto3" json:"netType,omitempty"` - Subcmd int32 `protobuf:"varint,2,opt,name=subcmd,proto3" json:"subcmd,omitempty"` - MsgTryUpImgReq []*TryUpImgReq `protobuf:"bytes,3,rep,name=msgTryUpImgReq,proto3" json:"msgTryUpImgReq,omitempty"` - MsgTryUpPttReq []*TryUpPttReq `protobuf:"bytes,5,rep,name=msgTryUpPttReq,proto3" json:"msgTryUpPttReq,omitempty"` - CommandId int32 `protobuf:"varint,7,opt,name=commandId,proto3" json:"commandId,omitempty"` - Extension []byte `protobuf:"bytes,1001,opt,name=extension,proto3" json:"extension,omitempty"` + NetType int32 `protobuf:"varint,1,opt,name=netType,proto3" json:"netType,omitempty"` + Subcmd int32 `protobuf:"varint,2,opt,name=subcmd,proto3" json:"subcmd,omitempty"` + MsgTryUpImgReq []*TryUpImgReq `protobuf:"bytes,3,rep,name=msgTryUpImgReq,proto3" json:"msgTryUpImgReq,omitempty"` + MsgTryUpPttReq []*TryUpPttReq `protobuf:"bytes,5,rep,name=msgTryUpPttReq,proto3" json:"msgTryUpPttReq,omitempty"` + MsgGetPttReq []*GetPttUrlReq `protobuf:"bytes,6,rep,name=msgGetPttReq,proto3" json:"msgGetPttReq,omitempty"` + CommandId int32 `protobuf:"varint,7,opt,name=commandId,proto3" json:"commandId,omitempty"` + Extension []byte `protobuf:"bytes,1001,opt,name=extension,proto3" json:"extension,omitempty"` } func (x *D388ReqBody) Reset() { @@ -438,6 +439,13 @@ func (x *D388ReqBody) GetMsgTryUpPttReq() []*TryUpPttReq { return nil } +func (x *D388ReqBody) GetMsgGetPttReq() []*GetPttUrlReq { + if x != nil { + return x.MsgGetPttReq + } + return nil +} + func (x *D388ReqBody) GetCommandId() int32 { if x != nil { return x.CommandId @@ -457,10 +465,11 @@ type D388RespBody struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ClientIp int32 `protobuf:"varint,1,opt,name=clientIp,proto3" json:"clientIp,omitempty"` - SubCmd int32 `protobuf:"varint,2,opt,name=subCmd,proto3" json:"subCmd,omitempty"` - MsgTryUpImgRsp []*TryUpImgResp `protobuf:"bytes,3,rep,name=msgTryUpImgRsp,proto3" json:"msgTryUpImgRsp,omitempty"` - MsgTryUpPttRsp []*TryUpPttResp `protobuf:"bytes,5,rep,name=msgTryUpPttRsp,proto3" json:"msgTryUpPttRsp,omitempty"` + ClientIp int32 `protobuf:"varint,1,opt,name=clientIp,proto3" json:"clientIp,omitempty"` + SubCmd int32 `protobuf:"varint,2,opt,name=subCmd,proto3" json:"subCmd,omitempty"` + MsgTryUpImgRsp []*TryUpImgResp `protobuf:"bytes,3,rep,name=msgTryUpImgRsp,proto3" json:"msgTryUpImgRsp,omitempty"` + MsgTryUpPttRsp []*TryUpPttResp `protobuf:"bytes,5,rep,name=msgTryUpPttRsp,proto3" json:"msgTryUpPttRsp,omitempty"` + MsgGetPttUrlRsp []*GetPttUrlRsp `protobuf:"bytes,6,rep,name=msgGetPttUrlRsp,proto3" json:"msgGetPttUrlRsp,omitempty"` } func (x *D388RespBody) Reset() { @@ -523,6 +532,310 @@ func (x *D388RespBody) GetMsgTryUpPttRsp() []*TryUpPttResp { return nil } +func (x *D388RespBody) GetMsgGetPttUrlRsp() []*GetPttUrlRsp { + if x != nil { + return x.MsgGetPttUrlRsp + } + return nil +} + +type GetPttUrlReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + GroupCode int64 `protobuf:"varint,1,opt,name=groupCode,proto3" json:"groupCode,omitempty"` + DstUin int64 `protobuf:"varint,2,opt,name=dstUin,proto3" json:"dstUin,omitempty"` + FileId int64 `protobuf:"varint,3,opt,name=fileId,proto3" json:"fileId,omitempty"` + FileMd5 []byte `protobuf:"bytes,4,opt,name=fileMd5,proto3" json:"fileMd5,omitempty"` + ReqTerm int32 `protobuf:"varint,5,opt,name=reqTerm,proto3" json:"reqTerm,omitempty"` + ReqPlatformType int32 `protobuf:"varint,6,opt,name=reqPlatformType,proto3" json:"reqPlatformType,omitempty"` + InnerIp int32 `protobuf:"varint,7,opt,name=innerIp,proto3" json:"innerIp,omitempty"` + BuType int32 `protobuf:"varint,8,opt,name=buType,proto3" json:"buType,omitempty"` + BuildVer []byte `protobuf:"bytes,9,opt,name=buildVer,proto3" json:"buildVer,omitempty"` + //int64 fileId = 10; + FileKey []byte `protobuf:"bytes,11,opt,name=fileKey,proto3" json:"fileKey,omitempty"` + Codec int32 `protobuf:"varint,12,opt,name=codec,proto3" json:"codec,omitempty"` + BuId int32 `protobuf:"varint,13,opt,name=buId,proto3" json:"buId,omitempty"` + ReqTransferType int32 `protobuf:"varint,14,opt,name=reqTransferType,proto3" json:"reqTransferType,omitempty"` + IsAuto int32 `protobuf:"varint,15,opt,name=isAuto,proto3" json:"isAuto,omitempty"` +} + +func (x *GetPttUrlReq) Reset() { + *x = GetPttUrlReq{} + if protoimpl.UnsafeEnabled { + mi := &file_data_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetPttUrlReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetPttUrlReq) ProtoMessage() {} + +func (x *GetPttUrlReq) ProtoReflect() protoreflect.Message { + mi := &file_data_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 GetPttUrlReq.ProtoReflect.Descriptor instead. +func (*GetPttUrlReq) Descriptor() ([]byte, []int) { + return file_data_proto_rawDescGZIP(), []int{6} +} + +func (x *GetPttUrlReq) GetGroupCode() int64 { + if x != nil { + return x.GroupCode + } + return 0 +} + +func (x *GetPttUrlReq) GetDstUin() int64 { + if x != nil { + return x.DstUin + } + return 0 +} + +func (x *GetPttUrlReq) GetFileId() int64 { + if x != nil { + return x.FileId + } + return 0 +} + +func (x *GetPttUrlReq) GetFileMd5() []byte { + if x != nil { + return x.FileMd5 + } + return nil +} + +func (x *GetPttUrlReq) GetReqTerm() int32 { + if x != nil { + return x.ReqTerm + } + return 0 +} + +func (x *GetPttUrlReq) GetReqPlatformType() int32 { + if x != nil { + return x.ReqPlatformType + } + return 0 +} + +func (x *GetPttUrlReq) GetInnerIp() int32 { + if x != nil { + return x.InnerIp + } + return 0 +} + +func (x *GetPttUrlReq) GetBuType() int32 { + if x != nil { + return x.BuType + } + return 0 +} + +func (x *GetPttUrlReq) GetBuildVer() []byte { + if x != nil { + return x.BuildVer + } + return nil +} + +func (x *GetPttUrlReq) GetFileKey() []byte { + if x != nil { + return x.FileKey + } + return nil +} + +func (x *GetPttUrlReq) GetCodec() int32 { + if x != nil { + return x.Codec + } + return 0 +} + +func (x *GetPttUrlReq) GetBuId() int32 { + if x != nil { + return x.BuId + } + return 0 +} + +func (x *GetPttUrlReq) GetReqTransferType() int32 { + if x != nil { + return x.ReqTransferType + } + return 0 +} + +func (x *GetPttUrlReq) GetIsAuto() int32 { + if x != nil { + return x.IsAuto + } + return 0 +} + +type GetPttUrlRsp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + FileId int64 `protobuf:"varint,1,opt,name=fileId,proto3" json:"fileId,omitempty"` + FileMd5 []byte `protobuf:"bytes,2,opt,name=fileMd5,proto3" json:"fileMd5,omitempty"` + Result int32 `protobuf:"varint,3,opt,name=result,proto3" json:"result,omitempty"` + FailMsg []byte `protobuf:"bytes,4,opt,name=failMsg,proto3" json:"failMsg,omitempty"` + BytesDownUrl []byte `protobuf:"bytes,5,opt,name=bytesDownUrl,proto3" json:"bytesDownUrl,omitempty"` + Uint32DownIp []int32 `protobuf:"varint,6,rep,packed,name=uint32DownIp,proto3" json:"uint32DownIp,omitempty"` + Uint32DownPort []int32 `protobuf:"varint,7,rep,packed,name=uint32DownPort,proto3" json:"uint32DownPort,omitempty"` + DownDomain []byte `protobuf:"bytes,8,opt,name=downDomain,proto3" json:"downDomain,omitempty"` + DownPara []byte `protobuf:"bytes,9,opt,name=downPara,proto3" json:"downPara,omitempty"` + //int64 fileId = 10; + TransferType int32 `protobuf:"varint,11,opt,name=transferType,proto3" json:"transferType,omitempty"` + AllowRetry int32 `protobuf:"varint,12,opt,name=allowRetry,proto3" json:"allowRetry,omitempty"` + //repeated IPv6Info msgDownIp6 = 26; + ClientIp6 []byte `protobuf:"bytes,27,opt,name=clientIp6,proto3" json:"clientIp6,omitempty"` + StrDomain string `protobuf:"bytes,28,opt,name=strDomain,proto3" json:"strDomain,omitempty"` +} + +func (x *GetPttUrlRsp) Reset() { + *x = GetPttUrlRsp{} + if protoimpl.UnsafeEnabled { + mi := &file_data_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetPttUrlRsp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetPttUrlRsp) ProtoMessage() {} + +func (x *GetPttUrlRsp) ProtoReflect() protoreflect.Message { + mi := &file_data_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 GetPttUrlRsp.ProtoReflect.Descriptor instead. +func (*GetPttUrlRsp) Descriptor() ([]byte, []int) { + return file_data_proto_rawDescGZIP(), []int{7} +} + +func (x *GetPttUrlRsp) GetFileId() int64 { + if x != nil { + return x.FileId + } + return 0 +} + +func (x *GetPttUrlRsp) GetFileMd5() []byte { + if x != nil { + return x.FileMd5 + } + return nil +} + +func (x *GetPttUrlRsp) GetResult() int32 { + if x != nil { + return x.Result + } + return 0 +} + +func (x *GetPttUrlRsp) GetFailMsg() []byte { + if x != nil { + return x.FailMsg + } + return nil +} + +func (x *GetPttUrlRsp) GetBytesDownUrl() []byte { + if x != nil { + return x.BytesDownUrl + } + return nil +} + +func (x *GetPttUrlRsp) GetUint32DownIp() []int32 { + if x != nil { + return x.Uint32DownIp + } + return nil +} + +func (x *GetPttUrlRsp) GetUint32DownPort() []int32 { + if x != nil { + return x.Uint32DownPort + } + return nil +} + +func (x *GetPttUrlRsp) GetDownDomain() []byte { + if x != nil { + return x.DownDomain + } + return nil +} + +func (x *GetPttUrlRsp) GetDownPara() []byte { + if x != nil { + return x.DownPara + } + return nil +} + +func (x *GetPttUrlRsp) GetTransferType() int32 { + if x != nil { + return x.TransferType + } + return 0 +} + +func (x *GetPttUrlRsp) GetAllowRetry() int32 { + if x != nil { + return x.AllowRetry + } + return 0 +} + +func (x *GetPttUrlRsp) GetClientIp6() []byte { + if x != nil { + return x.ClientIp6 + } + return nil +} + +func (x *GetPttUrlRsp) GetStrDomain() string { + if x != nil { + return x.StrDomain + } + return "" +} + type ReqDataHighwayHead struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -537,7 +850,7 @@ type ReqDataHighwayHead struct { func (x *ReqDataHighwayHead) Reset() { *x = ReqDataHighwayHead{} if protoimpl.UnsafeEnabled { - mi := &file_data_proto_msgTypes[6] + mi := &file_data_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -550,7 +863,7 @@ func (x *ReqDataHighwayHead) String() string { func (*ReqDataHighwayHead) ProtoMessage() {} func (x *ReqDataHighwayHead) ProtoReflect() protoreflect.Message { - mi := &file_data_proto_msgTypes[6] + mi := &file_data_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -563,7 +876,7 @@ func (x *ReqDataHighwayHead) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqDataHighwayHead.ProtoReflect.Descriptor instead. func (*ReqDataHighwayHead) Descriptor() ([]byte, []int) { - return file_data_proto_rawDescGZIP(), []int{6} + return file_data_proto_rawDescGZIP(), []int{8} } func (x *ReqDataHighwayHead) GetMsgBasehead() *DataHighwayHead { @@ -614,7 +927,7 @@ type RspDataHighwayHead struct { func (x *RspDataHighwayHead) Reset() { *x = RspDataHighwayHead{} if protoimpl.UnsafeEnabled { - mi := &file_data_proto_msgTypes[7] + mi := &file_data_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -627,7 +940,7 @@ func (x *RspDataHighwayHead) String() string { func (*RspDataHighwayHead) ProtoMessage() {} func (x *RspDataHighwayHead) ProtoReflect() protoreflect.Message { - mi := &file_data_proto_msgTypes[7] + mi := &file_data_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -640,7 +953,7 @@ func (x *RspDataHighwayHead) ProtoReflect() protoreflect.Message { // Deprecated: Use RspDataHighwayHead.ProtoReflect.Descriptor instead. func (*RspDataHighwayHead) Descriptor() ([]byte, []int) { - return file_data_proto_rawDescGZIP(), []int{7} + return file_data_proto_rawDescGZIP(), []int{9} } func (x *RspDataHighwayHead) GetMsgBasehead() *DataHighwayHead { @@ -733,7 +1046,7 @@ type DataHighwayHead struct { func (x *DataHighwayHead) Reset() { *x = DataHighwayHead{} if protoimpl.UnsafeEnabled { - mi := &file_data_proto_msgTypes[8] + mi := &file_data_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -746,7 +1059,7 @@ func (x *DataHighwayHead) String() string { func (*DataHighwayHead) ProtoMessage() {} func (x *DataHighwayHead) ProtoReflect() protoreflect.Message { - mi := &file_data_proto_msgTypes[8] + mi := &file_data_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -759,7 +1072,7 @@ func (x *DataHighwayHead) ProtoReflect() protoreflect.Message { // Deprecated: Use DataHighwayHead.ProtoReflect.Descriptor instead. func (*DataHighwayHead) Descriptor() ([]byte, []int) { - return file_data_proto_rawDescGZIP(), []int{8} + return file_data_proto_rawDescGZIP(), []int{10} } func (x *DataHighwayHead) GetVersion() int32 { @@ -854,7 +1167,7 @@ type SegHead struct { func (x *SegHead) Reset() { *x = SegHead{} if protoimpl.UnsafeEnabled { - mi := &file_data_proto_msgTypes[9] + mi := &file_data_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -867,7 +1180,7 @@ func (x *SegHead) String() string { func (*SegHead) ProtoMessage() {} func (x *SegHead) ProtoReflect() protoreflect.Message { - mi := &file_data_proto_msgTypes[9] + mi := &file_data_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -880,7 +1193,7 @@ func (x *SegHead) ProtoReflect() protoreflect.Message { // Deprecated: Use SegHead.ProtoReflect.Descriptor instead. func (*SegHead) Descriptor() ([]byte, []int) { - return file_data_proto_rawDescGZIP(), []int{9} + return file_data_proto_rawDescGZIP(), []int{11} } func (x *SegHead) GetServiceid() int32 { @@ -997,7 +1310,7 @@ type TryUpImgReq struct { func (x *TryUpImgReq) Reset() { *x = TryUpImgReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_proto_msgTypes[10] + mi := &file_data_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1010,7 +1323,7 @@ func (x *TryUpImgReq) String() string { func (*TryUpImgReq) ProtoMessage() {} func (x *TryUpImgReq) ProtoReflect() protoreflect.Message { - mi := &file_data_proto_msgTypes[10] + mi := &file_data_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1023,7 +1336,7 @@ func (x *TryUpImgReq) ProtoReflect() protoreflect.Message { // Deprecated: Use TryUpImgReq.ProtoReflect.Descriptor instead. func (*TryUpImgReq) Descriptor() ([]byte, []int) { - return file_data_proto_rawDescGZIP(), []int{10} + return file_data_proto_rawDescGZIP(), []int{12} } func (x *TryUpImgReq) GetGroupCode() int64 { @@ -1185,7 +1498,7 @@ type TryUpImgResp struct { func (x *TryUpImgResp) Reset() { *x = TryUpImgResp{} if protoimpl.UnsafeEnabled { - mi := &file_data_proto_msgTypes[11] + mi := &file_data_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1198,7 +1511,7 @@ func (x *TryUpImgResp) String() string { func (*TryUpImgResp) ProtoMessage() {} func (x *TryUpImgResp) ProtoReflect() protoreflect.Message { - mi := &file_data_proto_msgTypes[11] + mi := &file_data_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1211,7 +1524,7 @@ func (x *TryUpImgResp) ProtoReflect() protoreflect.Message { // Deprecated: Use TryUpImgResp.ProtoReflect.Descriptor instead. func (*TryUpImgResp) Descriptor() ([]byte, []int) { - return file_data_proto_rawDescGZIP(), []int{11} + return file_data_proto_rawDescGZIP(), []int{13} } func (x *TryUpImgResp) GetFileId() int64 { @@ -1303,7 +1616,7 @@ type TryUpPttReq struct { func (x *TryUpPttReq) Reset() { *x = TryUpPttReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_proto_msgTypes[12] + mi := &file_data_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1316,7 +1629,7 @@ func (x *TryUpPttReq) String() string { func (*TryUpPttReq) ProtoMessage() {} func (x *TryUpPttReq) ProtoReflect() protoreflect.Message { - mi := &file_data_proto_msgTypes[12] + mi := &file_data_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1329,7 +1642,7 @@ func (x *TryUpPttReq) ProtoReflect() protoreflect.Message { // Deprecated: Use TryUpPttReq.ProtoReflect.Descriptor instead. func (*TryUpPttReq) Descriptor() ([]byte, []int) { - return file_data_proto_rawDescGZIP(), []int{12} + return file_data_proto_rawDescGZIP(), []int{14} } func (x *TryUpPttReq) GetGroupCode() int64 { @@ -1466,7 +1779,7 @@ type TryUpPttResp struct { func (x *TryUpPttResp) Reset() { *x = TryUpPttResp{} if protoimpl.UnsafeEnabled { - mi := &file_data_proto_msgTypes[13] + mi := &file_data_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1479,7 +1792,7 @@ func (x *TryUpPttResp) String() string { func (*TryUpPttResp) ProtoMessage() {} func (x *TryUpPttResp) ProtoReflect() protoreflect.Message { - mi := &file_data_proto_msgTypes[13] + mi := &file_data_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1492,7 +1805,7 @@ func (x *TryUpPttResp) ProtoReflect() protoreflect.Message { // Deprecated: Use TryUpPttResp.ProtoReflect.Descriptor instead. func (*TryUpPttResp) Descriptor() ([]byte, []int) { - return file_data_proto_rawDescGZIP(), []int{13} + return file_data_proto_rawDescGZIP(), []int{15} } func (x *TryUpPttResp) GetFileId() int64 { @@ -1587,7 +1900,7 @@ type ImgInfo struct { func (x *ImgInfo) Reset() { *x = ImgInfo{} if protoimpl.UnsafeEnabled { - mi := &file_data_proto_msgTypes[14] + mi := &file_data_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1600,7 +1913,7 @@ func (x *ImgInfo) String() string { func (*ImgInfo) ProtoMessage() {} func (x *ImgInfo) ProtoReflect() protoreflect.Message { - mi := &file_data_proto_msgTypes[14] + mi := &file_data_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1613,7 +1926,7 @@ func (x *ImgInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use ImgInfo.ProtoReflect.Descriptor instead. func (*ImgInfo) Descriptor() ([]byte, []int) { - return file_data_proto_rawDescGZIP(), []int{14} + return file_data_proto_rawDescGZIP(), []int{16} } func (x *ImgInfo) GetFileMd5() []byte { @@ -1662,7 +1975,7 @@ type DeleteMessageRequest struct { func (x *DeleteMessageRequest) Reset() { *x = DeleteMessageRequest{} if protoimpl.UnsafeEnabled { - mi := &file_data_proto_msgTypes[15] + mi := &file_data_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1675,7 +1988,7 @@ func (x *DeleteMessageRequest) String() string { func (*DeleteMessageRequest) ProtoMessage() {} func (x *DeleteMessageRequest) ProtoReflect() protoreflect.Message { - mi := &file_data_proto_msgTypes[15] + mi := &file_data_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1688,7 +2001,7 @@ func (x *DeleteMessageRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteMessageRequest.ProtoReflect.Descriptor instead. func (*DeleteMessageRequest) Descriptor() ([]byte, []int) { - return file_data_proto_rawDescGZIP(), []int{15} + return file_data_proto_rawDescGZIP(), []int{17} } func (x *DeleteMessageRequest) GetItems() []*MessageItem { @@ -1714,7 +2027,7 @@ type MessageItem struct { func (x *MessageItem) Reset() { *x = MessageItem{} if protoimpl.UnsafeEnabled { - mi := &file_data_proto_msgTypes[16] + mi := &file_data_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1727,7 +2040,7 @@ func (x *MessageItem) String() string { func (*MessageItem) ProtoMessage() {} func (x *MessageItem) ProtoReflect() protoreflect.Message { - mi := &file_data_proto_msgTypes[16] + mi := &file_data_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1740,7 +2053,7 @@ func (x *MessageItem) ProtoReflect() protoreflect.Message { // Deprecated: Use MessageItem.ProtoReflect.Descriptor instead. func (*MessageItem) Descriptor() ([]byte, []int) { - return file_data_proto_rawDescGZIP(), []int{16} + return file_data_proto_rawDescGZIP(), []int{18} } func (x *MessageItem) GetFromUin() int64 { @@ -1797,7 +2110,7 @@ type NotifyMsgBody struct { func (x *NotifyMsgBody) Reset() { *x = NotifyMsgBody{} if protoimpl.UnsafeEnabled { - mi := &file_data_proto_msgTypes[17] + mi := &file_data_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1810,7 +2123,7 @@ func (x *NotifyMsgBody) String() string { func (*NotifyMsgBody) ProtoMessage() {} func (x *NotifyMsgBody) ProtoReflect() protoreflect.Message { - mi := &file_data_proto_msgTypes[17] + mi := &file_data_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1823,7 +2136,7 @@ func (x *NotifyMsgBody) ProtoReflect() protoreflect.Message { // Deprecated: Use NotifyMsgBody.ProtoReflect.Descriptor instead. func (*NotifyMsgBody) Descriptor() ([]byte, []int) { - return file_data_proto_rawDescGZIP(), []int{17} + return file_data_proto_rawDescGZIP(), []int{19} } func (x *NotifyMsgBody) GetOptMsgRecall() *MessageRecallReminder { @@ -1857,7 +2170,7 @@ type MessageRecallReminder struct { func (x *MessageRecallReminder) Reset() { *x = MessageRecallReminder{} if protoimpl.UnsafeEnabled { - mi := &file_data_proto_msgTypes[18] + mi := &file_data_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1870,7 +2183,7 @@ func (x *MessageRecallReminder) String() string { func (*MessageRecallReminder) ProtoMessage() {} func (x *MessageRecallReminder) ProtoReflect() protoreflect.Message { - mi := &file_data_proto_msgTypes[18] + mi := &file_data_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1883,7 +2196,7 @@ func (x *MessageRecallReminder) ProtoReflect() protoreflect.Message { // Deprecated: Use MessageRecallReminder.ProtoReflect.Descriptor instead. func (*MessageRecallReminder) Descriptor() ([]byte, []int) { - return file_data_proto_rawDescGZIP(), []int{18} + return file_data_proto_rawDescGZIP(), []int{20} } func (x *MessageRecallReminder) GetUin() int64 { @@ -1951,7 +2264,7 @@ type RecalledMessageMeta struct { func (x *RecalledMessageMeta) Reset() { *x = RecalledMessageMeta{} if protoimpl.UnsafeEnabled { - mi := &file_data_proto_msgTypes[19] + mi := &file_data_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1964,7 +2277,7 @@ func (x *RecalledMessageMeta) String() string { func (*RecalledMessageMeta) ProtoMessage() {} func (x *RecalledMessageMeta) ProtoReflect() protoreflect.Message { - mi := &file_data_proto_msgTypes[19] + mi := &file_data_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1977,7 +2290,7 @@ func (x *RecalledMessageMeta) ProtoReflect() protoreflect.Message { // Deprecated: Use RecalledMessageMeta.ProtoReflect.Descriptor instead. func (*RecalledMessageMeta) Descriptor() ([]byte, []int) { - return file_data_proto_rawDescGZIP(), []int{19} + return file_data_proto_rawDescGZIP(), []int{21} } func (x *RecalledMessageMeta) GetSeq() int32 { @@ -2033,7 +2346,7 @@ type SubD4 struct { func (x *SubD4) Reset() { *x = SubD4{} if protoimpl.UnsafeEnabled { - mi := &file_data_proto_msgTypes[20] + mi := &file_data_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2046,7 +2359,7 @@ func (x *SubD4) String() string { func (*SubD4) ProtoMessage() {} func (x *SubD4) ProtoReflect() protoreflect.Message { - mi := &file_data_proto_msgTypes[20] + mi := &file_data_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2059,7 +2372,7 @@ func (x *SubD4) ProtoReflect() protoreflect.Message { // Deprecated: Use SubD4.ProtoReflect.Descriptor instead. func (*SubD4) Descriptor() ([]byte, []int) { - return file_data_proto_rawDescGZIP(), []int{20} + return file_data_proto_rawDescGZIP(), []int{22} } func (x *SubD4) GetUin() int64 { @@ -2084,7 +2397,7 @@ type Sub8A struct { func (x *Sub8A) Reset() { *x = Sub8A{} if protoimpl.UnsafeEnabled { - mi := &file_data_proto_msgTypes[21] + mi := &file_data_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2097,7 +2410,7 @@ func (x *Sub8A) String() string { func (*Sub8A) ProtoMessage() {} func (x *Sub8A) ProtoReflect() protoreflect.Message { - mi := &file_data_proto_msgTypes[21] + mi := &file_data_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2110,7 +2423,7 @@ func (x *Sub8A) ProtoReflect() protoreflect.Message { // Deprecated: Use Sub8A.ProtoReflect.Descriptor instead. func (*Sub8A) Descriptor() ([]byte, []int) { - return file_data_proto_rawDescGZIP(), []int{21} + return file_data_proto_rawDescGZIP(), []int{23} } func (x *Sub8A) GetMsgInfo() []*Sub8AMsgInfo { @@ -2167,7 +2480,7 @@ type Sub8AMsgInfo struct { func (x *Sub8AMsgInfo) Reset() { *x = Sub8AMsgInfo{} if protoimpl.UnsafeEnabled { - mi := &file_data_proto_msgTypes[22] + mi := &file_data_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2180,7 +2493,7 @@ func (x *Sub8AMsgInfo) String() string { func (*Sub8AMsgInfo) ProtoMessage() {} func (x *Sub8AMsgInfo) ProtoReflect() protoreflect.Message { - mi := &file_data_proto_msgTypes[22] + mi := &file_data_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2193,7 +2506,7 @@ func (x *Sub8AMsgInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use Sub8AMsgInfo.ProtoReflect.Descriptor instead. func (*Sub8AMsgInfo) Descriptor() ([]byte, []int) { - return file_data_proto_rawDescGZIP(), []int{22} + return file_data_proto_rawDescGZIP(), []int{24} } func (x *Sub8AMsgInfo) GetFromUin() int64 { @@ -2271,7 +2584,7 @@ type SubB3 struct { func (x *SubB3) Reset() { *x = SubB3{} if protoimpl.UnsafeEnabled { - mi := &file_data_proto_msgTypes[23] + mi := &file_data_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2284,7 +2597,7 @@ func (x *SubB3) String() string { func (*SubB3) ProtoMessage() {} func (x *SubB3) ProtoReflect() protoreflect.Message { - mi := &file_data_proto_msgTypes[23] + mi := &file_data_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2297,7 +2610,7 @@ func (x *SubB3) ProtoReflect() protoreflect.Message { // Deprecated: Use SubB3.ProtoReflect.Descriptor instead. func (*SubB3) Descriptor() ([]byte, []int) { - return file_data_proto_rawDescGZIP(), []int{23} + return file_data_proto_rawDescGZIP(), []int{25} } func (x *SubB3) GetType() int32 { @@ -2326,7 +2639,7 @@ type SubB3AddFrdNotify struct { func (x *SubB3AddFrdNotify) Reset() { *x = SubB3AddFrdNotify{} if protoimpl.UnsafeEnabled { - mi := &file_data_proto_msgTypes[24] + mi := &file_data_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2339,7 +2652,7 @@ func (x *SubB3AddFrdNotify) String() string { func (*SubB3AddFrdNotify) ProtoMessage() {} func (x *SubB3AddFrdNotify) ProtoReflect() protoreflect.Message { - mi := &file_data_proto_msgTypes[24] + mi := &file_data_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2352,7 +2665,7 @@ func (x *SubB3AddFrdNotify) ProtoReflect() protoreflect.Message { // Deprecated: Use SubB3AddFrdNotify.ProtoReflect.Descriptor instead. func (*SubB3AddFrdNotify) Descriptor() ([]byte, []int) { - return file_data_proto_rawDescGZIP(), []int{24} + return file_data_proto_rawDescGZIP(), []int{26} } func (x *SubB3AddFrdNotify) GetUin() int64 { @@ -2426,7 +2739,7 @@ var file_data_proto_rawDesc = []byte{ 0x75, 0x74, 0x75, 0x61, 0x6c, 0x6d, 0x61, 0x72, 0x6b, 0x4c, 0x62, 0x73, 0x73, 0x68, 0x61, 0x72, 0x65, 0x18, 0x89, 0x86, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x15, 0x72, 0x65, 0x71, 0x4d, 0x75, 0x74, 0x75, 0x61, 0x6c, 0x6d, 0x61, 0x72, 0x6b, 0x4c, 0x62, 0x73, 0x73, 0x68, 0x61, 0x72, 0x65, - 0x22, 0xe8, 0x01, 0x0a, 0x0b, 0x44, 0x33, 0x38, 0x38, 0x52, 0x65, 0x71, 0x42, 0x6f, 0x64, 0x79, + 0x22, 0x9b, 0x02, 0x0a, 0x0b, 0x44, 0x33, 0x38, 0x38, 0x52, 0x65, 0x71, 0x42, 0x6f, 0x64, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x75, 0x62, 0x63, 0x6d, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x75, 0x62, 0x63, @@ -2436,294 +2749,352 @@ var file_data_proto_rawDesc = []byte{ 0x55, 0x70, 0x49, 0x6d, 0x67, 0x52, 0x65, 0x71, 0x12, 0x34, 0x0a, 0x0e, 0x6d, 0x73, 0x67, 0x54, 0x72, 0x79, 0x55, 0x70, 0x50, 0x74, 0x74, 0x52, 0x65, 0x71, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x54, 0x72, 0x79, 0x55, 0x70, 0x50, 0x74, 0x74, 0x52, 0x65, 0x71, 0x52, 0x0e, - 0x6d, 0x73, 0x67, 0x54, 0x72, 0x79, 0x55, 0x70, 0x50, 0x74, 0x74, 0x52, 0x65, 0x71, 0x12, 0x1c, - 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x49, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x09, - 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0xe9, 0x07, 0x20, 0x01, 0x28, 0x0c, - 0x52, 0x09, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xb0, 0x01, 0x0a, 0x0c, - 0x44, 0x33, 0x38, 0x38, 0x52, 0x65, 0x73, 0x70, 0x42, 0x6f, 0x64, 0x79, 0x12, 0x1a, 0x0a, 0x08, - 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, - 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x75, 0x62, 0x43, - 0x6d, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x75, 0x62, 0x43, 0x6d, 0x64, - 0x12, 0x35, 0x0a, 0x0e, 0x6d, 0x73, 0x67, 0x54, 0x72, 0x79, 0x55, 0x70, 0x49, 0x6d, 0x67, 0x52, - 0x73, 0x70, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x54, 0x72, 0x79, 0x55, 0x70, - 0x49, 0x6d, 0x67, 0x52, 0x65, 0x73, 0x70, 0x52, 0x0e, 0x6d, 0x73, 0x67, 0x54, 0x72, 0x79, 0x55, - 0x70, 0x49, 0x6d, 0x67, 0x52, 0x73, 0x70, 0x12, 0x35, 0x0a, 0x0e, 0x6d, 0x73, 0x67, 0x54, 0x72, - 0x79, 0x55, 0x70, 0x50, 0x74, 0x74, 0x52, 0x73, 0x70, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x0d, 0x2e, 0x54, 0x72, 0x79, 0x55, 0x70, 0x50, 0x74, 0x74, 0x52, 0x65, 0x73, 0x70, 0x52, 0x0e, - 0x6d, 0x73, 0x67, 0x54, 0x72, 0x79, 0x55, 0x70, 0x50, 0x74, 0x74, 0x52, 0x73, 0x70, 0x22, 0xb6, - 0x01, 0x0a, 0x12, 0x52, 0x65, 0x71, 0x44, 0x61, 0x74, 0x61, 0x48, 0x69, 0x67, 0x68, 0x77, 0x61, - 0x79, 0x48, 0x65, 0x61, 0x64, 0x12, 0x32, 0x0a, 0x0b, 0x6d, 0x73, 0x67, 0x42, 0x61, 0x73, 0x65, - 0x68, 0x65, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x44, 0x61, 0x74, - 0x61, 0x48, 0x69, 0x67, 0x68, 0x77, 0x61, 0x79, 0x48, 0x65, 0x61, 0x64, 0x52, 0x0b, 0x6d, 0x73, - 0x67, 0x42, 0x61, 0x73, 0x65, 0x68, 0x65, 0x61, 0x64, 0x12, 0x28, 0x0a, 0x0a, 0x6d, 0x73, 0x67, - 0x53, 0x65, 0x67, 0x68, 0x65, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, - 0x53, 0x65, 0x67, 0x48, 0x65, 0x61, 0x64, 0x52, 0x0a, 0x6d, 0x73, 0x67, 0x53, 0x65, 0x67, 0x68, - 0x65, 0x61, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x65, 0x71, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, - 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d, 0x72, 0x65, 0x71, 0x45, - 0x78, 0x74, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0xda, 0x02, 0x0a, 0x12, 0x52, 0x73, 0x70, 0x44, - 0x61, 0x74, 0x61, 0x48, 0x69, 0x67, 0x68, 0x77, 0x61, 0x79, 0x48, 0x65, 0x61, 0x64, 0x12, 0x32, - 0x0a, 0x0b, 0x6d, 0x73, 0x67, 0x42, 0x61, 0x73, 0x65, 0x68, 0x65, 0x61, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x48, 0x69, 0x67, 0x68, 0x77, 0x61, - 0x79, 0x48, 0x65, 0x61, 0x64, 0x52, 0x0b, 0x6d, 0x73, 0x67, 0x42, 0x61, 0x73, 0x65, 0x68, 0x65, - 0x61, 0x64, 0x12, 0x28, 0x0a, 0x0a, 0x6d, 0x73, 0x67, 0x53, 0x65, 0x67, 0x68, 0x65, 0x61, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x53, 0x65, 0x67, 0x48, 0x65, 0x61, 0x64, - 0x52, 0x0a, 0x6d, 0x73, 0x67, 0x53, 0x65, 0x67, 0x68, 0x65, 0x61, 0x64, 0x12, 0x1c, 0x0a, 0x09, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x6c, - 0x6c, 0x6f, 0x77, 0x52, 0x65, 0x74, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, - 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x52, 0x65, 0x74, 0x72, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x61, - 0x63, 0x68, 0x65, 0x63, 0x6f, 0x73, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x63, - 0x61, 0x63, 0x68, 0x65, 0x63, 0x6f, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x74, 0x63, 0x6f, - 0x73, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x68, 0x74, 0x63, 0x6f, 0x73, 0x74, - 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x73, 0x70, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x66, - 0x6f, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d, 0x72, 0x73, 0x70, 0x45, 0x78, 0x74, 0x65, - 0x6e, 0x64, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x09, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x69, 0x73, - 0x52, 0x65, 0x73, 0x65, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x69, 0x73, 0x52, - 0x65, 0x73, 0x65, 0x74, 0x22, 0x91, 0x02, 0x0a, 0x0f, 0x44, 0x61, 0x74, 0x61, 0x48, 0x69, 0x67, - 0x68, 0x77, 0x61, 0x79, 0x48, 0x65, 0x61, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x75, 0x69, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x10, - 0x0a, 0x03, 0x73, 0x65, 0x71, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x73, 0x65, 0x71, - 0x12, 0x1e, 0x0a, 0x0a, 0x72, 0x65, 0x74, 0x72, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x72, 0x65, 0x74, 0x72, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x73, - 0x12, 0x14, 0x0a, 0x05, 0x61, 0x70, 0x70, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x05, 0x61, 0x70, 0x70, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x61, 0x74, 0x61, 0x66, 0x6c, - 0x61, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x66, 0x6c, - 0x61, 0x67, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x49, 0x64, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x49, 0x64, - 0x12, 0x1a, 0x0a, 0x08, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x56, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x56, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, - 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x49, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, - 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x49, 0x64, 0x22, 0xe5, 0x02, 0x0a, 0x07, 0x53, 0x65, 0x67, - 0x48, 0x65, 0x61, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x1e, - 0x0a, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x1e, - 0x0a, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x16, - 0x0a, 0x06, 0x72, 0x74, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, - 0x72, 0x74, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, - 0x66, 0x6c, 0x61, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x66, 0x6c, 0x61, 0x67, - 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x64, 0x35, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x6d, - 0x64, 0x35, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x65, 0x4d, 0x64, 0x35, 0x18, 0x09, 0x20, - 0x01, 0x28, 0x0c, 0x52, 0x07, 0x66, 0x69, 0x6c, 0x65, 0x4d, 0x64, 0x35, 0x12, 0x1c, 0x0a, 0x09, - 0x63, 0x61, 0x63, 0x68, 0x65, 0x41, 0x64, 0x64, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x09, 0x63, 0x61, 0x63, 0x68, 0x65, 0x41, 0x64, 0x64, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x71, 0x75, - 0x65, 0x72, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, - 0x71, 0x75, 0x65, 0x72, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x75, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x69, 0x70, 0x18, 0x0c, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x0d, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x69, 0x70, - 0x22, 0xc5, 0x04, 0x0a, 0x0b, 0x54, 0x72, 0x79, 0x55, 0x70, 0x49, 0x6d, 0x67, 0x52, 0x65, 0x71, - 0x12, 0x1c, 0x0a, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x16, - 0x0a, 0x06, 0x73, 0x72, 0x63, 0x55, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, - 0x73, 0x72, 0x63, 0x55, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x18, - 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x65, 0x4d, 0x64, 0x35, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, - 0x07, 0x66, 0x69, 0x6c, 0x65, 0x4d, 0x64, 0x35, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, - 0x53, 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, - 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x18, 0x0a, 0x07, 0x73, 0x72, 0x63, 0x54, 0x65, 0x72, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x07, 0x73, 0x72, 0x63, 0x54, 0x65, 0x72, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x0c, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, - 0x0a, 0x06, 0x62, 0x75, 0x54, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, - 0x62, 0x75, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x69, 0x63, 0x57, 0x69, 0x64, - 0x74, 0x68, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x69, 0x63, 0x57, 0x69, 0x64, - 0x74, 0x68, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x69, 0x63, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, - 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x70, 0x69, 0x63, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, - 0x12, 0x18, 0x0a, 0x07, 0x70, 0x69, 0x63, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x07, 0x70, 0x69, 0x63, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x62, 0x75, - 0x69, 0x6c, 0x64, 0x56, 0x65, 0x72, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x62, 0x75, - 0x69, 0x6c, 0x64, 0x56, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x49, - 0x70, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x49, 0x70, - 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x70, 0x70, 0x50, 0x69, 0x63, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0f, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x61, 0x70, 0x70, 0x50, 0x69, 0x63, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x20, 0x0a, 0x0b, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x50, 0x69, 0x63, 0x18, - 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x50, - 0x69, 0x63, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, - 0x11, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, - 0x12, 0x16, 0x0a, 0x06, 0x64, 0x73, 0x74, 0x55, 0x69, 0x6e, 0x18, 0x12, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x06, 0x64, 0x73, 0x74, 0x55, 0x69, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x72, 0x76, 0x55, - 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x13, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x73, 0x72, 0x76, - 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, - 0x65, 0x72, 0x55, 0x72, 0x6c, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x74, 0x72, 0x61, - 0x6e, 0x73, 0x66, 0x65, 0x72, 0x55, 0x72, 0x6c, 0x22, 0x94, 0x02, 0x0a, 0x0c, 0x54, 0x72, 0x79, - 0x55, 0x70, 0x49, 0x6d, 0x67, 0x52, 0x65, 0x73, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x6c, - 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x65, 0x49, - 0x64, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x61, 0x69, - 0x6c, 0x4d, 0x73, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, 0x61, 0x69, 0x6c, - 0x4d, 0x73, 0x67, 0x12, 0x22, 0x0a, 0x0c, 0x62, 0x6f, 0x6f, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x45, - 0x78, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x62, 0x6f, 0x6f, 0x6c, 0x46, - 0x69, 0x6c, 0x65, 0x45, 0x78, 0x69, 0x74, 0x12, 0x28, 0x0a, 0x0a, 0x6d, 0x73, 0x67, 0x49, 0x6d, - 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x49, 0x6d, - 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x6d, 0x73, 0x67, 0x49, 0x6d, 0x67, 0x49, 0x6e, 0x66, - 0x6f, 0x12, 0x1e, 0x0a, 0x0a, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x55, 0x70, 0x49, 0x70, 0x18, - 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x55, 0x70, 0x49, - 0x70, 0x12, 0x22, 0x0a, 0x0c, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x55, 0x70, 0x50, 0x6f, 0x72, - 0x74, 0x18, 0x07, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0c, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x55, - 0x70, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x70, 0x55, 0x6b, 0x65, 0x79, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x75, 0x70, 0x55, 0x6b, 0x65, 0x79, 0x12, 0x10, 0x0a, - 0x03, 0x66, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x66, 0x69, 0x64, 0x22, - 0xc9, 0x03, 0x0a, 0x0b, 0x54, 0x72, 0x79, 0x55, 0x70, 0x50, 0x74, 0x74, 0x52, 0x65, 0x71, 0x12, - 0x1c, 0x0a, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, - 0x06, 0x73, 0x72, 0x63, 0x55, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x73, - 0x72, 0x63, 0x55, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x18, 0x0a, - 0x07, 0x66, 0x69, 0x6c, 0x65, 0x4d, 0x64, 0x35, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, - 0x66, 0x69, 0x6c, 0x65, 0x4d, 0x64, 0x35, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x53, - 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x53, - 0x69, 0x7a, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x18, 0x0a, 0x07, 0x73, 0x72, 0x63, 0x54, 0x65, 0x72, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x07, 0x73, 0x72, 0x63, 0x54, 0x65, 0x72, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0c, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, - 0x06, 0x62, 0x75, 0x54, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x62, - 0x75, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x56, 0x65, - 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x56, 0x65, - 0x72, 0x12, 0x18, 0x0a, 0x07, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x49, 0x70, 0x18, 0x0b, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x07, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x49, 0x70, 0x12, 0x20, 0x0a, 0x0b, 0x76, - 0x6f, 0x69, 0x63, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x0b, 0x76, 0x6f, 0x69, 0x63, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x24, 0x0a, - 0x0d, 0x62, 0x6f, 0x6f, 0x6c, 0x4e, 0x65, 0x77, 0x55, 0x70, 0x43, 0x68, 0x61, 0x6e, 0x18, 0x0d, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x62, 0x6f, 0x6f, 0x6c, 0x4e, 0x65, 0x77, 0x55, 0x70, 0x43, - 0x68, 0x61, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x64, 0x65, 0x63, 0x18, 0x0e, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x05, 0x63, 0x6f, 0x64, 0x65, 0x63, 0x12, 0x1c, 0x0a, 0x09, 0x76, 0x6f, 0x69, - 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x76, 0x6f, - 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x75, 0x49, 0x64, 0x18, - 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x62, 0x75, 0x49, 0x64, 0x22, 0xce, 0x02, 0x0a, 0x0c, - 0x54, 0x72, 0x79, 0x55, 0x70, 0x50, 0x74, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x16, 0x0a, 0x06, + 0x6d, 0x73, 0x67, 0x54, 0x72, 0x79, 0x55, 0x70, 0x50, 0x74, 0x74, 0x52, 0x65, 0x71, 0x12, 0x31, + 0x0a, 0x0c, 0x6d, 0x73, 0x67, 0x47, 0x65, 0x74, 0x50, 0x74, 0x74, 0x52, 0x65, 0x71, 0x18, 0x06, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x74, 0x74, 0x55, 0x72, 0x6c, + 0x52, 0x65, 0x71, 0x52, 0x0c, 0x6d, 0x73, 0x67, 0x47, 0x65, 0x74, 0x50, 0x74, 0x74, 0x52, 0x65, + 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x49, 0x64, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x49, 0x64, 0x12, + 0x1d, 0x0a, 0x09, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0xe9, 0x07, 0x20, + 0x01, 0x28, 0x0c, 0x52, 0x09, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xe9, + 0x01, 0x0a, 0x0c, 0x44, 0x33, 0x38, 0x38, 0x52, 0x65, 0x73, 0x70, 0x42, 0x6f, 0x64, 0x79, 0x12, + 0x1a, 0x0a, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x73, + 0x75, 0x62, 0x43, 0x6d, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x75, 0x62, + 0x43, 0x6d, 0x64, 0x12, 0x35, 0x0a, 0x0e, 0x6d, 0x73, 0x67, 0x54, 0x72, 0x79, 0x55, 0x70, 0x49, + 0x6d, 0x67, 0x52, 0x73, 0x70, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x54, 0x72, + 0x79, 0x55, 0x70, 0x49, 0x6d, 0x67, 0x52, 0x65, 0x73, 0x70, 0x52, 0x0e, 0x6d, 0x73, 0x67, 0x54, + 0x72, 0x79, 0x55, 0x70, 0x49, 0x6d, 0x67, 0x52, 0x73, 0x70, 0x12, 0x35, 0x0a, 0x0e, 0x6d, 0x73, + 0x67, 0x54, 0x72, 0x79, 0x55, 0x70, 0x50, 0x74, 0x74, 0x52, 0x73, 0x70, 0x18, 0x05, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x54, 0x72, 0x79, 0x55, 0x70, 0x50, 0x74, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x52, 0x0e, 0x6d, 0x73, 0x67, 0x54, 0x72, 0x79, 0x55, 0x70, 0x50, 0x74, 0x74, 0x52, 0x73, + 0x70, 0x12, 0x37, 0x0a, 0x0f, 0x6d, 0x73, 0x67, 0x47, 0x65, 0x74, 0x50, 0x74, 0x74, 0x55, 0x72, + 0x6c, 0x52, 0x73, 0x70, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x47, 0x65, 0x74, + 0x50, 0x74, 0x74, 0x55, 0x72, 0x6c, 0x52, 0x73, 0x70, 0x52, 0x0f, 0x6d, 0x73, 0x67, 0x47, 0x65, + 0x74, 0x50, 0x74, 0x74, 0x55, 0x72, 0x6c, 0x52, 0x73, 0x70, 0x22, 0x8e, 0x03, 0x0a, 0x0c, 0x47, + 0x65, 0x74, 0x50, 0x74, 0x74, 0x55, 0x72, 0x6c, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x67, + 0x72, 0x6f, 0x75, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x73, 0x74, + 0x55, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x64, 0x73, 0x74, 0x55, 0x69, + 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x69, 0x6c, + 0x65, 0x4d, 0x64, 0x35, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x66, 0x69, 0x6c, 0x65, + 0x4d, 0x64, 0x35, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x54, 0x65, 0x72, 0x6d, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x72, 0x65, 0x71, 0x54, 0x65, 0x72, 0x6d, 0x12, 0x28, 0x0a, + 0x0f, 0x72, 0x65, 0x71, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x79, 0x70, 0x65, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x72, 0x65, 0x71, 0x50, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x69, 0x6e, 0x6e, 0x65, 0x72, + 0x49, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x49, + 0x70, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x75, 0x54, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x06, 0x62, 0x75, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x62, 0x75, 0x69, + 0x6c, 0x64, 0x56, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x62, 0x75, 0x69, + 0x6c, 0x64, 0x56, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x12, + 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x64, 0x65, 0x63, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, + 0x63, 0x6f, 0x64, 0x65, 0x63, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x75, 0x49, 0x64, 0x18, 0x0d, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x04, 0x62, 0x75, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x72, 0x65, 0x71, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0e, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0f, 0x72, 0x65, 0x71, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x73, 0x41, 0x75, 0x74, 0x6f, 0x18, 0x0f, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x06, 0x69, 0x73, 0x41, 0x75, 0x74, 0x6f, 0x22, 0x9e, 0x03, 0x0a, 0x0c, + 0x47, 0x65, 0x74, 0x50, 0x74, 0x74, 0x55, 0x72, 0x6c, 0x52, 0x73, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x66, 0x69, - 0x6c, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x18, 0x0a, 0x07, - 0x66, 0x61, 0x69, 0x6c, 0x4d, 0x73, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, - 0x61, 0x69, 0x6c, 0x4d, 0x73, 0x67, 0x12, 0x22, 0x0a, 0x0c, 0x62, 0x6f, 0x6f, 0x6c, 0x46, 0x69, - 0x6c, 0x65, 0x45, 0x78, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x62, 0x6f, - 0x6f, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x45, 0x78, 0x69, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x75, 0x69, - 0x6e, 0x74, 0x33, 0x32, 0x55, 0x70, 0x49, 0x70, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, - 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x55, 0x70, 0x49, 0x70, 0x12, 0x22, 0x0a, 0x0c, 0x75, 0x69, - 0x6e, 0x74, 0x33, 0x32, 0x55, 0x70, 0x50, 0x6f, 0x72, 0x74, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, - 0x52, 0x0c, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x55, 0x70, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x16, - 0x0a, 0x06, 0x75, 0x70, 0x55, 0x6b, 0x65, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, - 0x75, 0x70, 0x55, 0x6b, 0x65, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x70, 0x4f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x75, 0x70, 0x4f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x53, 0x69, 0x7a, 0x65, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x53, 0x69, 0x7a, 0x65, - 0x12, 0x18, 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, - 0x0c, 0x52, 0x07, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x68, - 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x22, 0x99, 0x01, 0x0a, - 0x07, 0x49, 0x6d, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x65, - 0x4d, 0x64, 0x35, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x66, 0x69, 0x6c, 0x65, 0x4d, - 0x64, 0x35, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, - 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, - 0x6c, 0x65, 0x57, 0x69, 0x64, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, - 0x69, 0x6c, 0x65, 0x57, 0x69, 0x64, 0x74, 0x68, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x6c, 0x65, - 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, - 0x6c, 0x65, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0x3a, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x22, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x0c, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x69, - 0x74, 0x65, 0x6d, 0x73, 0x22, 0x99, 0x01, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x49, 0x74, 0x65, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x72, 0x6f, 0x6d, 0x55, 0x69, 0x6e, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x66, 0x72, 0x6f, 0x6d, 0x55, 0x69, 0x6e, 0x12, 0x14, - 0x0a, 0x05, 0x74, 0x6f, 0x55, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, - 0x6f, 0x55, 0x69, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x6d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, - 0x0a, 0x06, 0x6d, 0x73, 0x67, 0x53, 0x65, 0x71, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, - 0x6d, 0x73, 0x67, 0x53, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x73, 0x67, 0x55, 0x69, 0x64, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6d, 0x73, 0x67, 0x55, 0x69, 0x64, 0x12, 0x10, - 0x0a, 0x03, 0x73, 0x69, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x73, 0x69, 0x67, - 0x22, 0x6d, 0x0a, 0x0d, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x4d, 0x73, 0x67, 0x42, 0x6f, 0x64, - 0x79, 0x12, 0x3a, 0x0a, 0x0c, 0x6f, 0x70, 0x74, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x63, 0x61, 0x6c, - 0x6c, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x52, 0x65, 0x63, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x52, - 0x0c, 0x6f, 0x70, 0x74, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x63, 0x61, 0x6c, 0x6c, 0x12, 0x20, 0x0a, - 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0d, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x22, - 0xff, 0x01, 0x0a, 0x15, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x63, 0x61, 0x6c, - 0x6c, 0x52, 0x65, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x6e, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x75, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x6e, - 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x6e, - 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3e, 0x0a, 0x0f, 0x72, 0x65, 0x63, 0x61, 0x6c, - 0x6c, 0x65, 0x64, 0x4d, 0x73, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x14, 0x2e, 0x52, 0x65, 0x63, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x0f, 0x72, 0x65, 0x63, 0x61, 0x6c, 0x6c, 0x65, 0x64, - 0x4d, 0x73, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x72, 0x65, 0x6d, 0x69, 0x6e, - 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, - 0x52, 0x0f, 0x72, 0x65, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, - 0x74, 0x12, 0x18, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x64, 0x65, 0x66, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x0c, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x64, 0x65, 0x66, 0x12, 0x1c, 0x0a, 0x09, 0x67, - 0x72, 0x6f, 0x75, 0x70, 0x54, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, - 0x67, 0x72, 0x6f, 0x75, 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x70, 0x54, - 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6f, 0x70, 0x54, 0x79, 0x70, - 0x65, 0x22, 0xab, 0x01, 0x0a, 0x13, 0x52, 0x65, 0x63, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x4d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x65, 0x71, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x73, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x74, - 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12, - 0x1c, 0x0a, 0x09, 0x6d, 0x73, 0x67, 0x52, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x09, 0x6d, 0x73, 0x67, 0x52, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x12, 0x18, 0x0a, - 0x07, 0x6d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, - 0x6d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x73, 0x67, 0x46, 0x6c, - 0x61, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x6d, 0x73, 0x67, 0x46, 0x6c, 0x61, - 0x67, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x55, 0x69, 0x6e, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x55, 0x69, 0x6e, 0x22, - 0x19, 0x0a, 0x05, 0x53, 0x75, 0x62, 0x44, 0x34, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x6e, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x75, 0x69, 0x6e, 0x22, 0xa5, 0x01, 0x0a, 0x05, 0x53, - 0x75, 0x62, 0x38, 0x41, 0x12, 0x28, 0x0a, 0x08, 0x6d, 0x73, 0x67, 0x5f, 0x69, 0x6e, 0x66, 0x6f, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x53, 0x75, 0x62, 0x38, 0x41, 0x4d, 0x73, - 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x6d, 0x73, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x14, - 0x0a, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x61, - 0x70, 0x70, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x6e, 0x73, 0x74, 0x49, 0x64, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x69, 0x6e, 0x73, 0x74, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x0f, - 0x6c, 0x6f, 0x6e, 0x67, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x6c, 0x6f, 0x6e, 0x67, 0x4d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x64, 0x22, 0xf2, 0x01, 0x0a, 0x0c, 0x53, 0x75, 0x62, 0x38, 0x41, 0x4d, 0x73, 0x67, 0x49, - 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x72, 0x6f, 0x6d, 0x55, 0x69, 0x6e, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x66, 0x72, 0x6f, 0x6d, 0x55, 0x69, 0x6e, 0x12, 0x14, 0x0a, - 0x05, 0x74, 0x6f, 0x55, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, - 0x55, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x73, 0x67, 0x53, 0x65, 0x71, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x06, 0x6d, 0x73, 0x67, 0x53, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x6d, - 0x73, 0x67, 0x55, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6d, 0x73, 0x67, - 0x55, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x73, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x6d, 0x73, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1c, 0x0a, - 0x09, 0x6d, 0x73, 0x67, 0x52, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x09, 0x6d, 0x73, 0x67, 0x52, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x70, - 0x6b, 0x67, 0x4e, 0x75, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x70, 0x6b, 0x67, - 0x4e, 0x75, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6b, 0x67, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6b, 0x67, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, - 0x16, 0x0a, 0x06, 0x64, 0x65, 0x76, 0x53, 0x65, 0x71, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x06, 0x64, 0x65, 0x76, 0x53, 0x65, 0x71, 0x22, 0x59, 0x0a, 0x05, 0x53, 0x75, 0x62, 0x42, 0x33, - 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, - 0x74, 0x79, 0x70, 0x65, 0x12, 0x3c, 0x0a, 0x0f, 0x6d, 0x73, 0x67, 0x41, 0x64, 0x64, 0x46, 0x72, - 0x64, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, - 0x53, 0x75, 0x62, 0x42, 0x33, 0x41, 0x64, 0x64, 0x46, 0x72, 0x64, 0x4e, 0x6f, 0x74, 0x69, 0x66, - 0x79, 0x52, 0x0f, 0x6d, 0x73, 0x67, 0x41, 0x64, 0x64, 0x46, 0x72, 0x64, 0x4e, 0x6f, 0x74, 0x69, - 0x66, 0x79, 0x22, 0x39, 0x0a, 0x11, 0x53, 0x75, 0x62, 0x42, 0x33, 0x41, 0x64, 0x64, 0x46, 0x72, - 0x64, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x6e, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x75, 0x69, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x69, 0x63, - 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x69, 0x63, 0x6b, 0x42, 0x06, 0x5a, - 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6c, 0x65, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x65, 0x4d, 0x64, 0x35, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x66, 0x69, 0x6c, 0x65, 0x4d, 0x64, 0x35, 0x12, 0x16, + 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, + 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x61, 0x69, 0x6c, 0x4d, 0x73, + 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x66, 0x61, 0x69, 0x6c, 0x4d, 0x73, 0x67, + 0x12, 0x22, 0x0a, 0x0c, 0x62, 0x79, 0x74, 0x65, 0x73, 0x44, 0x6f, 0x77, 0x6e, 0x55, 0x72, 0x6c, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x62, 0x79, 0x74, 0x65, 0x73, 0x44, 0x6f, 0x77, + 0x6e, 0x55, 0x72, 0x6c, 0x12, 0x22, 0x0a, 0x0c, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x44, 0x6f, + 0x77, 0x6e, 0x49, 0x70, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0c, 0x75, 0x69, 0x6e, 0x74, + 0x33, 0x32, 0x44, 0x6f, 0x77, 0x6e, 0x49, 0x70, 0x12, 0x26, 0x0a, 0x0e, 0x75, 0x69, 0x6e, 0x74, + 0x33, 0x32, 0x44, 0x6f, 0x77, 0x6e, 0x50, 0x6f, 0x72, 0x74, 0x18, 0x07, 0x20, 0x03, 0x28, 0x05, + 0x52, 0x0e, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x44, 0x6f, 0x77, 0x6e, 0x50, 0x6f, 0x72, 0x74, + 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x6f, 0x77, 0x6e, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x64, 0x6f, 0x77, 0x6e, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, + 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x6f, 0x77, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x08, 0x64, 0x6f, 0x77, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x12, 0x22, 0x0a, 0x0c, + 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0b, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x52, 0x65, 0x74, 0x72, 0x79, 0x18, 0x0c, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x52, 0x65, 0x74, 0x72, 0x79, + 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x70, 0x36, 0x18, 0x1b, 0x20, + 0x01, 0x28, 0x0c, 0x52, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x70, 0x36, 0x12, 0x1c, + 0x0a, 0x09, 0x73, 0x74, 0x72, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x1c, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x73, 0x74, 0x72, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x22, 0xb6, 0x01, 0x0a, + 0x12, 0x52, 0x65, 0x71, 0x44, 0x61, 0x74, 0x61, 0x48, 0x69, 0x67, 0x68, 0x77, 0x61, 0x79, 0x48, + 0x65, 0x61, 0x64, 0x12, 0x32, 0x0a, 0x0b, 0x6d, 0x73, 0x67, 0x42, 0x61, 0x73, 0x65, 0x68, 0x65, + 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x48, + 0x69, 0x67, 0x68, 0x77, 0x61, 0x79, 0x48, 0x65, 0x61, 0x64, 0x52, 0x0b, 0x6d, 0x73, 0x67, 0x42, + 0x61, 0x73, 0x65, 0x68, 0x65, 0x61, 0x64, 0x12, 0x28, 0x0a, 0x0a, 0x6d, 0x73, 0x67, 0x53, 0x65, + 0x67, 0x68, 0x65, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x53, 0x65, + 0x67, 0x48, 0x65, 0x61, 0x64, 0x52, 0x0a, 0x6d, 0x73, 0x67, 0x53, 0x65, 0x67, 0x68, 0x65, 0x61, + 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x65, 0x71, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x69, 0x6e, + 0x66, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d, 0x72, 0x65, 0x71, 0x45, 0x78, 0x74, + 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0xda, 0x02, 0x0a, 0x12, 0x52, 0x73, 0x70, 0x44, 0x61, 0x74, + 0x61, 0x48, 0x69, 0x67, 0x68, 0x77, 0x61, 0x79, 0x48, 0x65, 0x61, 0x64, 0x12, 0x32, 0x0a, 0x0b, + 0x6d, 0x73, 0x67, 0x42, 0x61, 0x73, 0x65, 0x68, 0x65, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x10, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x48, 0x69, 0x67, 0x68, 0x77, 0x61, 0x79, 0x48, + 0x65, 0x61, 0x64, 0x52, 0x0b, 0x6d, 0x73, 0x67, 0x42, 0x61, 0x73, 0x65, 0x68, 0x65, 0x61, 0x64, + 0x12, 0x28, 0x0a, 0x0a, 0x6d, 0x73, 0x67, 0x53, 0x65, 0x67, 0x68, 0x65, 0x61, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x53, 0x65, 0x67, 0x48, 0x65, 0x61, 0x64, 0x52, 0x0a, + 0x6d, 0x73, 0x67, 0x53, 0x65, 0x67, 0x68, 0x65, 0x61, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x65, 0x72, + 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x65, + 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x6c, 0x6c, 0x6f, + 0x77, 0x52, 0x65, 0x74, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x61, 0x6c, + 0x6c, 0x6f, 0x77, 0x52, 0x65, 0x74, 0x72, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x61, 0x63, 0x68, + 0x65, 0x63, 0x6f, 0x73, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x63, 0x61, 0x63, + 0x68, 0x65, 0x63, 0x6f, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x74, 0x63, 0x6f, 0x73, 0x74, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x68, 0x74, 0x63, 0x6f, 0x73, 0x74, 0x12, 0x24, + 0x0a, 0x0d, 0x72, 0x73, 0x70, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x66, 0x6f, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d, 0x72, 0x73, 0x70, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, + 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x69, 0x73, 0x52, 0x65, + 0x73, 0x65, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x69, 0x73, 0x52, 0x65, 0x73, + 0x65, 0x74, 0x22, 0x91, 0x02, 0x0a, 0x0f, 0x44, 0x61, 0x74, 0x61, 0x48, 0x69, 0x67, 0x68, 0x77, + 0x61, 0x79, 0x48, 0x65, 0x61, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, + 0x69, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x10, 0x0a, 0x03, + 0x73, 0x65, 0x71, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x73, 0x65, 0x71, 0x12, 0x1e, + 0x0a, 0x0a, 0x72, 0x65, 0x74, 0x72, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0a, 0x72, 0x65, 0x74, 0x72, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x14, + 0x0a, 0x05, 0x61, 0x70, 0x70, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x61, + 0x70, 0x70, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x61, 0x74, 0x61, 0x66, 0x6c, 0x61, 0x67, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x66, 0x6c, 0x61, 0x67, + 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x49, 0x64, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x49, 0x64, 0x12, 0x1a, + 0x0a, 0x08, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x56, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x56, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, + 0x63, 0x61, 0x6c, 0x65, 0x49, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6c, 0x6f, + 0x63, 0x61, 0x6c, 0x65, 0x49, 0x64, 0x22, 0xe5, 0x02, 0x0a, 0x07, 0x53, 0x65, 0x67, 0x48, 0x65, + 0x61, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x69, 0x64, + 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x1e, 0x0a, 0x0a, + 0x64, 0x61, 0x74, 0x61, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x1e, 0x0a, 0x0a, + 0x64, 0x61, 0x74, 0x61, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x16, 0x0a, 0x06, + 0x72, 0x74, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x72, 0x74, + 0x63, 0x6f, 0x64, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x74, + 0x69, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x6c, + 0x61, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x12, 0x10, + 0x0a, 0x03, 0x6d, 0x64, 0x35, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x6d, 0x64, 0x35, + 0x12, 0x18, 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x65, 0x4d, 0x64, 0x35, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x07, 0x66, 0x69, 0x6c, 0x65, 0x4d, 0x64, 0x35, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x61, + 0x63, 0x68, 0x65, 0x41, 0x64, 0x64, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x63, + 0x61, 0x63, 0x68, 0x65, 0x41, 0x64, 0x64, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x69, 0x70, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x0d, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x69, 0x70, 0x22, 0xc5, + 0x04, 0x0a, 0x0b, 0x54, 0x72, 0x79, 0x55, 0x70, 0x49, 0x6d, 0x67, 0x52, 0x65, 0x71, 0x12, 0x1c, + 0x0a, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, + 0x73, 0x72, 0x63, 0x55, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x73, 0x72, + 0x63, 0x55, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, + 0x66, 0x69, 0x6c, 0x65, 0x4d, 0x64, 0x35, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x66, + 0x69, 0x6c, 0x65, 0x4d, 0x64, 0x35, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x69, + 0x7a, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x69, + 0x7a, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, + 0x0a, 0x07, 0x73, 0x72, 0x63, 0x54, 0x65, 0x72, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x07, 0x73, 0x72, 0x63, 0x54, 0x65, 0x72, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, + 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, + 0x62, 0x75, 0x54, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x62, 0x75, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x69, 0x63, 0x57, 0x69, 0x64, 0x74, 0x68, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x69, 0x63, 0x57, 0x69, 0x64, 0x74, 0x68, + 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x69, 0x63, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x0b, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x09, 0x70, 0x69, 0x63, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x18, + 0x0a, 0x07, 0x70, 0x69, 0x63, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x07, 0x70, 0x69, 0x63, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x62, 0x75, 0x69, 0x6c, + 0x64, 0x56, 0x65, 0x72, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x62, 0x75, 0x69, 0x6c, + 0x64, 0x56, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x49, 0x70, 0x18, + 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x49, 0x70, 0x12, 0x1e, + 0x0a, 0x0a, 0x61, 0x70, 0x70, 0x50, 0x69, 0x63, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0f, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0a, 0x61, 0x70, 0x70, 0x50, 0x69, 0x63, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, + 0x0a, 0x0b, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x50, 0x69, 0x63, 0x18, 0x10, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x0b, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x50, 0x69, 0x63, + 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x11, 0x20, + 0x01, 0x28, 0x0c, 0x52, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x16, + 0x0a, 0x06, 0x64, 0x73, 0x74, 0x55, 0x69, 0x6e, 0x18, 0x12, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, + 0x64, 0x73, 0x74, 0x55, 0x69, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x72, 0x76, 0x55, 0x70, 0x6c, + 0x6f, 0x61, 0x64, 0x18, 0x13, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x73, 0x72, 0x76, 0x55, 0x70, + 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, + 0x55, 0x72, 0x6c, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, + 0x66, 0x65, 0x72, 0x55, 0x72, 0x6c, 0x22, 0x94, 0x02, 0x0a, 0x0c, 0x54, 0x72, 0x79, 0x55, 0x70, + 0x49, 0x6d, 0x67, 0x52, 0x65, 0x73, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x65, 0x49, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x12, + 0x16, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x61, 0x69, 0x6c, 0x4d, + 0x73, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, 0x61, 0x69, 0x6c, 0x4d, 0x73, + 0x67, 0x12, 0x22, 0x0a, 0x0c, 0x62, 0x6f, 0x6f, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x45, 0x78, 0x69, + 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x62, 0x6f, 0x6f, 0x6c, 0x46, 0x69, 0x6c, + 0x65, 0x45, 0x78, 0x69, 0x74, 0x12, 0x28, 0x0a, 0x0a, 0x6d, 0x73, 0x67, 0x49, 0x6d, 0x67, 0x49, + 0x6e, 0x66, 0x6f, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x49, 0x6d, 0x67, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x6d, 0x73, 0x67, 0x49, 0x6d, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, + 0x1e, 0x0a, 0x0a, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x55, 0x70, 0x49, 0x70, 0x18, 0x06, 0x20, + 0x03, 0x28, 0x05, 0x52, 0x0a, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x55, 0x70, 0x49, 0x70, 0x12, + 0x22, 0x0a, 0x0c, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x55, 0x70, 0x50, 0x6f, 0x72, 0x74, 0x18, + 0x07, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0c, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x55, 0x70, 0x50, + 0x6f, 0x72, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x70, 0x55, 0x6b, 0x65, 0x79, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x0c, 0x52, 0x06, 0x75, 0x70, 0x55, 0x6b, 0x65, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x66, + 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x66, 0x69, 0x64, 0x22, 0xc9, 0x03, + 0x0a, 0x0b, 0x54, 0x72, 0x79, 0x55, 0x70, 0x50, 0x74, 0x74, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, + 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, + 0x72, 0x63, 0x55, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x73, 0x72, 0x63, + 0x55, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x66, + 0x69, 0x6c, 0x65, 0x4d, 0x64, 0x35, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x66, 0x69, + 0x6c, 0x65, 0x4d, 0x64, 0x35, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x69, 0x7a, + 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x69, 0x7a, + 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x0c, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, + 0x07, 0x73, 0x72, 0x63, 0x54, 0x65, 0x72, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, + 0x73, 0x72, 0x63, 0x54, 0x65, 0x72, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x70, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x62, + 0x75, 0x54, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x62, 0x75, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x56, 0x65, 0x72, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x56, 0x65, 0x72, 0x12, + 0x18, 0x0a, 0x07, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x49, 0x70, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x07, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x49, 0x70, 0x12, 0x20, 0x0a, 0x0b, 0x76, 0x6f, 0x69, + 0x63, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, + 0x76, 0x6f, 0x69, 0x63, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x24, 0x0a, 0x0d, 0x62, + 0x6f, 0x6f, 0x6c, 0x4e, 0x65, 0x77, 0x55, 0x70, 0x43, 0x68, 0x61, 0x6e, 0x18, 0x0d, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x0d, 0x62, 0x6f, 0x6f, 0x6c, 0x4e, 0x65, 0x77, 0x55, 0x70, 0x43, 0x68, 0x61, + 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x64, 0x65, 0x63, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x05, 0x63, 0x6f, 0x64, 0x65, 0x63, 0x12, 0x1c, 0x0a, 0x09, 0x76, 0x6f, 0x69, 0x63, 0x65, + 0x54, 0x79, 0x70, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x76, 0x6f, 0x69, 0x63, + 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x75, 0x49, 0x64, 0x18, 0x10, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x04, 0x62, 0x75, 0x49, 0x64, 0x22, 0xce, 0x02, 0x0a, 0x0c, 0x54, 0x72, + 0x79, 0x55, 0x70, 0x50, 0x74, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, + 0x6c, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x65, + 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x61, + 0x69, 0x6c, 0x4d, 0x73, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, 0x61, 0x69, + 0x6c, 0x4d, 0x73, 0x67, 0x12, 0x22, 0x0a, 0x0c, 0x62, 0x6f, 0x6f, 0x6c, 0x46, 0x69, 0x6c, 0x65, + 0x45, 0x78, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x62, 0x6f, 0x6f, 0x6c, + 0x46, 0x69, 0x6c, 0x65, 0x45, 0x78, 0x69, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x75, 0x69, 0x6e, 0x74, + 0x33, 0x32, 0x55, 0x70, 0x49, 0x70, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x75, 0x69, + 0x6e, 0x74, 0x33, 0x32, 0x55, 0x70, 0x49, 0x70, 0x12, 0x22, 0x0a, 0x0c, 0x75, 0x69, 0x6e, 0x74, + 0x33, 0x32, 0x55, 0x70, 0x50, 0x6f, 0x72, 0x74, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0c, + 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x55, 0x70, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x16, 0x0a, 0x06, + 0x75, 0x70, 0x55, 0x6b, 0x65, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x75, 0x70, + 0x55, 0x6b, 0x65, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x70, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x75, 0x70, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, + 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x18, + 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0c, 0x52, + 0x07, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x68, 0x61, 0x6e, + 0x6e, 0x65, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x63, + 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x22, 0x99, 0x01, 0x0a, 0x07, 0x49, + 0x6d, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x65, 0x4d, 0x64, + 0x35, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x66, 0x69, 0x6c, 0x65, 0x4d, 0x64, 0x35, + 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, + 0x66, 0x69, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, + 0x66, 0x69, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, + 0x57, 0x69, 0x64, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x6c, + 0x65, 0x57, 0x69, 0x64, 0x74, 0x68, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x6c, 0x65, 0x48, 0x65, + 0x69, 0x67, 0x68, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x6c, 0x65, + 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0x3a, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, + 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x69, 0x74, 0x65, + 0x6d, 0x73, 0x22, 0x99, 0x01, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x74, + 0x65, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x72, 0x6f, 0x6d, 0x55, 0x69, 0x6e, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x07, 0x66, 0x72, 0x6f, 0x6d, 0x55, 0x69, 0x6e, 0x12, 0x14, 0x0a, 0x05, + 0x74, 0x6f, 0x55, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x55, + 0x69, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x07, 0x6d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, + 0x6d, 0x73, 0x67, 0x53, 0x65, 0x71, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6d, 0x73, + 0x67, 0x53, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x73, 0x67, 0x55, 0x69, 0x64, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6d, 0x73, 0x67, 0x55, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, + 0x73, 0x69, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x73, 0x69, 0x67, 0x22, 0x6d, + 0x0a, 0x0d, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x4d, 0x73, 0x67, 0x42, 0x6f, 0x64, 0x79, 0x12, + 0x3a, 0x0a, 0x0c, 0x6f, 0x70, 0x74, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x63, 0x61, 0x6c, 0x6c, 0x18, + 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, + 0x65, 0x63, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x52, 0x0c, 0x6f, + 0x70, 0x74, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x63, 0x61, 0x6c, 0x6c, 0x12, 0x20, 0x0a, 0x0b, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x22, 0xff, 0x01, + 0x0a, 0x15, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x63, 0x61, 0x6c, 0x6c, 0x52, + 0x65, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x6e, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x75, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, + 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x6e, 0x69, 0x63, + 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3e, 0x0a, 0x0f, 0x72, 0x65, 0x63, 0x61, 0x6c, 0x6c, 0x65, + 0x64, 0x4d, 0x73, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, + 0x2e, 0x52, 0x65, 0x63, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x4d, 0x65, 0x74, 0x61, 0x52, 0x0f, 0x72, 0x65, 0x63, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x4d, 0x73, + 0x67, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x72, 0x65, 0x6d, 0x69, 0x6e, 0x64, 0x65, + 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, + 0x72, 0x65, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, + 0x18, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x64, 0x65, 0x66, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x64, 0x65, 0x66, 0x12, 0x1c, 0x0a, 0x09, 0x67, 0x72, 0x6f, + 0x75, 0x70, 0x54, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x67, 0x72, + 0x6f, 0x75, 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x70, 0x54, 0x79, 0x70, + 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6f, 0x70, 0x54, 0x79, 0x70, 0x65, 0x22, + 0xab, 0x01, 0x0a, 0x13, 0x52, 0x65, 0x63, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x65, 0x71, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x73, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x1c, 0x0a, + 0x09, 0x6d, 0x73, 0x67, 0x52, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x09, 0x6d, 0x73, 0x67, 0x52, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x6d, + 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x6d, 0x73, + 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x73, 0x67, 0x46, 0x6c, 0x61, 0x67, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x6d, 0x73, 0x67, 0x46, 0x6c, 0x61, 0x67, 0x12, + 0x1c, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x55, 0x69, 0x6e, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x55, 0x69, 0x6e, 0x22, 0x19, 0x0a, + 0x05, 0x53, 0x75, 0x62, 0x44, 0x34, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x6e, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x03, 0x75, 0x69, 0x6e, 0x22, 0xa5, 0x01, 0x0a, 0x05, 0x53, 0x75, 0x62, + 0x38, 0x41, 0x12, 0x28, 0x0a, 0x08, 0x6d, 0x73, 0x67, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x53, 0x75, 0x62, 0x38, 0x41, 0x4d, 0x73, 0x67, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x6d, 0x73, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x0a, 0x05, + 0x61, 0x70, 0x70, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x61, 0x70, 0x70, + 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x6e, 0x73, 0x74, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x06, 0x69, 0x6e, 0x73, 0x74, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x6c, 0x6f, + 0x6e, 0x67, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x0f, 0x6c, 0x6f, 0x6e, 0x67, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x46, 0x6c, 0x61, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, + 0x22, 0xf2, 0x01, 0x0a, 0x0c, 0x53, 0x75, 0x62, 0x38, 0x41, 0x4d, 0x73, 0x67, 0x49, 0x6e, 0x66, + 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x72, 0x6f, 0x6d, 0x55, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x07, 0x66, 0x72, 0x6f, 0x6d, 0x55, 0x69, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x74, + 0x6f, 0x55, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x55, 0x69, + 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x73, 0x67, 0x53, 0x65, 0x71, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x06, 0x6d, 0x73, 0x67, 0x53, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x73, 0x67, + 0x55, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6d, 0x73, 0x67, 0x55, 0x69, + 0x64, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x73, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x07, 0x6d, 0x73, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6d, + 0x73, 0x67, 0x52, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, + 0x6d, 0x73, 0x67, 0x52, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x6b, 0x67, + 0x4e, 0x75, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x70, 0x6b, 0x67, 0x4e, 0x75, + 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6b, 0x67, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6b, 0x67, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x16, 0x0a, + 0x06, 0x64, 0x65, 0x76, 0x53, 0x65, 0x71, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x64, + 0x65, 0x76, 0x53, 0x65, 0x71, 0x22, 0x59, 0x0a, 0x05, 0x53, 0x75, 0x62, 0x42, 0x33, 0x12, 0x12, + 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x74, 0x79, + 0x70, 0x65, 0x12, 0x3c, 0x0a, 0x0f, 0x6d, 0x73, 0x67, 0x41, 0x64, 0x64, 0x46, 0x72, 0x64, 0x4e, + 0x6f, 0x74, 0x69, 0x66, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x53, 0x75, + 0x62, 0x42, 0x33, 0x41, 0x64, 0x64, 0x46, 0x72, 0x64, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x52, + 0x0f, 0x6d, 0x73, 0x67, 0x41, 0x64, 0x64, 0x46, 0x72, 0x64, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, + 0x22, 0x39, 0x0a, 0x11, 0x53, 0x75, 0x62, 0x42, 0x33, 0x41, 0x64, 0x64, 0x46, 0x72, 0x64, 0x4e, + 0x6f, 0x74, 0x69, 0x66, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x03, 0x75, 0x69, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x69, 0x63, 0x6b, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x69, 0x63, 0x6b, 0x42, 0x06, 0x5a, 0x04, 0x2e, + 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2738,7 +3109,7 @@ func file_data_proto_rawDescGZIP() []byte { return file_data_proto_rawDescData } -var file_data_proto_msgTypes = make([]protoimpl.MessageInfo, 25) +var file_data_proto_msgTypes = make([]protoimpl.MessageInfo, 27) var file_data_proto_goTypes = []interface{}{ (*DeviceInfo)(nil), // 0: DeviceInfo (*RequestBody)(nil), // 1: RequestBody @@ -2746,47 +3117,51 @@ var file_data_proto_goTypes = []interface{}{ (*D50ReqBody)(nil), // 3: D50ReqBody (*D388ReqBody)(nil), // 4: D388ReqBody (*D388RespBody)(nil), // 5: D388RespBody - (*ReqDataHighwayHead)(nil), // 6: ReqDataHighwayHead - (*RspDataHighwayHead)(nil), // 7: RspDataHighwayHead - (*DataHighwayHead)(nil), // 8: DataHighwayHead - (*SegHead)(nil), // 9: SegHead - (*TryUpImgReq)(nil), // 10: TryUpImgReq - (*TryUpImgResp)(nil), // 11: TryUpImgResp - (*TryUpPttReq)(nil), // 12: TryUpPttReq - (*TryUpPttResp)(nil), // 13: TryUpPttResp - (*ImgInfo)(nil), // 14: ImgInfo - (*DeleteMessageRequest)(nil), // 15: DeleteMessageRequest - (*MessageItem)(nil), // 16: MessageItem - (*NotifyMsgBody)(nil), // 17: NotifyMsgBody - (*MessageRecallReminder)(nil), // 18: MessageRecallReminder - (*RecalledMessageMeta)(nil), // 19: RecalledMessageMeta - (*SubD4)(nil), // 20: SubD4 - (*Sub8A)(nil), // 21: Sub8A - (*Sub8AMsgInfo)(nil), // 22: Sub8AMsgInfo - (*SubB3)(nil), // 23: SubB3 - (*SubB3AddFrdNotify)(nil), // 24: SubB3AddFrdNotify + (*GetPttUrlReq)(nil), // 6: GetPttUrlReq + (*GetPttUrlRsp)(nil), // 7: GetPttUrlRsp + (*ReqDataHighwayHead)(nil), // 8: ReqDataHighwayHead + (*RspDataHighwayHead)(nil), // 9: RspDataHighwayHead + (*DataHighwayHead)(nil), // 10: DataHighwayHead + (*SegHead)(nil), // 11: SegHead + (*TryUpImgReq)(nil), // 12: TryUpImgReq + (*TryUpImgResp)(nil), // 13: TryUpImgResp + (*TryUpPttReq)(nil), // 14: TryUpPttReq + (*TryUpPttResp)(nil), // 15: TryUpPttResp + (*ImgInfo)(nil), // 16: ImgInfo + (*DeleteMessageRequest)(nil), // 17: DeleteMessageRequest + (*MessageItem)(nil), // 18: MessageItem + (*NotifyMsgBody)(nil), // 19: NotifyMsgBody + (*MessageRecallReminder)(nil), // 20: MessageRecallReminder + (*RecalledMessageMeta)(nil), // 21: RecalledMessageMeta + (*SubD4)(nil), // 22: SubD4 + (*Sub8A)(nil), // 23: Sub8A + (*Sub8AMsgInfo)(nil), // 24: Sub8AMsgInfo + (*SubB3)(nil), // 25: SubB3 + (*SubB3AddFrdNotify)(nil), // 26: SubB3AddFrdNotify } var file_data_proto_depIdxs = []int32{ 2, // 0: RequestBody.rpt_config_list:type_name -> ConfigSeq - 10, // 1: D388ReqBody.msgTryUpImgReq:type_name -> TryUpImgReq - 12, // 2: D388ReqBody.msgTryUpPttReq:type_name -> TryUpPttReq - 11, // 3: D388RespBody.msgTryUpImgRsp:type_name -> TryUpImgResp - 13, // 4: D388RespBody.msgTryUpPttRsp:type_name -> TryUpPttResp - 8, // 5: ReqDataHighwayHead.msgBasehead:type_name -> DataHighwayHead - 9, // 6: ReqDataHighwayHead.msgSeghead:type_name -> SegHead - 8, // 7: RspDataHighwayHead.msgBasehead:type_name -> DataHighwayHead - 9, // 8: RspDataHighwayHead.msgSeghead:type_name -> SegHead - 14, // 9: TryUpImgResp.msgImgInfo:type_name -> ImgInfo - 16, // 10: DeleteMessageRequest.items:type_name -> MessageItem - 18, // 11: NotifyMsgBody.optMsgRecall:type_name -> MessageRecallReminder - 19, // 12: MessageRecallReminder.recalledMsgList:type_name -> RecalledMessageMeta - 22, // 13: Sub8A.msg_info:type_name -> Sub8AMsgInfo - 24, // 14: SubB3.msgAddFrdNotify:type_name -> SubB3AddFrdNotify - 15, // [15:15] is the sub-list for method output_type - 15, // [15:15] is the sub-list for method input_type - 15, // [15:15] is the sub-list for extension type_name - 15, // [15:15] is the sub-list for extension extendee - 0, // [0:15] is the sub-list for field type_name + 12, // 1: D388ReqBody.msgTryUpImgReq:type_name -> TryUpImgReq + 14, // 2: D388ReqBody.msgTryUpPttReq:type_name -> TryUpPttReq + 6, // 3: D388ReqBody.msgGetPttReq:type_name -> GetPttUrlReq + 13, // 4: D388RespBody.msgTryUpImgRsp:type_name -> TryUpImgResp + 15, // 5: D388RespBody.msgTryUpPttRsp:type_name -> TryUpPttResp + 7, // 6: D388RespBody.msgGetPttUrlRsp:type_name -> GetPttUrlRsp + 10, // 7: ReqDataHighwayHead.msgBasehead:type_name -> DataHighwayHead + 11, // 8: ReqDataHighwayHead.msgSeghead:type_name -> SegHead + 10, // 9: RspDataHighwayHead.msgBasehead:type_name -> DataHighwayHead + 11, // 10: RspDataHighwayHead.msgSeghead:type_name -> SegHead + 16, // 11: TryUpImgResp.msgImgInfo:type_name -> ImgInfo + 18, // 12: DeleteMessageRequest.items:type_name -> MessageItem + 20, // 13: NotifyMsgBody.optMsgRecall:type_name -> MessageRecallReminder + 21, // 14: MessageRecallReminder.recalledMsgList:type_name -> RecalledMessageMeta + 24, // 15: Sub8A.msg_info:type_name -> Sub8AMsgInfo + 26, // 16: SubB3.msgAddFrdNotify:type_name -> SubB3AddFrdNotify + 17, // [17:17] is the sub-list for method output_type + 17, // [17:17] is the sub-list for method input_type + 17, // [17:17] is the sub-list for extension type_name + 17, // [17:17] is the sub-list for extension extendee + 0, // [0:17] is the sub-list for field type_name } func init() { file_data_proto_init() } @@ -2868,7 +3243,7 @@ func file_data_proto_init() { } } file_data_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReqDataHighwayHead); i { + switch v := v.(*GetPttUrlReq); i { case 0: return &v.state case 1: @@ -2880,7 +3255,7 @@ func file_data_proto_init() { } } file_data_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RspDataHighwayHead); i { + switch v := v.(*GetPttUrlRsp); i { case 0: return &v.state case 1: @@ -2892,7 +3267,7 @@ func file_data_proto_init() { } } file_data_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DataHighwayHead); i { + switch v := v.(*ReqDataHighwayHead); i { case 0: return &v.state case 1: @@ -2904,7 +3279,7 @@ func file_data_proto_init() { } } file_data_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SegHead); i { + switch v := v.(*RspDataHighwayHead); i { case 0: return &v.state case 1: @@ -2916,7 +3291,7 @@ func file_data_proto_init() { } } file_data_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TryUpImgReq); i { + switch v := v.(*DataHighwayHead); i { case 0: return &v.state case 1: @@ -2928,7 +3303,7 @@ func file_data_proto_init() { } } file_data_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TryUpImgResp); i { + switch v := v.(*SegHead); i { case 0: return &v.state case 1: @@ -2940,7 +3315,7 @@ func file_data_proto_init() { } } file_data_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TryUpPttReq); i { + switch v := v.(*TryUpImgReq); i { case 0: return &v.state case 1: @@ -2952,7 +3327,7 @@ func file_data_proto_init() { } } file_data_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TryUpPttResp); i { + switch v := v.(*TryUpImgResp); i { case 0: return &v.state case 1: @@ -2964,7 +3339,7 @@ func file_data_proto_init() { } } file_data_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ImgInfo); i { + switch v := v.(*TryUpPttReq); i { case 0: return &v.state case 1: @@ -2976,7 +3351,7 @@ func file_data_proto_init() { } } file_data_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteMessageRequest); i { + switch v := v.(*TryUpPttResp); i { case 0: return &v.state case 1: @@ -2988,7 +3363,7 @@ func file_data_proto_init() { } } file_data_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MessageItem); i { + switch v := v.(*ImgInfo); i { case 0: return &v.state case 1: @@ -3000,7 +3375,7 @@ func file_data_proto_init() { } } file_data_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NotifyMsgBody); i { + switch v := v.(*DeleteMessageRequest); i { case 0: return &v.state case 1: @@ -3012,7 +3387,7 @@ func file_data_proto_init() { } } file_data_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MessageRecallReminder); i { + switch v := v.(*MessageItem); i { case 0: return &v.state case 1: @@ -3024,7 +3399,7 @@ func file_data_proto_init() { } } file_data_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RecalledMessageMeta); i { + switch v := v.(*NotifyMsgBody); i { case 0: return &v.state case 1: @@ -3036,7 +3411,7 @@ func file_data_proto_init() { } } file_data_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubD4); i { + switch v := v.(*MessageRecallReminder); i { case 0: return &v.state case 1: @@ -3048,7 +3423,7 @@ func file_data_proto_init() { } } file_data_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Sub8A); i { + switch v := v.(*RecalledMessageMeta); i { case 0: return &v.state case 1: @@ -3060,7 +3435,7 @@ func file_data_proto_init() { } } file_data_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Sub8AMsgInfo); i { + switch v := v.(*SubD4); i { case 0: return &v.state case 1: @@ -3072,7 +3447,7 @@ func file_data_proto_init() { } } file_data_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubB3); i { + switch v := v.(*Sub8A); i { case 0: return &v.state case 1: @@ -3084,6 +3459,30 @@ func file_data_proto_init() { } } file_data_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Sub8AMsgInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_data_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SubB3); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_data_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SubB3AddFrdNotify); i { case 0: return &v.state @@ -3102,7 +3501,7 @@ func file_data_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_data_proto_rawDesc, NumEnums: 0, - NumMessages: 25, + NumMessages: 27, NumExtensions: 0, NumServices: 0, }, diff --git a/client/pb/data.proto b/client/pb/data.proto index cf30cd1f..a462016d 100644 --- a/client/pb/data.proto +++ b/client/pb/data.proto @@ -43,6 +43,7 @@ message D388ReqBody { int32 subcmd = 2; repeated TryUpImgReq msgTryUpImgReq = 3; repeated TryUpPttReq msgTryUpPttReq = 5; + repeated GetPttUrlReq msgGetPttReq = 6; int32 commandId = 7; bytes extension = 1001; } @@ -52,6 +53,43 @@ message D388RespBody { int32 subCmd = 2; repeated TryUpImgResp msgTryUpImgRsp = 3; repeated TryUpPttResp msgTryUpPttRsp = 5; + repeated GetPttUrlRsp msgGetPttUrlRsp = 6; +} + +message GetPttUrlReq { + int64 groupCode = 1; + int64 dstUin = 2; + int64 fileId = 3; + bytes fileMd5 = 4; + int32 reqTerm = 5; + int32 reqPlatformType = 6; + int32 innerIp = 7; + int32 buType = 8; + bytes buildVer = 9; + //int64 fileId = 10; + bytes fileKey = 11; + int32 codec = 12; + int32 buId = 13; + int32 reqTransferType = 14; + int32 isAuto = 15; +} + +message GetPttUrlRsp { + int64 fileId = 1; + bytes fileMd5 = 2; + int32 result = 3; + bytes failMsg = 4; + bytes bytesDownUrl = 5; + repeated int32 uint32DownIp = 6; + repeated int32 uint32DownPort = 7; + bytes downDomain = 8; + bytes downPara = 9; + //int64 fileId = 10; + int32 transferType = 11; + int32 allowRetry = 12; + //repeated IPv6Info msgDownIp6 = 26; + bytes clientIp6 = 27; + string strDomain = 28; } message ReqDataHighwayHead { @@ -210,7 +248,7 @@ message MessageRecallReminder { bytes userdef = 5; int32 groupType = 6; int32 opType = 7; - + } message RecalledMessageMeta { @@ -219,7 +257,7 @@ message RecalledMessageMeta { int32 msgRandom = 3; int32 msgType = 4; int32 msgFlag = 5; - int64 authorUin = 6; + int64 authorUin = 6; } message SubD4 { diff --git a/message/elements.go b/message/elements.go index a9139b63..a49b7824 100644 --- a/message/elements.go +++ b/message/elements.go @@ -26,10 +26,10 @@ type GroupImageElement struct { } type VoiceElement struct { - Name string - Md5 []byte - Size int32 - DownloadPara string + Name string + Md5 []byte + Size int32 + Url string // --- sending --- Data []byte