// Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.25.0 // protoc v3.11.4 // source: msg.proto package msg import ( proto "github.com/golang/protobuf/proto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" sync "sync" ) const ( // Verify that this generated code is sufficiently up-to-date. _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) // Verify that runtime/protoimpl is sufficiently up-to-date. _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) // This is a compile-time assertion that a sufficiently up-to-date version // of the legacy proto package is being used. const _ = proto.ProtoPackageIsVersion4 type SyncFlag int32 const ( SyncFlag_START SyncFlag = 0 SyncFlag_CONTINUME SyncFlag = 1 SyncFlag_STOP SyncFlag = 2 ) // Enum value maps for SyncFlag. var ( SyncFlag_name = map[int32]string{ 0: "START", 1: "CONTINUME", 2: "STOP", } SyncFlag_value = map[string]int32{ "START": 0, "CONTINUME": 1, "STOP": 2, } ) func (x SyncFlag) Enum() *SyncFlag { p := new(SyncFlag) *p = x return p } func (x SyncFlag) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (SyncFlag) Descriptor() protoreflect.EnumDescriptor { return file_msg_proto_enumTypes[0].Descriptor() } func (SyncFlag) Type() protoreflect.EnumType { return &file_msg_proto_enumTypes[0] } func (x SyncFlag) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use SyncFlag.Descriptor instead. func (SyncFlag) EnumDescriptor() ([]byte, []int) { return file_msg_proto_rawDescGZIP(), []int{0} } type GetMessageRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields SyncFlag SyncFlag `protobuf:"varint,1,opt,name=syncFlag,proto3,enum=SyncFlag" json:"syncFlag,omitempty"` SyncCookie []byte `protobuf:"bytes,2,opt,name=syncCookie,proto3" json:"syncCookie,omitempty"` RambleFlag int32 `protobuf:"varint,3,opt,name=rambleFlag,proto3" json:"rambleFlag,omitempty"` LatestRambleNumber int32 `protobuf:"varint,4,opt,name=latestRambleNumber,proto3" json:"latestRambleNumber,omitempty"` OtherRambleNumber int32 `protobuf:"varint,5,opt,name=otherRambleNumber,proto3" json:"otherRambleNumber,omitempty"` OnlineSyncFlag int32 `protobuf:"varint,6,opt,name=onlineSyncFlag,proto3" json:"onlineSyncFlag,omitempty"` ContextFlag int32 `protobuf:"varint,7,opt,name=contextFlag,proto3" json:"contextFlag,omitempty"` WhisperSessionId int32 `protobuf:"varint,8,opt,name=whisperSessionId,proto3" json:"whisperSessionId,omitempty"` MsgReqType int32 `protobuf:"varint,9,opt,name=msgReqType,proto3" json:"msgReqType,omitempty"` PubaccountCookie []byte `protobuf:"bytes,10,opt,name=pubaccountCookie,proto3" json:"pubaccountCookie,omitempty"` MsgCtrlBuf []byte `protobuf:"bytes,11,opt,name=msgCtrlBuf,proto3" json:"msgCtrlBuf,omitempty"` ServerBuf []byte `protobuf:"bytes,12,opt,name=serverBuf,proto3" json:"serverBuf,omitempty"` } func (x *GetMessageRequest) Reset() { *x = GetMessageRequest{} if protoimpl.UnsafeEnabled { mi := &file_msg_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetMessageRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetMessageRequest) ProtoMessage() {} func (x *GetMessageRequest) ProtoReflect() protoreflect.Message { mi := &file_msg_proto_msgTypes[0] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetMessageRequest.ProtoReflect.Descriptor instead. func (*GetMessageRequest) Descriptor() ([]byte, []int) { return file_msg_proto_rawDescGZIP(), []int{0} } func (x *GetMessageRequest) GetSyncFlag() SyncFlag { if x != nil { return x.SyncFlag } return SyncFlag_START } func (x *GetMessageRequest) GetSyncCookie() []byte { if x != nil { return x.SyncCookie } return nil } func (x *GetMessageRequest) GetRambleFlag() int32 { if x != nil { return x.RambleFlag } return 0 } func (x *GetMessageRequest) GetLatestRambleNumber() int32 { if x != nil { return x.LatestRambleNumber } return 0 } func (x *GetMessageRequest) GetOtherRambleNumber() int32 { if x != nil { return x.OtherRambleNumber } return 0 } func (x *GetMessageRequest) GetOnlineSyncFlag() int32 { if x != nil { return x.OnlineSyncFlag } return 0 } func (x *GetMessageRequest) GetContextFlag() int32 { if x != nil { return x.ContextFlag } return 0 } func (x *GetMessageRequest) GetWhisperSessionId() int32 { if x != nil { return x.WhisperSessionId } return 0 } func (x *GetMessageRequest) GetMsgReqType() int32 { if x != nil { return x.MsgReqType } return 0 } func (x *GetMessageRequest) GetPubaccountCookie() []byte { if x != nil { return x.PubaccountCookie } return nil } func (x *GetMessageRequest) GetMsgCtrlBuf() []byte { if x != nil { return x.MsgCtrlBuf } return nil } func (x *GetMessageRequest) GetServerBuf() []byte { if x != nil { return x.ServerBuf } return nil } type SendMessageRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields RoutingHead *RoutingHead `protobuf:"bytes,1,opt,name=routingHead,proto3" json:"routingHead,omitempty"` ContentHead *ContentHead `protobuf:"bytes,2,opt,name=contentHead,proto3" json:"contentHead,omitempty"` MsgBody *MessageBody `protobuf:"bytes,3,opt,name=msgBody,proto3" json:"msgBody,omitempty"` MsgSeq int32 `protobuf:"varint,4,opt,name=msgSeq,proto3" json:"msgSeq,omitempty"` MsgRand int32 `protobuf:"varint,5,opt,name=msgRand,proto3" json:"msgRand,omitempty"` SyncCookie []byte `protobuf:"bytes,6,opt,name=syncCookie,proto3" json:"syncCookie,omitempty"` //MsgComm.AppShareInfo? appShare = 7; MsgVia int32 `protobuf:"varint,8,opt,name=msgVia,proto3" json:"msgVia,omitempty"` DataStatist int32 `protobuf:"varint,9,opt,name=dataStatist,proto3" json:"dataStatist,omitempty"` //MultiMsgAssist? multiMsgAssist = 10; //PbInputNotifyInfo? inputNotifyInfo = 11; MsgCtrl *MsgCtrl `protobuf:"bytes,12,opt,name=msgCtrl,proto3" json:"msgCtrl,omitempty"` //ImReceipt.ReceiptReq? receiptReq = 13; MultiSendSeq int32 `protobuf:"varint,14,opt,name=multiSendSeq,proto3" json:"multiSendSeq,omitempty"` } func (x *SendMessageRequest) Reset() { *x = SendMessageRequest{} if protoimpl.UnsafeEnabled { mi := &file_msg_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SendMessageRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*SendMessageRequest) ProtoMessage() {} func (x *SendMessageRequest) ProtoReflect() protoreflect.Message { mi := &file_msg_proto_msgTypes[1] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SendMessageRequest.ProtoReflect.Descriptor instead. func (*SendMessageRequest) Descriptor() ([]byte, []int) { return file_msg_proto_rawDescGZIP(), []int{1} } func (x *SendMessageRequest) GetRoutingHead() *RoutingHead { if x != nil { return x.RoutingHead } return nil } func (x *SendMessageRequest) GetContentHead() *ContentHead { if x != nil { return x.ContentHead } return nil } func (x *SendMessageRequest) GetMsgBody() *MessageBody { if x != nil { return x.MsgBody } return nil } func (x *SendMessageRequest) GetMsgSeq() int32 { if x != nil { return x.MsgSeq } return 0 } func (x *SendMessageRequest) GetMsgRand() int32 { if x != nil { return x.MsgRand } return 0 } func (x *SendMessageRequest) GetSyncCookie() []byte { if x != nil { return x.SyncCookie } return nil } func (x *SendMessageRequest) GetMsgVia() int32 { if x != nil { return x.MsgVia } return 0 } func (x *SendMessageRequest) GetDataStatist() int32 { if x != nil { return x.DataStatist } return 0 } func (x *SendMessageRequest) GetMsgCtrl() *MsgCtrl { if x != nil { return x.MsgCtrl } return nil } func (x *SendMessageRequest) GetMultiSendSeq() int32 { if x != nil { return x.MultiSendSeq } return 0 } type SendMessageResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Result int32 `protobuf:"varint,1,opt,name=result,proto3" json:"result,omitempty"` ErrMsg string `protobuf:"bytes,2,opt,name=errMsg,proto3" json:"errMsg,omitempty"` } func (x *SendMessageResponse) Reset() { *x = SendMessageResponse{} if protoimpl.UnsafeEnabled { mi := &file_msg_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SendMessageResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*SendMessageResponse) ProtoMessage() {} func (x *SendMessageResponse) ProtoReflect() protoreflect.Message { mi := &file_msg_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SendMessageResponse.ProtoReflect.Descriptor instead. func (*SendMessageResponse) Descriptor() ([]byte, []int) { return file_msg_proto_rawDescGZIP(), []int{2} } func (x *SendMessageResponse) GetResult() int32 { if x != nil { return x.Result } return 0 } func (x *SendMessageResponse) GetErrMsg() string { if x != nil { return x.ErrMsg } return "" } type MsgWithDrawReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields C2CWithDraw []*C2CMsgWithDrawReq `protobuf:"bytes,1,rep,name=c2cWithDraw,proto3" json:"c2cWithDraw,omitempty"` GroupWithDraw []*GroupMsgWithDrawReq `protobuf:"bytes,2,rep,name=groupWithDraw,proto3" json:"groupWithDraw,omitempty"` } func (x *MsgWithDrawReq) Reset() { *x = MsgWithDrawReq{} if protoimpl.UnsafeEnabled { mi := &file_msg_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *MsgWithDrawReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*MsgWithDrawReq) ProtoMessage() {} func (x *MsgWithDrawReq) ProtoReflect() protoreflect.Message { mi := &file_msg_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use MsgWithDrawReq.ProtoReflect.Descriptor instead. func (*MsgWithDrawReq) Descriptor() ([]byte, []int) { return file_msg_proto_rawDescGZIP(), []int{3} } func (x *MsgWithDrawReq) GetC2CWithDraw() []*C2CMsgWithDrawReq { if x != nil { return x.C2CWithDraw } return nil } func (x *MsgWithDrawReq) GetGroupWithDraw() []*GroupMsgWithDrawReq { if x != nil { return x.GroupWithDraw } return nil } type C2CMsgWithDrawReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields MsgInfo []*C2CMsgInfo `protobuf:"bytes,1,rep,name=msgInfo,proto3" json:"msgInfo,omitempty"` LongMessageFlag int32 `protobuf:"varint,2,opt,name=longMessageFlag,proto3" json:"longMessageFlag,omitempty"` Reserved []byte `protobuf:"bytes,3,opt,name=reserved,proto3" json:"reserved,omitempty"` SubCmd int32 `protobuf:"varint,4,opt,name=subCmd,proto3" json:"subCmd,omitempty"` } func (x *C2CMsgWithDrawReq) Reset() { *x = C2CMsgWithDrawReq{} if protoimpl.UnsafeEnabled { mi := &file_msg_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *C2CMsgWithDrawReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*C2CMsgWithDrawReq) ProtoMessage() {} func (x *C2CMsgWithDrawReq) ProtoReflect() protoreflect.Message { mi := &file_msg_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use C2CMsgWithDrawReq.ProtoReflect.Descriptor instead. func (*C2CMsgWithDrawReq) Descriptor() ([]byte, []int) { return file_msg_proto_rawDescGZIP(), []int{4} } func (x *C2CMsgWithDrawReq) GetMsgInfo() []*C2CMsgInfo { if x != nil { return x.MsgInfo } return nil } func (x *C2CMsgWithDrawReq) GetLongMessageFlag() int32 { if x != nil { return x.LongMessageFlag } return 0 } func (x *C2CMsgWithDrawReq) GetReserved() []byte { if x != nil { return x.Reserved } return nil } func (x *C2CMsgWithDrawReq) GetSubCmd() int32 { if x != nil { return x.SubCmd } return 0 } type GroupMsgWithDrawReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields SubCmd int32 `protobuf:"varint,1,opt,name=subCmd,proto3" json:"subCmd,omitempty"` GroupType int32 `protobuf:"varint,2,opt,name=groupType,proto3" json:"groupType,omitempty"` GroupCode int64 `protobuf:"varint,3,opt,name=groupCode,proto3" json:"groupCode,omitempty"` MsgList []*GroupMsgInfo `protobuf:"bytes,4,rep,name=msgList,proto3" json:"msgList,omitempty"` UserDef []byte `protobuf:"bytes,5,opt,name=userDef,proto3" json:"userDef,omitempty"` } func (x *GroupMsgWithDrawReq) Reset() { *x = GroupMsgWithDrawReq{} if protoimpl.UnsafeEnabled { mi := &file_msg_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GroupMsgWithDrawReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*GroupMsgWithDrawReq) ProtoMessage() {} func (x *GroupMsgWithDrawReq) ProtoReflect() protoreflect.Message { mi := &file_msg_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GroupMsgWithDrawReq.ProtoReflect.Descriptor instead. func (*GroupMsgWithDrawReq) Descriptor() ([]byte, []int) { return file_msg_proto_rawDescGZIP(), []int{5} } func (x *GroupMsgWithDrawReq) GetSubCmd() int32 { if x != nil { return x.SubCmd } return 0 } func (x *GroupMsgWithDrawReq) GetGroupType() int32 { if x != nil { return x.GroupType } return 0 } func (x *GroupMsgWithDrawReq) GetGroupCode() int64 { if x != nil { return x.GroupCode } return 0 } func (x *GroupMsgWithDrawReq) GetMsgList() []*GroupMsgInfo { if x != nil { return x.MsgList } return nil } func (x *GroupMsgWithDrawReq) GetUserDef() []byte { if x != nil { return x.UserDef } return nil } type GroupMsgInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields MsgSeq int32 `protobuf:"varint,1,opt,name=msgSeq,proto3" json:"msgSeq,omitempty"` MsgRandom int32 `protobuf:"varint,2,opt,name=msgRandom,proto3" json:"msgRandom,omitempty"` MsgType int32 `protobuf:"varint,3,opt,name=msgType,proto3" json:"msgType,omitempty"` } func (x *GroupMsgInfo) Reset() { *x = GroupMsgInfo{} if protoimpl.UnsafeEnabled { mi := &file_msg_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GroupMsgInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*GroupMsgInfo) ProtoMessage() {} func (x *GroupMsgInfo) ProtoReflect() protoreflect.Message { mi := &file_msg_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 GroupMsgInfo.ProtoReflect.Descriptor instead. func (*GroupMsgInfo) Descriptor() ([]byte, []int) { return file_msg_proto_rawDescGZIP(), []int{6} } func (x *GroupMsgInfo) GetMsgSeq() int32 { if x != nil { return x.MsgSeq } return 0 } func (x *GroupMsgInfo) GetMsgRandom() int32 { if x != nil { return x.MsgRandom } return 0 } func (x *GroupMsgInfo) GetMsgType() int32 { if x != nil { return x.MsgType } return 0 } type C2CMsgInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields FromUin int64 `protobuf:"varint,1,opt,name=fromUin,proto3" json:"fromUin,omitempty"` ToUin int64 `protobuf:"varint,2,opt,name=toUin,proto3" json:"toUin,omitempty"` MsgSeq int32 `protobuf:"varint,3,opt,name=msgSeq,proto3" json:"msgSeq,omitempty"` MsgUid int64 `protobuf:"varint,4,opt,name=msgUid,proto3" json:"msgUid,omitempty"` MsgTime int64 `protobuf:"varint,5,opt,name=msgTime,proto3" json:"msgTime,omitempty"` MsgRandom int32 `protobuf:"varint,6,opt,name=msgRandom,proto3" json:"msgRandom,omitempty"` PkgNum int32 `protobuf:"varint,7,opt,name=pkgNum,proto3" json:"pkgNum,omitempty"` PkgIndex int32 `protobuf:"varint,8,opt,name=pkgIndex,proto3" json:"pkgIndex,omitempty"` DivSeq int32 `protobuf:"varint,9,opt,name=divSeq,proto3" json:"divSeq,omitempty"` MsgType int32 `protobuf:"varint,10,opt,name=msgType,proto3" json:"msgType,omitempty"` RoutingHead *RoutingHead `protobuf:"bytes,20,opt,name=routingHead,proto3" json:"routingHead,omitempty"` } func (x *C2CMsgInfo) Reset() { *x = C2CMsgInfo{} if protoimpl.UnsafeEnabled { mi := &file_msg_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *C2CMsgInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*C2CMsgInfo) ProtoMessage() {} func (x *C2CMsgInfo) ProtoReflect() protoreflect.Message { mi := &file_msg_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 C2CMsgInfo.ProtoReflect.Descriptor instead. func (*C2CMsgInfo) Descriptor() ([]byte, []int) { return file_msg_proto_rawDescGZIP(), []int{7} } func (x *C2CMsgInfo) GetFromUin() int64 { if x != nil { return x.FromUin } return 0 } func (x *C2CMsgInfo) GetToUin() int64 { if x != nil { return x.ToUin } return 0 } func (x *C2CMsgInfo) GetMsgSeq() int32 { if x != nil { return x.MsgSeq } return 0 } func (x *C2CMsgInfo) GetMsgUid() int64 { if x != nil { return x.MsgUid } return 0 } func (x *C2CMsgInfo) GetMsgTime() int64 { if x != nil { return x.MsgTime } return 0 } func (x *C2CMsgInfo) GetMsgRandom() int32 { if x != nil { return x.MsgRandom } return 0 } func (x *C2CMsgInfo) GetPkgNum() int32 { if x != nil { return x.PkgNum } return 0 } func (x *C2CMsgInfo) GetPkgIndex() int32 { if x != nil { return x.PkgIndex } return 0 } func (x *C2CMsgInfo) GetDivSeq() int32 { if x != nil { return x.DivSeq } return 0 } func (x *C2CMsgInfo) GetMsgType() int32 { if x != nil { return x.MsgType } return 0 } func (x *C2CMsgInfo) GetRoutingHead() *RoutingHead { if x != nil { return x.RoutingHead } return nil } type RoutingHead struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields C2C *C2C `protobuf:"bytes,1,opt,name=c2c,proto3" json:"c2c,omitempty"` Grp *Grp `protobuf:"bytes,2,opt,name=grp,proto3" json:"grp,omitempty"` GrpTmp *GrpTmp `protobuf:"bytes,3,opt,name=grpTmp,proto3" json:"grpTmp,omitempty"` } func (x *RoutingHead) Reset() { *x = RoutingHead{} if protoimpl.UnsafeEnabled { mi := &file_msg_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *RoutingHead) String() string { return protoimpl.X.MessageStringOf(x) } func (*RoutingHead) ProtoMessage() {} func (x *RoutingHead) ProtoReflect() protoreflect.Message { mi := &file_msg_proto_msgTypes[8] 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 RoutingHead.ProtoReflect.Descriptor instead. func (*RoutingHead) Descriptor() ([]byte, []int) { return file_msg_proto_rawDescGZIP(), []int{8} } func (x *RoutingHead) GetC2C() *C2C { if x != nil { return x.C2C } return nil } func (x *RoutingHead) GetGrp() *Grp { if x != nil { return x.Grp } return nil } func (x *RoutingHead) GetGrpTmp() *GrpTmp { if x != nil { return x.GrpTmp } return nil } type C2C struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ToUin int64 `protobuf:"varint,1,opt,name=toUin,proto3" json:"toUin,omitempty"` } func (x *C2C) Reset() { *x = C2C{} if protoimpl.UnsafeEnabled { mi := &file_msg_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *C2C) String() string { return protoimpl.X.MessageStringOf(x) } func (*C2C) ProtoMessage() {} func (x *C2C) ProtoReflect() protoreflect.Message { mi := &file_msg_proto_msgTypes[9] 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 C2C.ProtoReflect.Descriptor instead. func (*C2C) Descriptor() ([]byte, []int) { return file_msg_proto_rawDescGZIP(), []int{9} } func (x *C2C) GetToUin() int64 { if x != nil { return x.ToUin } return 0 } type Grp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields GroupCode int64 `protobuf:"varint,1,opt,name=groupCode,proto3" json:"groupCode,omitempty"` } func (x *Grp) Reset() { *x = Grp{} if protoimpl.UnsafeEnabled { mi := &file_msg_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Grp) String() string { return protoimpl.X.MessageStringOf(x) } func (*Grp) ProtoMessage() {} func (x *Grp) ProtoReflect() protoreflect.Message { mi := &file_msg_proto_msgTypes[10] 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 Grp.ProtoReflect.Descriptor instead. func (*Grp) Descriptor() ([]byte, []int) { return file_msg_proto_rawDescGZIP(), []int{10} } func (x *Grp) GetGroupCode() int64 { if x != nil { return x.GroupCode } return 0 } type GrpTmp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields GroupUin int64 `protobuf:"varint,1,opt,name=groupUin,proto3" json:"groupUin,omitempty"` ToUin int64 `protobuf:"varint,2,opt,name=toUin,proto3" json:"toUin,omitempty"` } func (x *GrpTmp) Reset() { *x = GrpTmp{} if protoimpl.UnsafeEnabled { mi := &file_msg_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GrpTmp) String() string { return protoimpl.X.MessageStringOf(x) } func (*GrpTmp) ProtoMessage() {} func (x *GrpTmp) ProtoReflect() protoreflect.Message { mi := &file_msg_proto_msgTypes[11] 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 GrpTmp.ProtoReflect.Descriptor instead. func (*GrpTmp) Descriptor() ([]byte, []int) { return file_msg_proto_rawDescGZIP(), []int{11} } func (x *GrpTmp) GetGroupUin() int64 { if x != nil { return x.GroupUin } return 0 } func (x *GrpTmp) GetToUin() int64 { if x != nil { return x.ToUin } return 0 } type MsgCtrl struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields MsgFlag int32 `protobuf:"varint,1,opt,name=msgFlag,proto3" json:"msgFlag,omitempty"` } func (x *MsgCtrl) Reset() { *x = MsgCtrl{} if protoimpl.UnsafeEnabled { mi := &file_msg_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *MsgCtrl) String() string { return protoimpl.X.MessageStringOf(x) } func (*MsgCtrl) ProtoMessage() {} func (x *MsgCtrl) ProtoReflect() protoreflect.Message { mi := &file_msg_proto_msgTypes[12] 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 MsgCtrl.ProtoReflect.Descriptor instead. func (*MsgCtrl) Descriptor() ([]byte, []int) { return file_msg_proto_rawDescGZIP(), []int{12} } func (x *MsgCtrl) GetMsgFlag() int32 { if x != nil { return x.MsgFlag } return 0 } type GetMessageResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Result int32 `protobuf:"varint,1,opt,name=result,proto3" json:"result,omitempty"` ErrorMessage string `protobuf:"bytes,2,opt,name=errorMessage,proto3" json:"errorMessage,omitempty"` SyncCookie []byte `protobuf:"bytes,3,opt,name=syncCookie,proto3" json:"syncCookie,omitempty"` SyncFlag SyncFlag `protobuf:"varint,4,opt,name=syncFlag,proto3,enum=SyncFlag" json:"syncFlag,omitempty"` UinPairMsgs []*UinPairMessage `protobuf:"bytes,5,rep,name=uinPairMsgs,proto3" json:"uinPairMsgs,omitempty"` BindUin int64 `protobuf:"varint,6,opt,name=bindUin,proto3" json:"bindUin,omitempty"` MsgRspType int32 `protobuf:"varint,7,opt,name=msgRspType,proto3" json:"msgRspType,omitempty"` PubAccountCookie []byte `protobuf:"bytes,8,opt,name=pubAccountCookie,proto3" json:"pubAccountCookie,omitempty"` IsPartialSync bool `protobuf:"varint,9,opt,name=isPartialSync,proto3" json:"isPartialSync,omitempty"` MsgCtrlBuf []byte `protobuf:"bytes,10,opt,name=msgCtrlBuf,proto3" json:"msgCtrlBuf,omitempty"` } func (x *GetMessageResponse) Reset() { *x = GetMessageResponse{} if protoimpl.UnsafeEnabled { mi := &file_msg_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetMessageResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetMessageResponse) ProtoMessage() {} func (x *GetMessageResponse) ProtoReflect() protoreflect.Message { mi := &file_msg_proto_msgTypes[13] 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 GetMessageResponse.ProtoReflect.Descriptor instead. func (*GetMessageResponse) Descriptor() ([]byte, []int) { return file_msg_proto_rawDescGZIP(), []int{13} } func (x *GetMessageResponse) GetResult() int32 { if x != nil { return x.Result } return 0 } func (x *GetMessageResponse) GetErrorMessage() string { if x != nil { return x.ErrorMessage } return "" } func (x *GetMessageResponse) GetSyncCookie() []byte { if x != nil { return x.SyncCookie } return nil } func (x *GetMessageResponse) GetSyncFlag() SyncFlag { if x != nil { return x.SyncFlag } return SyncFlag_START } func (x *GetMessageResponse) GetUinPairMsgs() []*UinPairMessage { if x != nil { return x.UinPairMsgs } return nil } func (x *GetMessageResponse) GetBindUin() int64 { if x != nil { return x.BindUin } return 0 } func (x *GetMessageResponse) GetMsgRspType() int32 { if x != nil { return x.MsgRspType } return 0 } func (x *GetMessageResponse) GetPubAccountCookie() []byte { if x != nil { return x.PubAccountCookie } return nil } func (x *GetMessageResponse) GetIsPartialSync() bool { if x != nil { return x.IsPartialSync } return false } func (x *GetMessageResponse) GetMsgCtrlBuf() []byte { if x != nil { return x.MsgCtrlBuf } return nil } type PushMessagePacket struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Message *Message `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"` Svrip int32 `protobuf:"varint,2,opt,name=svrip,proto3" json:"svrip,omitempty"` PushToken []byte `protobuf:"bytes,3,opt,name=pushToken,proto3" json:"pushToken,omitempty"` PingFLag int32 `protobuf:"varint,4,opt,name=pingFLag,proto3" json:"pingFLag,omitempty"` GeneralFlag int32 `protobuf:"varint,9,opt,name=generalFlag,proto3" json:"generalFlag,omitempty"` } func (x *PushMessagePacket) Reset() { *x = PushMessagePacket{} if protoimpl.UnsafeEnabled { mi := &file_msg_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *PushMessagePacket) String() string { return protoimpl.X.MessageStringOf(x) } func (*PushMessagePacket) ProtoMessage() {} func (x *PushMessagePacket) ProtoReflect() protoreflect.Message { mi := &file_msg_proto_msgTypes[14] 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 PushMessagePacket.ProtoReflect.Descriptor instead. func (*PushMessagePacket) Descriptor() ([]byte, []int) { return file_msg_proto_rawDescGZIP(), []int{14} } func (x *PushMessagePacket) GetMessage() *Message { if x != nil { return x.Message } return nil } func (x *PushMessagePacket) GetSvrip() int32 { if x != nil { return x.Svrip } return 0 } func (x *PushMessagePacket) GetPushToken() []byte { if x != nil { return x.PushToken } return nil } func (x *PushMessagePacket) GetPingFLag() int32 { if x != nil { return x.PingFLag } return 0 } func (x *PushMessagePacket) GetGeneralFlag() int32 { if x != nil { return x.GeneralFlag } return 0 } type UinPairMessage struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields LastReadTime int32 `protobuf:"varint,1,opt,name=lastReadTime,proto3" json:"lastReadTime,omitempty"` PeerUin int64 `protobuf:"varint,2,opt,name=peerUin,proto3" json:"peerUin,omitempty"` MsgCompleted int32 `protobuf:"varint,3,opt,name=msgCompleted,proto3" json:"msgCompleted,omitempty"` Messages []*Message `protobuf:"bytes,4,rep,name=messages,proto3" json:"messages,omitempty"` } func (x *UinPairMessage) Reset() { *x = UinPairMessage{} if protoimpl.UnsafeEnabled { mi := &file_msg_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UinPairMessage) String() string { return protoimpl.X.MessageStringOf(x) } func (*UinPairMessage) ProtoMessage() {} func (x *UinPairMessage) ProtoReflect() protoreflect.Message { mi := &file_msg_proto_msgTypes[15] 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 UinPairMessage.ProtoReflect.Descriptor instead. func (*UinPairMessage) Descriptor() ([]byte, []int) { return file_msg_proto_rawDescGZIP(), []int{15} } func (x *UinPairMessage) GetLastReadTime() int32 { if x != nil { return x.LastReadTime } return 0 } func (x *UinPairMessage) GetPeerUin() int64 { if x != nil { return x.PeerUin } return 0 } func (x *UinPairMessage) GetMsgCompleted() int32 { if x != nil { return x.MsgCompleted } return 0 } func (x *UinPairMessage) GetMessages() []*Message { if x != nil { return x.Messages } return nil } type Message struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Head *MessageHead `protobuf:"bytes,1,opt,name=head,proto3" json:"head,omitempty"` Content *ContentHead `protobuf:"bytes,2,opt,name=content,proto3" json:"content,omitempty"` Body *MessageBody `protobuf:"bytes,3,opt,name=body,proto3" json:"body,omitempty"` } func (x *Message) Reset() { *x = Message{} if protoimpl.UnsafeEnabled { mi := &file_msg_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Message) String() string { return protoimpl.X.MessageStringOf(x) } func (*Message) ProtoMessage() {} func (x *Message) ProtoReflect() protoreflect.Message { mi := &file_msg_proto_msgTypes[16] 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 Message.ProtoReflect.Descriptor instead. func (*Message) Descriptor() ([]byte, []int) { return file_msg_proto_rawDescGZIP(), []int{16} } func (x *Message) GetHead() *MessageHead { if x != nil { return x.Head } return nil } func (x *Message) GetContent() *ContentHead { if x != nil { return x.Content } return nil } func (x *Message) GetBody() *MessageBody { if x != nil { return x.Body } return nil } type MessageBody struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields RichText *RichText `protobuf:"bytes,1,opt,name=richText,proto3" json:"richText,omitempty"` MsgContent []byte `protobuf:"bytes,2,opt,name=msgContent,proto3" json:"msgContent,omitempty"` MsgEncryptContent []byte `protobuf:"bytes,3,opt,name=msgEncryptContent,proto3" json:"msgEncryptContent,omitempty"` } func (x *MessageBody) Reset() { *x = MessageBody{} if protoimpl.UnsafeEnabled { mi := &file_msg_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *MessageBody) String() string { return protoimpl.X.MessageStringOf(x) } func (*MessageBody) ProtoMessage() {} func (x *MessageBody) ProtoReflect() protoreflect.Message { mi := &file_msg_proto_msgTypes[17] 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 MessageBody.ProtoReflect.Descriptor instead. func (*MessageBody) Descriptor() ([]byte, []int) { return file_msg_proto_rawDescGZIP(), []int{17} } func (x *MessageBody) GetRichText() *RichText { if x != nil { return x.RichText } return nil } func (x *MessageBody) GetMsgContent() []byte { if x != nil { return x.MsgContent } return nil } func (x *MessageBody) GetMsgEncryptContent() []byte { if x != nil { return x.MsgEncryptContent } return nil } type RichText struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Attr *Attr `protobuf:"bytes,1,opt,name=attr,proto3" json:"attr,omitempty"` Elems []*Elem `protobuf:"bytes,2,rep,name=elems,proto3" json:"elems,omitempty"` NotOnlineFile *NotOnlineFile `protobuf:"bytes,3,opt,name=notOnlineFile,proto3" json:"notOnlineFile,omitempty"` Ptt *Ptt `protobuf:"bytes,4,opt,name=ptt,proto3" json:"ptt,omitempty"` } func (x *RichText) Reset() { *x = RichText{} if protoimpl.UnsafeEnabled { mi := &file_msg_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *RichText) String() string { return protoimpl.X.MessageStringOf(x) } func (*RichText) ProtoMessage() {} func (x *RichText) ProtoReflect() protoreflect.Message { mi := &file_msg_proto_msgTypes[18] 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 RichText.ProtoReflect.Descriptor instead. func (*RichText) Descriptor() ([]byte, []int) { return file_msg_proto_rawDescGZIP(), []int{18} } func (x *RichText) GetAttr() *Attr { if x != nil { return x.Attr } return nil } func (x *RichText) GetElems() []*Elem { if x != nil { return x.Elems } return nil } func (x *RichText) GetNotOnlineFile() *NotOnlineFile { if x != nil { return x.NotOnlineFile } return nil } func (x *RichText) GetPtt() *Ptt { if x != nil { return x.Ptt } return nil } type Elem struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Text *Text `protobuf:"bytes,1,opt,name=text,proto3" json:"text,omitempty"` Face *Face `protobuf:"bytes,2,opt,name=face,proto3" json:"face,omitempty"` OnlineImage *OnlineImage `protobuf:"bytes,3,opt,name=onlineImage,proto3" json:"onlineImage,omitempty"` NotOnlineImage *NotOnlineImage `protobuf:"bytes,4,opt,name=notOnlineImage,proto3" json:"notOnlineImage,omitempty"` TransElemInfo *TransElem `protobuf:"bytes,5,opt,name=transElemInfo,proto3" json:"transElemInfo,omitempty"` //MarketFace marketFace = 6; //ElemFlags elemFlags = 7; CustomFace *CustomFace `protobuf:"bytes,8,opt,name=customFace,proto3" json:"customFace,omitempty"` //ElemFlags2 elemFlags2 = 9; //FunFace funFace = 10; //SecretFileMsg secretFile = 11; RichMsg *RichMsg `protobuf:"bytes,12,opt,name=richMsg,proto3" json:"richMsg,omitempty"` GroupFile *GroupFile `protobuf:"bytes,13,opt,name=groupFile,proto3" json:"groupFile,omitempty"` //PubGroup pubGroup = 14; //MarketTrans marketTrans = 15; ExtraInfo *ExtraInfo `protobuf:"bytes,16,opt,name=extraInfo,proto3" json:"extraInfo,omitempty"` //ShakeWindow? shakeWindow = 17; //PubAccount? pubAccount = 18; VideoFile *VideoFile `protobuf:"bytes,19,opt,name=videoFile,proto3" json:"videoFile,omitempty"` //TipsInfo? tipsInfo = 20; AnonGroupMsg *AnonymousGroupMessage `protobuf:"bytes,21,opt,name=anonGroupMsg,proto3" json:"anonGroupMsg,omitempty"` //QQLiveOld? qqLiveOld = 22; //LifeOnlineAccount? lifeOnline = 23; QQWalletMsg *QQWalletMsg `protobuf:"bytes,24,opt,name=QQWalletMsg,proto3" json:"QQWalletMsg,omitempty"` //CrmElem? crmElem = 25; //ConferenceTipsInfo? conferenceTipsInfo = 26; //RedBagInfo? redbagInfo = 27; //LowVersionTips? lowVersionTips = 28; //bytes bankcodeCtrlInfo = 29; //NearByMessageType? nearByMsg = 30; CustomElem *CustomElem `protobuf:"bytes,31,opt,name=customElem,proto3" json:"customElem,omitempty"` //LocationInfo? locationInfo = 32; //PubAccInfo? pubAccInfo = 33; //SmallEmoji? smallEmoji = 34; //FSJMessageElem? fsjMsgElem = 35; //ArkAppElem? arkApp = 36; GeneralFlags *GeneralFlags `protobuf:"bytes,37,opt,name=generalFlags,proto3" json:"generalFlags,omitempty"` //CustomFace? hcFlashPic = 38; //DeliverGiftMsg? deliverGiftMsg = 39; //BitAppMsg? bitappMsg = 40; //OpenQQData? openQqData = 41; //ApolloActMsg? apolloMsg = 42; //GroupPubAccountInfo? groupPubAccInfo = 43; //BlessingMessage? blessMsg = 44; SrcMsg *SourceMsg `protobuf:"bytes,45,opt,name=srcMsg,proto3" json:"srcMsg,omitempty"` //LolaMsg? lolaMsg = 46; //GroupBusinessMsg? groupBusinessMsg = 47; //WorkflowNotifyMsg? msgWorkflowNotify = 48; //PatsElem? patElem = 49; //GroupPostElem? groupPostElem = 50; LightApp *LightAppElem `protobuf:"bytes,51,opt,name=lightApp,proto3" json:"lightApp,omitempty"` //EIMInfo? eimInfo = 52; CommonElem *CommonElem `protobuf:"bytes,53,opt,name=commonElem,proto3" json:"commonElem,omitempty"` } func (x *Elem) Reset() { *x = Elem{} if protoimpl.UnsafeEnabled { mi := &file_msg_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Elem) String() string { return protoimpl.X.MessageStringOf(x) } func (*Elem) ProtoMessage() {} func (x *Elem) ProtoReflect() protoreflect.Message { mi := &file_msg_proto_msgTypes[19] 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 Elem.ProtoReflect.Descriptor instead. func (*Elem) Descriptor() ([]byte, []int) { return file_msg_proto_rawDescGZIP(), []int{19} } func (x *Elem) GetText() *Text { if x != nil { return x.Text } return nil } func (x *Elem) GetFace() *Face { if x != nil { return x.Face } return nil } func (x *Elem) GetOnlineImage() *OnlineImage { if x != nil { return x.OnlineImage } return nil } func (x *Elem) GetNotOnlineImage() *NotOnlineImage { if x != nil { return x.NotOnlineImage } return nil } func (x *Elem) GetTransElemInfo() *TransElem { if x != nil { return x.TransElemInfo } return nil } func (x *Elem) GetCustomFace() *CustomFace { if x != nil { return x.CustomFace } return nil } func (x *Elem) GetRichMsg() *RichMsg { if x != nil { return x.RichMsg } return nil } func (x *Elem) GetGroupFile() *GroupFile { if x != nil { return x.GroupFile } return nil } func (x *Elem) GetExtraInfo() *ExtraInfo { if x != nil { return x.ExtraInfo } return nil } func (x *Elem) GetVideoFile() *VideoFile { if x != nil { return x.VideoFile } return nil } func (x *Elem) GetAnonGroupMsg() *AnonymousGroupMessage { if x != nil { return x.AnonGroupMsg } return nil } func (x *Elem) GetQQWalletMsg() *QQWalletMsg { if x != nil { return x.QQWalletMsg } return nil } func (x *Elem) GetCustomElem() *CustomElem { if x != nil { return x.CustomElem } return nil } func (x *Elem) GetGeneralFlags() *GeneralFlags { if x != nil { return x.GeneralFlags } return nil } func (x *Elem) GetSrcMsg() *SourceMsg { if x != nil { return x.SrcMsg } return nil } func (x *Elem) GetLightApp() *LightAppElem { if x != nil { return x.LightApp } return nil } func (x *Elem) GetCommonElem() *CommonElem { if x != nil { return x.CommonElem } return nil } type CommonElem struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ServiceType int32 `protobuf:"varint,1,opt,name=serviceType,proto3" json:"serviceType,omitempty"` PbElem []byte `protobuf:"bytes,2,opt,name=pbElem,proto3" json:"pbElem,omitempty"` BusinessType int32 `protobuf:"varint,3,opt,name=businessType,proto3" json:"businessType,omitempty"` } func (x *CommonElem) Reset() { *x = CommonElem{} if protoimpl.UnsafeEnabled { mi := &file_msg_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CommonElem) String() string { return protoimpl.X.MessageStringOf(x) } func (*CommonElem) ProtoMessage() {} func (x *CommonElem) ProtoReflect() protoreflect.Message { mi := &file_msg_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CommonElem.ProtoReflect.Descriptor instead. func (*CommonElem) Descriptor() ([]byte, []int) { return file_msg_proto_rawDescGZIP(), []int{20} } func (x *CommonElem) GetServiceType() int32 { if x != nil { return x.ServiceType } return 0 } func (x *CommonElem) GetPbElem() []byte { if x != nil { return x.PbElem } return nil } func (x *CommonElem) GetBusinessType() int32 { if x != nil { return x.BusinessType } return 0 } type QQWalletMsg struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields AioBody *QQWalletAioBody `protobuf:"bytes,1,opt,name=aioBody,proto3" json:"aioBody,omitempty"` } func (x *QQWalletMsg) Reset() { *x = QQWalletMsg{} if protoimpl.UnsafeEnabled { mi := &file_msg_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *QQWalletMsg) String() string { return protoimpl.X.MessageStringOf(x) } func (*QQWalletMsg) ProtoMessage() {} func (x *QQWalletMsg) ProtoReflect() protoreflect.Message { mi := &file_msg_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use QQWalletMsg.ProtoReflect.Descriptor instead. func (*QQWalletMsg) Descriptor() ([]byte, []int) { return file_msg_proto_rawDescGZIP(), []int{21} } func (x *QQWalletMsg) GetAioBody() *QQWalletAioBody { if x != nil { return x.AioBody } return nil } type QQWalletAioBody struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields SendUin uint64 `protobuf:"varint,1,opt,name=sendUin,proto3" json:"sendUin,omitempty"` Sender *QQWalletAioElem `protobuf:"bytes,2,opt,name=sender,proto3" json:"sender,omitempty"` Receiver *QQWalletAioElem `protobuf:"bytes,3,opt,name=receiver,proto3" json:"receiver,omitempty"` ChannelId int32 `protobuf:"zigzag32,4,opt,name=ChannelId,proto3" json:"ChannelId,omitempty"` TemplateId int32 `protobuf:"zigzag32,5,opt,name=templateId,proto3" json:"templateId,omitempty"` Resend uint32 `protobuf:"varint,6,opt,name=resend,proto3" json:"resend,omitempty"` MsgPriority uint32 `protobuf:"varint,7,opt,name=msgPriority,proto3" json:"msgPriority,omitempty"` RedType int32 `protobuf:"zigzag32,8,opt,name=redType,proto3" json:"redType,omitempty"` BillNo []byte `protobuf:"bytes,9,opt,name=billNo,proto3" json:"billNo,omitempty"` AuthKey []byte `protobuf:"bytes,10,opt,name=authKey,proto3" json:"authKey,omitempty"` SessionType int32 `protobuf:"zigzag32,11,opt,name=sessionType,proto3" json:"sessionType,omitempty"` MsgType int32 `protobuf:"zigzag32,12,opt,name=msgType,proto3" json:"msgType,omitempty"` EnvelOpeId int32 `protobuf:"zigzag32,13,opt,name=envelOpeId,proto3" json:"envelOpeId,omitempty"` Name []byte `protobuf:"bytes,14,opt,name=name,proto3" json:"name,omitempty"` ConfType int32 `protobuf:"zigzag32,15,opt,name=confType,proto3" json:"confType,omitempty"` MsgFrom int32 `protobuf:"zigzag32,16,opt,name=msgFrom,proto3" json:"msgFrom,omitempty"` PcBody []byte `protobuf:"bytes,17,opt,name=pcBody,proto3" json:"pcBody,omitempty"` Index []byte `protobuf:"bytes,18,opt,name=index,proto3" json:"index,omitempty"` RedChannel uint32 `protobuf:"varint,19,opt,name=redChannel,proto3" json:"redChannel,omitempty"` GrapUin []uint64 `protobuf:"varint,20,rep,packed,name=grapUin,proto3" json:"grapUin,omitempty"` PbReserve []byte `protobuf:"bytes,21,opt,name=pbReserve,proto3" json:"pbReserve,omitempty"` } func (x *QQWalletAioBody) Reset() { *x = QQWalletAioBody{} if protoimpl.UnsafeEnabled { mi := &file_msg_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *QQWalletAioBody) String() string { return protoimpl.X.MessageStringOf(x) } func (*QQWalletAioBody) ProtoMessage() {} func (x *QQWalletAioBody) ProtoReflect() protoreflect.Message { mi := &file_msg_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use QQWalletAioBody.ProtoReflect.Descriptor instead. func (*QQWalletAioBody) Descriptor() ([]byte, []int) { return file_msg_proto_rawDescGZIP(), []int{22} } func (x *QQWalletAioBody) GetSendUin() uint64 { if x != nil { return x.SendUin } return 0 } func (x *QQWalletAioBody) GetSender() *QQWalletAioElem { if x != nil { return x.Sender } return nil } func (x *QQWalletAioBody) GetReceiver() *QQWalletAioElem { if x != nil { return x.Receiver } return nil } func (x *QQWalletAioBody) GetChannelId() int32 { if x != nil { return x.ChannelId } return 0 } func (x *QQWalletAioBody) GetTemplateId() int32 { if x != nil { return x.TemplateId } return 0 } func (x *QQWalletAioBody) GetResend() uint32 { if x != nil { return x.Resend } return 0 } func (x *QQWalletAioBody) GetMsgPriority() uint32 { if x != nil { return x.MsgPriority } return 0 } func (x *QQWalletAioBody) GetRedType() int32 { if x != nil { return x.RedType } return 0 } func (x *QQWalletAioBody) GetBillNo() []byte { if x != nil { return x.BillNo } return nil } func (x *QQWalletAioBody) GetAuthKey() []byte { if x != nil { return x.AuthKey } return nil } func (x *QQWalletAioBody) GetSessionType() int32 { if x != nil { return x.SessionType } return 0 } func (x *QQWalletAioBody) GetMsgType() int32 { if x != nil { return x.MsgType } return 0 } func (x *QQWalletAioBody) GetEnvelOpeId() int32 { if x != nil { return x.EnvelOpeId } return 0 } func (x *QQWalletAioBody) GetName() []byte { if x != nil { return x.Name } return nil } func (x *QQWalletAioBody) GetConfType() int32 { if x != nil { return x.ConfType } return 0 } func (x *QQWalletAioBody) GetMsgFrom() int32 { if x != nil { return x.MsgFrom } return 0 } func (x *QQWalletAioBody) GetPcBody() []byte { if x != nil { return x.PcBody } return nil } func (x *QQWalletAioBody) GetIndex() []byte { if x != nil { return x.Index } return nil } func (x *QQWalletAioBody) GetRedChannel() uint32 { if x != nil { return x.RedChannel } return 0 } func (x *QQWalletAioBody) GetGrapUin() []uint64 { if x != nil { return x.GrapUin } return nil } func (x *QQWalletAioBody) GetPbReserve() []byte { if x != nil { return x.PbReserve } return nil } type QQWalletAioElem struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Background uint32 `protobuf:"varint,1,opt,name=background,proto3" json:"background,omitempty"` Icon uint32 `protobuf:"varint,2,opt,name=icon,proto3" json:"icon,omitempty"` Title string `protobuf:"bytes,3,opt,name=title,proto3" json:"title,omitempty"` Subtitle string `protobuf:"bytes,4,opt,name=subtitle,proto3" json:"subtitle,omitempty"` Content string `protobuf:"bytes,5,opt,name=content,proto3" json:"content,omitempty"` LinkUrl []byte `protobuf:"bytes,6,opt,name=linkUrl,proto3" json:"linkUrl,omitempty"` BlackStripe []byte `protobuf:"bytes,7,opt,name=blackStripe,proto3" json:"blackStripe,omitempty"` Notice []byte `protobuf:"bytes,8,opt,name=notice,proto3" json:"notice,omitempty"` TitleColor uint32 `protobuf:"varint,9,opt,name=titleColor,proto3" json:"titleColor,omitempty"` SubtitleColor uint32 `protobuf:"varint,10,opt,name=subtitleColor,proto3" json:"subtitleColor,omitempty"` ActionsPriority []byte `protobuf:"bytes,11,opt,name=actionsPriority,proto3" json:"actionsPriority,omitempty"` JumpUrl []byte `protobuf:"bytes,12,opt,name=jumpUrl,proto3" json:"jumpUrl,omitempty"` NativeIos []byte `protobuf:"bytes,13,opt,name=nativeIos,proto3" json:"nativeIos,omitempty"` NativeAndroid []byte `protobuf:"bytes,14,opt,name=nativeAndroid,proto3" json:"nativeAndroid,omitempty"` IconUrl []byte `protobuf:"bytes,15,opt,name=iconUrl,proto3" json:"iconUrl,omitempty"` ContentColor uint32 `protobuf:"varint,16,opt,name=contentColor,proto3" json:"contentColor,omitempty"` ContentBgColor uint32 `protobuf:"varint,17,opt,name=contentBgColor,proto3" json:"contentBgColor,omitempty"` AioImageLeft []byte `protobuf:"bytes,18,opt,name=aioImageLeft,proto3" json:"aioImageLeft,omitempty"` AioImageRight []byte `protobuf:"bytes,19,opt,name=aioImageRight,proto3" json:"aioImageRight,omitempty"` CftImage []byte `protobuf:"bytes,20,opt,name=cftImage,proto3" json:"cftImage,omitempty"` PbReserve []byte `protobuf:"bytes,21,opt,name=pbReserve,proto3" json:"pbReserve,omitempty"` } func (x *QQWalletAioElem) Reset() { *x = QQWalletAioElem{} if protoimpl.UnsafeEnabled { mi := &file_msg_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *QQWalletAioElem) String() string { return protoimpl.X.MessageStringOf(x) } func (*QQWalletAioElem) ProtoMessage() {} func (x *QQWalletAioElem) ProtoReflect() protoreflect.Message { mi := &file_msg_proto_msgTypes[23] 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 QQWalletAioElem.ProtoReflect.Descriptor instead. func (*QQWalletAioElem) Descriptor() ([]byte, []int) { return file_msg_proto_rawDescGZIP(), []int{23} } func (x *QQWalletAioElem) GetBackground() uint32 { if x != nil { return x.Background } return 0 } func (x *QQWalletAioElem) GetIcon() uint32 { if x != nil { return x.Icon } return 0 } func (x *QQWalletAioElem) GetTitle() string { if x != nil { return x.Title } return "" } func (x *QQWalletAioElem) GetSubtitle() string { if x != nil { return x.Subtitle } return "" } func (x *QQWalletAioElem) GetContent() string { if x != nil { return x.Content } return "" } func (x *QQWalletAioElem) GetLinkUrl() []byte { if x != nil { return x.LinkUrl } return nil } func (x *QQWalletAioElem) GetBlackStripe() []byte { if x != nil { return x.BlackStripe } return nil } func (x *QQWalletAioElem) GetNotice() []byte { if x != nil { return x.Notice } return nil } func (x *QQWalletAioElem) GetTitleColor() uint32 { if x != nil { return x.TitleColor } return 0 } func (x *QQWalletAioElem) GetSubtitleColor() uint32 { if x != nil { return x.SubtitleColor } return 0 } func (x *QQWalletAioElem) GetActionsPriority() []byte { if x != nil { return x.ActionsPriority } return nil } func (x *QQWalletAioElem) GetJumpUrl() []byte { if x != nil { return x.JumpUrl } return nil } func (x *QQWalletAioElem) GetNativeIos() []byte { if x != nil { return x.NativeIos } return nil } func (x *QQWalletAioElem) GetNativeAndroid() []byte { if x != nil { return x.NativeAndroid } return nil } func (x *QQWalletAioElem) GetIconUrl() []byte { if x != nil { return x.IconUrl } return nil } func (x *QQWalletAioElem) GetContentColor() uint32 { if x != nil { return x.ContentColor } return 0 } func (x *QQWalletAioElem) GetContentBgColor() uint32 { if x != nil { return x.ContentBgColor } return 0 } func (x *QQWalletAioElem) GetAioImageLeft() []byte { if x != nil { return x.AioImageLeft } return nil } func (x *QQWalletAioElem) GetAioImageRight() []byte { if x != nil { return x.AioImageRight } return nil } func (x *QQWalletAioElem) GetCftImage() []byte { if x != nil { return x.CftImage } return nil } func (x *QQWalletAioElem) GetPbReserve() []byte { if x != nil { return x.PbReserve } return nil } type RichMsg struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Template1 []byte `protobuf:"bytes,1,opt,name=template1,proto3" json:"template1,omitempty"` ServiceId int32 `protobuf:"varint,2,opt,name=serviceId,proto3" json:"serviceId,omitempty"` MsgResId []byte `protobuf:"bytes,3,opt,name=msgResId,proto3" json:"msgResId,omitempty"` Rand int32 `protobuf:"varint,4,opt,name=rand,proto3" json:"rand,omitempty"` Seq int32 `protobuf:"varint,5,opt,name=seq,proto3" json:"seq,omitempty"` } func (x *RichMsg) Reset() { *x = RichMsg{} if protoimpl.UnsafeEnabled { mi := &file_msg_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *RichMsg) String() string { return protoimpl.X.MessageStringOf(x) } func (*RichMsg) ProtoMessage() {} func (x *RichMsg) ProtoReflect() protoreflect.Message { mi := &file_msg_proto_msgTypes[24] 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 RichMsg.ProtoReflect.Descriptor instead. func (*RichMsg) Descriptor() ([]byte, []int) { return file_msg_proto_rawDescGZIP(), []int{24} } func (x *RichMsg) GetTemplate1() []byte { if x != nil { return x.Template1 } return nil } func (x *RichMsg) GetServiceId() int32 { if x != nil { return x.ServiceId } return 0 } func (x *RichMsg) GetMsgResId() []byte { if x != nil { return x.MsgResId } return nil } func (x *RichMsg) GetRand() int32 { if x != nil { return x.Rand } return 0 } func (x *RichMsg) GetSeq() int32 { if x != nil { return x.Seq } return 0 } type CustomElem struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Desc []byte `protobuf:"bytes,1,opt,name=desc,proto3" json:"desc,omitempty"` Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` EnumType int32 `protobuf:"varint,3,opt,name=enumType,proto3" json:"enumType,omitempty"` Ext []byte `protobuf:"bytes,4,opt,name=ext,proto3" json:"ext,omitempty"` Sound []byte `protobuf:"bytes,5,opt,name=sound,proto3" json:"sound,omitempty"` } func (x *CustomElem) Reset() { *x = CustomElem{} if protoimpl.UnsafeEnabled { mi := &file_msg_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CustomElem) String() string { return protoimpl.X.MessageStringOf(x) } func (*CustomElem) ProtoMessage() {} func (x *CustomElem) ProtoReflect() protoreflect.Message { mi := &file_msg_proto_msgTypes[25] 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 CustomElem.ProtoReflect.Descriptor instead. func (*CustomElem) Descriptor() ([]byte, []int) { return file_msg_proto_rawDescGZIP(), []int{25} } func (x *CustomElem) GetDesc() []byte { if x != nil { return x.Desc } return nil } func (x *CustomElem) GetData() []byte { if x != nil { return x.Data } return nil } func (x *CustomElem) GetEnumType() int32 { if x != nil { return x.EnumType } return 0 } func (x *CustomElem) GetExt() []byte { if x != nil { return x.Ext } return nil } func (x *CustomElem) GetSound() []byte { if x != nil { return x.Sound } return nil } type Text struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Str string `protobuf:"bytes,1,opt,name=str,proto3" json:"str,omitempty"` Link string `protobuf:"bytes,2,opt,name=link,proto3" json:"link,omitempty"` Attr6Buf []byte `protobuf:"bytes,3,opt,name=attr6Buf,proto3" json:"attr6Buf,omitempty"` Attr7Buf []byte `protobuf:"bytes,4,opt,name=attr7Buf,proto3" json:"attr7Buf,omitempty"` Buf []byte `protobuf:"bytes,11,opt,name=buf,proto3" json:"buf,omitempty"` PbReserve []byte `protobuf:"bytes,12,opt,name=pbReserve,proto3" json:"pbReserve,omitempty"` } func (x *Text) Reset() { *x = Text{} if protoimpl.UnsafeEnabled { mi := &file_msg_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Text) String() string { return protoimpl.X.MessageStringOf(x) } func (*Text) ProtoMessage() {} func (x *Text) ProtoReflect() protoreflect.Message { mi := &file_msg_proto_msgTypes[26] 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 Text.ProtoReflect.Descriptor instead. func (*Text) Descriptor() ([]byte, []int) { return file_msg_proto_rawDescGZIP(), []int{26} } func (x *Text) GetStr() string { if x != nil { return x.Str } return "" } func (x *Text) GetLink() string { if x != nil { return x.Link } return "" } func (x *Text) GetAttr6Buf() []byte { if x != nil { return x.Attr6Buf } return nil } func (x *Text) GetAttr7Buf() []byte { if x != nil { return x.Attr7Buf } return nil } func (x *Text) GetBuf() []byte { if x != nil { return x.Buf } return nil } func (x *Text) GetPbReserve() []byte { if x != nil { return x.PbReserve } return nil } type Attr struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields CodePage int32 `protobuf:"varint,1,opt,name=codePage,proto3" json:"codePage,omitempty"` Time int32 `protobuf:"varint,2,opt,name=time,proto3" json:"time,omitempty"` Random int32 `protobuf:"varint,3,opt,name=random,proto3" json:"random,omitempty"` Color int32 `protobuf:"varint,4,opt,name=color,proto3" json:"color,omitempty"` Size int32 `protobuf:"varint,5,opt,name=size,proto3" json:"size,omitempty"` Effect int32 `protobuf:"varint,6,opt,name=effect,proto3" json:"effect,omitempty"` CharSet int32 `protobuf:"varint,7,opt,name=charSet,proto3" json:"charSet,omitempty"` PitchAndFamily int32 `protobuf:"varint,8,opt,name=pitchAndFamily,proto3" json:"pitchAndFamily,omitempty"` FontName string `protobuf:"bytes,9,opt,name=fontName,proto3" json:"fontName,omitempty"` ReserveData []byte `protobuf:"bytes,10,opt,name=reserveData,proto3" json:"reserveData,omitempty"` } func (x *Attr) Reset() { *x = Attr{} if protoimpl.UnsafeEnabled { mi := &file_msg_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Attr) String() string { return protoimpl.X.MessageStringOf(x) } func (*Attr) ProtoMessage() {} func (x *Attr) ProtoReflect() protoreflect.Message { mi := &file_msg_proto_msgTypes[27] 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 Attr.ProtoReflect.Descriptor instead. func (*Attr) Descriptor() ([]byte, []int) { return file_msg_proto_rawDescGZIP(), []int{27} } func (x *Attr) GetCodePage() int32 { if x != nil { return x.CodePage } return 0 } func (x *Attr) GetTime() int32 { if x != nil { return x.Time } return 0 } func (x *Attr) GetRandom() int32 { if x != nil { return x.Random } return 0 } func (x *Attr) GetColor() int32 { if x != nil { return x.Color } return 0 } func (x *Attr) GetSize() int32 { if x != nil { return x.Size } return 0 } func (x *Attr) GetEffect() int32 { if x != nil { return x.Effect } return 0 } func (x *Attr) GetCharSet() int32 { if x != nil { return x.CharSet } return 0 } func (x *Attr) GetPitchAndFamily() int32 { if x != nil { return x.PitchAndFamily } return 0 } func (x *Attr) GetFontName() string { if x != nil { return x.FontName } return "" } func (x *Attr) GetReserveData() []byte { if x != nil { return x.ReserveData } return nil } type Ptt struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields FileType int32 `protobuf:"varint,1,opt,name=fileType,proto3" json:"fileType,omitempty"` SrcUin int64 `protobuf:"varint,2,opt,name=srcUin,proto3" json:"srcUin,omitempty"` FileUuid []byte `protobuf:"bytes,3,opt,name=fileUuid,proto3" json:"fileUuid,omitempty"` FileMd5 []byte `protobuf:"bytes,4,opt,name=fileMd5,proto3" json:"fileMd5,omitempty"` FileName string `protobuf:"bytes,5,opt,name=fileName,proto3" json:"fileName,omitempty"` FileSize int32 `protobuf:"varint,6,opt,name=fileSize,proto3" json:"fileSize,omitempty"` Reserve []byte `protobuf:"bytes,7,opt,name=reserve,proto3" json:"reserve,omitempty"` FileId int32 `protobuf:"varint,8,opt,name=fileId,proto3" json:"fileId,omitempty"` ServerIp int32 `protobuf:"varint,9,opt,name=serverIp,proto3" json:"serverIp,omitempty"` ServerPort int32 `protobuf:"varint,10,opt,name=serverPort,proto3" json:"serverPort,omitempty"` BoolValid bool `protobuf:"varint,11,opt,name=boolValid,proto3" json:"boolValid,omitempty"` Signature []byte `protobuf:"bytes,12,opt,name=signature,proto3" json:"signature,omitempty"` Shortcut []byte `protobuf:"bytes,13,opt,name=shortcut,proto3" json:"shortcut,omitempty"` FileKey []byte `protobuf:"bytes,14,opt,name=fileKey,proto3" json:"fileKey,omitempty"` MagicPttIndex int32 `protobuf:"varint,15,opt,name=magicPttIndex,proto3" json:"magicPttIndex,omitempty"` VoiceSwitch int32 `protobuf:"varint,16,opt,name=voiceSwitch,proto3" json:"voiceSwitch,omitempty"` PttUrl []byte `protobuf:"bytes,17,opt,name=pttUrl,proto3" json:"pttUrl,omitempty"` GroupFileKey []byte `protobuf:"bytes,18,opt,name=groupFileKey,proto3" json:"groupFileKey,omitempty"` Time int32 `protobuf:"varint,19,opt,name=time,proto3" json:"time,omitempty"` DownPara []byte `protobuf:"bytes,20,opt,name=downPara,proto3" json:"downPara,omitempty"` Format int32 `protobuf:"varint,29,opt,name=format,proto3" json:"format,omitempty"` PbReserve []byte `protobuf:"bytes,30,opt,name=pbReserve,proto3" json:"pbReserve,omitempty"` BytesPttUrls [][]byte `protobuf:"bytes,31,rep,name=bytesPttUrls,proto3" json:"bytesPttUrls,omitempty"` DownloadFlag int32 `protobuf:"varint,32,opt,name=downloadFlag,proto3" json:"downloadFlag,omitempty"` } func (x *Ptt) Reset() { *x = Ptt{} if protoimpl.UnsafeEnabled { mi := &file_msg_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Ptt) String() string { return protoimpl.X.MessageStringOf(x) } func (*Ptt) ProtoMessage() {} func (x *Ptt) ProtoReflect() protoreflect.Message { mi := &file_msg_proto_msgTypes[28] 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 Ptt.ProtoReflect.Descriptor instead. func (*Ptt) Descriptor() ([]byte, []int) { return file_msg_proto_rawDescGZIP(), []int{28} } func (x *Ptt) GetFileType() int32 { if x != nil { return x.FileType } return 0 } func (x *Ptt) GetSrcUin() int64 { if x != nil { return x.SrcUin } return 0 } func (x *Ptt) GetFileUuid() []byte { if x != nil { return x.FileUuid } return nil } func (x *Ptt) GetFileMd5() []byte { if x != nil { return x.FileMd5 } return nil } func (x *Ptt) GetFileName() string { if x != nil { return x.FileName } return "" } func (x *Ptt) GetFileSize() int32 { if x != nil { return x.FileSize } return 0 } func (x *Ptt) GetReserve() []byte { if x != nil { return x.Reserve } return nil } func (x *Ptt) GetFileId() int32 { if x != nil { return x.FileId } return 0 } func (x *Ptt) GetServerIp() int32 { if x != nil { return x.ServerIp } return 0 } func (x *Ptt) GetServerPort() int32 { if x != nil { return x.ServerPort } return 0 } func (x *Ptt) GetBoolValid() bool { if x != nil { return x.BoolValid } return false } func (x *Ptt) GetSignature() []byte { if x != nil { return x.Signature } return nil } func (x *Ptt) GetShortcut() []byte { if x != nil { return x.Shortcut } return nil } func (x *Ptt) GetFileKey() []byte { if x != nil { return x.FileKey } return nil } func (x *Ptt) GetMagicPttIndex() int32 { if x != nil { return x.MagicPttIndex } return 0 } func (x *Ptt) GetVoiceSwitch() int32 { if x != nil { return x.VoiceSwitch } return 0 } func (x *Ptt) GetPttUrl() []byte { if x != nil { return x.PttUrl } return nil } func (x *Ptt) GetGroupFileKey() []byte { if x != nil { return x.GroupFileKey } return nil } func (x *Ptt) GetTime() int32 { if x != nil { return x.Time } return 0 } func (x *Ptt) GetDownPara() []byte { if x != nil { return x.DownPara } return nil } func (x *Ptt) GetFormat() int32 { if x != nil { return x.Format } return 0 } func (x *Ptt) GetPbReserve() []byte { if x != nil { return x.PbReserve } return nil } func (x *Ptt) GetBytesPttUrls() [][]byte { if x != nil { return x.BytesPttUrls } return nil } func (x *Ptt) GetDownloadFlag() int32 { if x != nil { return x.DownloadFlag } return 0 } type OnlineImage struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Guid []byte `protobuf:"bytes,1,opt,name=guid,proto3" json:"guid,omitempty"` FilePath []byte `protobuf:"bytes,2,opt,name=filePath,proto3" json:"filePath,omitempty"` OldVerSendFile []byte `protobuf:"bytes,3,opt,name=oldVerSendFile,proto3" json:"oldVerSendFile,omitempty"` } func (x *OnlineImage) Reset() { *x = OnlineImage{} if protoimpl.UnsafeEnabled { mi := &file_msg_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *OnlineImage) String() string { return protoimpl.X.MessageStringOf(x) } func (*OnlineImage) ProtoMessage() {} func (x *OnlineImage) ProtoReflect() protoreflect.Message { mi := &file_msg_proto_msgTypes[29] 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 OnlineImage.ProtoReflect.Descriptor instead. func (*OnlineImage) Descriptor() ([]byte, []int) { return file_msg_proto_rawDescGZIP(), []int{29} } func (x *OnlineImage) GetGuid() []byte { if x != nil { return x.Guid } return nil } func (x *OnlineImage) GetFilePath() []byte { if x != nil { return x.FilePath } return nil } func (x *OnlineImage) GetOldVerSendFile() []byte { if x != nil { return x.OldVerSendFile } return nil } type NotOnlineImage struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields FilePath string `protobuf:"bytes,1,opt,name=filePath,proto3" json:"filePath,omitempty"` FileLen int32 `protobuf:"varint,2,opt,name=fileLen,proto3" json:"fileLen,omitempty"` DownloadPath string `protobuf:"bytes,3,opt,name=downloadPath,proto3" json:"downloadPath,omitempty"` OldVerSendFile []byte `protobuf:"bytes,4,opt,name=oldVerSendFile,proto3" json:"oldVerSendFile,omitempty"` ImgType int32 `protobuf:"varint,5,opt,name=imgType,proto3" json:"imgType,omitempty"` PreviewsImage []byte `protobuf:"bytes,6,opt,name=previewsImage,proto3" json:"previewsImage,omitempty"` PicMd5 []byte `protobuf:"bytes,7,opt,name=picMd5,proto3" json:"picMd5,omitempty"` PicHeight int32 `protobuf:"varint,8,opt,name=picHeight,proto3" json:"picHeight,omitempty"` PicWidth int32 `protobuf:"varint,9,opt,name=picWidth,proto3" json:"picWidth,omitempty"` ResId string `protobuf:"bytes,10,opt,name=resId,proto3" json:"resId,omitempty"` Flag []byte `protobuf:"bytes,11,opt,name=flag,proto3" json:"flag,omitempty"` ThumbUrl string `protobuf:"bytes,12,opt,name=thumbUrl,proto3" json:"thumbUrl,omitempty"` Original int32 `protobuf:"varint,13,opt,name=original,proto3" json:"original,omitempty"` BigUrl string `protobuf:"bytes,14,opt,name=bigUrl,proto3" json:"bigUrl,omitempty"` OrigUrl string `protobuf:"bytes,15,opt,name=origUrl,proto3" json:"origUrl,omitempty"` BizType int32 `protobuf:"varint,16,opt,name=bizType,proto3" json:"bizType,omitempty"` Result int32 `protobuf:"varint,17,opt,name=result,proto3" json:"result,omitempty"` Index int32 `protobuf:"varint,18,opt,name=index,proto3" json:"index,omitempty"` OpFaceBuf []byte `protobuf:"bytes,19,opt,name=opFaceBuf,proto3" json:"opFaceBuf,omitempty"` OldPicMd5 bool `protobuf:"varint,20,opt,name=oldPicMd5,proto3" json:"oldPicMd5,omitempty"` ThumbWidth int32 `protobuf:"varint,21,opt,name=thumbWidth,proto3" json:"thumbWidth,omitempty"` ThumbHeight int32 `protobuf:"varint,22,opt,name=thumbHeight,proto3" json:"thumbHeight,omitempty"` FileId int32 `protobuf:"varint,23,opt,name=fileId,proto3" json:"fileId,omitempty"` ShowLen int32 `protobuf:"varint,24,opt,name=showLen,proto3" json:"showLen,omitempty"` DownloadLen int32 `protobuf:"varint,25,opt,name=downloadLen,proto3" json:"downloadLen,omitempty"` PbReserve []byte `protobuf:"bytes,29,opt,name=pbReserve,proto3" json:"pbReserve,omitempty"` } func (x *NotOnlineImage) Reset() { *x = NotOnlineImage{} if protoimpl.UnsafeEnabled { mi := &file_msg_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *NotOnlineImage) String() string { return protoimpl.X.MessageStringOf(x) } func (*NotOnlineImage) ProtoMessage() {} func (x *NotOnlineImage) ProtoReflect() protoreflect.Message { mi := &file_msg_proto_msgTypes[30] 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 NotOnlineImage.ProtoReflect.Descriptor instead. func (*NotOnlineImage) Descriptor() ([]byte, []int) { return file_msg_proto_rawDescGZIP(), []int{30} } func (x *NotOnlineImage) GetFilePath() string { if x != nil { return x.FilePath } return "" } func (x *NotOnlineImage) GetFileLen() int32 { if x != nil { return x.FileLen } return 0 } func (x *NotOnlineImage) GetDownloadPath() string { if x != nil { return x.DownloadPath } return "" } func (x *NotOnlineImage) GetOldVerSendFile() []byte { if x != nil { return x.OldVerSendFile } return nil } func (x *NotOnlineImage) GetImgType() int32 { if x != nil { return x.ImgType } return 0 } func (x *NotOnlineImage) GetPreviewsImage() []byte { if x != nil { return x.PreviewsImage } return nil } func (x *NotOnlineImage) GetPicMd5() []byte { if x != nil { return x.PicMd5 } return nil } func (x *NotOnlineImage) GetPicHeight() int32 { if x != nil { return x.PicHeight } return 0 } func (x *NotOnlineImage) GetPicWidth() int32 { if x != nil { return x.PicWidth } return 0 } func (x *NotOnlineImage) GetResId() string { if x != nil { return x.ResId } return "" } func (x *NotOnlineImage) GetFlag() []byte { if x != nil { return x.Flag } return nil } func (x *NotOnlineImage) GetThumbUrl() string { if x != nil { return x.ThumbUrl } return "" } func (x *NotOnlineImage) GetOriginal() int32 { if x != nil { return x.Original } return 0 } func (x *NotOnlineImage) GetBigUrl() string { if x != nil { return x.BigUrl } return "" } func (x *NotOnlineImage) GetOrigUrl() string { if x != nil { return x.OrigUrl } return "" } func (x *NotOnlineImage) GetBizType() int32 { if x != nil { return x.BizType } return 0 } func (x *NotOnlineImage) GetResult() int32 { if x != nil { return x.Result } return 0 } func (x *NotOnlineImage) GetIndex() int32 { if x != nil { return x.Index } return 0 } func (x *NotOnlineImage) GetOpFaceBuf() []byte { if x != nil { return x.OpFaceBuf } return nil } func (x *NotOnlineImage) GetOldPicMd5() bool { if x != nil { return x.OldPicMd5 } return false } func (x *NotOnlineImage) GetThumbWidth() int32 { if x != nil { return x.ThumbWidth } return 0 } func (x *NotOnlineImage) GetThumbHeight() int32 { if x != nil { return x.ThumbHeight } return 0 } func (x *NotOnlineImage) GetFileId() int32 { if x != nil { return x.FileId } return 0 } func (x *NotOnlineImage) GetShowLen() int32 { if x != nil { return x.ShowLen } return 0 } func (x *NotOnlineImage) GetDownloadLen() int32 { if x != nil { return x.DownloadLen } return 0 } func (x *NotOnlineImage) GetPbReserve() []byte { if x != nil { return x.PbReserve } return nil } type NotOnlineFile struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields FileType int32 `protobuf:"varint,1,opt,name=fileType,proto3" json:"fileType,omitempty"` Sig []byte `protobuf:"bytes,2,opt,name=sig,proto3" json:"sig,omitempty"` FileUuid []byte `protobuf:"bytes,3,opt,name=fileUuid,proto3" json:"fileUuid,omitempty"` FileMd5 []byte `protobuf:"bytes,4,opt,name=fileMd5,proto3" json:"fileMd5,omitempty"` FileName []byte `protobuf:"bytes,5,opt,name=fileName,proto3" json:"fileName,omitempty"` FileSize int64 `protobuf:"varint,6,opt,name=fileSize,proto3" json:"fileSize,omitempty"` Note []byte `protobuf:"bytes,7,opt,name=note,proto3" json:"note,omitempty"` Reserved int32 `protobuf:"varint,8,opt,name=reserved,proto3" json:"reserved,omitempty"` Subcmd int32 `protobuf:"varint,9,opt,name=subcmd,proto3" json:"subcmd,omitempty"` MicroCloud int32 `protobuf:"varint,10,opt,name=microCloud,proto3" json:"microCloud,omitempty"` BytesFileUrls [][]byte `protobuf:"bytes,11,rep,name=bytesFileUrls,proto3" json:"bytesFileUrls,omitempty"` DownloadFlag int32 `protobuf:"varint,12,opt,name=downloadFlag,proto3" json:"downloadFlag,omitempty"` DangerEvel int32 `protobuf:"varint,50,opt,name=dangerEvel,proto3" json:"dangerEvel,omitempty"` LifeTime int32 `protobuf:"varint,51,opt,name=lifeTime,proto3" json:"lifeTime,omitempty"` UploadTime int32 `protobuf:"varint,52,opt,name=uploadTime,proto3" json:"uploadTime,omitempty"` AbsFileType int32 `protobuf:"varint,53,opt,name=absFileType,proto3" json:"absFileType,omitempty"` ClientType int32 `protobuf:"varint,54,opt,name=clientType,proto3" json:"clientType,omitempty"` ExpireTime int32 `protobuf:"varint,55,opt,name=expireTime,proto3" json:"expireTime,omitempty"` PbReserve []byte `protobuf:"bytes,56,opt,name=pbReserve,proto3" json:"pbReserve,omitempty"` } func (x *NotOnlineFile) Reset() { *x = NotOnlineFile{} if protoimpl.UnsafeEnabled { mi := &file_msg_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *NotOnlineFile) String() string { return protoimpl.X.MessageStringOf(x) } func (*NotOnlineFile) ProtoMessage() {} func (x *NotOnlineFile) ProtoReflect() protoreflect.Message { mi := &file_msg_proto_msgTypes[31] 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 NotOnlineFile.ProtoReflect.Descriptor instead. func (*NotOnlineFile) Descriptor() ([]byte, []int) { return file_msg_proto_rawDescGZIP(), []int{31} } func (x *NotOnlineFile) GetFileType() int32 { if x != nil { return x.FileType } return 0 } func (x *NotOnlineFile) GetSig() []byte { if x != nil { return x.Sig } return nil } func (x *NotOnlineFile) GetFileUuid() []byte { if x != nil { return x.FileUuid } return nil } func (x *NotOnlineFile) GetFileMd5() []byte { if x != nil { return x.FileMd5 } return nil } func (x *NotOnlineFile) GetFileName() []byte { if x != nil { return x.FileName } return nil } func (x *NotOnlineFile) GetFileSize() int64 { if x != nil { return x.FileSize } return 0 } func (x *NotOnlineFile) GetNote() []byte { if x != nil { return x.Note } return nil } func (x *NotOnlineFile) GetReserved() int32 { if x != nil { return x.Reserved } return 0 } func (x *NotOnlineFile) GetSubcmd() int32 { if x != nil { return x.Subcmd } return 0 } func (x *NotOnlineFile) GetMicroCloud() int32 { if x != nil { return x.MicroCloud } return 0 } func (x *NotOnlineFile) GetBytesFileUrls() [][]byte { if x != nil { return x.BytesFileUrls } return nil } func (x *NotOnlineFile) GetDownloadFlag() int32 { if x != nil { return x.DownloadFlag } return 0 } func (x *NotOnlineFile) GetDangerEvel() int32 { if x != nil { return x.DangerEvel } return 0 } func (x *NotOnlineFile) GetLifeTime() int32 { if x != nil { return x.LifeTime } return 0 } func (x *NotOnlineFile) GetUploadTime() int32 { if x != nil { return x.UploadTime } return 0 } func (x *NotOnlineFile) GetAbsFileType() int32 { if x != nil { return x.AbsFileType } return 0 } func (x *NotOnlineFile) GetClientType() int32 { if x != nil { return x.ClientType } return 0 } func (x *NotOnlineFile) GetExpireTime() int32 { if x != nil { return x.ExpireTime } return 0 } func (x *NotOnlineFile) GetPbReserve() []byte { if x != nil { return x.PbReserve } return nil } type TransElem struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ElemType int32 `protobuf:"varint,1,opt,name=elemType,proto3" json:"elemType,omitempty"` ElemValue []byte `protobuf:"bytes,2,opt,name=elemValue,proto3" json:"elemValue,omitempty"` } func (x *TransElem) Reset() { *x = TransElem{} if protoimpl.UnsafeEnabled { mi := &file_msg_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TransElem) String() string { return protoimpl.X.MessageStringOf(x) } func (*TransElem) ProtoMessage() {} func (x *TransElem) ProtoReflect() protoreflect.Message { mi := &file_msg_proto_msgTypes[32] 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 TransElem.ProtoReflect.Descriptor instead. func (*TransElem) Descriptor() ([]byte, []int) { return file_msg_proto_rawDescGZIP(), []int{32} } func (x *TransElem) GetElemType() int32 { if x != nil { return x.ElemType } return 0 } func (x *TransElem) GetElemValue() []byte { if x != nil { return x.ElemValue } return nil } type ExtraInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Nick []byte `protobuf:"bytes,1,opt,name=nick,proto3" json:"nick,omitempty"` GroupCard []byte `protobuf:"bytes,2,opt,name=groupCard,proto3" json:"groupCard,omitempty"` Level int32 `protobuf:"varint,3,opt,name=level,proto3" json:"level,omitempty"` Flags int32 `protobuf:"varint,4,opt,name=flags,proto3" json:"flags,omitempty"` GroupMask int32 `protobuf:"varint,5,opt,name=groupMask,proto3" json:"groupMask,omitempty"` MsgTailId int32 `protobuf:"varint,6,opt,name=msgTailId,proto3" json:"msgTailId,omitempty"` SenderTitle []byte `protobuf:"bytes,7,opt,name=senderTitle,proto3" json:"senderTitle,omitempty"` ApnsTips []byte `protobuf:"bytes,8,opt,name=apnsTips,proto3" json:"apnsTips,omitempty"` Uin int64 `protobuf:"varint,9,opt,name=uin,proto3" json:"uin,omitempty"` MsgStateFlag int32 `protobuf:"varint,10,opt,name=msgStateFlag,proto3" json:"msgStateFlag,omitempty"` ApnsSoundType int32 `protobuf:"varint,11,opt,name=apnsSoundType,proto3" json:"apnsSoundType,omitempty"` NewGroupFlag int32 `protobuf:"varint,12,opt,name=newGroupFlag,proto3" json:"newGroupFlag,omitempty"` } func (x *ExtraInfo) Reset() { *x = ExtraInfo{} if protoimpl.UnsafeEnabled { mi := &file_msg_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ExtraInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*ExtraInfo) ProtoMessage() {} func (x *ExtraInfo) ProtoReflect() protoreflect.Message { mi := &file_msg_proto_msgTypes[33] 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 ExtraInfo.ProtoReflect.Descriptor instead. func (*ExtraInfo) Descriptor() ([]byte, []int) { return file_msg_proto_rawDescGZIP(), []int{33} } func (x *ExtraInfo) GetNick() []byte { if x != nil { return x.Nick } return nil } func (x *ExtraInfo) GetGroupCard() []byte { if x != nil { return x.GroupCard } return nil } func (x *ExtraInfo) GetLevel() int32 { if x != nil { return x.Level } return 0 } func (x *ExtraInfo) GetFlags() int32 { if x != nil { return x.Flags } return 0 } func (x *ExtraInfo) GetGroupMask() int32 { if x != nil { return x.GroupMask } return 0 } func (x *ExtraInfo) GetMsgTailId() int32 { if x != nil { return x.MsgTailId } return 0 } func (x *ExtraInfo) GetSenderTitle() []byte { if x != nil { return x.SenderTitle } return nil } func (x *ExtraInfo) GetApnsTips() []byte { if x != nil { return x.ApnsTips } return nil } func (x *ExtraInfo) GetUin() int64 { if x != nil { return x.Uin } return 0 } func (x *ExtraInfo) GetMsgStateFlag() int32 { if x != nil { return x.MsgStateFlag } return 0 } func (x *ExtraInfo) GetApnsSoundType() int32 { if x != nil { return x.ApnsSoundType } return 0 } func (x *ExtraInfo) GetNewGroupFlag() int32 { if x != nil { return x.NewGroupFlag } return 0 } type GroupFile struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Filename []byte `protobuf:"bytes,1,opt,name=filename,proto3" json:"filename,omitempty"` FileSize int64 `protobuf:"varint,2,opt,name=fileSize,proto3" json:"fileSize,omitempty"` FileId []byte `protobuf:"bytes,3,opt,name=fileId,proto3" json:"fileId,omitempty"` BatchId []byte `protobuf:"bytes,4,opt,name=batchId,proto3" json:"batchId,omitempty"` FileKey []byte `protobuf:"bytes,5,opt,name=fileKey,proto3" json:"fileKey,omitempty"` Mark []byte `protobuf:"bytes,6,opt,name=mark,proto3" json:"mark,omitempty"` Sequence int64 `protobuf:"varint,7,opt,name=sequence,proto3" json:"sequence,omitempty"` BatchItemId []byte `protobuf:"bytes,8,opt,name=batchItemId,proto3" json:"batchItemId,omitempty"` FeedMsgTime int32 `protobuf:"varint,9,opt,name=feedMsgTime,proto3" json:"feedMsgTime,omitempty"` PbReserve []byte `protobuf:"bytes,10,opt,name=pbReserve,proto3" json:"pbReserve,omitempty"` } func (x *GroupFile) Reset() { *x = GroupFile{} if protoimpl.UnsafeEnabled { mi := &file_msg_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GroupFile) String() string { return protoimpl.X.MessageStringOf(x) } func (*GroupFile) ProtoMessage() {} func (x *GroupFile) ProtoReflect() protoreflect.Message { mi := &file_msg_proto_msgTypes[34] 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 GroupFile.ProtoReflect.Descriptor instead. func (*GroupFile) Descriptor() ([]byte, []int) { return file_msg_proto_rawDescGZIP(), []int{34} } func (x *GroupFile) GetFilename() []byte { if x != nil { return x.Filename } return nil } func (x *GroupFile) GetFileSize() int64 { if x != nil { return x.FileSize } return 0 } func (x *GroupFile) GetFileId() []byte { if x != nil { return x.FileId } return nil } func (x *GroupFile) GetBatchId() []byte { if x != nil { return x.BatchId } return nil } func (x *GroupFile) GetFileKey() []byte { if x != nil { return x.FileKey } return nil } func (x *GroupFile) GetMark() []byte { if x != nil { return x.Mark } return nil } func (x *GroupFile) GetSequence() int64 { if x != nil { return x.Sequence } return 0 } func (x *GroupFile) GetBatchItemId() []byte { if x != nil { return x.BatchItemId } return nil } func (x *GroupFile) GetFeedMsgTime() int32 { if x != nil { return x.FeedMsgTime } return 0 } func (x *GroupFile) GetPbReserve() []byte { if x != nil { return x.PbReserve } return nil } type AnonymousGroupMessage struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Flags int32 `protobuf:"varint,1,opt,name=flags,proto3" json:"flags,omitempty"` AnonId []byte `protobuf:"bytes,2,opt,name=anonId,proto3" json:"anonId,omitempty"` AnonNick []byte `protobuf:"bytes,3,opt,name=anonNick,proto3" json:"anonNick,omitempty"` HeadPortrait int32 `protobuf:"varint,4,opt,name=headPortrait,proto3" json:"headPortrait,omitempty"` ExpireTime int32 `protobuf:"varint,5,opt,name=expireTime,proto3" json:"expireTime,omitempty"` BubbleId int32 `protobuf:"varint,6,opt,name=bubbleId,proto3" json:"bubbleId,omitempty"` RankColor []byte `protobuf:"bytes,7,opt,name=rankColor,proto3" json:"rankColor,omitempty"` } func (x *AnonymousGroupMessage) Reset() { *x = AnonymousGroupMessage{} if protoimpl.UnsafeEnabled { mi := &file_msg_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AnonymousGroupMessage) String() string { return protoimpl.X.MessageStringOf(x) } func (*AnonymousGroupMessage) ProtoMessage() {} func (x *AnonymousGroupMessage) ProtoReflect() protoreflect.Message { mi := &file_msg_proto_msgTypes[35] 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 AnonymousGroupMessage.ProtoReflect.Descriptor instead. func (*AnonymousGroupMessage) Descriptor() ([]byte, []int) { return file_msg_proto_rawDescGZIP(), []int{35} } func (x *AnonymousGroupMessage) GetFlags() int32 { if x != nil { return x.Flags } return 0 } func (x *AnonymousGroupMessage) GetAnonId() []byte { if x != nil { return x.AnonId } return nil } func (x *AnonymousGroupMessage) GetAnonNick() []byte { if x != nil { return x.AnonNick } return nil } func (x *AnonymousGroupMessage) GetHeadPortrait() int32 { if x != nil { return x.HeadPortrait } return 0 } func (x *AnonymousGroupMessage) GetExpireTime() int32 { if x != nil { return x.ExpireTime } return 0 } func (x *AnonymousGroupMessage) GetBubbleId() int32 { if x != nil { return x.BubbleId } return 0 } func (x *AnonymousGroupMessage) GetRankColor() []byte { if x != nil { return x.RankColor } return nil } type VideoFile struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields FileUuid []byte `protobuf:"bytes,1,opt,name=fileUuid,proto3" json:"fileUuid,omitempty"` FileMd5 []byte `protobuf:"bytes,2,opt,name=fileMd5,proto3" json:"fileMd5,omitempty"` FileName []byte `protobuf:"bytes,3,opt,name=fileName,proto3" json:"fileName,omitempty"` FileFormat int32 `protobuf:"varint,4,opt,name=fileFormat,proto3" json:"fileFormat,omitempty"` FileTime int32 `protobuf:"varint,5,opt,name=fileTime,proto3" json:"fileTime,omitempty"` FileSize int32 `protobuf:"varint,6,opt,name=fileSize,proto3" json:"fileSize,omitempty"` ThumbWidth int32 `protobuf:"varint,7,opt,name=thumbWidth,proto3" json:"thumbWidth,omitempty"` ThumbHeight int32 `protobuf:"varint,8,opt,name=thumbHeight,proto3" json:"thumbHeight,omitempty"` ThumbFileMd5 []byte `protobuf:"bytes,9,opt,name=thumbFileMd5,proto3" json:"thumbFileMd5,omitempty"` Source []byte `protobuf:"bytes,10,opt,name=source,proto3" json:"source,omitempty"` ThumbFileSize int32 `protobuf:"varint,11,opt,name=thumbFileSize,proto3" json:"thumbFileSize,omitempty"` BusiType int32 `protobuf:"varint,12,opt,name=busiType,proto3" json:"busiType,omitempty"` FromChatType int32 `protobuf:"varint,13,opt,name=fromChatType,proto3" json:"fromChatType,omitempty"` ToChatType int32 `protobuf:"varint,14,opt,name=toChatType,proto3" json:"toChatType,omitempty"` BoolSupportProgressive bool `protobuf:"varint,15,opt,name=boolSupportProgressive,proto3" json:"boolSupportProgressive,omitempty"` FileWidth int32 `protobuf:"varint,16,opt,name=fileWidth,proto3" json:"fileWidth,omitempty"` FileHeight int32 `protobuf:"varint,17,opt,name=fileHeight,proto3" json:"fileHeight,omitempty"` SubBusiType int32 `protobuf:"varint,18,opt,name=subBusiType,proto3" json:"subBusiType,omitempty"` VideoAttr int32 `protobuf:"varint,19,opt,name=videoAttr,proto3" json:"videoAttr,omitempty"` BytesThumbFileUrls [][]byte `protobuf:"bytes,20,rep,name=bytesThumbFileUrls,proto3" json:"bytesThumbFileUrls,omitempty"` BytesVideoFileUrls [][]byte `protobuf:"bytes,21,rep,name=bytesVideoFileUrls,proto3" json:"bytesVideoFileUrls,omitempty"` ThumbDownloadFlag int32 `protobuf:"varint,22,opt,name=thumbDownloadFlag,proto3" json:"thumbDownloadFlag,omitempty"` VideoDownloadFlag int32 `protobuf:"varint,23,opt,name=videoDownloadFlag,proto3" json:"videoDownloadFlag,omitempty"` PbReserve []byte `protobuf:"bytes,24,opt,name=pbReserve,proto3" json:"pbReserve,omitempty"` } func (x *VideoFile) Reset() { *x = VideoFile{} if protoimpl.UnsafeEnabled { mi := &file_msg_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *VideoFile) String() string { return protoimpl.X.MessageStringOf(x) } func (*VideoFile) ProtoMessage() {} func (x *VideoFile) ProtoReflect() protoreflect.Message { mi := &file_msg_proto_msgTypes[36] 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 VideoFile.ProtoReflect.Descriptor instead. func (*VideoFile) Descriptor() ([]byte, []int) { return file_msg_proto_rawDescGZIP(), []int{36} } func (x *VideoFile) GetFileUuid() []byte { if x != nil { return x.FileUuid } return nil } func (x *VideoFile) GetFileMd5() []byte { if x != nil { return x.FileMd5 } return nil } func (x *VideoFile) GetFileName() []byte { if x != nil { return x.FileName } return nil } func (x *VideoFile) GetFileFormat() int32 { if x != nil { return x.FileFormat } return 0 } func (x *VideoFile) GetFileTime() int32 { if x != nil { return x.FileTime } return 0 } func (x *VideoFile) GetFileSize() int32 { if x != nil { return x.FileSize } return 0 } func (x *VideoFile) GetThumbWidth() int32 { if x != nil { return x.ThumbWidth } return 0 } func (x *VideoFile) GetThumbHeight() int32 { if x != nil { return x.ThumbHeight } return 0 } func (x *VideoFile) GetThumbFileMd5() []byte { if x != nil { return x.ThumbFileMd5 } return nil } func (x *VideoFile) GetSource() []byte { if x != nil { return x.Source } return nil } func (x *VideoFile) GetThumbFileSize() int32 { if x != nil { return x.ThumbFileSize } return 0 } func (x *VideoFile) GetBusiType() int32 { if x != nil { return x.BusiType } return 0 } func (x *VideoFile) GetFromChatType() int32 { if x != nil { return x.FromChatType } return 0 } func (x *VideoFile) GetToChatType() int32 { if x != nil { return x.ToChatType } return 0 } func (x *VideoFile) GetBoolSupportProgressive() bool { if x != nil { return x.BoolSupportProgressive } return false } func (x *VideoFile) GetFileWidth() int32 { if x != nil { return x.FileWidth } return 0 } func (x *VideoFile) GetFileHeight() int32 { if x != nil { return x.FileHeight } return 0 } func (x *VideoFile) GetSubBusiType() int32 { if x != nil { return x.SubBusiType } return 0 } func (x *VideoFile) GetVideoAttr() int32 { if x != nil { return x.VideoAttr } return 0 } func (x *VideoFile) GetBytesThumbFileUrls() [][]byte { if x != nil { return x.BytesThumbFileUrls } return nil } func (x *VideoFile) GetBytesVideoFileUrls() [][]byte { if x != nil { return x.BytesVideoFileUrls } return nil } func (x *VideoFile) GetThumbDownloadFlag() int32 { if x != nil { return x.ThumbDownloadFlag } return 0 } func (x *VideoFile) GetVideoDownloadFlag() int32 { if x != nil { return x.VideoDownloadFlag } return 0 } func (x *VideoFile) GetPbReserve() []byte { if x != nil { return x.PbReserve } return nil } type SourceMsg struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields OrigSeqs []int32 `protobuf:"varint,1,rep,packed,name=origSeqs,proto3" json:"origSeqs,omitempty"` SenderUin int64 `protobuf:"varint,2,opt,name=senderUin,proto3" json:"senderUin,omitempty"` Time int32 `protobuf:"varint,3,opt,name=time,proto3" json:"time,omitempty"` Flag int32 `protobuf:"varint,4,opt,name=flag,proto3" json:"flag,omitempty"` Elems []*Elem `protobuf:"bytes,5,rep,name=elems,proto3" json:"elems,omitempty"` Type int32 `protobuf:"varint,6,opt,name=type,proto3" json:"type,omitempty"` RichMsg []byte `protobuf:"bytes,7,opt,name=richMsg,proto3" json:"richMsg,omitempty"` PbReserve []byte `protobuf:"bytes,8,opt,name=pbReserve,proto3" json:"pbReserve,omitempty"` SrcMsg []byte `protobuf:"bytes,9,opt,name=srcMsg,proto3" json:"srcMsg,omitempty"` ToUin int64 `protobuf:"varint,10,opt,name=toUin,proto3" json:"toUin,omitempty"` TroopName []byte `protobuf:"bytes,11,opt,name=troopName,proto3" json:"troopName,omitempty"` } func (x *SourceMsg) Reset() { *x = SourceMsg{} if protoimpl.UnsafeEnabled { mi := &file_msg_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SourceMsg) String() string { return protoimpl.X.MessageStringOf(x) } func (*SourceMsg) ProtoMessage() {} func (x *SourceMsg) ProtoReflect() protoreflect.Message { mi := &file_msg_proto_msgTypes[37] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SourceMsg.ProtoReflect.Descriptor instead. func (*SourceMsg) Descriptor() ([]byte, []int) { return file_msg_proto_rawDescGZIP(), []int{37} } func (x *SourceMsg) GetOrigSeqs() []int32 { if x != nil { return x.OrigSeqs } return nil } func (x *SourceMsg) GetSenderUin() int64 { if x != nil { return x.SenderUin } return 0 } func (x *SourceMsg) GetTime() int32 { if x != nil { return x.Time } return 0 } func (x *SourceMsg) GetFlag() int32 { if x != nil { return x.Flag } return 0 } func (x *SourceMsg) GetElems() []*Elem { if x != nil { return x.Elems } return nil } func (x *SourceMsg) GetType() int32 { if x != nil { return x.Type } return 0 } func (x *SourceMsg) GetRichMsg() []byte { if x != nil { return x.RichMsg } return nil } func (x *SourceMsg) GetPbReserve() []byte { if x != nil { return x.PbReserve } return nil } func (x *SourceMsg) GetSrcMsg() []byte { if x != nil { return x.SrcMsg } return nil } func (x *SourceMsg) GetToUin() int64 { if x != nil { return x.ToUin } return 0 } func (x *SourceMsg) GetTroopName() []byte { if x != nil { return x.TroopName } return nil } type Face struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Index int32 `protobuf:"varint,1,opt,name=index,proto3" json:"index,omitempty"` Old []byte `protobuf:"bytes,2,opt,name=old,proto3" json:"old,omitempty"` Buf []byte `protobuf:"bytes,11,opt,name=buf,proto3" json:"buf,omitempty"` } func (x *Face) Reset() { *x = Face{} if protoimpl.UnsafeEnabled { mi := &file_msg_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Face) String() string { return protoimpl.X.MessageStringOf(x) } func (*Face) ProtoMessage() {} func (x *Face) ProtoReflect() protoreflect.Message { mi := &file_msg_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Face.ProtoReflect.Descriptor instead. func (*Face) Descriptor() ([]byte, []int) { return file_msg_proto_rawDescGZIP(), []int{38} } func (x *Face) GetIndex() int32 { if x != nil { return x.Index } return 0 } func (x *Face) GetOld() []byte { if x != nil { return x.Old } return nil } func (x *Face) GetBuf() []byte { if x != nil { return x.Buf } return nil } type LightAppElem struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Data []byte `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` MsgResid []byte `protobuf:"bytes,2,opt,name=msgResid,proto3" json:"msgResid,omitempty"` } func (x *LightAppElem) Reset() { *x = LightAppElem{} if protoimpl.UnsafeEnabled { mi := &file_msg_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LightAppElem) String() string { return protoimpl.X.MessageStringOf(x) } func (*LightAppElem) ProtoMessage() {} func (x *LightAppElem) ProtoReflect() protoreflect.Message { mi := &file_msg_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use LightAppElem.ProtoReflect.Descriptor instead. func (*LightAppElem) Descriptor() ([]byte, []int) { return file_msg_proto_rawDescGZIP(), []int{39} } func (x *LightAppElem) GetData() []byte { if x != nil { return x.Data } return nil } func (x *LightAppElem) GetMsgResid() []byte { if x != nil { return x.MsgResid } return nil } type CustomFace struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Guid []byte `protobuf:"bytes,1,opt,name=guid,proto3" json:"guid,omitempty"` FilePath string `protobuf:"bytes,2,opt,name=filePath,proto3" json:"filePath,omitempty"` Shortcut string `protobuf:"bytes,3,opt,name=shortcut,proto3" json:"shortcut,omitempty"` Buffer []byte `protobuf:"bytes,4,opt,name=buffer,proto3" json:"buffer,omitempty"` Flag []byte `protobuf:"bytes,5,opt,name=flag,proto3" json:"flag,omitempty"` OldData []byte `protobuf:"bytes,6,opt,name=oldData,proto3" json:"oldData,omitempty"` FileId int32 `protobuf:"varint,7,opt,name=fileId,proto3" json:"fileId,omitempty"` ServerIp int32 `protobuf:"varint,8,opt,name=serverIp,proto3" json:"serverIp,omitempty"` ServerPort int32 `protobuf:"varint,9,opt,name=serverPort,proto3" json:"serverPort,omitempty"` FileType int32 `protobuf:"varint,10,opt,name=fileType,proto3" json:"fileType,omitempty"` Signature []byte `protobuf:"bytes,11,opt,name=signature,proto3" json:"signature,omitempty"` Useful int32 `protobuf:"varint,12,opt,name=useful,proto3" json:"useful,omitempty"` Md5 []byte `protobuf:"bytes,13,opt,name=md5,proto3" json:"md5,omitempty"` ThumbUrl string `protobuf:"bytes,14,opt,name=thumbUrl,proto3" json:"thumbUrl,omitempty"` BigUrl string `protobuf:"bytes,15,opt,name=bigUrl,proto3" json:"bigUrl,omitempty"` OrigUrl string `protobuf:"bytes,16,opt,name=origUrl,proto3" json:"origUrl,omitempty"` BizType int32 `protobuf:"varint,17,opt,name=bizType,proto3" json:"bizType,omitempty"` RepeatIndex int32 `protobuf:"varint,18,opt,name=repeatIndex,proto3" json:"repeatIndex,omitempty"` RepeatImage int32 `protobuf:"varint,19,opt,name=repeatImage,proto3" json:"repeatImage,omitempty"` ImageType int32 `protobuf:"varint,20,opt,name=imageType,proto3" json:"imageType,omitempty"` Index int32 `protobuf:"varint,21,opt,name=index,proto3" json:"index,omitempty"` Width int32 `protobuf:"varint,22,opt,name=width,proto3" json:"width,omitempty"` Height int32 `protobuf:"varint,23,opt,name=height,proto3" json:"height,omitempty"` Source int32 `protobuf:"varint,24,opt,name=source,proto3" json:"source,omitempty"` Size int32 `protobuf:"varint,25,opt,name=size,proto3" json:"size,omitempty"` Origin int32 `protobuf:"varint,26,opt,name=origin,proto3" json:"origin,omitempty"` ThumbWidth int32 `protobuf:"varint,27,opt,name=thumbWidth,proto3" json:"thumbWidth,omitempty"` ThumbHeight int32 `protobuf:"varint,28,opt,name=thumbHeight,proto3" json:"thumbHeight,omitempty"` ShowLen int32 `protobuf:"varint,29,opt,name=showLen,proto3" json:"showLen,omitempty"` DownloadLen int32 `protobuf:"varint,30,opt,name=downloadLen,proto3" json:"downloadLen,omitempty"` X400Url string `protobuf:"bytes,31,opt,name=_400Url,json=400Url,proto3" json:"_400Url,omitempty"` X400Width int32 `protobuf:"varint,32,opt,name=_400Width,json=400Width,proto3" json:"_400Width,omitempty"` X400Height int32 `protobuf:"varint,33,opt,name=_400Height,json=400Height,proto3" json:"_400Height,omitempty"` PbReserve []byte `protobuf:"bytes,34,opt,name=pbReserve,proto3" json:"pbReserve,omitempty"` } func (x *CustomFace) Reset() { *x = CustomFace{} if protoimpl.UnsafeEnabled { mi := &file_msg_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CustomFace) String() string { return protoimpl.X.MessageStringOf(x) } func (*CustomFace) ProtoMessage() {} func (x *CustomFace) ProtoReflect() protoreflect.Message { mi := &file_msg_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CustomFace.ProtoReflect.Descriptor instead. func (*CustomFace) Descriptor() ([]byte, []int) { return file_msg_proto_rawDescGZIP(), []int{40} } func (x *CustomFace) GetGuid() []byte { if x != nil { return x.Guid } return nil } func (x *CustomFace) GetFilePath() string { if x != nil { return x.FilePath } return "" } func (x *CustomFace) GetShortcut() string { if x != nil { return x.Shortcut } return "" } func (x *CustomFace) GetBuffer() []byte { if x != nil { return x.Buffer } return nil } func (x *CustomFace) GetFlag() []byte { if x != nil { return x.Flag } return nil } func (x *CustomFace) GetOldData() []byte { if x != nil { return x.OldData } return nil } func (x *CustomFace) GetFileId() int32 { if x != nil { return x.FileId } return 0 } func (x *CustomFace) GetServerIp() int32 { if x != nil { return x.ServerIp } return 0 } func (x *CustomFace) GetServerPort() int32 { if x != nil { return x.ServerPort } return 0 } func (x *CustomFace) GetFileType() int32 { if x != nil { return x.FileType } return 0 } func (x *CustomFace) GetSignature() []byte { if x != nil { return x.Signature } return nil } func (x *CustomFace) GetUseful() int32 { if x != nil { return x.Useful } return 0 } func (x *CustomFace) GetMd5() []byte { if x != nil { return x.Md5 } return nil } func (x *CustomFace) GetThumbUrl() string { if x != nil { return x.ThumbUrl } return "" } func (x *CustomFace) GetBigUrl() string { if x != nil { return x.BigUrl } return "" } func (x *CustomFace) GetOrigUrl() string { if x != nil { return x.OrigUrl } return "" } func (x *CustomFace) GetBizType() int32 { if x != nil { return x.BizType } return 0 } func (x *CustomFace) GetRepeatIndex() int32 { if x != nil { return x.RepeatIndex } return 0 } func (x *CustomFace) GetRepeatImage() int32 { if x != nil { return x.RepeatImage } return 0 } func (x *CustomFace) GetImageType() int32 { if x != nil { return x.ImageType } return 0 } func (x *CustomFace) GetIndex() int32 { if x != nil { return x.Index } return 0 } func (x *CustomFace) GetWidth() int32 { if x != nil { return x.Width } return 0 } func (x *CustomFace) GetHeight() int32 { if x != nil { return x.Height } return 0 } func (x *CustomFace) GetSource() int32 { if x != nil { return x.Source } return 0 } func (x *CustomFace) GetSize() int32 { if x != nil { return x.Size } return 0 } func (x *CustomFace) GetOrigin() int32 { if x != nil { return x.Origin } return 0 } func (x *CustomFace) GetThumbWidth() int32 { if x != nil { return x.ThumbWidth } return 0 } func (x *CustomFace) GetThumbHeight() int32 { if x != nil { return x.ThumbHeight } return 0 } func (x *CustomFace) GetShowLen() int32 { if x != nil { return x.ShowLen } return 0 } func (x *CustomFace) GetDownloadLen() int32 { if x != nil { return x.DownloadLen } return 0 } func (x *CustomFace) GetX400Url() string { if x != nil { return x.X400Url } return "" } func (x *CustomFace) GetX400Width() int32 { if x != nil { return x.X400Width } return 0 } func (x *CustomFace) GetX400Height() int32 { if x != nil { return x.X400Height } return 0 } func (x *CustomFace) GetPbReserve() []byte { if x != nil { return x.PbReserve } return nil } type ContentHead struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PkgNum int32 `protobuf:"varint,1,opt,name=pkgNum,proto3" json:"pkgNum,omitempty"` PkgIndex int32 `protobuf:"varint,2,opt,name=pkgIndex,proto3" json:"pkgIndex,omitempty"` DivSeq int32 `protobuf:"varint,3,opt,name=divSeq,proto3" json:"divSeq,omitempty"` AutoReply int32 `protobuf:"varint,4,opt,name=autoReply,proto3" json:"autoReply,omitempty"` } func (x *ContentHead) Reset() { *x = ContentHead{} if protoimpl.UnsafeEnabled { mi := &file_msg_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ContentHead) String() string { return protoimpl.X.MessageStringOf(x) } func (*ContentHead) ProtoMessage() {} func (x *ContentHead) ProtoReflect() protoreflect.Message { mi := &file_msg_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ContentHead.ProtoReflect.Descriptor instead. func (*ContentHead) Descriptor() ([]byte, []int) { return file_msg_proto_rawDescGZIP(), []int{41} } func (x *ContentHead) GetPkgNum() int32 { if x != nil { return x.PkgNum } return 0 } func (x *ContentHead) GetPkgIndex() int32 { if x != nil { return x.PkgIndex } return 0 } func (x *ContentHead) GetDivSeq() int32 { if x != nil { return x.DivSeq } return 0 } func (x *ContentHead) GetAutoReply() int32 { if x != nil { return x.AutoReply } return 0 } type MessageHead struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields FromUin int64 `protobuf:"varint,1,opt,name=fromUin,proto3" json:"fromUin,omitempty"` ToUin int64 `protobuf:"varint,2,opt,name=toUin,proto3" json:"toUin,omitempty"` MsgType int32 `protobuf:"varint,3,opt,name=msgType,proto3" json:"msgType,omitempty"` C2CCmd int32 `protobuf:"varint,4,opt,name=c2cCmd,proto3" json:"c2cCmd,omitempty"` MsgSeq int32 `protobuf:"varint,5,opt,name=msgSeq,proto3" json:"msgSeq,omitempty"` MsgTime int32 `protobuf:"varint,6,opt,name=msgTime,proto3" json:"msgTime,omitempty"` MsgUid int64 `protobuf:"varint,7,opt,name=msgUid,proto3" json:"msgUid,omitempty"` C2CTmpMsgHead *C2CTempMessageHead `protobuf:"bytes,8,opt,name=c2cTmpMsgHead,proto3" json:"c2cTmpMsgHead,omitempty"` GroupInfo *GroupInfo `protobuf:"bytes,9,opt,name=groupInfo,proto3" json:"groupInfo,omitempty"` FromAppid int32 `protobuf:"varint,10,opt,name=fromAppid,proto3" json:"fromAppid,omitempty"` FromInstid int32 `protobuf:"varint,11,opt,name=fromInstid,proto3" json:"fromInstid,omitempty"` UserActive int32 `protobuf:"varint,12,opt,name=userActive,proto3" json:"userActive,omitempty"` DiscussInfo *DiscussInfo `protobuf:"bytes,13,opt,name=discussInfo,proto3" json:"discussInfo,omitempty"` FromNick string `protobuf:"bytes,14,opt,name=fromNick,proto3" json:"fromNick,omitempty"` AuthUin int64 `protobuf:"varint,15,opt,name=authUin,proto3" json:"authUin,omitempty"` AuthNick string `protobuf:"bytes,16,opt,name=authNick,proto3" json:"authNick,omitempty"` MsgFlag int32 `protobuf:"varint,17,opt,name=msgFlag,proto3" json:"msgFlag,omitempty"` AuthRemark string `protobuf:"bytes,18,opt,name=authRemark,proto3" json:"authRemark,omitempty"` GroupName string `protobuf:"bytes,19,opt,name=groupName,proto3" json:"groupName,omitempty"` MutiltransHead *MutilTransHead `protobuf:"bytes,20,opt,name=mutiltransHead,proto3" json:"mutiltransHead,omitempty"` MsgInstCtrl *InstCtrl `protobuf:"bytes,21,opt,name=msgInstCtrl,proto3" json:"msgInstCtrl,omitempty"` PublicAccountGroupSendFlag int32 `protobuf:"varint,22,opt,name=publicAccountGroupSendFlag,proto3" json:"publicAccountGroupSendFlag,omitempty"` WseqInC2CMsghead int32 `protobuf:"varint,23,opt,name=wseqInC2cMsghead,proto3" json:"wseqInC2cMsghead,omitempty"` Cpid int64 `protobuf:"varint,24,opt,name=cpid,proto3" json:"cpid,omitempty"` ExtGroupKeyInfo *ExtGroupKeyInfo `protobuf:"bytes,25,opt,name=extGroupKeyInfo,proto3" json:"extGroupKeyInfo,omitempty"` MultiCompatibleText string `protobuf:"bytes,26,opt,name=multiCompatibleText,proto3" json:"multiCompatibleText,omitempty"` AuthSex int32 `protobuf:"varint,27,opt,name=authSex,proto3" json:"authSex,omitempty"` IsSrcMsg bool `protobuf:"varint,28,opt,name=isSrcMsg,proto3" json:"isSrcMsg,omitempty"` } func (x *MessageHead) Reset() { *x = MessageHead{} if protoimpl.UnsafeEnabled { mi := &file_msg_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *MessageHead) String() string { return protoimpl.X.MessageStringOf(x) } func (*MessageHead) ProtoMessage() {} func (x *MessageHead) ProtoReflect() protoreflect.Message { mi := &file_msg_proto_msgTypes[42] 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 MessageHead.ProtoReflect.Descriptor instead. func (*MessageHead) Descriptor() ([]byte, []int) { return file_msg_proto_rawDescGZIP(), []int{42} } func (x *MessageHead) GetFromUin() int64 { if x != nil { return x.FromUin } return 0 } func (x *MessageHead) GetToUin() int64 { if x != nil { return x.ToUin } return 0 } func (x *MessageHead) GetMsgType() int32 { if x != nil { return x.MsgType } return 0 } func (x *MessageHead) GetC2CCmd() int32 { if x != nil { return x.C2CCmd } return 0 } func (x *MessageHead) GetMsgSeq() int32 { if x != nil { return x.MsgSeq } return 0 } func (x *MessageHead) GetMsgTime() int32 { if x != nil { return x.MsgTime } return 0 } func (x *MessageHead) GetMsgUid() int64 { if x != nil { return x.MsgUid } return 0 } func (x *MessageHead) GetC2CTmpMsgHead() *C2CTempMessageHead { if x != nil { return x.C2CTmpMsgHead } return nil } func (x *MessageHead) GetGroupInfo() *GroupInfo { if x != nil { return x.GroupInfo } return nil } func (x *MessageHead) GetFromAppid() int32 { if x != nil { return x.FromAppid } return 0 } func (x *MessageHead) GetFromInstid() int32 { if x != nil { return x.FromInstid } return 0 } func (x *MessageHead) GetUserActive() int32 { if x != nil { return x.UserActive } return 0 } func (x *MessageHead) GetDiscussInfo() *DiscussInfo { if x != nil { return x.DiscussInfo } return nil } func (x *MessageHead) GetFromNick() string { if x != nil { return x.FromNick } return "" } func (x *MessageHead) GetAuthUin() int64 { if x != nil { return x.AuthUin } return 0 } func (x *MessageHead) GetAuthNick() string { if x != nil { return x.AuthNick } return "" } func (x *MessageHead) GetMsgFlag() int32 { if x != nil { return x.MsgFlag } return 0 } func (x *MessageHead) GetAuthRemark() string { if x != nil { return x.AuthRemark } return "" } func (x *MessageHead) GetGroupName() string { if x != nil { return x.GroupName } return "" } func (x *MessageHead) GetMutiltransHead() *MutilTransHead { if x != nil { return x.MutiltransHead } return nil } func (x *MessageHead) GetMsgInstCtrl() *InstCtrl { if x != nil { return x.MsgInstCtrl } return nil } func (x *MessageHead) GetPublicAccountGroupSendFlag() int32 { if x != nil { return x.PublicAccountGroupSendFlag } return 0 } func (x *MessageHead) GetWseqInC2CMsghead() int32 { if x != nil { return x.WseqInC2CMsghead } return 0 } func (x *MessageHead) GetCpid() int64 { if x != nil { return x.Cpid } return 0 } func (x *MessageHead) GetExtGroupKeyInfo() *ExtGroupKeyInfo { if x != nil { return x.ExtGroupKeyInfo } return nil } func (x *MessageHead) GetMultiCompatibleText() string { if x != nil { return x.MultiCompatibleText } return "" } func (x *MessageHead) GetAuthSex() int32 { if x != nil { return x.AuthSex } return 0 } func (x *MessageHead) GetIsSrcMsg() bool { if x != nil { return x.IsSrcMsg } return false } type GroupInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields GroupCode int64 `protobuf:"varint,1,opt,name=groupCode,proto3" json:"groupCode,omitempty"` GroupType int32 `protobuf:"varint,2,opt,name=groupType,proto3" json:"groupType,omitempty"` GroupInfoSeq int64 `protobuf:"varint,3,opt,name=groupInfoSeq,proto3" json:"groupInfoSeq,omitempty"` GroupCard string `protobuf:"bytes,4,opt,name=groupCard,proto3" json:"groupCard,omitempty"` GroupRank []byte `protobuf:"bytes,5,opt,name=groupRank,proto3" json:"groupRank,omitempty"` GroupLevel int32 `protobuf:"varint,6,opt,name=groupLevel,proto3" json:"groupLevel,omitempty"` GroupCardType int32 `protobuf:"varint,7,opt,name=groupCardType,proto3" json:"groupCardType,omitempty"` GroupName []byte `protobuf:"bytes,8,opt,name=groupName,proto3" json:"groupName,omitempty"` } func (x *GroupInfo) Reset() { *x = GroupInfo{} if protoimpl.UnsafeEnabled { mi := &file_msg_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GroupInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*GroupInfo) ProtoMessage() {} func (x *GroupInfo) ProtoReflect() protoreflect.Message { mi := &file_msg_proto_msgTypes[43] 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 GroupInfo.ProtoReflect.Descriptor instead. func (*GroupInfo) Descriptor() ([]byte, []int) { return file_msg_proto_rawDescGZIP(), []int{43} } func (x *GroupInfo) GetGroupCode() int64 { if x != nil { return x.GroupCode } return 0 } func (x *GroupInfo) GetGroupType() int32 { if x != nil { return x.GroupType } return 0 } func (x *GroupInfo) GetGroupInfoSeq() int64 { if x != nil { return x.GroupInfoSeq } return 0 } func (x *GroupInfo) GetGroupCard() string { if x != nil { return x.GroupCard } return "" } func (x *GroupInfo) GetGroupRank() []byte { if x != nil { return x.GroupRank } return nil } func (x *GroupInfo) GetGroupLevel() int32 { if x != nil { return x.GroupLevel } return 0 } func (x *GroupInfo) GetGroupCardType() int32 { if x != nil { return x.GroupCardType } return 0 } func (x *GroupInfo) GetGroupName() []byte { if x != nil { return x.GroupName } return nil } type DiscussInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields DiscussUin int64 `protobuf:"varint,1,opt,name=discussUin,proto3" json:"discussUin,omitempty"` DiscussType int32 `protobuf:"varint,2,opt,name=discussType,proto3" json:"discussType,omitempty"` DiscussInfoSeq int64 `protobuf:"varint,3,opt,name=discussInfoSeq,proto3" json:"discussInfoSeq,omitempty"` DiscussRemark []byte `protobuf:"bytes,4,opt,name=discussRemark,proto3" json:"discussRemark,omitempty"` DiscussName []byte `protobuf:"bytes,5,opt,name=discussName,proto3" json:"discussName,omitempty"` } func (x *DiscussInfo) Reset() { *x = DiscussInfo{} if protoimpl.UnsafeEnabled { mi := &file_msg_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DiscussInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*DiscussInfo) ProtoMessage() {} func (x *DiscussInfo) ProtoReflect() protoreflect.Message { mi := &file_msg_proto_msgTypes[44] 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 DiscussInfo.ProtoReflect.Descriptor instead. func (*DiscussInfo) Descriptor() ([]byte, []int) { return file_msg_proto_rawDescGZIP(), []int{44} } func (x *DiscussInfo) GetDiscussUin() int64 { if x != nil { return x.DiscussUin } return 0 } func (x *DiscussInfo) GetDiscussType() int32 { if x != nil { return x.DiscussType } return 0 } func (x *DiscussInfo) GetDiscussInfoSeq() int64 { if x != nil { return x.DiscussInfoSeq } return 0 } func (x *DiscussInfo) GetDiscussRemark() []byte { if x != nil { return x.DiscussRemark } return nil } func (x *DiscussInfo) GetDiscussName() []byte { if x != nil { return x.DiscussName } return nil } type MutilTransHead struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Status int32 `protobuf:"varint,1,opt,name=status,proto3" json:"status,omitempty"` MsgId int32 `protobuf:"varint,2,opt,name=msgId,proto3" json:"msgId,omitempty"` } func (x *MutilTransHead) Reset() { *x = MutilTransHead{} if protoimpl.UnsafeEnabled { mi := &file_msg_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *MutilTransHead) String() string { return protoimpl.X.MessageStringOf(x) } func (*MutilTransHead) ProtoMessage() {} func (x *MutilTransHead) ProtoReflect() protoreflect.Message { mi := &file_msg_proto_msgTypes[45] 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 MutilTransHead.ProtoReflect.Descriptor instead. func (*MutilTransHead) Descriptor() ([]byte, []int) { return file_msg_proto_rawDescGZIP(), []int{45} } func (x *MutilTransHead) GetStatus() int32 { if x != nil { return x.Status } return 0 } func (x *MutilTransHead) GetMsgId() int32 { if x != nil { return x.MsgId } return 0 } type C2CTempMessageHead struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields C2CType int32 `protobuf:"varint,1,opt,name=c2cType,proto3" json:"c2cType,omitempty"` ServiceType int32 `protobuf:"varint,2,opt,name=serviceType,proto3" json:"serviceType,omitempty"` GroupUin int64 `protobuf:"varint,3,opt,name=groupUin,proto3" json:"groupUin,omitempty"` GroupCode int64 `protobuf:"varint,4,opt,name=groupCode,proto3" json:"groupCode,omitempty"` Sig []byte `protobuf:"bytes,5,opt,name=sig,proto3" json:"sig,omitempty"` SigType int32 `protobuf:"varint,6,opt,name=sigType,proto3" json:"sigType,omitempty"` FromPhone string `protobuf:"bytes,7,opt,name=fromPhone,proto3" json:"fromPhone,omitempty"` ToPhone string `protobuf:"bytes,8,opt,name=toPhone,proto3" json:"toPhone,omitempty"` LockDisplay int32 `protobuf:"varint,9,opt,name=lockDisplay,proto3" json:"lockDisplay,omitempty"` DirectionFlag int32 `protobuf:"varint,10,opt,name=directionFlag,proto3" json:"directionFlag,omitempty"` Reserved []byte `protobuf:"bytes,11,opt,name=reserved,proto3" json:"reserved,omitempty"` } func (x *C2CTempMessageHead) Reset() { *x = C2CTempMessageHead{} if protoimpl.UnsafeEnabled { mi := &file_msg_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *C2CTempMessageHead) String() string { return protoimpl.X.MessageStringOf(x) } func (*C2CTempMessageHead) ProtoMessage() {} func (x *C2CTempMessageHead) ProtoReflect() protoreflect.Message { mi := &file_msg_proto_msgTypes[46] 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 C2CTempMessageHead.ProtoReflect.Descriptor instead. func (*C2CTempMessageHead) Descriptor() ([]byte, []int) { return file_msg_proto_rawDescGZIP(), []int{46} } func (x *C2CTempMessageHead) GetC2CType() int32 { if x != nil { return x.C2CType } return 0 } func (x *C2CTempMessageHead) GetServiceType() int32 { if x != nil { return x.ServiceType } return 0 } func (x *C2CTempMessageHead) GetGroupUin() int64 { if x != nil { return x.GroupUin } return 0 } func (x *C2CTempMessageHead) GetGroupCode() int64 { if x != nil { return x.GroupCode } return 0 } func (x *C2CTempMessageHead) GetSig() []byte { if x != nil { return x.Sig } return nil } func (x *C2CTempMessageHead) GetSigType() int32 { if x != nil { return x.SigType } return 0 } func (x *C2CTempMessageHead) GetFromPhone() string { if x != nil { return x.FromPhone } return "" } func (x *C2CTempMessageHead) GetToPhone() string { if x != nil { return x.ToPhone } return "" } func (x *C2CTempMessageHead) GetLockDisplay() int32 { if x != nil { return x.LockDisplay } return 0 } func (x *C2CTempMessageHead) GetDirectionFlag() int32 { if x != nil { return x.DirectionFlag } return 0 } func (x *C2CTempMessageHead) GetReserved() []byte { if x != nil { return x.Reserved } return nil } type InstCtrl struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields MsgSendToInst []*InstInfo `protobuf:"bytes,1,rep,name=msgSendToInst,proto3" json:"msgSendToInst,omitempty"` MsgExcludeInst []*InstInfo `protobuf:"bytes,2,rep,name=msgExcludeInst,proto3" json:"msgExcludeInst,omitempty"` MsgFromInst *InstInfo `protobuf:"bytes,3,opt,name=msgFromInst,proto3" json:"msgFromInst,omitempty"` } func (x *InstCtrl) Reset() { *x = InstCtrl{} if protoimpl.UnsafeEnabled { mi := &file_msg_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *InstCtrl) String() string { return protoimpl.X.MessageStringOf(x) } func (*InstCtrl) ProtoMessage() {} func (x *InstCtrl) ProtoReflect() protoreflect.Message { mi := &file_msg_proto_msgTypes[47] 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 InstCtrl.ProtoReflect.Descriptor instead. func (*InstCtrl) Descriptor() ([]byte, []int) { return file_msg_proto_rawDescGZIP(), []int{47} } func (x *InstCtrl) GetMsgSendToInst() []*InstInfo { if x != nil { return x.MsgSendToInst } return nil } func (x *InstCtrl) GetMsgExcludeInst() []*InstInfo { if x != nil { return x.MsgExcludeInst } return nil } func (x *InstCtrl) GetMsgFromInst() *InstInfo { if x != nil { return x.MsgFromInst } return nil } type InstInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Apppid int32 `protobuf:"varint,1,opt,name=apppid,proto3" json:"apppid,omitempty"` Instid int32 `protobuf:"varint,2,opt,name=instid,proto3" json:"instid,omitempty"` Platform int32 `protobuf:"varint,3,opt,name=platform,proto3" json:"platform,omitempty"` EnumDeviceType int32 `protobuf:"varint,10,opt,name=enumDeviceType,proto3" json:"enumDeviceType,omitempty"` } func (x *InstInfo) Reset() { *x = InstInfo{} if protoimpl.UnsafeEnabled { mi := &file_msg_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *InstInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*InstInfo) ProtoMessage() {} func (x *InstInfo) ProtoReflect() protoreflect.Message { mi := &file_msg_proto_msgTypes[48] 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 InstInfo.ProtoReflect.Descriptor instead. func (*InstInfo) Descriptor() ([]byte, []int) { return file_msg_proto_rawDescGZIP(), []int{48} } func (x *InstInfo) GetApppid() int32 { if x != nil { return x.Apppid } return 0 } func (x *InstInfo) GetInstid() int32 { if x != nil { return x.Instid } return 0 } func (x *InstInfo) GetPlatform() int32 { if x != nil { return x.Platform } return 0 } func (x *InstInfo) GetEnumDeviceType() int32 { if x != nil { return x.EnumDeviceType } return 0 } type ExtGroupKeyInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields CurMaxSeq int32 `protobuf:"varint,1,opt,name=curMaxSeq,proto3" json:"curMaxSeq,omitempty"` CurTime int64 `protobuf:"varint,2,opt,name=curTime,proto3" json:"curTime,omitempty"` } func (x *ExtGroupKeyInfo) Reset() { *x = ExtGroupKeyInfo{} if protoimpl.UnsafeEnabled { mi := &file_msg_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ExtGroupKeyInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*ExtGroupKeyInfo) ProtoMessage() {} func (x *ExtGroupKeyInfo) ProtoReflect() protoreflect.Message { mi := &file_msg_proto_msgTypes[49] 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 ExtGroupKeyInfo.ProtoReflect.Descriptor instead. func (*ExtGroupKeyInfo) Descriptor() ([]byte, []int) { return file_msg_proto_rawDescGZIP(), []int{49} } func (x *ExtGroupKeyInfo) GetCurMaxSeq() int32 { if x != nil { return x.CurMaxSeq } return 0 } func (x *ExtGroupKeyInfo) GetCurTime() int64 { if x != nil { return x.CurTime } return 0 } type SyncCookie struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Time1 int64 `protobuf:"varint,1,opt,name=time1,proto3" json:"time1,omitempty"` Time int64 `protobuf:"varint,2,opt,name=time,proto3" json:"time,omitempty"` Ran1 int64 `protobuf:"varint,3,opt,name=ran1,proto3" json:"ran1,omitempty"` Ran2 int64 `protobuf:"varint,4,opt,name=ran2,proto3" json:"ran2,omitempty"` Const1 int64 `protobuf:"varint,5,opt,name=const1,proto3" json:"const1,omitempty"` Const2 int64 `protobuf:"varint,11,opt,name=const2,proto3" json:"const2,omitempty"` Const3 int64 `protobuf:"varint,12,opt,name=const3,proto3" json:"const3,omitempty"` LastSyncTime int64 `protobuf:"varint,13,opt,name=lastSyncTime,proto3" json:"lastSyncTime,omitempty"` Const4 int64 `protobuf:"varint,14,opt,name=const4,proto3" json:"const4,omitempty"` } func (x *SyncCookie) Reset() { *x = SyncCookie{} if protoimpl.UnsafeEnabled { mi := &file_msg_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SyncCookie) String() string { return protoimpl.X.MessageStringOf(x) } func (*SyncCookie) ProtoMessage() {} func (x *SyncCookie) ProtoReflect() protoreflect.Message { mi := &file_msg_proto_msgTypes[50] 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 SyncCookie.ProtoReflect.Descriptor instead. func (*SyncCookie) Descriptor() ([]byte, []int) { return file_msg_proto_rawDescGZIP(), []int{50} } func (x *SyncCookie) GetTime1() int64 { if x != nil { return x.Time1 } return 0 } func (x *SyncCookie) GetTime() int64 { if x != nil { return x.Time } return 0 } func (x *SyncCookie) GetRan1() int64 { if x != nil { return x.Ran1 } return 0 } func (x *SyncCookie) GetRan2() int64 { if x != nil { return x.Ran2 } return 0 } func (x *SyncCookie) GetConst1() int64 { if x != nil { return x.Const1 } return 0 } func (x *SyncCookie) GetConst2() int64 { if x != nil { return x.Const2 } return 0 } func (x *SyncCookie) GetConst3() int64 { if x != nil { return x.Const3 } return 0 } func (x *SyncCookie) GetLastSyncTime() int64 { if x != nil { return x.LastSyncTime } return 0 } func (x *SyncCookie) GetConst4() int64 { if x != nil { return x.Const4 } return 0 } type TransMsgInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields FromUin int64 `protobuf:"varint,1,opt,name=fromUin,proto3" json:"fromUin,omitempty"` ToUin int64 `protobuf:"varint,2,opt,name=toUin,proto3" json:"toUin,omitempty"` MsgType int32 `protobuf:"varint,3,opt,name=msgType,proto3" json:"msgType,omitempty"` MsgSubtype int32 `protobuf:"varint,4,opt,name=msgSubtype,proto3" json:"msgSubtype,omitempty"` MsgSeq int32 `protobuf:"varint,5,opt,name=msgSeq,proto3" json:"msgSeq,omitempty"` MsgUid int64 `protobuf:"varint,6,opt,name=msgUid,proto3" json:"msgUid,omitempty"` MsgTime int32 `protobuf:"varint,7,opt,name=msgTime,proto3" json:"msgTime,omitempty"` RealMsgTime int32 `protobuf:"varint,8,opt,name=realMsgTime,proto3" json:"realMsgTime,omitempty"` NickName string `protobuf:"bytes,9,opt,name=nickName,proto3" json:"nickName,omitempty"` MsgData []byte `protobuf:"bytes,10,opt,name=msgData,proto3" json:"msgData,omitempty"` SvrIp int32 `protobuf:"varint,11,opt,name=svrIp,proto3" json:"svrIp,omitempty"` ExtGroupKeyInfo *ExtGroupKeyInfo `protobuf:"bytes,12,opt,name=extGroupKeyInfo,proto3" json:"extGroupKeyInfo,omitempty"` GeneralFlag int32 `protobuf:"varint,17,opt,name=generalFlag,proto3" json:"generalFlag,omitempty"` } func (x *TransMsgInfo) Reset() { *x = TransMsgInfo{} if protoimpl.UnsafeEnabled { mi := &file_msg_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TransMsgInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*TransMsgInfo) ProtoMessage() {} func (x *TransMsgInfo) ProtoReflect() protoreflect.Message { mi := &file_msg_proto_msgTypes[51] 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 TransMsgInfo.ProtoReflect.Descriptor instead. func (*TransMsgInfo) Descriptor() ([]byte, []int) { return file_msg_proto_rawDescGZIP(), []int{51} } func (x *TransMsgInfo) GetFromUin() int64 { if x != nil { return x.FromUin } return 0 } func (x *TransMsgInfo) GetToUin() int64 { if x != nil { return x.ToUin } return 0 } func (x *TransMsgInfo) GetMsgType() int32 { if x != nil { return x.MsgType } return 0 } func (x *TransMsgInfo) GetMsgSubtype() int32 { if x != nil { return x.MsgSubtype } return 0 } func (x *TransMsgInfo) GetMsgSeq() int32 { if x != nil { return x.MsgSeq } return 0 } func (x *TransMsgInfo) GetMsgUid() int64 { if x != nil { return x.MsgUid } return 0 } func (x *TransMsgInfo) GetMsgTime() int32 { if x != nil { return x.MsgTime } return 0 } func (x *TransMsgInfo) GetRealMsgTime() int32 { if x != nil { return x.RealMsgTime } return 0 } func (x *TransMsgInfo) GetNickName() string { if x != nil { return x.NickName } return "" } func (x *TransMsgInfo) GetMsgData() []byte { if x != nil { return x.MsgData } return nil } func (x *TransMsgInfo) GetSvrIp() int32 { if x != nil { return x.SvrIp } return 0 } func (x *TransMsgInfo) GetExtGroupKeyInfo() *ExtGroupKeyInfo { if x != nil { return x.ExtGroupKeyInfo } return nil } func (x *TransMsgInfo) GetGeneralFlag() int32 { if x != nil { return x.GeneralFlag } return 0 } type GeneralFlags struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields BubbleDiyTextId int32 `protobuf:"varint,1,opt,name=bubbleDiyTextId,proto3" json:"bubbleDiyTextId,omitempty"` GroupFlagNew int32 `protobuf:"varint,2,opt,name=groupFlagNew,proto3" json:"groupFlagNew,omitempty"` Uin int64 `protobuf:"varint,3,opt,name=uin,proto3" json:"uin,omitempty"` RpId []byte `protobuf:"bytes,4,opt,name=rpId,proto3" json:"rpId,omitempty"` PrpFold int32 `protobuf:"varint,5,opt,name=prpFold,proto3" json:"prpFold,omitempty"` LongTextFlag int32 `protobuf:"varint,6,opt,name=longTextFlag,proto3" json:"longTextFlag,omitempty"` LongTextResid string `protobuf:"bytes,7,opt,name=longTextResid,proto3" json:"longTextResid,omitempty"` GroupType int32 `protobuf:"varint,8,opt,name=groupType,proto3" json:"groupType,omitempty"` ToUinFlag int32 `protobuf:"varint,9,opt,name=toUinFlag,proto3" json:"toUinFlag,omitempty"` GlamourLevel int32 `protobuf:"varint,10,opt,name=glamourLevel,proto3" json:"glamourLevel,omitempty"` MemberLevel int32 `protobuf:"varint,11,opt,name=memberLevel,proto3" json:"memberLevel,omitempty"` GroupRankSeq int64 `protobuf:"varint,12,opt,name=groupRankSeq,proto3" json:"groupRankSeq,omitempty"` OlympicTorch int32 `protobuf:"varint,13,opt,name=olympicTorch,proto3" json:"olympicTorch,omitempty"` BabyqGuideMsgCookie []byte `protobuf:"bytes,14,opt,name=babyqGuideMsgCookie,proto3" json:"babyqGuideMsgCookie,omitempty"` Uin32ExpertFlag int32 `protobuf:"varint,15,opt,name=uin32ExpertFlag,proto3" json:"uin32ExpertFlag,omitempty"` BubbleSubId int32 `protobuf:"varint,16,opt,name=bubbleSubId,proto3" json:"bubbleSubId,omitempty"` PendantId int64 `protobuf:"varint,17,opt,name=pendantId,proto3" json:"pendantId,omitempty"` RpIndex []byte `protobuf:"bytes,18,opt,name=rpIndex,proto3" json:"rpIndex,omitempty"` PbReserve []byte `protobuf:"bytes,19,opt,name=pbReserve,proto3" json:"pbReserve,omitempty"` } func (x *GeneralFlags) Reset() { *x = GeneralFlags{} if protoimpl.UnsafeEnabled { mi := &file_msg_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GeneralFlags) String() string { return protoimpl.X.MessageStringOf(x) } func (*GeneralFlags) ProtoMessage() {} func (x *GeneralFlags) ProtoReflect() protoreflect.Message { mi := &file_msg_proto_msgTypes[52] 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 GeneralFlags.ProtoReflect.Descriptor instead. func (*GeneralFlags) Descriptor() ([]byte, []int) { return file_msg_proto_rawDescGZIP(), []int{52} } func (x *GeneralFlags) GetBubbleDiyTextId() int32 { if x != nil { return x.BubbleDiyTextId } return 0 } func (x *GeneralFlags) GetGroupFlagNew() int32 { if x != nil { return x.GroupFlagNew } return 0 } func (x *GeneralFlags) GetUin() int64 { if x != nil { return x.Uin } return 0 } func (x *GeneralFlags) GetRpId() []byte { if x != nil { return x.RpId } return nil } func (x *GeneralFlags) GetPrpFold() int32 { if x != nil { return x.PrpFold } return 0 } func (x *GeneralFlags) GetLongTextFlag() int32 { if x != nil { return x.LongTextFlag } return 0 } func (x *GeneralFlags) GetLongTextResid() string { if x != nil { return x.LongTextResid } return "" } func (x *GeneralFlags) GetGroupType() int32 { if x != nil { return x.GroupType } return 0 } func (x *GeneralFlags) GetToUinFlag() int32 { if x != nil { return x.ToUinFlag } return 0 } func (x *GeneralFlags) GetGlamourLevel() int32 { if x != nil { return x.GlamourLevel } return 0 } func (x *GeneralFlags) GetMemberLevel() int32 { if x != nil { return x.MemberLevel } return 0 } func (x *GeneralFlags) GetGroupRankSeq() int64 { if x != nil { return x.GroupRankSeq } return 0 } func (x *GeneralFlags) GetOlympicTorch() int32 { if x != nil { return x.OlympicTorch } return 0 } func (x *GeneralFlags) GetBabyqGuideMsgCookie() []byte { if x != nil { return x.BabyqGuideMsgCookie } return nil } func (x *GeneralFlags) GetUin32ExpertFlag() int32 { if x != nil { return x.Uin32ExpertFlag } return 0 } func (x *GeneralFlags) GetBubbleSubId() int32 { if x != nil { return x.BubbleSubId } return 0 } func (x *GeneralFlags) GetPendantId() int64 { if x != nil { return x.PendantId } return 0 } func (x *GeneralFlags) GetRpIndex() []byte { if x != nil { return x.RpIndex } return nil } func (x *GeneralFlags) GetPbReserve() []byte { if x != nil { return x.PbReserve } return nil } type PbMultiMsgItem struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields FileName string `protobuf:"bytes,1,opt,name=fileName,proto3" json:"fileName,omitempty"` Buffer []byte `protobuf:"bytes,2,opt,name=buffer,proto3" json:"buffer,omitempty"` } func (x *PbMultiMsgItem) Reset() { *x = PbMultiMsgItem{} if protoimpl.UnsafeEnabled { mi := &file_msg_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *PbMultiMsgItem) String() string { return protoimpl.X.MessageStringOf(x) } func (*PbMultiMsgItem) ProtoMessage() {} func (x *PbMultiMsgItem) ProtoReflect() protoreflect.Message { mi := &file_msg_proto_msgTypes[53] 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 PbMultiMsgItem.ProtoReflect.Descriptor instead. func (*PbMultiMsgItem) Descriptor() ([]byte, []int) { return file_msg_proto_rawDescGZIP(), []int{53} } func (x *PbMultiMsgItem) GetFileName() string { if x != nil { return x.FileName } return "" } func (x *PbMultiMsgItem) GetBuffer() []byte { if x != nil { return x.Buffer } return nil } type PbMultiMsgNew struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Msg []*Message `protobuf:"bytes,1,rep,name=msg,proto3" json:"msg,omitempty"` } func (x *PbMultiMsgNew) Reset() { *x = PbMultiMsgNew{} if protoimpl.UnsafeEnabled { mi := &file_msg_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *PbMultiMsgNew) String() string { return protoimpl.X.MessageStringOf(x) } func (*PbMultiMsgNew) ProtoMessage() {} func (x *PbMultiMsgNew) ProtoReflect() protoreflect.Message { mi := &file_msg_proto_msgTypes[54] 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 PbMultiMsgNew.ProtoReflect.Descriptor instead. func (*PbMultiMsgNew) Descriptor() ([]byte, []int) { return file_msg_proto_rawDescGZIP(), []int{54} } func (x *PbMultiMsgNew) GetMsg() []*Message { if x != nil { return x.Msg } return nil } type PbMultiMsgTransmit struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Msg []*Message `protobuf:"bytes,1,rep,name=msg,proto3" json:"msg,omitempty"` PbItemList []*PbMultiMsgItem `protobuf:"bytes,2,rep,name=pbItemList,proto3" json:"pbItemList,omitempty"` } func (x *PbMultiMsgTransmit) Reset() { *x = PbMultiMsgTransmit{} if protoimpl.UnsafeEnabled { mi := &file_msg_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *PbMultiMsgTransmit) String() string { return protoimpl.X.MessageStringOf(x) } func (*PbMultiMsgTransmit) ProtoMessage() {} func (x *PbMultiMsgTransmit) ProtoReflect() protoreflect.Message { mi := &file_msg_proto_msgTypes[55] 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 PbMultiMsgTransmit.ProtoReflect.Descriptor instead. func (*PbMultiMsgTransmit) Descriptor() ([]byte, []int) { return file_msg_proto_rawDescGZIP(), []int{55} } func (x *PbMultiMsgTransmit) GetMsg() []*Message { if x != nil { return x.Msg } return nil } func (x *PbMultiMsgTransmit) GetPbItemList() []*PbMultiMsgItem { if x != nil { return x.PbItemList } return nil } type MsgElemInfoServtype3 struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields FlashTroopPic *CustomFace `protobuf:"bytes,1,opt,name=flash_troop_pic,json=flashTroopPic,proto3" json:"flash_troop_pic,omitempty"` FlashC2CPic *NotOnlineImage `protobuf:"bytes,2,opt,name=flash_c2c_pic,json=flashC2cPic,proto3" json:"flash_c2c_pic,omitempty"` } func (x *MsgElemInfoServtype3) Reset() { *x = MsgElemInfoServtype3{} if protoimpl.UnsafeEnabled { mi := &file_msg_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *MsgElemInfoServtype3) String() string { return protoimpl.X.MessageStringOf(x) } func (*MsgElemInfoServtype3) ProtoMessage() {} func (x *MsgElemInfoServtype3) ProtoReflect() protoreflect.Message { mi := &file_msg_proto_msgTypes[56] 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 MsgElemInfoServtype3.ProtoReflect.Descriptor instead. func (*MsgElemInfoServtype3) Descriptor() ([]byte, []int) { return file_msg_proto_rawDescGZIP(), []int{56} } func (x *MsgElemInfoServtype3) GetFlashTroopPic() *CustomFace { if x != nil { return x.FlashTroopPic } return nil } func (x *MsgElemInfoServtype3) GetFlashC2CPic() *NotOnlineImage { if x != nil { return x.FlashC2CPic } return nil } type MsgElemInfoServtype33 struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Index uint32 `protobuf:"varint,1,opt,name=index,proto3" json:"index,omitempty"` Text []byte `protobuf:"bytes,2,opt,name=text,proto3" json:"text,omitempty"` Compat []byte `protobuf:"bytes,3,opt,name=compat,proto3" json:"compat,omitempty"` Buf []byte `protobuf:"bytes,4,opt,name=buf,proto3" json:"buf,omitempty"` } func (x *MsgElemInfoServtype33) Reset() { *x = MsgElemInfoServtype33{} if protoimpl.UnsafeEnabled { mi := &file_msg_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *MsgElemInfoServtype33) String() string { return protoimpl.X.MessageStringOf(x) } func (*MsgElemInfoServtype33) ProtoMessage() {} func (x *MsgElemInfoServtype33) ProtoReflect() protoreflect.Message { mi := &file_msg_proto_msgTypes[57] 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 MsgElemInfoServtype33.ProtoReflect.Descriptor instead. func (*MsgElemInfoServtype33) Descriptor() ([]byte, []int) { return file_msg_proto_rawDescGZIP(), []int{57} } func (x *MsgElemInfoServtype33) GetIndex() uint32 { if x != nil { return x.Index } return 0 } func (x *MsgElemInfoServtype33) GetText() []byte { if x != nil { return x.Text } return nil } func (x *MsgElemInfoServtype33) GetCompat() []byte { if x != nil { return x.Compat } return nil } func (x *MsgElemInfoServtype33) GetBuf() []byte { if x != nil { return x.Buf } return nil } type SubMsgType0X4Body struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields NotOnlineFile *NotOnlineFile `protobuf:"bytes,1,opt,name=notOnlineFile,proto3" json:"notOnlineFile,omitempty"` MsgTime uint32 `protobuf:"varint,2,opt,name=msgTime,proto3" json:"msgTime,omitempty"` OnlineFileForPolyToOffline uint32 `protobuf:"varint,3,opt,name=onlineFileForPolyToOffline,proto3" json:"onlineFileForPolyToOffline,omitempty"` // fileImageInfo } func (x *SubMsgType0X4Body) Reset() { *x = SubMsgType0X4Body{} if protoimpl.UnsafeEnabled { mi := &file_msg_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SubMsgType0X4Body) String() string { return protoimpl.X.MessageStringOf(x) } func (*SubMsgType0X4Body) ProtoMessage() {} func (x *SubMsgType0X4Body) ProtoReflect() protoreflect.Message { mi := &file_msg_proto_msgTypes[58] 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 SubMsgType0X4Body.ProtoReflect.Descriptor instead. func (*SubMsgType0X4Body) Descriptor() ([]byte, []int) { return file_msg_proto_rawDescGZIP(), []int{58} } func (x *SubMsgType0X4Body) GetNotOnlineFile() *NotOnlineFile { if x != nil { return x.NotOnlineFile } return nil } func (x *SubMsgType0X4Body) GetMsgTime() uint32 { if x != nil { return x.MsgTime } return 0 } func (x *SubMsgType0X4Body) GetOnlineFileForPolyToOffline() uint32 { if x != nil { return x.OnlineFileForPolyToOffline } return 0 } type ResvAttr struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ImageShow *AnimationImageShow `protobuf:"bytes,7,opt,name=image_show,json=imageShow,proto3" json:"image_show,omitempty"` } func (x *ResvAttr) Reset() { *x = ResvAttr{} if protoimpl.UnsafeEnabled { mi := &file_msg_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ResvAttr) String() string { return protoimpl.X.MessageStringOf(x) } func (*ResvAttr) ProtoMessage() {} func (x *ResvAttr) ProtoReflect() protoreflect.Message { mi := &file_msg_proto_msgTypes[59] 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 ResvAttr.ProtoReflect.Descriptor instead. func (*ResvAttr) Descriptor() ([]byte, []int) { return file_msg_proto_rawDescGZIP(), []int{59} } func (x *ResvAttr) GetImageShow() *AnimationImageShow { if x != nil { return x.ImageShow } return nil } type AnimationImageShow struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields EffectId int32 `protobuf:"varint,1,opt,name=effect_id,json=effectId,proto3" json:"effect_id,omitempty"` AnimationParam []byte `protobuf:"bytes,2,opt,name=animation_param,json=animationParam,proto3" json:"animation_param,omitempty"` } func (x *AnimationImageShow) Reset() { *x = AnimationImageShow{} if protoimpl.UnsafeEnabled { mi := &file_msg_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AnimationImageShow) String() string { return protoimpl.X.MessageStringOf(x) } func (*AnimationImageShow) ProtoMessage() {} func (x *AnimationImageShow) ProtoReflect() protoreflect.Message { mi := &file_msg_proto_msgTypes[60] 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 AnimationImageShow.ProtoReflect.Descriptor instead. func (*AnimationImageShow) Descriptor() ([]byte, []int) { return file_msg_proto_rawDescGZIP(), []int{60} } func (x *AnimationImageShow) GetEffectId() int32 { if x != nil { return x.EffectId } return 0 } func (x *AnimationImageShow) GetAnimationParam() []byte { if x != nil { return x.AnimationParam } return nil } type UinTypeUserDef struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields FromUinType int32 `protobuf:"varint,1,opt,name=fromUinType,proto3" json:"fromUinType,omitempty"` FromGroupCode int64 `protobuf:"varint,2,opt,name=fromGroupCode,proto3" json:"fromGroupCode,omitempty"` FileUuid string `protobuf:"bytes,3,opt,name=fileUuid,proto3" json:"fileUuid,omitempty"` } func (x *UinTypeUserDef) Reset() { *x = UinTypeUserDef{} if protoimpl.UnsafeEnabled { mi := &file_msg_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UinTypeUserDef) String() string { return protoimpl.X.MessageStringOf(x) } func (*UinTypeUserDef) ProtoMessage() {} func (x *UinTypeUserDef) ProtoReflect() protoreflect.Message { mi := &file_msg_proto_msgTypes[61] 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 UinTypeUserDef.ProtoReflect.Descriptor instead. func (*UinTypeUserDef) Descriptor() ([]byte, []int) { return file_msg_proto_rawDescGZIP(), []int{61} } func (x *UinTypeUserDef) GetFromUinType() int32 { if x != nil { return x.FromUinType } return 0 } func (x *UinTypeUserDef) GetFromGroupCode() int64 { if x != nil { return x.FromGroupCode } return 0 } func (x *UinTypeUserDef) GetFileUuid() string { if x != nil { return x.FileUuid } return "" } var File_msg_proto protoreflect.FileDescriptor var file_msg_proto_rawDesc = []byte{ 0x0a, 0x09, 0x6d, 0x73, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xd8, 0x03, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x08, 0x73, 0x79, 0x6e, 0x63, 0x46, 0x6c, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x09, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x08, 0x73, 0x79, 0x6e, 0x63, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x79, 0x6e, 0x63, 0x43, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x73, 0x79, 0x6e, 0x63, 0x43, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x72, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x72, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x2e, 0x0a, 0x12, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x52, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x52, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x2c, 0x0a, 0x11, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x52, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x52, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x26, 0x0a, 0x0e, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x53, 0x79, 0x6e, 0x63, 0x46, 0x6c, 0x61, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x53, 0x79, 0x6e, 0x63, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x46, 0x6c, 0x61, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x2a, 0x0a, 0x10, 0x77, 0x68, 0x69, 0x73, 0x70, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x77, 0x68, 0x69, 0x73, 0x70, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x73, 0x67, 0x52, 0x65, 0x71, 0x54, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6d, 0x73, 0x67, 0x52, 0x65, 0x71, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x70, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x10, 0x70, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x73, 0x67, 0x43, 0x74, 0x72, 0x6c, 0x42, 0x75, 0x66, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x6d, 0x73, 0x67, 0x43, 0x74, 0x72, 0x6c, 0x42, 0x75, 0x66, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x42, 0x75, 0x66, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x42, 0x75, 0x66, 0x22, 0xf0, 0x02, 0x0a, 0x12, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x0b, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x48, 0x65, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x48, 0x65, 0x61, 0x64, 0x52, 0x0b, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x48, 0x65, 0x61, 0x64, 0x12, 0x2e, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x48, 0x65, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x48, 0x65, 0x61, 0x64, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x48, 0x65, 0x61, 0x64, 0x12, 0x26, 0x0a, 0x07, 0x6d, 0x73, 0x67, 0x42, 0x6f, 0x64, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x6f, 0x64, 0x79, 0x52, 0x07, 0x6d, 0x73, 0x67, 0x42, 0x6f, 0x64, 0x79, 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, 0x18, 0x0a, 0x07, 0x6d, 0x73, 0x67, 0x52, 0x61, 0x6e, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x6d, 0x73, 0x67, 0x52, 0x61, 0x6e, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x79, 0x6e, 0x63, 0x43, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x73, 0x79, 0x6e, 0x63, 0x43, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x73, 0x67, 0x56, 0x69, 0x61, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6d, 0x73, 0x67, 0x56, 0x69, 0x61, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x07, 0x6d, 0x73, 0x67, 0x43, 0x74, 0x72, 0x6c, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x74, 0x72, 0x6c, 0x52, 0x07, 0x6d, 0x73, 0x67, 0x43, 0x74, 0x72, 0x6c, 0x12, 0x22, 0x0a, 0x0c, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x65, 0x6e, 0x64, 0x53, 0x65, 0x71, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x65, 0x6e, 0x64, 0x53, 0x65, 0x71, 0x22, 0x45, 0x0a, 0x13, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x22, 0x82, 0x01, 0x0a, 0x0e, 0x4d, 0x73, 0x67, 0x57, 0x69, 0x74, 0x68, 0x44, 0x72, 0x61, 0x77, 0x52, 0x65, 0x71, 0x12, 0x34, 0x0a, 0x0b, 0x63, 0x32, 0x63, 0x57, 0x69, 0x74, 0x68, 0x44, 0x72, 0x61, 0x77, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x43, 0x32, 0x43, 0x4d, 0x73, 0x67, 0x57, 0x69, 0x74, 0x68, 0x44, 0x72, 0x61, 0x77, 0x52, 0x65, 0x71, 0x52, 0x0b, 0x63, 0x32, 0x63, 0x57, 0x69, 0x74, 0x68, 0x44, 0x72, 0x61, 0x77, 0x12, 0x3a, 0x0a, 0x0d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x57, 0x69, 0x74, 0x68, 0x44, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x73, 0x67, 0x57, 0x69, 0x74, 0x68, 0x44, 0x72, 0x61, 0x77, 0x52, 0x65, 0x71, 0x52, 0x0d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x57, 0x69, 0x74, 0x68, 0x44, 0x72, 0x61, 0x77, 0x22, 0x98, 0x01, 0x0a, 0x11, 0x43, 0x32, 0x43, 0x4d, 0x73, 0x67, 0x57, 0x69, 0x74, 0x68, 0x44, 0x72, 0x61, 0x77, 0x52, 0x65, 0x71, 0x12, 0x25, 0x0a, 0x07, 0x6d, 0x73, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x43, 0x32, 0x43, 0x4d, 0x73, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x6d, 0x73, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x28, 0x0a, 0x0f, 0x6c, 0x6f, 0x6e, 0x67, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x18, 0x02, 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, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x75, 0x62, 0x43, 0x6d, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x75, 0x62, 0x43, 0x6d, 0x64, 0x22, 0xac, 0x01, 0x0a, 0x13, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x73, 0x67, 0x57, 0x69, 0x74, 0x68, 0x44, 0x72, 0x61, 0x77, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x75, 0x62, 0x43, 0x6d, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x75, 0x62, 0x43, 0x6d, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x27, 0x0a, 0x07, 0x6d, 0x73, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x73, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x6d, 0x73, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x44, 0x65, 0x66, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x44, 0x65, 0x66, 0x22, 0x5e, 0x0a, 0x0c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x73, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x73, 0x67, 0x53, 0x65, 0x71, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6d, 0x73, 0x67, 0x53, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x73, 0x67, 0x52, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x18, 0x02, 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, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x6d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x22, 0xba, 0x02, 0x0a, 0x0a, 0x43, 0x32, 0x43, 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, 0x69, 0x76, 0x53, 0x65, 0x71, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x64, 0x69, 0x76, 0x53, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x6d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2e, 0x0a, 0x0b, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x48, 0x65, 0x61, 0x64, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x48, 0x65, 0x61, 0x64, 0x52, 0x0b, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x48, 0x65, 0x61, 0x64, 0x22, 0x5e, 0x0a, 0x0b, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x48, 0x65, 0x61, 0x64, 0x12, 0x16, 0x0a, 0x03, 0x63, 0x32, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x04, 0x2e, 0x43, 0x32, 0x43, 0x52, 0x03, 0x63, 0x32, 0x63, 0x12, 0x16, 0x0a, 0x03, 0x67, 0x72, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x04, 0x2e, 0x47, 0x72, 0x70, 0x52, 0x03, 0x67, 0x72, 0x70, 0x12, 0x1f, 0x0a, 0x06, 0x67, 0x72, 0x70, 0x54, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x47, 0x72, 0x70, 0x54, 0x6d, 0x70, 0x52, 0x06, 0x67, 0x72, 0x70, 0x54, 0x6d, 0x70, 0x22, 0x1b, 0x0a, 0x03, 0x43, 0x32, 0x43, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x55, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x55, 0x69, 0x6e, 0x22, 0x23, 0x0a, 0x03, 0x47, 0x72, 0x70, 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, 0x22, 0x3a, 0x0a, 0x06, 0x47, 0x72, 0x70, 0x54, 0x6d, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x55, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 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, 0x22, 0x23, 0x0a, 0x07, 0x4d, 0x73, 0x67, 0x43, 0x74, 0x72, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x73, 0x67, 0x46, 0x6c, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x6d, 0x73, 0x67, 0x46, 0x6c, 0x61, 0x67, 0x22, 0xf6, 0x02, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x79, 0x6e, 0x63, 0x43, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x73, 0x79, 0x6e, 0x63, 0x43, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x12, 0x25, 0x0a, 0x08, 0x73, 0x79, 0x6e, 0x63, 0x46, 0x6c, 0x61, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x09, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x08, 0x73, 0x79, 0x6e, 0x63, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x31, 0x0a, 0x0b, 0x75, 0x69, 0x6e, 0x50, 0x61, 0x69, 0x72, 0x4d, 0x73, 0x67, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x55, 0x69, 0x6e, 0x50, 0x61, 0x69, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0b, 0x75, 0x69, 0x6e, 0x50, 0x61, 0x69, 0x72, 0x4d, 0x73, 0x67, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x69, 0x6e, 0x64, 0x55, 0x69, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x62, 0x69, 0x6e, 0x64, 0x55, 0x69, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x73, 0x67, 0x52, 0x73, 0x70, 0x54, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6d, 0x73, 0x67, 0x52, 0x73, 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x70, 0x75, 0x62, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x10, 0x70, 0x75, 0x62, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x69, 0x73, 0x50, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x53, 0x79, 0x6e, 0x63, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x69, 0x73, 0x50, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x53, 0x79, 0x6e, 0x63, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x73, 0x67, 0x43, 0x74, 0x72, 0x6c, 0x42, 0x75, 0x66, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x6d, 0x73, 0x67, 0x43, 0x74, 0x72, 0x6c, 0x42, 0x75, 0x66, 0x22, 0xa9, 0x01, 0x0a, 0x11, 0x50, 0x75, 0x73, 0x68, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x22, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x76, 0x72, 0x69, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x76, 0x72, 0x69, 0x70, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x75, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x70, 0x75, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x69, 0x6e, 0x67, 0x46, 0x4c, 0x61, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x69, 0x6e, 0x67, 0x46, 0x4c, 0x61, 0x67, 0x12, 0x20, 0x0a, 0x0b, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x6c, 0x46, 0x6c, 0x61, 0x67, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x6c, 0x46, 0x6c, 0x61, 0x67, 0x22, 0x98, 0x01, 0x0a, 0x0e, 0x55, 0x69, 0x6e, 0x50, 0x61, 0x69, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x52, 0x65, 0x61, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x52, 0x65, 0x61, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x65, 0x65, 0x72, 0x55, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x70, 0x65, 0x65, 0x72, 0x55, 0x69, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x6d, 0x73, 0x67, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x6d, 0x73, 0x67, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x12, 0x24, 0x0a, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x22, 0x75, 0x0a, 0x07, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x20, 0x0a, 0x04, 0x68, 0x65, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x48, 0x65, 0x61, 0x64, 0x52, 0x04, 0x68, 0x65, 0x61, 0x64, 0x12, 0x26, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x48, 0x65, 0x61, 0x64, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x6f, 0x64, 0x79, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x22, 0x82, 0x01, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x6f, 0x64, 0x79, 0x12, 0x25, 0x0a, 0x08, 0x72, 0x69, 0x63, 0x68, 0x54, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x52, 0x69, 0x63, 0x68, 0x54, 0x65, 0x78, 0x74, 0x52, 0x08, 0x72, 0x69, 0x63, 0x68, 0x54, 0x65, 0x78, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x6d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x2c, 0x0a, 0x11, 0x6d, 0x73, 0x67, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x11, 0x6d, 0x73, 0x67, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0x90, 0x01, 0x0a, 0x08, 0x52, 0x69, 0x63, 0x68, 0x54, 0x65, 0x78, 0x74, 0x12, 0x19, 0x0a, 0x04, 0x61, 0x74, 0x74, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, 0x12, 0x1b, 0x0a, 0x05, 0x65, 0x6c, 0x65, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x45, 0x6c, 0x65, 0x6d, 0x52, 0x05, 0x65, 0x6c, 0x65, 0x6d, 0x73, 0x12, 0x34, 0x0a, 0x0d, 0x6e, 0x6f, 0x74, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x4e, 0x6f, 0x74, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x0d, 0x6e, 0x6f, 0x74, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x03, 0x70, 0x74, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x04, 0x2e, 0x50, 0x74, 0x74, 0x52, 0x03, 0x70, 0x74, 0x74, 0x22, 0xee, 0x05, 0x0a, 0x04, 0x45, 0x6c, 0x65, 0x6d, 0x12, 0x19, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x12, 0x19, 0x0a, 0x04, 0x66, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x46, 0x61, 0x63, 0x65, 0x52, 0x04, 0x66, 0x61, 0x63, 0x65, 0x12, 0x2e, 0x0a, 0x0b, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x0b, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x37, 0x0a, 0x0e, 0x6e, 0x6f, 0x74, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x4e, 0x6f, 0x74, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x0e, 0x6e, 0x6f, 0x74, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x30, 0x0a, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x45, 0x6c, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x45, 0x6c, 0x65, 0x6d, 0x52, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x45, 0x6c, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2b, 0x0a, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x46, 0x61, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x46, 0x61, 0x63, 0x65, 0x52, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x46, 0x61, 0x63, 0x65, 0x12, 0x22, 0x0a, 0x07, 0x72, 0x69, 0x63, 0x68, 0x4d, 0x73, 0x67, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x52, 0x69, 0x63, 0x68, 0x4d, 0x73, 0x67, 0x52, 0x07, 0x72, 0x69, 0x63, 0x68, 0x4d, 0x73, 0x67, 0x12, 0x28, 0x0a, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x46, 0x69, 0x6c, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x28, 0x0a, 0x09, 0x65, 0x78, 0x74, 0x72, 0x61, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x45, 0x78, 0x74, 0x72, 0x61, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x65, 0x78, 0x74, 0x72, 0x61, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x28, 0x0a, 0x09, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x46, 0x69, 0x6c, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x09, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x3a, 0x0a, 0x0c, 0x61, 0x6e, 0x6f, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x73, 0x67, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x41, 0x6e, 0x6f, 0x6e, 0x79, 0x6d, 0x6f, 0x75, 0x73, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0c, 0x61, 0x6e, 0x6f, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x73, 0x67, 0x12, 0x2e, 0x0a, 0x0b, 0x51, 0x51, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x4d, 0x73, 0x67, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x51, 0x51, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x4d, 0x73, 0x67, 0x52, 0x0b, 0x51, 0x51, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x4d, 0x73, 0x67, 0x12, 0x2b, 0x0a, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x45, 0x6c, 0x65, 0x6d, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x45, 0x6c, 0x65, 0x6d, 0x52, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x45, 0x6c, 0x65, 0x6d, 0x12, 0x31, 0x0a, 0x0c, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x6c, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x25, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x6c, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x52, 0x0c, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x6c, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x22, 0x0a, 0x06, 0x73, 0x72, 0x63, 0x4d, 0x73, 0x67, 0x18, 0x2d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x73, 0x67, 0x52, 0x06, 0x73, 0x72, 0x63, 0x4d, 0x73, 0x67, 0x12, 0x29, 0x0a, 0x08, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x41, 0x70, 0x70, 0x18, 0x33, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x41, 0x70, 0x70, 0x45, 0x6c, 0x65, 0x6d, 0x52, 0x08, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x41, 0x70, 0x70, 0x12, 0x2b, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x45, 0x6c, 0x65, 0x6d, 0x18, 0x35, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x45, 0x6c, 0x65, 0x6d, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x45, 0x6c, 0x65, 0x6d, 0x22, 0x6a, 0x0a, 0x0a, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x45, 0x6c, 0x65, 0x6d, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x62, 0x45, 0x6c, 0x65, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x70, 0x62, 0x45, 0x6c, 0x65, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x62, 0x75, 0x73, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x62, 0x75, 0x73, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x54, 0x79, 0x70, 0x65, 0x22, 0x39, 0x0a, 0x0b, 0x51, 0x51, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x4d, 0x73, 0x67, 0x12, 0x2a, 0x0a, 0x07, 0x61, 0x69, 0x6f, 0x42, 0x6f, 0x64, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x51, 0x51, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x41, 0x69, 0x6f, 0x42, 0x6f, 0x64, 0x79, 0x52, 0x07, 0x61, 0x69, 0x6f, 0x42, 0x6f, 0x64, 0x79, 0x22, 0xf3, 0x04, 0x0a, 0x0f, 0x51, 0x51, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x41, 0x69, 0x6f, 0x42, 0x6f, 0x64, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x65, 0x6e, 0x64, 0x55, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x73, 0x65, 0x6e, 0x64, 0x55, 0x69, 0x6e, 0x12, 0x28, 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x51, 0x51, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x41, 0x69, 0x6f, 0x45, 0x6c, 0x65, 0x6d, 0x52, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x2c, 0x0a, 0x08, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x51, 0x51, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x41, 0x69, 0x6f, 0x45, 0x6c, 0x65, 0x6d, 0x52, 0x08, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x11, 0x52, 0x09, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x11, 0x52, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x6d, 0x73, 0x67, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x6d, 0x73, 0x67, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x64, 0x54, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x11, 0x52, 0x07, 0x72, 0x65, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x69, 0x6c, 0x6c, 0x4e, 0x6f, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x62, 0x69, 0x6c, 0x6c, 0x4e, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x75, 0x74, 0x68, 0x4b, 0x65, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x61, 0x75, 0x74, 0x68, 0x4b, 0x65, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x11, 0x52, 0x0b, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x11, 0x52, 0x07, 0x6d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x6e, 0x76, 0x65, 0x6c, 0x4f, 0x70, 0x65, 0x49, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x11, 0x52, 0x0a, 0x65, 0x6e, 0x76, 0x65, 0x6c, 0x4f, 0x70, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x66, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x11, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x66, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x73, 0x67, 0x46, 0x72, 0x6f, 0x6d, 0x18, 0x10, 0x20, 0x01, 0x28, 0x11, 0x52, 0x07, 0x6d, 0x73, 0x67, 0x46, 0x72, 0x6f, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x63, 0x42, 0x6f, 0x64, 0x79, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x70, 0x63, 0x42, 0x6f, 0x64, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1e, 0x0a, 0x0a, 0x72, 0x65, 0x64, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x72, 0x65, 0x64, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x67, 0x72, 0x61, 0x70, 0x55, 0x69, 0x6e, 0x18, 0x14, 0x20, 0x03, 0x28, 0x04, 0x52, 0x07, 0x67, 0x72, 0x61, 0x70, 0x55, 0x69, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x62, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x70, 0x62, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x22, 0x9d, 0x05, 0x0a, 0x0f, 0x51, 0x51, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x41, 0x69, 0x6f, 0x45, 0x6c, 0x65, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x75, 0x62, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x75, 0x62, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x6c, 0x69, 0x6e, 0x6b, 0x55, 0x72, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x6c, 0x69, 0x6e, 0x6b, 0x55, 0x72, 0x6c, 0x12, 0x20, 0x0a, 0x0b, 0x62, 0x6c, 0x61, 0x63, 0x6b, 0x53, 0x74, 0x72, 0x69, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x62, 0x6c, 0x61, 0x63, 0x6b, 0x53, 0x74, 0x72, 0x69, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x6e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x24, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x73, 0x75, 0x62, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x28, 0x0a, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x6a, 0x75, 0x6d, 0x70, 0x55, 0x72, 0x6c, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x6a, 0x75, 0x6d, 0x70, 0x55, 0x72, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x49, 0x6f, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x49, 0x6f, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x41, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x41, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x69, 0x63, 0x6f, 0x6e, 0x55, 0x72, 0x6c, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x69, 0x63, 0x6f, 0x6e, 0x55, 0x72, 0x6c, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x26, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x42, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x42, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x69, 0x6f, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x65, 0x66, 0x74, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x61, 0x69, 0x6f, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x65, 0x66, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x69, 0x6f, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x69, 0x67, 0x68, 0x74, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d, 0x61, 0x69, 0x6f, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x66, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x63, 0x66, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x62, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x70, 0x62, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x22, 0x87, 0x01, 0x0a, 0x07, 0x52, 0x69, 0x63, 0x68, 0x4d, 0x73, 0x67, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x31, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x31, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x73, 0x67, 0x52, 0x65, 0x73, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x6d, 0x73, 0x67, 0x52, 0x65, 0x73, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x61, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x72, 0x61, 0x6e, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x65, 0x71, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x73, 0x65, 0x71, 0x22, 0x78, 0x0a, 0x0a, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x45, 0x6c, 0x65, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6e, 0x75, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x65, 0x6e, 0x75, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x78, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x65, 0x78, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x73, 0x6f, 0x75, 0x6e, 0x64, 0x22, 0x94, 0x01, 0x0a, 0x04, 0x54, 0x65, 0x78, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x74, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x74, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x74, 0x74, 0x72, 0x36, 0x42, 0x75, 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x61, 0x74, 0x74, 0x72, 0x36, 0x42, 0x75, 0x66, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x74, 0x74, 0x72, 0x37, 0x42, 0x75, 0x66, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x61, 0x74, 0x74, 0x72, 0x37, 0x42, 0x75, 0x66, 0x12, 0x10, 0x0a, 0x03, 0x62, 0x75, 0x66, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x62, 0x75, 0x66, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x62, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x70, 0x62, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x22, 0x90, 0x02, 0x0a, 0x04, 0x41, 0x74, 0x74, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x64, 0x65, 0x50, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x63, 0x6f, 0x64, 0x65, 0x50, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x72, 0x53, 0x65, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x63, 0x68, 0x61, 0x72, 0x53, 0x65, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x70, 0x69, 0x74, 0x63, 0x68, 0x41, 0x6e, 0x64, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x70, 0x69, 0x74, 0x63, 0x68, 0x41, 0x6e, 0x64, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x6f, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x6f, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x44, 0x61, 0x74, 0x61, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x44, 0x61, 0x74, 0x61, 0x22, 0xb9, 0x05, 0x0a, 0x03, 0x50, 0x74, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x54, 0x79, 0x70, 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, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x55, 0x75, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x55, 0x75, 0x69, 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, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x70, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x50, 0x6f, 0x72, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x62, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x63, 0x75, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x63, 0x75, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x24, 0x0a, 0x0d, 0x6d, 0x61, 0x67, 0x69, 0x63, 0x50, 0x74, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6d, 0x61, 0x67, 0x69, 0x63, 0x50, 0x74, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x20, 0x0a, 0x0b, 0x76, 0x6f, 0x69, 0x63, 0x65, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x76, 0x6f, 0x69, 0x63, 0x65, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x74, 0x74, 0x55, 0x72, 0x6c, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x70, 0x74, 0x74, 0x55, 0x72, 0x6c, 0x12, 0x22, 0x0a, 0x0c, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x46, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x46, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x6f, 0x77, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x64, 0x6f, 0x77, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x62, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x70, 0x62, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x62, 0x79, 0x74, 0x65, 0x73, 0x50, 0x74, 0x74, 0x55, 0x72, 0x6c, 0x73, 0x18, 0x1f, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x0c, 0x62, 0x79, 0x74, 0x65, 0x73, 0x50, 0x74, 0x74, 0x55, 0x72, 0x6c, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x6c, 0x61, 0x67, 0x18, 0x20, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x6c, 0x61, 0x67, 0x22, 0x65, 0x0a, 0x0b, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x67, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x67, 0x75, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x26, 0x0a, 0x0e, 0x6f, 0x6c, 0x64, 0x56, 0x65, 0x72, 0x53, 0x65, 0x6e, 0x64, 0x46, 0x69, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x6f, 0x6c, 0x64, 0x56, 0x65, 0x72, 0x53, 0x65, 0x6e, 0x64, 0x46, 0x69, 0x6c, 0x65, 0x22, 0xf0, 0x05, 0x0a, 0x0e, 0x4e, 0x6f, 0x74, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x65, 0x4c, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x66, 0x69, 0x6c, 0x65, 0x4c, 0x65, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x61, 0x74, 0x68, 0x12, 0x26, 0x0a, 0x0e, 0x6f, 0x6c, 0x64, 0x56, 0x65, 0x72, 0x53, 0x65, 0x6e, 0x64, 0x46, 0x69, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x6f, 0x6c, 0x64, 0x56, 0x65, 0x72, 0x53, 0x65, 0x6e, 0x64, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x69, 0x6d, 0x67, 0x54, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x69, 0x6d, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x70, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x73, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d, 0x70, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x73, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x69, 0x63, 0x4d, 0x64, 0x35, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x70, 0x69, 0x63, 0x4d, 0x64, 0x35, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x69, 0x63, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x70, 0x69, 0x63, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x69, 0x63, 0x57, 0x69, 0x64, 0x74, 0x68, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x69, 0x63, 0x57, 0x69, 0x64, 0x74, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, 0x73, 0x49, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x72, 0x65, 0x73, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x55, 0x72, 0x6c, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x55, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x69, 0x67, 0x55, 0x72, 0x6c, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x69, 0x67, 0x55, 0x72, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x72, 0x69, 0x67, 0x55, 0x72, 0x6c, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, 0x69, 0x67, 0x55, 0x72, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x69, 0x7a, 0x54, 0x79, 0x70, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x62, 0x69, 0x7a, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1c, 0x0a, 0x09, 0x6f, 0x70, 0x46, 0x61, 0x63, 0x65, 0x42, 0x75, 0x66, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x6f, 0x70, 0x46, 0x61, 0x63, 0x65, 0x42, 0x75, 0x66, 0x12, 0x1c, 0x0a, 0x09, 0x6f, 0x6c, 0x64, 0x50, 0x69, 0x63, 0x4d, 0x64, 0x35, 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x6f, 0x6c, 0x64, 0x50, 0x69, 0x63, 0x4d, 0x64, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x57, 0x69, 0x64, 0x74, 0x68, 0x18, 0x15, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x57, 0x69, 0x64, 0x74, 0x68, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x16, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x18, 0x17, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x68, 0x6f, 0x77, 0x4c, 0x65, 0x6e, 0x18, 0x18, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x73, 0x68, 0x6f, 0x77, 0x4c, 0x65, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x65, 0x6e, 0x18, 0x19, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x65, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x62, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x70, 0x62, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x22, 0xb9, 0x04, 0x0a, 0x0d, 0x4e, 0x6f, 0x74, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x73, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x55, 0x75, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x55, 0x75, 0x69, 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, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x74, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x6e, 0x6f, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x75, 0x62, 0x63, 0x6d, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x75, 0x62, 0x63, 0x6d, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x62, 0x79, 0x74, 0x65, 0x73, 0x46, 0x69, 0x6c, 0x65, 0x55, 0x72, 0x6c, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x0d, 0x62, 0x79, 0x74, 0x65, 0x73, 0x46, 0x69, 0x6c, 0x65, 0x55, 0x72, 0x6c, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x6c, 0x61, 0x67, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x61, 0x6e, 0x67, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6c, 0x18, 0x32, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x64, 0x61, 0x6e, 0x67, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x69, 0x66, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x33, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6c, 0x69, 0x66, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x34, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x62, 0x73, 0x46, 0x69, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x35, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x61, 0x62, 0x73, 0x46, 0x69, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x36, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x37, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x62, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x18, 0x38, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x70, 0x62, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x22, 0x45, 0x0a, 0x09, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x45, 0x6c, 0x65, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6c, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x65, 0x6c, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x65, 0x6c, 0x65, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x65, 0x6c, 0x65, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xe3, 0x02, 0x0a, 0x09, 0x45, 0x78, 0x74, 0x72, 0x61, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x69, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x6e, 0x69, 0x63, 0x6b, 0x12, 0x1c, 0x0a, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x61, 0x72, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x61, 0x73, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x73, 0x67, 0x54, 0x61, 0x69, 0x6c, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x6d, 0x73, 0x67, 0x54, 0x61, 0x69, 0x6c, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x70, 0x6e, 0x73, 0x54, 0x69, 0x70, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x61, 0x70, 0x6e, 0x73, 0x54, 0x69, 0x70, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x75, 0x69, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x6d, 0x73, 0x67, 0x53, 0x74, 0x61, 0x74, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x6d, 0x73, 0x67, 0x53, 0x74, 0x61, 0x74, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x70, 0x6e, 0x73, 0x53, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x61, 0x70, 0x6e, 0x73, 0x53, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x6e, 0x65, 0x77, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x46, 0x6c, 0x61, 0x67, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x6e, 0x65, 0x77, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x46, 0x6c, 0x61, 0x67, 0x22, 0xa1, 0x02, 0x0a, 0x09, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x62, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x66, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x62, 0x61, 0x74, 0x63, 0x68, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x62, 0x61, 0x74, 0x63, 0x68, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x66, 0x65, 0x65, 0x64, 0x4d, 0x73, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x66, 0x65, 0x65, 0x64, 0x4d, 0x73, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x62, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x70, 0x62, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x22, 0xdf, 0x01, 0x0a, 0x15, 0x41, 0x6e, 0x6f, 0x6e, 0x79, 0x6d, 0x6f, 0x75, 0x73, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6e, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x61, 0x6e, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x6e, 0x6f, 0x6e, 0x4e, 0x69, 0x63, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x61, 0x6e, 0x6f, 0x6e, 0x4e, 0x69, 0x63, 0x6b, 0x12, 0x22, 0x0a, 0x0c, 0x68, 0x65, 0x61, 0x64, 0x50, 0x6f, 0x72, 0x74, 0x72, 0x61, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x68, 0x65, 0x61, 0x64, 0x50, 0x6f, 0x72, 0x74, 0x72, 0x61, 0x69, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x62, 0x75, 0x62, 0x62, 0x6c, 0x65, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x62, 0x75, 0x62, 0x62, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x61, 0x6e, 0x6b, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x72, 0x61, 0x6e, 0x6b, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x22, 0xc9, 0x06, 0x0a, 0x09, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x55, 0x75, 0x69, 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, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x6c, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x6c, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x57, 0x69, 0x64, 0x74, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x57, 0x69, 0x64, 0x74, 0x68, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x46, 0x69, 0x6c, 0x65, 0x4d, 0x64, 0x35, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x46, 0x69, 0x6c, 0x65, 0x4d, 0x64, 0x35, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x62, 0x75, 0x73, 0x69, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x62, 0x75, 0x73, 0x69, 0x54, 0x79, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x66, 0x72, 0x6f, 0x6d, 0x43, 0x68, 0x61, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x66, 0x72, 0x6f, 0x6d, 0x43, 0x68, 0x61, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x6f, 0x43, 0x68, 0x61, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x6f, 0x43, 0x68, 0x61, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x36, 0x0a, 0x16, 0x62, 0x6f, 0x6f, 0x6c, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x69, 0x76, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x62, 0x6f, 0x6f, 0x6c, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x69, 0x76, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x57, 0x69, 0x64, 0x74, 0x68, 0x18, 0x10, 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, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x6c, 0x65, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x75, 0x62, 0x42, 0x75, 0x73, 0x69, 0x54, 0x79, 0x70, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x73, 0x75, 0x62, 0x42, 0x75, 0x73, 0x69, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x41, 0x74, 0x74, 0x72, 0x18, 0x13, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x41, 0x74, 0x74, 0x72, 0x12, 0x2e, 0x0a, 0x12, 0x62, 0x79, 0x74, 0x65, 0x73, 0x54, 0x68, 0x75, 0x6d, 0x62, 0x46, 0x69, 0x6c, 0x65, 0x55, 0x72, 0x6c, 0x73, 0x18, 0x14, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x12, 0x62, 0x79, 0x74, 0x65, 0x73, 0x54, 0x68, 0x75, 0x6d, 0x62, 0x46, 0x69, 0x6c, 0x65, 0x55, 0x72, 0x6c, 0x73, 0x12, 0x2e, 0x0a, 0x12, 0x62, 0x79, 0x74, 0x65, 0x73, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x46, 0x69, 0x6c, 0x65, 0x55, 0x72, 0x6c, 0x73, 0x18, 0x15, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x12, 0x62, 0x79, 0x74, 0x65, 0x73, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x46, 0x69, 0x6c, 0x65, 0x55, 0x72, 0x6c, 0x73, 0x12, 0x2c, 0x0a, 0x11, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x6c, 0x61, 0x67, 0x18, 0x16, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x2c, 0x0a, 0x11, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x6c, 0x61, 0x67, 0x18, 0x17, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x62, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x70, 0x62, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x22, 0xa2, 0x02, 0x0a, 0x09, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x73, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x72, 0x69, 0x67, 0x53, 0x65, 0x71, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x6f, 0x72, 0x69, 0x67, 0x53, 0x65, 0x71, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x55, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x55, 0x69, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x12, 0x1b, 0x0a, 0x05, 0x65, 0x6c, 0x65, 0x6d, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x45, 0x6c, 0x65, 0x6d, 0x52, 0x05, 0x65, 0x6c, 0x65, 0x6d, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x69, 0x63, 0x68, 0x4d, 0x73, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x72, 0x69, 0x63, 0x68, 0x4d, 0x73, 0x67, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x62, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x70, 0x62, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x72, 0x63, 0x4d, 0x73, 0x67, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x73, 0x72, 0x63, 0x4d, 0x73, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x55, 0x69, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x55, 0x69, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x72, 0x6f, 0x6f, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x74, 0x72, 0x6f, 0x6f, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x40, 0x0a, 0x04, 0x46, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x6f, 0x6c, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x62, 0x75, 0x66, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x62, 0x75, 0x66, 0x22, 0x3e, 0x0a, 0x0c, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x41, 0x70, 0x70, 0x45, 0x6c, 0x65, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x73, 0x67, 0x52, 0x65, 0x73, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x6d, 0x73, 0x67, 0x52, 0x65, 0x73, 0x69, 0x64, 0x22, 0x99, 0x07, 0x0a, 0x0a, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x46, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x67, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x67, 0x75, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x63, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x63, 0x75, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x6c, 0x64, 0x44, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x6f, 0x6c, 0x64, 0x44, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x70, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x70, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x50, 0x6f, 0x72, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x66, 0x75, 0x6c, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x75, 0x73, 0x65, 0x66, 0x75, 0x6c, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x64, 0x35, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x6d, 0x64, 0x35, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x55, 0x72, 0x6c, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x55, 0x72, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x69, 0x67, 0x55, 0x72, 0x6c, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x69, 0x67, 0x55, 0x72, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x72, 0x69, 0x67, 0x55, 0x72, 0x6c, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, 0x69, 0x67, 0x55, 0x72, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x69, 0x7a, 0x54, 0x79, 0x70, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x62, 0x69, 0x7a, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x20, 0x0a, 0x0b, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x15, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x14, 0x0a, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, 0x16, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x17, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x18, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x19, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x57, 0x69, 0x64, 0x74, 0x68, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x57, 0x69, 0x64, 0x74, 0x68, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x68, 0x6f, 0x77, 0x4c, 0x65, 0x6e, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x73, 0x68, 0x6f, 0x77, 0x4c, 0x65, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x65, 0x6e, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x65, 0x6e, 0x12, 0x17, 0x0a, 0x07, 0x5f, 0x34, 0x30, 0x30, 0x55, 0x72, 0x6c, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x34, 0x30, 0x30, 0x55, 0x72, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x5f, 0x34, 0x30, 0x30, 0x57, 0x69, 0x64, 0x74, 0x68, 0x18, 0x20, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x34, 0x30, 0x30, 0x57, 0x69, 0x64, 0x74, 0x68, 0x12, 0x1d, 0x0a, 0x0a, 0x5f, 0x34, 0x30, 0x30, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x21, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x34, 0x30, 0x30, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x62, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x18, 0x22, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x70, 0x62, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x22, 0x77, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x48, 0x65, 0x61, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x6b, 0x67, 0x4e, 0x75, 0x6d, 0x18, 0x01, 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, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6b, 0x67, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x76, 0x53, 0x65, 0x71, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x64, 0x69, 0x76, 0x53, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x61, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0xe0, 0x07, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x48, 0x65, 0x61, 0x64, 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, 0x63, 0x32, 0x63, 0x43, 0x6d, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x63, 0x32, 0x63, 0x43, 0x6d, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x73, 0x67, 0x53, 0x65, 0x71, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6d, 0x73, 0x67, 0x53, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x73, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x6d, 0x73, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x73, 0x67, 0x55, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6d, 0x73, 0x67, 0x55, 0x69, 0x64, 0x12, 0x39, 0x0a, 0x0d, 0x63, 0x32, 0x63, 0x54, 0x6d, 0x70, 0x4d, 0x73, 0x67, 0x48, 0x65, 0x61, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x43, 0x32, 0x43, 0x54, 0x65, 0x6d, 0x70, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x48, 0x65, 0x61, 0x64, 0x52, 0x0d, 0x63, 0x32, 0x63, 0x54, 0x6d, 0x70, 0x4d, 0x73, 0x67, 0x48, 0x65, 0x61, 0x64, 0x12, 0x28, 0x0a, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x72, 0x6f, 0x6d, 0x41, 0x70, 0x70, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x72, 0x6f, 0x6d, 0x41, 0x70, 0x70, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x49, 0x6e, 0x73, 0x74, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x49, 0x6e, 0x73, 0x74, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x2e, 0x0a, 0x0b, 0x64, 0x69, 0x73, 0x63, 0x75, 0x73, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x75, 0x73, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x63, 0x75, 0x73, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x72, 0x6f, 0x6d, 0x4e, 0x69, 0x63, 0x6b, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x72, 0x6f, 0x6d, 0x4e, 0x69, 0x63, 0x6b, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x75, 0x74, 0x68, 0x55, 0x69, 0x6e, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x61, 0x75, 0x74, 0x68, 0x55, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x75, 0x74, 0x68, 0x4e, 0x69, 0x63, 0x6b, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x75, 0x74, 0x68, 0x4e, 0x69, 0x63, 0x6b, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x73, 0x67, 0x46, 0x6c, 0x61, 0x67, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x6d, 0x73, 0x67, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x75, 0x74, 0x68, 0x52, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x75, 0x74, 0x68, 0x52, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x1c, 0x0a, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x37, 0x0a, 0x0e, 0x6d, 0x75, 0x74, 0x69, 0x6c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x48, 0x65, 0x61, 0x64, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x4d, 0x75, 0x74, 0x69, 0x6c, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x48, 0x65, 0x61, 0x64, 0x52, 0x0e, 0x6d, 0x75, 0x74, 0x69, 0x6c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x48, 0x65, 0x61, 0x64, 0x12, 0x2b, 0x0a, 0x0b, 0x6d, 0x73, 0x67, 0x49, 0x6e, 0x73, 0x74, 0x43, 0x74, 0x72, 0x6c, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x43, 0x74, 0x72, 0x6c, 0x52, 0x0b, 0x6d, 0x73, 0x67, 0x49, 0x6e, 0x73, 0x74, 0x43, 0x74, 0x72, 0x6c, 0x12, 0x3e, 0x0a, 0x1a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x65, 0x6e, 0x64, 0x46, 0x6c, 0x61, 0x67, 0x18, 0x16, 0x20, 0x01, 0x28, 0x05, 0x52, 0x1a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x65, 0x6e, 0x64, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x2a, 0x0a, 0x10, 0x77, 0x73, 0x65, 0x71, 0x49, 0x6e, 0x43, 0x32, 0x63, 0x4d, 0x73, 0x67, 0x68, 0x65, 0x61, 0x64, 0x18, 0x17, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x77, 0x73, 0x65, 0x71, 0x49, 0x6e, 0x43, 0x32, 0x63, 0x4d, 0x73, 0x67, 0x68, 0x65, 0x61, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x70, 0x69, 0x64, 0x18, 0x18, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x63, 0x70, 0x69, 0x64, 0x12, 0x3a, 0x0a, 0x0f, 0x65, 0x78, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4b, 0x65, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x45, 0x78, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4b, 0x65, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0f, 0x65, 0x78, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4b, 0x65, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x30, 0x0a, 0x13, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x54, 0x65, 0x78, 0x74, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x54, 0x65, 0x78, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x75, 0x74, 0x68, 0x53, 0x65, 0x78, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x61, 0x75, 0x74, 0x68, 0x53, 0x65, 0x78, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x73, 0x53, 0x72, 0x63, 0x4d, 0x73, 0x67, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, 0x53, 0x72, 0x63, 0x4d, 0x73, 0x67, 0x22, 0x8b, 0x02, 0x0a, 0x09, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 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, 0x1c, 0x0a, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x53, 0x65, 0x71, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x53, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x61, 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x61, 0x72, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x61, 0x6e, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x1e, 0x0a, 0x0a, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x24, 0x0a, 0x0d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xbf, 0x01, 0x0a, 0x0b, 0x44, 0x69, 0x73, 0x63, 0x75, 0x73, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x69, 0x73, 0x63, 0x75, 0x73, 0x73, 0x55, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x64, 0x69, 0x73, 0x63, 0x75, 0x73, 0x73, 0x55, 0x69, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x69, 0x73, 0x63, 0x75, 0x73, 0x73, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x63, 0x75, 0x73, 0x73, 0x54, 0x79, 0x70, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x64, 0x69, 0x73, 0x63, 0x75, 0x73, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x53, 0x65, 0x71, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x64, 0x69, 0x73, 0x63, 0x75, 0x73, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x53, 0x65, 0x71, 0x12, 0x24, 0x0a, 0x0d, 0x64, 0x69, 0x73, 0x63, 0x75, 0x73, 0x73, 0x52, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d, 0x64, 0x69, 0x73, 0x63, 0x75, 0x73, 0x73, 0x52, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x69, 0x73, 0x63, 0x75, 0x73, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x63, 0x75, 0x73, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x3e, 0x0a, 0x0e, 0x4d, 0x75, 0x74, 0x69, 0x6c, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x48, 0x65, 0x61, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x73, 0x67, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6d, 0x73, 0x67, 0x49, 0x64, 0x22, 0xd2, 0x02, 0x0a, 0x12, 0x43, 0x32, 0x43, 0x54, 0x65, 0x6d, 0x70, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x48, 0x65, 0x61, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x32, 0x63, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x63, 0x32, 0x63, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x55, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x55, 0x69, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x69, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x73, 0x69, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x69, 0x67, 0x54, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x73, 0x69, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x72, 0x6f, 0x6d, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x72, 0x6f, 0x6d, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x6f, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x6f, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x12, 0x24, 0x0a, 0x0d, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x6c, 0x61, 0x67, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x22, 0x9b, 0x01, 0x0a, 0x08, 0x49, 0x6e, 0x73, 0x74, 0x43, 0x74, 0x72, 0x6c, 0x12, 0x2f, 0x0a, 0x0d, 0x6d, 0x73, 0x67, 0x53, 0x65, 0x6e, 0x64, 0x54, 0x6f, 0x49, 0x6e, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0d, 0x6d, 0x73, 0x67, 0x53, 0x65, 0x6e, 0x64, 0x54, 0x6f, 0x49, 0x6e, 0x73, 0x74, 0x12, 0x31, 0x0a, 0x0e, 0x6d, 0x73, 0x67, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0e, 0x6d, 0x73, 0x67, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x0b, 0x6d, 0x73, 0x67, 0x46, 0x72, 0x6f, 0x6d, 0x49, 0x6e, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x6d, 0x73, 0x67, 0x46, 0x72, 0x6f, 0x6d, 0x49, 0x6e, 0x73, 0x74, 0x22, 0x7e, 0x0a, 0x08, 0x49, 0x6e, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x70, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x61, 0x70, 0x70, 0x70, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x6e, 0x73, 0x74, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x69, 0x6e, 0x73, 0x74, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x26, 0x0a, 0x0e, 0x65, 0x6e, 0x75, 0x6d, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x65, 0x6e, 0x75, 0x6d, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x22, 0x49, 0x0a, 0x0f, 0x45, 0x78, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4b, 0x65, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x75, 0x72, 0x4d, 0x61, 0x78, 0x53, 0x65, 0x71, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x63, 0x75, 0x72, 0x4d, 0x61, 0x78, 0x53, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x75, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x63, 0x75, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xe2, 0x01, 0x0a, 0x0a, 0x53, 0x79, 0x6e, 0x63, 0x43, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x6d, 0x65, 0x31, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x69, 0x6d, 0x65, 0x31, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x61, 0x6e, 0x31, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x72, 0x61, 0x6e, 0x31, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x61, 0x6e, 0x32, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x72, 0x61, 0x6e, 0x32, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x31, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x31, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x32, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x32, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x33, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x33, 0x12, 0x22, 0x0a, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x34, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x34, 0x22, 0x8e, 0x03, 0x0a, 0x0c, 0x54, 0x72, 0x61, 0x6e, 0x73, 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, 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, 0x1e, 0x0a, 0x0a, 0x6d, 0x73, 0x67, 0x53, 0x75, 0x62, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6d, 0x73, 0x67, 0x53, 0x75, 0x62, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x73, 0x67, 0x53, 0x65, 0x71, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6d, 0x73, 0x67, 0x53, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x73, 0x67, 0x55, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6d, 0x73, 0x67, 0x55, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x73, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x6d, 0x73, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x72, 0x65, 0x61, 0x6c, 0x4d, 0x73, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x72, 0x65, 0x61, 0x6c, 0x4d, 0x73, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x73, 0x67, 0x44, 0x61, 0x74, 0x61, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x6d, 0x73, 0x67, 0x44, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x76, 0x72, 0x49, 0x70, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x76, 0x72, 0x49, 0x70, 0x12, 0x3a, 0x0a, 0x0f, 0x65, 0x78, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4b, 0x65, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x45, 0x78, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4b, 0x65, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0f, 0x65, 0x78, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4b, 0x65, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x20, 0x0a, 0x0b, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x6c, 0x46, 0x6c, 0x61, 0x67, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x6c, 0x46, 0x6c, 0x61, 0x67, 0x22, 0x84, 0x05, 0x0a, 0x0c, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x6c, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x28, 0x0a, 0x0f, 0x62, 0x75, 0x62, 0x62, 0x6c, 0x65, 0x44, 0x69, 0x79, 0x54, 0x65, 0x78, 0x74, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x62, 0x75, 0x62, 0x62, 0x6c, 0x65, 0x44, 0x69, 0x79, 0x54, 0x65, 0x78, 0x74, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x46, 0x6c, 0x61, 0x67, 0x4e, 0x65, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x46, 0x6c, 0x61, 0x67, 0x4e, 0x65, 0x77, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x75, 0x69, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x70, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x72, 0x70, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x70, 0x46, 0x6f, 0x6c, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x70, 0x72, 0x70, 0x46, 0x6f, 0x6c, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x6c, 0x6f, 0x6e, 0x67, 0x54, 0x65, 0x78, 0x74, 0x46, 0x6c, 0x61, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x6c, 0x6f, 0x6e, 0x67, 0x54, 0x65, 0x78, 0x74, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x24, 0x0a, 0x0d, 0x6c, 0x6f, 0x6e, 0x67, 0x54, 0x65, 0x78, 0x74, 0x52, 0x65, 0x73, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6c, 0x6f, 0x6e, 0x67, 0x54, 0x65, 0x78, 0x74, 0x52, 0x65, 0x73, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x54, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x6f, 0x55, 0x69, 0x6e, 0x46, 0x6c, 0x61, 0x67, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x74, 0x6f, 0x55, 0x69, 0x6e, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x22, 0x0a, 0x0c, 0x67, 0x6c, 0x61, 0x6d, 0x6f, 0x75, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x67, 0x6c, 0x61, 0x6d, 0x6f, 0x75, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x20, 0x0a, 0x0b, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x22, 0x0a, 0x0c, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x65, 0x71, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x65, 0x71, 0x12, 0x22, 0x0a, 0x0c, 0x6f, 0x6c, 0x79, 0x6d, 0x70, 0x69, 0x63, 0x54, 0x6f, 0x72, 0x63, 0x68, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x6f, 0x6c, 0x79, 0x6d, 0x70, 0x69, 0x63, 0x54, 0x6f, 0x72, 0x63, 0x68, 0x12, 0x30, 0x0a, 0x13, 0x62, 0x61, 0x62, 0x79, 0x71, 0x47, 0x75, 0x69, 0x64, 0x65, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x13, 0x62, 0x61, 0x62, 0x79, 0x71, 0x47, 0x75, 0x69, 0x64, 0x65, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x75, 0x69, 0x6e, 0x33, 0x32, 0x45, 0x78, 0x70, 0x65, 0x72, 0x74, 0x46, 0x6c, 0x61, 0x67, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x75, 0x69, 0x6e, 0x33, 0x32, 0x45, 0x78, 0x70, 0x65, 0x72, 0x74, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x20, 0x0a, 0x0b, 0x62, 0x75, 0x62, 0x62, 0x6c, 0x65, 0x53, 0x75, 0x62, 0x49, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x62, 0x75, 0x62, 0x62, 0x6c, 0x65, 0x53, 0x75, 0x62, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x65, 0x6e, 0x64, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x70, 0x65, 0x6e, 0x64, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x70, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x72, 0x70, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x62, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x70, 0x62, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x22, 0x44, 0x0a, 0x0e, 0x50, 0x62, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x4d, 0x73, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x22, 0x2b, 0x0a, 0x0d, 0x50, 0x62, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x4d, 0x73, 0x67, 0x4e, 0x65, 0x77, 0x12, 0x1a, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, 0x61, 0x0a, 0x12, 0x50, 0x62, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x4d, 0x73, 0x67, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x12, 0x1a, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, 0x2f, 0x0a, 0x0a, 0x70, 0x62, 0x49, 0x74, 0x65, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x50, 0x62, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x4d, 0x73, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x0a, 0x70, 0x62, 0x49, 0x74, 0x65, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x81, 0x01, 0x0a, 0x15, 0x4d, 0x73, 0x67, 0x45, 0x6c, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x74, 0x79, 0x70, 0x65, 0x33, 0x12, 0x33, 0x0a, 0x0f, 0x66, 0x6c, 0x61, 0x73, 0x68, 0x5f, 0x74, 0x72, 0x6f, 0x6f, 0x70, 0x5f, 0x70, 0x69, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x46, 0x61, 0x63, 0x65, 0x52, 0x0d, 0x66, 0x6c, 0x61, 0x73, 0x68, 0x54, 0x72, 0x6f, 0x6f, 0x70, 0x50, 0x69, 0x63, 0x12, 0x33, 0x0a, 0x0d, 0x66, 0x6c, 0x61, 0x73, 0x68, 0x5f, 0x63, 0x32, 0x63, 0x5f, 0x70, 0x69, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x4e, 0x6f, 0x74, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x0b, 0x66, 0x6c, 0x61, 0x73, 0x68, 0x43, 0x32, 0x63, 0x50, 0x69, 0x63, 0x22, 0x6c, 0x0a, 0x16, 0x4d, 0x73, 0x67, 0x45, 0x6c, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x74, 0x79, 0x70, 0x65, 0x33, 0x33, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x62, 0x75, 0x66, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x62, 0x75, 0x66, 0x22, 0xa3, 0x01, 0x0a, 0x11, 0x53, 0x75, 0x62, 0x4d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x30, 0x78, 0x34, 0x42, 0x6f, 0x64, 0x79, 0x12, 0x34, 0x0a, 0x0d, 0x6e, 0x6f, 0x74, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x4e, 0x6f, 0x74, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x0d, 0x6e, 0x6f, 0x74, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x73, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x6d, 0x73, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3e, 0x0a, 0x1a, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x46, 0x6f, 0x72, 0x50, 0x6f, 0x6c, 0x79, 0x54, 0x6f, 0x4f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x1a, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x46, 0x6f, 0x72, 0x50, 0x6f, 0x6c, 0x79, 0x54, 0x6f, 0x4f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x22, 0x3e, 0x0a, 0x08, 0x52, 0x65, 0x73, 0x76, 0x41, 0x74, 0x74, 0x72, 0x12, 0x32, 0x0a, 0x0a, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x68, 0x6f, 0x77, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x41, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x53, 0x68, 0x6f, 0x77, 0x22, 0x5a, 0x0a, 0x12, 0x41, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x53, 0x68, 0x6f, 0x77, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x61, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x22, 0x74, 0x0a, 0x0e, 0x55, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x66, 0x12, 0x20, 0x0a, 0x0b, 0x66, 0x72, 0x6f, 0x6d, 0x55, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x66, 0x72, 0x6f, 0x6d, 0x55, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x66, 0x72, 0x6f, 0x6d, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x66, 0x72, 0x6f, 0x6d, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x55, 0x75, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x55, 0x75, 0x69, 0x64, 0x2a, 0x2e, 0x0a, 0x08, 0x53, 0x79, 0x6e, 0x63, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x09, 0x0a, 0x05, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x4f, 0x4e, 0x54, 0x49, 0x4e, 0x55, 0x4d, 0x45, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x54, 0x4f, 0x50, 0x10, 0x02, 0x42, 0x07, 0x5a, 0x05, 0x2e, 0x3b, 0x6d, 0x73, 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( file_msg_proto_rawDescOnce sync.Once file_msg_proto_rawDescData = file_msg_proto_rawDesc ) func file_msg_proto_rawDescGZIP() []byte { file_msg_proto_rawDescOnce.Do(func() { file_msg_proto_rawDescData = protoimpl.X.CompressGZIP(file_msg_proto_rawDescData) }) return file_msg_proto_rawDescData } var file_msg_proto_enumTypes = make([]protoimpl.EnumInfo, 1) var file_msg_proto_msgTypes = make([]protoimpl.MessageInfo, 62) var file_msg_proto_goTypes = []interface{}{ (SyncFlag)(0), // 0: SyncFlag (*GetMessageRequest)(nil), // 1: GetMessageRequest (*SendMessageRequest)(nil), // 2: SendMessageRequest (*SendMessageResponse)(nil), // 3: SendMessageResponse (*MsgWithDrawReq)(nil), // 4: MsgWithDrawReq (*C2CMsgWithDrawReq)(nil), // 5: C2CMsgWithDrawReq (*GroupMsgWithDrawReq)(nil), // 6: GroupMsgWithDrawReq (*GroupMsgInfo)(nil), // 7: GroupMsgInfo (*C2CMsgInfo)(nil), // 8: C2CMsgInfo (*RoutingHead)(nil), // 9: RoutingHead (*C2C)(nil), // 10: C2C (*Grp)(nil), // 11: Grp (*GrpTmp)(nil), // 12: GrpTmp (*MsgCtrl)(nil), // 13: MsgCtrl (*GetMessageResponse)(nil), // 14: GetMessageResponse (*PushMessagePacket)(nil), // 15: PushMessagePacket (*UinPairMessage)(nil), // 16: UinPairMessage (*Message)(nil), // 17: Message (*MessageBody)(nil), // 18: MessageBody (*RichText)(nil), // 19: RichText (*Elem)(nil), // 20: Elem (*CommonElem)(nil), // 21: CommonElem (*QQWalletMsg)(nil), // 22: QQWalletMsg (*QQWalletAioBody)(nil), // 23: QQWalletAioBody (*QQWalletAioElem)(nil), // 24: QQWalletAioElem (*RichMsg)(nil), // 25: RichMsg (*CustomElem)(nil), // 26: CustomElem (*Text)(nil), // 27: Text (*Attr)(nil), // 28: Attr (*Ptt)(nil), // 29: Ptt (*OnlineImage)(nil), // 30: OnlineImage (*NotOnlineImage)(nil), // 31: NotOnlineImage (*NotOnlineFile)(nil), // 32: NotOnlineFile (*TransElem)(nil), // 33: TransElem (*ExtraInfo)(nil), // 34: ExtraInfo (*GroupFile)(nil), // 35: GroupFile (*AnonymousGroupMessage)(nil), // 36: AnonymousGroupMessage (*VideoFile)(nil), // 37: VideoFile (*SourceMsg)(nil), // 38: SourceMsg (*Face)(nil), // 39: Face (*LightAppElem)(nil), // 40: LightAppElem (*CustomFace)(nil), // 41: CustomFace (*ContentHead)(nil), // 42: ContentHead (*MessageHead)(nil), // 43: MessageHead (*GroupInfo)(nil), // 44: GroupInfo (*DiscussInfo)(nil), // 45: DiscussInfo (*MutilTransHead)(nil), // 46: MutilTransHead (*C2CTempMessageHead)(nil), // 47: C2CTempMessageHead (*InstCtrl)(nil), // 48: InstCtrl (*InstInfo)(nil), // 49: InstInfo (*ExtGroupKeyInfo)(nil), // 50: ExtGroupKeyInfo (*SyncCookie)(nil), // 51: SyncCookie (*TransMsgInfo)(nil), // 52: TransMsgInfo (*GeneralFlags)(nil), // 53: GeneralFlags (*PbMultiMsgItem)(nil), // 54: PbMultiMsgItem (*PbMultiMsgNew)(nil), // 55: PbMultiMsgNew (*PbMultiMsgTransmit)(nil), // 56: PbMultiMsgTransmit (*MsgElemInfoServtype3)(nil), // 57: MsgElemInfo_servtype3 (*MsgElemInfoServtype33)(nil), // 58: MsgElemInfo_servtype33 (*SubMsgType0X4Body)(nil), // 59: SubMsgType0x4Body (*ResvAttr)(nil), // 60: ResvAttr (*AnimationImageShow)(nil), // 61: AnimationImageShow (*UinTypeUserDef)(nil), // 62: UinTypeUserDef } var file_msg_proto_depIdxs = []int32{ 0, // 0: GetMessageRequest.syncFlag:type_name -> SyncFlag 9, // 1: SendMessageRequest.routingHead:type_name -> RoutingHead 42, // 2: SendMessageRequest.contentHead:type_name -> ContentHead 18, // 3: SendMessageRequest.msgBody:type_name -> MessageBody 13, // 4: SendMessageRequest.msgCtrl:type_name -> MsgCtrl 5, // 5: MsgWithDrawReq.c2cWithDraw:type_name -> C2CMsgWithDrawReq 6, // 6: MsgWithDrawReq.groupWithDraw:type_name -> GroupMsgWithDrawReq 8, // 7: C2CMsgWithDrawReq.msgInfo:type_name -> C2CMsgInfo 7, // 8: GroupMsgWithDrawReq.msgList:type_name -> GroupMsgInfo 9, // 9: C2CMsgInfo.routingHead:type_name -> RoutingHead 10, // 10: RoutingHead.c2c:type_name -> C2C 11, // 11: RoutingHead.grp:type_name -> Grp 12, // 12: RoutingHead.grpTmp:type_name -> GrpTmp 0, // 13: GetMessageResponse.syncFlag:type_name -> SyncFlag 16, // 14: GetMessageResponse.uinPairMsgs:type_name -> UinPairMessage 17, // 15: PushMessagePacket.message:type_name -> Message 17, // 16: UinPairMessage.messages:type_name -> Message 43, // 17: Message.head:type_name -> MessageHead 42, // 18: Message.content:type_name -> ContentHead 18, // 19: Message.body:type_name -> MessageBody 19, // 20: MessageBody.richText:type_name -> RichText 28, // 21: RichText.attr:type_name -> Attr 20, // 22: RichText.elems:type_name -> Elem 32, // 23: RichText.notOnlineFile:type_name -> NotOnlineFile 29, // 24: RichText.ptt:type_name -> Ptt 27, // 25: Elem.text:type_name -> Text 39, // 26: Elem.face:type_name -> Face 30, // 27: Elem.onlineImage:type_name -> OnlineImage 31, // 28: Elem.notOnlineImage:type_name -> NotOnlineImage 33, // 29: Elem.transElemInfo:type_name -> TransElem 41, // 30: Elem.customFace:type_name -> CustomFace 25, // 31: Elem.richMsg:type_name -> RichMsg 35, // 32: Elem.groupFile:type_name -> GroupFile 34, // 33: Elem.extraInfo:type_name -> ExtraInfo 37, // 34: Elem.videoFile:type_name -> VideoFile 36, // 35: Elem.anonGroupMsg:type_name -> AnonymousGroupMessage 22, // 36: Elem.QQWalletMsg:type_name -> QQWalletMsg 26, // 37: Elem.customElem:type_name -> CustomElem 53, // 38: Elem.generalFlags:type_name -> GeneralFlags 38, // 39: Elem.srcMsg:type_name -> SourceMsg 40, // 40: Elem.lightApp:type_name -> LightAppElem 21, // 41: Elem.commonElem:type_name -> CommonElem 23, // 42: QQWalletMsg.aioBody:type_name -> QQWalletAioBody 24, // 43: QQWalletAioBody.sender:type_name -> QQWalletAioElem 24, // 44: QQWalletAioBody.receiver:type_name -> QQWalletAioElem 20, // 45: SourceMsg.elems:type_name -> Elem 47, // 46: MessageHead.c2cTmpMsgHead:type_name -> C2CTempMessageHead 44, // 47: MessageHead.groupInfo:type_name -> GroupInfo 45, // 48: MessageHead.discussInfo:type_name -> DiscussInfo 46, // 49: MessageHead.mutiltransHead:type_name -> MutilTransHead 48, // 50: MessageHead.msgInstCtrl:type_name -> InstCtrl 50, // 51: MessageHead.extGroupKeyInfo:type_name -> ExtGroupKeyInfo 49, // 52: InstCtrl.msgSendToInst:type_name -> InstInfo 49, // 53: InstCtrl.msgExcludeInst:type_name -> InstInfo 49, // 54: InstCtrl.msgFromInst:type_name -> InstInfo 50, // 55: TransMsgInfo.extGroupKeyInfo:type_name -> ExtGroupKeyInfo 17, // 56: PbMultiMsgNew.msg:type_name -> Message 17, // 57: PbMultiMsgTransmit.msg:type_name -> Message 54, // 58: PbMultiMsgTransmit.pbItemList:type_name -> PbMultiMsgItem 41, // 59: MsgElemInfo_servtype3.flash_troop_pic:type_name -> CustomFace 31, // 60: MsgElemInfo_servtype3.flash_c2c_pic:type_name -> NotOnlineImage 32, // 61: SubMsgType0x4Body.notOnlineFile:type_name -> NotOnlineFile 61, // 62: ResvAttr.image_show:type_name -> AnimationImageShow 63, // [63:63] is the sub-list for method output_type 63, // [63:63] is the sub-list for method input_type 63, // [63:63] is the sub-list for extension type_name 63, // [63:63] is the sub-list for extension extendee 0, // [0:63] is the sub-list for field type_name } func init() { file_msg_proto_init() } func file_msg_proto_init() { if File_msg_proto != nil { return } if !protoimpl.UnsafeEnabled { file_msg_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetMessageRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_msg_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SendMessageRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_msg_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SendMessageResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_msg_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MsgWithDrawReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_msg_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*C2CMsgWithDrawReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_msg_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GroupMsgWithDrawReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_msg_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GroupMsgInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_msg_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*C2CMsgInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_msg_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RoutingHead); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_msg_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*C2C); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_msg_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Grp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_msg_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GrpTmp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_msg_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MsgCtrl); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_msg_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetMessageResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_msg_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PushMessagePacket); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_msg_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UinPairMessage); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_msg_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Message); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_msg_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MessageBody); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_msg_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RichText); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_msg_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Elem); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_msg_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CommonElem); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_msg_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*QQWalletMsg); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_msg_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*QQWalletAioBody); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_msg_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*QQWalletAioElem); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_msg_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RichMsg); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_msg_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CustomElem); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_msg_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Text); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_msg_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Attr); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_msg_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Ptt); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_msg_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*OnlineImage); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_msg_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*NotOnlineImage); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_msg_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*NotOnlineFile); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_msg_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TransElem); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_msg_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ExtraInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_msg_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GroupFile); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_msg_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AnonymousGroupMessage); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_msg_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*VideoFile); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_msg_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SourceMsg); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_msg_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Face); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_msg_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LightAppElem); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_msg_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CustomFace); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_msg_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ContentHead); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_msg_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MessageHead); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_msg_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GroupInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_msg_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DiscussInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_msg_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MutilTransHead); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_msg_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*C2CTempMessageHead); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_msg_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*InstCtrl); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_msg_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*InstInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_msg_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ExtGroupKeyInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_msg_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SyncCookie); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_msg_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TransMsgInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_msg_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GeneralFlags); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_msg_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PbMultiMsgItem); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_msg_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PbMultiMsgNew); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_msg_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PbMultiMsgTransmit); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_msg_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MsgElemInfoServtype3); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_msg_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MsgElemInfoServtype33); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_msg_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SubMsgType0X4Body); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_msg_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ResvAttr); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_msg_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AnimationImageShow); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_msg_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UinTypeUserDef); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_msg_proto_rawDesc, NumEnums: 1, NumMessages: 62, NumExtensions: 0, NumServices: 0, }, GoTypes: file_msg_proto_goTypes, DependencyIndexes: file_msg_proto_depIdxs, EnumInfos: file_msg_proto_enumTypes, MessageInfos: file_msg_proto_msgTypes, }.Build() File_msg_proto = out.File file_msg_proto_rawDesc = nil file_msg_proto_goTypes = nil file_msg_proto_depIdxs = nil }