// Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.23.0 // protoc v3.17.3 // source: chat/v1/messages.proto package chatv1 import ( proto "github.com/golang/protobuf/proto" v11 "github.com/harmony-development/shibshib/gen/emote/v1" v1 "github.com/harmony-development/shibshib/gen/harmonytypes/v1" 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 // The action type. This is primarily used to change the look of the action to // the user (example: Destructive actions will have a red background). type Action_Type int32 const ( // a normal action. Action_TYPE_NORMAL_UNSPECIFIED Action_Type = 0 // a primary action. Action_TYPE_PRIMARY Action_Type = 1 // A destructive / dangerous action. Action_TYPE_DESTRUCTIVE Action_Type = 2 ) // Enum value maps for Action_Type. var ( Action_Type_name = map[int32]string{ 0: "TYPE_NORMAL_UNSPECIFIED", 1: "TYPE_PRIMARY", 2: "TYPE_DESTRUCTIVE", } Action_Type_value = map[string]int32{ "TYPE_NORMAL_UNSPECIFIED": 0, "TYPE_PRIMARY": 1, "TYPE_DESTRUCTIVE": 2, } ) func (x Action_Type) Enum() *Action_Type { p := new(Action_Type) *p = x return p } func (x Action_Type) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (Action_Type) Descriptor() protoreflect.EnumDescriptor { return file_chat_v1_messages_proto_enumTypes[0].Descriptor() } func (Action_Type) Type() protoreflect.EnumType { return &file_chat_v1_messages_proto_enumTypes[0] } func (x Action_Type) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use Action_Type.Descriptor instead. func (Action_Type) EnumDescriptor() ([]byte, []int) { return file_chat_v1_messages_proto_rawDescGZIP(), []int{2, 0} } // Type representing how to present an embed field. type Embed_EmbedField_Presentation int32 const ( // Show the field as data. Embed_EmbedField_PRESENTATION_DATA_UNSPECIFIED Embed_EmbedField_Presentation = 0 // Show the field as a captioned image. Embed_EmbedField_PRESENTATION_CAPTIONED_IMAGE Embed_EmbedField_Presentation = 1 // Show the field as a row. Embed_EmbedField_PRESENTATION_ROW Embed_EmbedField_Presentation = 2 ) // Enum value maps for Embed_EmbedField_Presentation. var ( Embed_EmbedField_Presentation_name = map[int32]string{ 0: "PRESENTATION_DATA_UNSPECIFIED", 1: "PRESENTATION_CAPTIONED_IMAGE", 2: "PRESENTATION_ROW", } Embed_EmbedField_Presentation_value = map[string]int32{ "PRESENTATION_DATA_UNSPECIFIED": 0, "PRESENTATION_CAPTIONED_IMAGE": 1, "PRESENTATION_ROW": 2, } ) func (x Embed_EmbedField_Presentation) Enum() *Embed_EmbedField_Presentation { p := new(Embed_EmbedField_Presentation) *p = x return p } func (x Embed_EmbedField_Presentation) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (Embed_EmbedField_Presentation) Descriptor() protoreflect.EnumDescriptor { return file_chat_v1_messages_proto_enumTypes[1].Descriptor() } func (Embed_EmbedField_Presentation) Type() protoreflect.EnumType { return &file_chat_v1_messages_proto_enumTypes[1] } func (x Embed_EmbedField_Presentation) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use Embed_EmbedField_Presentation.Descriptor instead. func (Embed_EmbedField_Presentation) EnumDescriptor() ([]byte, []int) { return file_chat_v1_messages_proto_rawDescGZIP(), []int{3, 1, 0} } // The kind of colour modification to apply type Format_Color_Kind int32 const ( // Dimmed colour Format_Color_KIND_DIM_UNSPECIFIED Format_Color_Kind = 0 // Brightened colour Format_Color_KIND_BRIGHT Format_Color_Kind = 1 // Negative colour (usually red) Format_Color_KIND_NEGATIVE Format_Color_Kind = 2 // Positive colour (usually green) Format_Color_KIND_POSITIVE Format_Color_Kind = 3 // Informational colour (usually blue) Format_Color_KIND_INFO Format_Color_Kind = 4 // Warning colour (usually yellow-orange) Format_Color_KIND_WARNING Format_Color_Kind = 5 ) // Enum value maps for Format_Color_Kind. var ( Format_Color_Kind_name = map[int32]string{ 0: "KIND_DIM_UNSPECIFIED", 1: "KIND_BRIGHT", 2: "KIND_NEGATIVE", 3: "KIND_POSITIVE", 4: "KIND_INFO", 5: "KIND_WARNING", } Format_Color_Kind_value = map[string]int32{ "KIND_DIM_UNSPECIFIED": 0, "KIND_BRIGHT": 1, "KIND_NEGATIVE": 2, "KIND_POSITIVE": 3, "KIND_INFO": 4, "KIND_WARNING": 5, } ) func (x Format_Color_Kind) Enum() *Format_Color_Kind { p := new(Format_Color_Kind) *p = x return p } func (x Format_Color_Kind) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (Format_Color_Kind) Descriptor() protoreflect.EnumDescriptor { return file_chat_v1_messages_proto_enumTypes[2].Descriptor() } func (Format_Color_Kind) Type() protoreflect.EnumType { return &file_chat_v1_messages_proto_enumTypes[2] } func (x Format_Color_Kind) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use Format_Color_Kind.Descriptor instead. func (Format_Color_Kind) EnumDescriptor() ([]byte, []int) { return file_chat_v1_messages_proto_rawDescGZIP(), []int{9, 12, 0} } // The direction relative to the `message_id` message to get messages from. type GetChannelMessagesRequest_Direction int32 const ( // Get messages before the anchor. GetChannelMessagesRequest_DIRECTION_BEFORE_UNSPECIFIED GetChannelMessagesRequest_Direction = 0 // Get messages around the anchor, including the anchor. GetChannelMessagesRequest_DIRECTION_AROUND GetChannelMessagesRequest_Direction = 1 // Get messages after the anchor. GetChannelMessagesRequest_DIRECTION_AFTER GetChannelMessagesRequest_Direction = 2 ) // Enum value maps for GetChannelMessagesRequest_Direction. var ( GetChannelMessagesRequest_Direction_name = map[int32]string{ 0: "DIRECTION_BEFORE_UNSPECIFIED", 1: "DIRECTION_AROUND", 2: "DIRECTION_AFTER", } GetChannelMessagesRequest_Direction_value = map[string]int32{ "DIRECTION_BEFORE_UNSPECIFIED": 0, "DIRECTION_AROUND": 1, "DIRECTION_AFTER": 2, } ) func (x GetChannelMessagesRequest_Direction) Enum() *GetChannelMessagesRequest_Direction { p := new(GetChannelMessagesRequest_Direction) *p = x return p } func (x GetChannelMessagesRequest_Direction) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (GetChannelMessagesRequest_Direction) Descriptor() protoreflect.EnumDescriptor { return file_chat_v1_messages_proto_enumTypes[3].Descriptor() } func (GetChannelMessagesRequest_Direction) Type() protoreflect.EnumType { return &file_chat_v1_messages_proto_enumTypes[3] } func (x GetChannelMessagesRequest_Direction) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use GetChannelMessagesRequest_Direction.Descriptor instead. func (GetChannelMessagesRequest_Direction) EnumDescriptor() ([]byte, []int) { return file_chat_v1_messages_proto_rawDescGZIP(), []int{13, 0} } // Overrides provide a way to override the name and avatar of a message. type Overrides struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // the overridden username. Username *string `protobuf:"bytes,1,opt,name=username,proto3,oneof" json:"username,omitempty"` // the overridden avatar. Avatar *string `protobuf:"bytes,2,opt,name=avatar,proto3,oneof" json:"avatar,omitempty"` // the reason for overriding username and avatar. // // Types that are assignable to Reason: // *Overrides_UserDefined // *Overrides_Webhook // *Overrides_SystemPlurality // *Overrides_SystemMessage // *Overrides_Bridge Reason isOverrides_Reason `protobuf_oneof:"reason"` } func (x *Overrides) Reset() { *x = Overrides{} if protoimpl.UnsafeEnabled { mi := &file_chat_v1_messages_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Overrides) String() string { return protoimpl.X.MessageStringOf(x) } func (*Overrides) ProtoMessage() {} func (x *Overrides) ProtoReflect() protoreflect.Message { mi := &file_chat_v1_messages_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 Overrides.ProtoReflect.Descriptor instead. func (*Overrides) Descriptor() ([]byte, []int) { return file_chat_v1_messages_proto_rawDescGZIP(), []int{0} } func (x *Overrides) GetUsername() string { if x != nil && x.Username != nil { return *x.Username } return "" } func (x *Overrides) GetAvatar() string { if x != nil && x.Avatar != nil { return *x.Avatar } return "" } func (m *Overrides) GetReason() isOverrides_Reason { if m != nil { return m.Reason } return nil } func (x *Overrides) GetUserDefined() string { if x, ok := x.GetReason().(*Overrides_UserDefined); ok { return x.UserDefined } return "" } func (x *Overrides) GetWebhook() *v1.Empty { if x, ok := x.GetReason().(*Overrides_Webhook); ok { return x.Webhook } return nil } func (x *Overrides) GetSystemPlurality() *v1.Empty { if x, ok := x.GetReason().(*Overrides_SystemPlurality); ok { return x.SystemPlurality } return nil } func (x *Overrides) GetSystemMessage() *v1.Empty { if x, ok := x.GetReason().(*Overrides_SystemMessage); ok { return x.SystemMessage } return nil } func (x *Overrides) GetBridge() *v1.Empty { if x, ok := x.GetReason().(*Overrides_Bridge); ok { return x.Bridge } return nil } type isOverrides_Reason interface { isOverrides_Reason() } type Overrides_UserDefined struct { // a custom reason in case the builtin ones don't fit UserDefined string `protobuf:"bytes,3,opt,name=user_defined,json=userDefined,proto3,oneof"` } type Overrides_Webhook struct { // the override occured because of a webhook Webhook *v1.Empty `protobuf:"bytes,4,opt,name=webhook,proto3,oneof"` } type Overrides_SystemPlurality struct { // plurality, not system as in computer SystemPlurality *v1.Empty `protobuf:"bytes,5,opt,name=system_plurality,json=systemPlurality,proto3,oneof"` } type Overrides_SystemMessage struct { // the override occured because it was made by the server // // Servers should reject messages sent by users with this override. SystemMessage *v1.Empty `protobuf:"bytes,6,opt,name=system_message,json=systemMessage,proto3,oneof"` } type Overrides_Bridge struct { // the override occured because of bridging Bridge *v1.Empty `protobuf:"bytes,7,opt,name=bridge,proto3,oneof"` } func (*Overrides_UserDefined) isOverrides_Reason() {} func (*Overrides_Webhook) isOverrides_Reason() {} func (*Overrides_SystemPlurality) isOverrides_Reason() {} func (*Overrides_SystemMessage) isOverrides_Reason() {} func (*Overrides_Bridge) isOverrides_Reason() {} // The payload sent to the bot when an action is triggered. type ActionPayload struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // The payload data // // Types that are assignable to Payload: // *ActionPayload_Button_ // *ActionPayload_Dropdown_ // *ActionPayload_Input_ Payload isActionPayload_Payload `protobuf_oneof:"payload"` } func (x *ActionPayload) Reset() { *x = ActionPayload{} if protoimpl.UnsafeEnabled { mi := &file_chat_v1_messages_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ActionPayload) String() string { return protoimpl.X.MessageStringOf(x) } func (*ActionPayload) ProtoMessage() {} func (x *ActionPayload) ProtoReflect() protoreflect.Message { mi := &file_chat_v1_messages_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 ActionPayload.ProtoReflect.Descriptor instead. func (*ActionPayload) Descriptor() ([]byte, []int) { return file_chat_v1_messages_proto_rawDescGZIP(), []int{1} } func (m *ActionPayload) GetPayload() isActionPayload_Payload { if m != nil { return m.Payload } return nil } func (x *ActionPayload) GetButton() *ActionPayload_Button { if x, ok := x.GetPayload().(*ActionPayload_Button_); ok { return x.Button } return nil } func (x *ActionPayload) GetDropdown() *ActionPayload_Dropdown { if x, ok := x.GetPayload().(*ActionPayload_Dropdown_); ok { return x.Dropdown } return nil } func (x *ActionPayload) GetInput() *ActionPayload_Input { if x, ok := x.GetPayload().(*ActionPayload_Input_); ok { return x.Input } return nil } type isActionPayload_Payload interface { isActionPayload_Payload() } type ActionPayload_Button_ struct { // Payload for a button Button *ActionPayload_Button `protobuf:"bytes,1,opt,name=button,proto3,oneof"` } type ActionPayload_Dropdown_ struct { // Payload for a dropdown Dropdown *ActionPayload_Dropdown `protobuf:"bytes,2,opt,name=dropdown,proto3,oneof"` } type ActionPayload_Input_ struct { // Payload for a text input Input *ActionPayload_Input `protobuf:"bytes,3,opt,name=input,proto3,oneof"` } func (*ActionPayload_Button_) isActionPayload_Payload() {} func (*ActionPayload_Dropdown_) isActionPayload_Payload() {} func (*ActionPayload_Input_) isActionPayload_Payload() {} // Actions are interactive elements that can exist within an embed. type Action struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Type of the action. ActionType Action_Type `protobuf:"varint,1,opt,name=action_type,json=actionType,proto3,enum=protocol.chat.v1.Action_Type" json:"action_type,omitempty"` // The kind of the action. // // Types that are assignable to Kind: // *Action_Button_ // *Action_Dropdown_ // *Action_Input_ Kind isAction_Kind `protobuf_oneof:"kind"` } func (x *Action) Reset() { *x = Action{} if protoimpl.UnsafeEnabled { mi := &file_chat_v1_messages_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Action) String() string { return protoimpl.X.MessageStringOf(x) } func (*Action) ProtoMessage() {} func (x *Action) ProtoReflect() protoreflect.Message { mi := &file_chat_v1_messages_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 Action.ProtoReflect.Descriptor instead. func (*Action) Descriptor() ([]byte, []int) { return file_chat_v1_messages_proto_rawDescGZIP(), []int{2} } func (x *Action) GetActionType() Action_Type { if x != nil { return x.ActionType } return Action_TYPE_NORMAL_UNSPECIFIED } func (m *Action) GetKind() isAction_Kind { if m != nil { return m.Kind } return nil } func (x *Action) GetButton() *Action_Button { if x, ok := x.GetKind().(*Action_Button_); ok { return x.Button } return nil } func (x *Action) GetDropdown() *Action_Dropdown { if x, ok := x.GetKind().(*Action_Dropdown_); ok { return x.Dropdown } return nil } func (x *Action) GetInput() *Action_Input { if x, ok := x.GetKind().(*Action_Input_); ok { return x.Input } return nil } type isAction_Kind interface { isAction_Kind() } type Action_Button_ struct { // Button action. Button *Action_Button `protobuf:"bytes,2,opt,name=button,proto3,oneof"` } type Action_Dropdown_ struct { // Dropdown action. Dropdown *Action_Dropdown `protobuf:"bytes,3,opt,name=dropdown,proto3,oneof"` } type Action_Input_ struct { // Input action. Input *Action_Input `protobuf:"bytes,4,opt,name=input,proto3,oneof"` } func (*Action_Button_) isAction_Kind() {} func (*Action_Dropdown_) isAction_Kind() {} func (*Action_Input_) isAction_Kind() {} // Object representing a message embed. type Embed struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Title of this embed. Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"` // Body text of this embed. Body *FormattedText `protobuf:"bytes,2,opt,name=body,proto3,oneof" json:"body,omitempty"` // Color of this embed. Color *int32 `protobuf:"varint,3,opt,name=color,proto3,oneof" json:"color,omitempty"` // Embed heading for the header. Header *Embed_EmbedHeading `protobuf:"bytes,4,opt,name=header,proto3,oneof" json:"header,omitempty"` // Embed heading for the footer. Footer *Embed_EmbedHeading `protobuf:"bytes,5,opt,name=footer,proto3,oneof" json:"footer,omitempty"` // Fields of this embed. Fields []*Embed_EmbedField `protobuf:"bytes,6,rep,name=fields,proto3" json:"fields,omitempty"` } func (x *Embed) Reset() { *x = Embed{} if protoimpl.UnsafeEnabled { mi := &file_chat_v1_messages_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Embed) String() string { return protoimpl.X.MessageStringOf(x) } func (*Embed) ProtoMessage() {} func (x *Embed) ProtoReflect() protoreflect.Message { mi := &file_chat_v1_messages_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 Embed.ProtoReflect.Descriptor instead. func (*Embed) Descriptor() ([]byte, []int) { return file_chat_v1_messages_proto_rawDescGZIP(), []int{3} } func (x *Embed) GetTitle() string { if x != nil { return x.Title } return "" } func (x *Embed) GetBody() *FormattedText { if x != nil { return x.Body } return nil } func (x *Embed) GetColor() int32 { if x != nil && x.Color != nil { return *x.Color } return 0 } func (x *Embed) GetHeader() *Embed_EmbedHeading { if x != nil { return x.Header } return nil } func (x *Embed) GetFooter() *Embed_EmbedHeading { if x != nil { return x.Footer } return nil } func (x *Embed) GetFields() []*Embed_EmbedField { if x != nil { return x.Fields } return nil } // // Minithumbnail is an extremely low-quality JPEG thumbnail. // // The resolution is usually no larger than 64x64. type Minithumbnail struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // The width of the minithumbnail Width uint32 `protobuf:"varint,1,opt,name=width,proto3" json:"width,omitempty"` // The height of the minithumbnail Height uint32 `protobuf:"varint,2,opt,name=height,proto3" json:"height,omitempty"` // The JPEG data of the minithumbnail Data []byte `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"` } func (x *Minithumbnail) Reset() { *x = Minithumbnail{} if protoimpl.UnsafeEnabled { mi := &file_chat_v1_messages_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Minithumbnail) String() string { return protoimpl.X.MessageStringOf(x) } func (*Minithumbnail) ProtoMessage() {} func (x *Minithumbnail) ProtoReflect() protoreflect.Message { mi := &file_chat_v1_messages_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 Minithumbnail.ProtoReflect.Descriptor instead. func (*Minithumbnail) Descriptor() ([]byte, []int) { return file_chat_v1_messages_proto_rawDescGZIP(), []int{4} } func (x *Minithumbnail) GetWidth() uint32 { if x != nil { return x.Width } return 0 } func (x *Minithumbnail) GetHeight() uint32 { if x != nil { return x.Height } return 0 } func (x *Minithumbnail) GetData() []byte { if x != nil { return x.Data } return nil } // // Photo contains data about a photo. // // Photo are always JPEG, and are // constrained to the following rules: // // - width+height <= 10_000 // - width <= height*20 // - height <= width*20 // // Photos are preferably no more than 10MB // in size, and servers may compress as necessary. type Photo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // The HMC URL of the photo. Hmc string `protobuf:"bytes,1,opt,name=hmc,proto3" json:"hmc,omitempty"` // The filename of the photo. Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` // The size of the photo. FileSize uint32 `protobuf:"varint,3,opt,name=file_size,json=fileSize,proto3" json:"file_size,omitempty"` // The height of the photo, in pixels. Height uint32 `protobuf:"varint,4,opt,name=height,proto3" json:"height,omitempty"` // The width of the photo, in pixels. Width uint32 `protobuf:"varint,5,opt,name=width,proto3" json:"width,omitempty"` // The photo's caption. Caption *FormattedText `protobuf:"bytes,6,opt,name=caption,proto3" json:"caption,omitempty"` // A thumbnail representing the photo. Minithumbnail *Minithumbnail `protobuf:"bytes,7,opt,name=minithumbnail,proto3" json:"minithumbnail,omitempty"` } func (x *Photo) Reset() { *x = Photo{} if protoimpl.UnsafeEnabled { mi := &file_chat_v1_messages_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Photo) String() string { return protoimpl.X.MessageStringOf(x) } func (*Photo) ProtoMessage() {} func (x *Photo) ProtoReflect() protoreflect.Message { mi := &file_chat_v1_messages_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 Photo.ProtoReflect.Descriptor instead. func (*Photo) Descriptor() ([]byte, []int) { return file_chat_v1_messages_proto_rawDescGZIP(), []int{5} } func (x *Photo) GetHmc() string { if x != nil { return x.Hmc } return "" } func (x *Photo) GetName() string { if x != nil { return x.Name } return "" } func (x *Photo) GetFileSize() uint32 { if x != nil { return x.FileSize } return 0 } func (x *Photo) GetHeight() uint32 { if x != nil { return x.Height } return 0 } func (x *Photo) GetWidth() uint32 { if x != nil { return x.Width } return 0 } func (x *Photo) GetCaption() *FormattedText { if x != nil { return x.Caption } return nil } func (x *Photo) GetMinithumbnail() *Minithumbnail { if x != nil { return x.Minithumbnail } return nil } // Object representing a generic message attachment. type Attachment struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // File ID of this attachment. Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // Filename of this attachment. Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` // Mimetype of this attachment. Mimetype string `protobuf:"bytes,3,opt,name=mimetype,proto3" json:"mimetype,omitempty"` // Size of this attachment. Size uint32 `protobuf:"varint,4,opt,name=size,proto3" json:"size,omitempty"` // Caption of this attachment. Caption *FormattedText `protobuf:"bytes,5,opt,name=caption,proto3,oneof" json:"caption,omitempty"` } func (x *Attachment) Reset() { *x = Attachment{} if protoimpl.UnsafeEnabled { mi := &file_chat_v1_messages_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Attachment) String() string { return protoimpl.X.MessageStringOf(x) } func (*Attachment) ProtoMessage() {} func (x *Attachment) ProtoReflect() protoreflect.Message { mi := &file_chat_v1_messages_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 Attachment.ProtoReflect.Descriptor instead. func (*Attachment) Descriptor() ([]byte, []int) { return file_chat_v1_messages_proto_rawDescGZIP(), []int{6} } func (x *Attachment) GetId() string { if x != nil { return x.Id } return "" } func (x *Attachment) GetName() string { if x != nil { return x.Name } return "" } func (x *Attachment) GetMimetype() string { if x != nil { return x.Mimetype } return "" } func (x *Attachment) GetSize() uint32 { if x != nil { return x.Size } return 0 } func (x *Attachment) GetCaption() *FormattedText { if x != nil { return x.Caption } return nil } // Object representing a message's content. type Content struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Content data. // // Types that are assignable to Content: // *Content_TextMessage // *Content_EmbedMessage // *Content_AttachmentMessage // *Content_PhotoMessage // *Content_InviteRejected_ // *Content_InviteAccepted_ // *Content_RoomUpgradedToGuild_ Content isContent_Content `protobuf_oneof:"content"` } func (x *Content) Reset() { *x = Content{} if protoimpl.UnsafeEnabled { mi := &file_chat_v1_messages_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Content) String() string { return protoimpl.X.MessageStringOf(x) } func (*Content) ProtoMessage() {} func (x *Content) ProtoReflect() protoreflect.Message { mi := &file_chat_v1_messages_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 Content.ProtoReflect.Descriptor instead. func (*Content) Descriptor() ([]byte, []int) { return file_chat_v1_messages_proto_rawDescGZIP(), []int{7} } func (m *Content) GetContent() isContent_Content { if m != nil { return m.Content } return nil } func (x *Content) GetTextMessage() *Content_TextContent { if x, ok := x.GetContent().(*Content_TextMessage); ok { return x.TextMessage } return nil } func (x *Content) GetEmbedMessage() *Content_EmbedContent { if x, ok := x.GetContent().(*Content_EmbedMessage); ok { return x.EmbedMessage } return nil } func (x *Content) GetAttachmentMessage() *Content_AttachmentContent { if x, ok := x.GetContent().(*Content_AttachmentMessage); ok { return x.AttachmentMessage } return nil } func (x *Content) GetPhotoMessage() *Content_PhotoContent { if x, ok := x.GetContent().(*Content_PhotoMessage); ok { return x.PhotoMessage } return nil } func (x *Content) GetInviteRejected() *Content_InviteRejected { if x, ok := x.GetContent().(*Content_InviteRejected_); ok { return x.InviteRejected } return nil } func (x *Content) GetInviteAccepted() *Content_InviteAccepted { if x, ok := x.GetContent().(*Content_InviteAccepted_); ok { return x.InviteAccepted } return nil } func (x *Content) GetRoomUpgradedToGuild() *Content_RoomUpgradedToGuild { if x, ok := x.GetContent().(*Content_RoomUpgradedToGuild_); ok { return x.RoomUpgradedToGuild } return nil } type isContent_Content interface { isContent_Content() } type Content_TextMessage struct { // Text content. TextMessage *Content_TextContent `protobuf:"bytes,1,opt,name=text_message,json=textMessage,proto3,oneof"` } type Content_EmbedMessage struct { // Embed content. EmbedMessage *Content_EmbedContent `protobuf:"bytes,2,opt,name=embed_message,json=embedMessage,proto3,oneof"` } type Content_AttachmentMessage struct { // Attachment content. AttachmentMessage *Content_AttachmentContent `protobuf:"bytes,3,opt,name=attachment_message,json=attachmentMessage,proto3,oneof"` } type Content_PhotoMessage struct { // Photo content. PhotoMessage *Content_PhotoContent `protobuf:"bytes,4,opt,name=photo_message,json=photoMessage,proto3,oneof"` } type Content_InviteRejected_ struct { // A user rejected an invite. InviteRejected *Content_InviteRejected `protobuf:"bytes,5,opt,name=invite_rejected,json=inviteRejected,proto3,oneof"` } type Content_InviteAccepted_ struct { // A user accepted an invite. InviteAccepted *Content_InviteAccepted `protobuf:"bytes,6,opt,name=invite_accepted,json=inviteAccepted,proto3,oneof"` } type Content_RoomUpgradedToGuild_ struct { // A user upgraded a guild from "room" to "normal". RoomUpgradedToGuild *Content_RoomUpgradedToGuild `protobuf:"bytes,7,opt,name=room_upgraded_to_guild,json=roomUpgradedToGuild,proto3,oneof"` } func (*Content_TextMessage) isContent_Content() {} func (*Content_EmbedMessage) isContent_Content() {} func (*Content_AttachmentMessage) isContent_Content() {} func (*Content_PhotoMessage) isContent_Content() {} func (*Content_InviteRejected_) isContent_Content() {} func (*Content_InviteAccepted_) isContent_Content() {} func (*Content_RoomUpgradedToGuild_) isContent_Content() {} // Object representing a reaction. type Reaction struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Emote data for this reaction. // // Emote's image ID is used as an identifier for unique reactions. // Emotes with the same names should be "deduplicated" by a client, by suffixing // their names with `~1`, `~2` and so on. Emote *v11.Emote `protobuf:"bytes,1,opt,name=emote,proto3" json:"emote,omitempty"` // How many reactions this reaction has. Count uint32 `protobuf:"varint,2,opt,name=count,proto3" json:"count,omitempty"` } func (x *Reaction) Reset() { *x = Reaction{} if protoimpl.UnsafeEnabled { mi := &file_chat_v1_messages_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Reaction) String() string { return protoimpl.X.MessageStringOf(x) } func (*Reaction) ProtoMessage() {} func (x *Reaction) ProtoReflect() protoreflect.Message { mi := &file_chat_v1_messages_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 Reaction.ProtoReflect.Descriptor instead. func (*Reaction) Descriptor() ([]byte, []int) { return file_chat_v1_messages_proto_rawDescGZIP(), []int{8} } func (x *Reaction) GetEmote() *v11.Emote { if x != nil { return x.Emote } return nil } func (x *Reaction) GetCount() uint32 { if x != nil { return x.Count } return 0 } // A format for text type Format struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // where the format begins to apply to Start uint32 `protobuf:"varint,1,opt,name=start,proto3" json:"start,omitempty"` // how many characters the format is Length uint32 `protobuf:"varint,2,opt,name=length,proto3" json:"length,omitempty"` // the style if format to apply to this text // // Types that are assignable to Format: // *Format_Bold_ // *Format_Italic_ // *Format_Underline_ // *Format_Monospace_ // *Format_Superscript_ // *Format_Subscript_ // *Format_CodeBlock_ // *Format_UserMention_ // *Format_RoleMention_ // *Format_ChannelMention_ // *Format_GuildMention_ // *Format_Emoji_ // *Format_Color_ // *Format_Localization_ Format isFormat_Format `protobuf_oneof:"format"` } func (x *Format) Reset() { *x = Format{} if protoimpl.UnsafeEnabled { mi := &file_chat_v1_messages_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Format) String() string { return protoimpl.X.MessageStringOf(x) } func (*Format) ProtoMessage() {} func (x *Format) ProtoReflect() protoreflect.Message { mi := &file_chat_v1_messages_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 Format.ProtoReflect.Descriptor instead. func (*Format) Descriptor() ([]byte, []int) { return file_chat_v1_messages_proto_rawDescGZIP(), []int{9} } func (x *Format) GetStart() uint32 { if x != nil { return x.Start } return 0 } func (x *Format) GetLength() uint32 { if x != nil { return x.Length } return 0 } func (m *Format) GetFormat() isFormat_Format { if m != nil { return m.Format } return nil } func (x *Format) GetBold() *Format_Bold { if x, ok := x.GetFormat().(*Format_Bold_); ok { return x.Bold } return nil } func (x *Format) GetItalic() *Format_Italic { if x, ok := x.GetFormat().(*Format_Italic_); ok { return x.Italic } return nil } func (x *Format) GetUnderline() *Format_Underline { if x, ok := x.GetFormat().(*Format_Underline_); ok { return x.Underline } return nil } func (x *Format) GetMonospace() *Format_Monospace { if x, ok := x.GetFormat().(*Format_Monospace_); ok { return x.Monospace } return nil } func (x *Format) GetSuperscript() *Format_Superscript { if x, ok := x.GetFormat().(*Format_Superscript_); ok { return x.Superscript } return nil } func (x *Format) GetSubscript() *Format_Subscript { if x, ok := x.GetFormat().(*Format_Subscript_); ok { return x.Subscript } return nil } func (x *Format) GetCodeBlock() *Format_CodeBlock { if x, ok := x.GetFormat().(*Format_CodeBlock_); ok { return x.CodeBlock } return nil } func (x *Format) GetUserMention() *Format_UserMention { if x, ok := x.GetFormat().(*Format_UserMention_); ok { return x.UserMention } return nil } func (x *Format) GetRoleMention() *Format_RoleMention { if x, ok := x.GetFormat().(*Format_RoleMention_); ok { return x.RoleMention } return nil } func (x *Format) GetChannelMention() *Format_ChannelMention { if x, ok := x.GetFormat().(*Format_ChannelMention_); ok { return x.ChannelMention } return nil } func (x *Format) GetGuildMention() *Format_GuildMention { if x, ok := x.GetFormat().(*Format_GuildMention_); ok { return x.GuildMention } return nil } func (x *Format) GetEmoji() *Format_Emoji { if x, ok := x.GetFormat().(*Format_Emoji_); ok { return x.Emoji } return nil } func (x *Format) GetColor() *Format_Color { if x, ok := x.GetFormat().(*Format_Color_); ok { return x.Color } return nil } func (x *Format) GetLocalization() *Format_Localization { if x, ok := x.GetFormat().(*Format_Localization_); ok { return x.Localization } return nil } type isFormat_Format interface { isFormat_Format() } type Format_Bold_ struct { // a text format for bold text Bold *Format_Bold `protobuf:"bytes,3,opt,name=bold,proto3,oneof"` } type Format_Italic_ struct { // a text format for italic text Italic *Format_Italic `protobuf:"bytes,4,opt,name=italic,proto3,oneof"` } type Format_Underline_ struct { // a text format for underline text Underline *Format_Underline `protobuf:"bytes,5,opt,name=underline,proto3,oneof"` } type Format_Monospace_ struct { // a text format for monospace text Monospace *Format_Monospace `protobuf:"bytes,6,opt,name=monospace,proto3,oneof"` } type Format_Superscript_ struct { // a text format for superscript text Superscript *Format_Superscript `protobuf:"bytes,7,opt,name=superscript,proto3,oneof"` } type Format_Subscript_ struct { // a text format for subscript text Subscript *Format_Subscript `protobuf:"bytes,8,opt,name=subscript,proto3,oneof"` } type Format_CodeBlock_ struct { // a text format for a codeblock CodeBlock *Format_CodeBlock `protobuf:"bytes,9,opt,name=code_block,json=codeBlock,proto3,oneof"` } type Format_UserMention_ struct { // a text format for a user mention UserMention *Format_UserMention `protobuf:"bytes,10,opt,name=user_mention,json=userMention,proto3,oneof"` } type Format_RoleMention_ struct { // a text format for a role mention RoleMention *Format_RoleMention `protobuf:"bytes,11,opt,name=role_mention,json=roleMention,proto3,oneof"` } type Format_ChannelMention_ struct { // a text format for a channel mention ChannelMention *Format_ChannelMention `protobuf:"bytes,12,opt,name=channel_mention,json=channelMention,proto3,oneof"` } type Format_GuildMention_ struct { // a text format for a guild mention GuildMention *Format_GuildMention `protobuf:"bytes,13,opt,name=guild_mention,json=guildMention,proto3,oneof"` } type Format_Emoji_ struct { // a text format for an emoji Emoji *Format_Emoji `protobuf:"bytes,14,opt,name=emoji,proto3,oneof"` } type Format_Color_ struct { // a text format for coloured text Color *Format_Color `protobuf:"bytes,15,opt,name=color,proto3,oneof"` } type Format_Localization_ struct { // a text format for localization Localization *Format_Localization `protobuf:"bytes,16,opt,name=localization,proto3,oneof"` } func (*Format_Bold_) isFormat_Format() {} func (*Format_Italic_) isFormat_Format() {} func (*Format_Underline_) isFormat_Format() {} func (*Format_Monospace_) isFormat_Format() {} func (*Format_Superscript_) isFormat_Format() {} func (*Format_Subscript_) isFormat_Format() {} func (*Format_CodeBlock_) isFormat_Format() {} func (*Format_UserMention_) isFormat_Format() {} func (*Format_RoleMention_) isFormat_Format() {} func (*Format_ChannelMention_) isFormat_Format() {} func (*Format_GuildMention_) isFormat_Format() {} func (*Format_Emoji_) isFormat_Format() {} func (*Format_Color_) isFormat_Format() {} func (*Format_Localization_) isFormat_Format() {} // Formatted text type FormattedText struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // The textual content of a message Text string `protobuf:"bytes,1,opt,name=text,proto3" json:"text,omitempty"` // The formats for a message Format []*Format `protobuf:"bytes,2,rep,name=format,proto3" json:"format,omitempty"` } func (x *FormattedText) Reset() { *x = FormattedText{} if protoimpl.UnsafeEnabled { mi := &file_chat_v1_messages_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *FormattedText) String() string { return protoimpl.X.MessageStringOf(x) } func (*FormattedText) ProtoMessage() {} func (x *FormattedText) ProtoReflect() protoreflect.Message { mi := &file_chat_v1_messages_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 FormattedText.ProtoReflect.Descriptor instead. func (*FormattedText) Descriptor() ([]byte, []int) { return file_chat_v1_messages_proto_rawDescGZIP(), []int{10} } func (x *FormattedText) GetText() string { if x != nil { return x.Text } return "" } func (x *FormattedText) GetFormat() []*Format { if x != nil { return x.Format } return nil } // Object representing a message without the ID part. type Message struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Metadata of this message. Metadata *v1.Metadata `protobuf:"bytes,1,opt,name=metadata,proto3,oneof" json:"metadata,omitempty"` // Overrides of this message. Overrides *Overrides `protobuf:"bytes,2,opt,name=overrides,proto3" json:"overrides,omitempty"` // User ID of the user who sent this message. AuthorId uint64 `protobuf:"varint,3,opt,name=author_id,json=authorId,proto3" json:"author_id,omitempty"` // When this message was created, in miliseconds since unix epoch CreatedAt uint64 `protobuf:"varint,4,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` // The most recent time this message was edited, in milliseconds since unix epoch EditedAt *uint64 `protobuf:"varint,5,opt,name=edited_at,json=editedAt,proto3,oneof" json:"edited_at,omitempty"` // The message this message is a reply to. InReplyTo *uint64 `protobuf:"varint,6,opt,name=in_reply_to,json=inReplyTo,proto3,oneof" json:"in_reply_to,omitempty"` // The content of the message. Content *Content `protobuf:"bytes,7,opt,name=content,proto3" json:"content,omitempty"` // The reactions of the message. Reactions []*Reaction `protobuf:"bytes,8,rep,name=reactions,proto3" json:"reactions,omitempty"` } func (x *Message) Reset() { *x = Message{} if protoimpl.UnsafeEnabled { mi := &file_chat_v1_messages_proto_msgTypes[11] 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_chat_v1_messages_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 Message.ProtoReflect.Descriptor instead. func (*Message) Descriptor() ([]byte, []int) { return file_chat_v1_messages_proto_rawDescGZIP(), []int{11} } func (x *Message) GetMetadata() *v1.Metadata { if x != nil { return x.Metadata } return nil } func (x *Message) GetOverrides() *Overrides { if x != nil { return x.Overrides } return nil } func (x *Message) GetAuthorId() uint64 { if x != nil { return x.AuthorId } return 0 } func (x *Message) GetCreatedAt() uint64 { if x != nil { return x.CreatedAt } return 0 } func (x *Message) GetEditedAt() uint64 { if x != nil && x.EditedAt != nil { return *x.EditedAt } return 0 } func (x *Message) GetInReplyTo() uint64 { if x != nil && x.InReplyTo != nil { return *x.InReplyTo } return 0 } func (x *Message) GetContent() *Content { if x != nil { return x.Content } return nil } func (x *Message) GetReactions() []*Reaction { if x != nil { return x.Reactions } return nil } // Object representing a message with it's ID. type MessageWithId struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // ID of the message. MessageId uint64 `protobuf:"varint,1,opt,name=message_id,json=messageId,proto3" json:"message_id,omitempty"` // The message data. Message *Message `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` } func (x *MessageWithId) Reset() { *x = MessageWithId{} if protoimpl.UnsafeEnabled { mi := &file_chat_v1_messages_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *MessageWithId) String() string { return protoimpl.X.MessageStringOf(x) } func (*MessageWithId) ProtoMessage() {} func (x *MessageWithId) ProtoReflect() protoreflect.Message { mi := &file_chat_v1_messages_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 MessageWithId.ProtoReflect.Descriptor instead. func (*MessageWithId) Descriptor() ([]byte, []int) { return file_chat_v1_messages_proto_rawDescGZIP(), []int{12} } func (x *MessageWithId) GetMessageId() uint64 { if x != nil { return x.MessageId } return 0 } func (x *MessageWithId) GetMessage() *Message { if x != nil { return x.Message } return nil } // Used in the `GetChannelMessages` endpoint. type GetChannelMessagesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Guild ID of the guild that has the channel. GuildId uint64 `protobuf:"varint,1,opt,name=guild_id,json=guildId,proto3" json:"guild_id,omitempty"` // Channel ID of the channel to get messages from. ChannelId uint64 `protobuf:"varint,2,opt,name=channel_id,json=channelId,proto3" json:"channel_id,omitempty"` // The ID of the message that will be used as an "anchor" point to figure out // where to get the messages. // If not specified, the `direction` will be ignored and the newest messages // will be returned. MessageId *uint64 `protobuf:"varint,3,opt,name=message_id,json=messageId,proto3,oneof" json:"message_id,omitempty"` // On which direction to get the messages. // // - By default, it is "before", which means you will get messages before the // `message_id` message. // - If it is "around", you will get the messages around the `message_id` // message. This will include the `message_id` message itself, as the middle // item of the list returned. // - If it is "after", you will get the messages after the `message_id` // message. Direction *GetChannelMessagesRequest_Direction `protobuf:"varint,4,opt,name=direction,proto3,enum=protocol.chat.v1.GetChannelMessagesRequest_Direction,oneof" json:"direction,omitempty"` // How many messages to get. // // - If `0`, a recommended message count to return is 25. If the direction is // "around", the recommended value is 12. // - If the direction to get the messages is "around", this count will not be // the *total* count of messages to return, but instead the count of messages // to return *for each direction*, before and after. // - Servers should enforce their own maximum limit, and clamp this value to // the limit. Count *uint32 `protobuf:"varint,5,opt,name=count,proto3,oneof" json:"count,omitempty"` } func (x *GetChannelMessagesRequest) Reset() { *x = GetChannelMessagesRequest{} if protoimpl.UnsafeEnabled { mi := &file_chat_v1_messages_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetChannelMessagesRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetChannelMessagesRequest) ProtoMessage() {} func (x *GetChannelMessagesRequest) ProtoReflect() protoreflect.Message { mi := &file_chat_v1_messages_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 GetChannelMessagesRequest.ProtoReflect.Descriptor instead. func (*GetChannelMessagesRequest) Descriptor() ([]byte, []int) { return file_chat_v1_messages_proto_rawDescGZIP(), []int{13} } func (x *GetChannelMessagesRequest) GetGuildId() uint64 { if x != nil { return x.GuildId } return 0 } func (x *GetChannelMessagesRequest) GetChannelId() uint64 { if x != nil { return x.ChannelId } return 0 } func (x *GetChannelMessagesRequest) GetMessageId() uint64 { if x != nil && x.MessageId != nil { return *x.MessageId } return 0 } func (x *GetChannelMessagesRequest) GetDirection() GetChannelMessagesRequest_Direction { if x != nil && x.Direction != nil { return *x.Direction } return GetChannelMessagesRequest_DIRECTION_BEFORE_UNSPECIFIED } func (x *GetChannelMessagesRequest) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } return 0 } // Used in the `GetChannelMessages` endpoint. type GetChannelMessagesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Has reached the top (first message) of the message history. ReachedTop bool `protobuf:"varint,1,opt,name=reached_top,json=reachedTop,proto3" json:"reached_top,omitempty"` // Has reached the bottom (last message) of the message history. ReachedBottom bool `protobuf:"varint,2,opt,name=reached_bottom,json=reachedBottom,proto3" json:"reached_bottom,omitempty"` // The messages requested. Messages []*MessageWithId `protobuf:"bytes,3,rep,name=messages,proto3" json:"messages,omitempty"` } func (x *GetChannelMessagesResponse) Reset() { *x = GetChannelMessagesResponse{} if protoimpl.UnsafeEnabled { mi := &file_chat_v1_messages_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetChannelMessagesResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetChannelMessagesResponse) ProtoMessage() {} func (x *GetChannelMessagesResponse) ProtoReflect() protoreflect.Message { mi := &file_chat_v1_messages_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 GetChannelMessagesResponse.ProtoReflect.Descriptor instead. func (*GetChannelMessagesResponse) Descriptor() ([]byte, []int) { return file_chat_v1_messages_proto_rawDescGZIP(), []int{14} } func (x *GetChannelMessagesResponse) GetReachedTop() bool { if x != nil { return x.ReachedTop } return false } func (x *GetChannelMessagesResponse) GetReachedBottom() bool { if x != nil { return x.ReachedBottom } return false } func (x *GetChannelMessagesResponse) GetMessages() []*MessageWithId { if x != nil { return x.Messages } return nil } // Used in the `GetMessage` endpoint. type GetMessageRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Guild ID of the guild where the channel is. GuildId uint64 `protobuf:"varint,1,opt,name=guild_id,json=guildId,proto3" json:"guild_id,omitempty"` // Channel ID of the channel where the message is. ChannelId uint64 `protobuf:"varint,2,opt,name=channel_id,json=channelId,proto3" json:"channel_id,omitempty"` // Message ID of the message you want to get. MessageId uint64 `protobuf:"varint,3,opt,name=message_id,json=messageId,proto3" json:"message_id,omitempty"` } func (x *GetMessageRequest) Reset() { *x = GetMessageRequest{} if protoimpl.UnsafeEnabled { mi := &file_chat_v1_messages_proto_msgTypes[15] 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_chat_v1_messages_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 GetMessageRequest.ProtoReflect.Descriptor instead. func (*GetMessageRequest) Descriptor() ([]byte, []int) { return file_chat_v1_messages_proto_rawDescGZIP(), []int{15} } func (x *GetMessageRequest) GetGuildId() uint64 { if x != nil { return x.GuildId } return 0 } func (x *GetMessageRequest) GetChannelId() uint64 { if x != nil { return x.ChannelId } return 0 } func (x *GetMessageRequest) GetMessageId() uint64 { if x != nil { return x.MessageId } return 0 } // Used in the `GetMessage` endpoint. type GetMessageResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // The message requested. Message *Message `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"` } func (x *GetMessageResponse) Reset() { *x = GetMessageResponse{} if protoimpl.UnsafeEnabled { mi := &file_chat_v1_messages_proto_msgTypes[16] 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_chat_v1_messages_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 GetMessageResponse.ProtoReflect.Descriptor instead. func (*GetMessageResponse) Descriptor() ([]byte, []int) { return file_chat_v1_messages_proto_rawDescGZIP(), []int{16} } func (x *GetMessageResponse) GetMessage() *Message { if x != nil { return x.Message } return nil } // Used in the `DeleteMessage` endpoint. type DeleteMessageRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Guild ID of the guild where the channel is. GuildId uint64 `protobuf:"varint,1,opt,name=guild_id,json=guildId,proto3" json:"guild_id,omitempty"` // Channel ID of the channel where the message is. ChannelId uint64 `protobuf:"varint,2,opt,name=channel_id,json=channelId,proto3" json:"channel_id,omitempty"` // Message ID of the message you want to delete. MessageId uint64 `protobuf:"varint,3,opt,name=message_id,json=messageId,proto3" json:"message_id,omitempty"` } func (x *DeleteMessageRequest) Reset() { *x = DeleteMessageRequest{} if protoimpl.UnsafeEnabled { mi := &file_chat_v1_messages_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DeleteMessageRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*DeleteMessageRequest) ProtoMessage() {} func (x *DeleteMessageRequest) ProtoReflect() protoreflect.Message { mi := &file_chat_v1_messages_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 DeleteMessageRequest.ProtoReflect.Descriptor instead. func (*DeleteMessageRequest) Descriptor() ([]byte, []int) { return file_chat_v1_messages_proto_rawDescGZIP(), []int{17} } func (x *DeleteMessageRequest) GetGuildId() uint64 { if x != nil { return x.GuildId } return 0 } func (x *DeleteMessageRequest) GetChannelId() uint64 { if x != nil { return x.ChannelId } return 0 } func (x *DeleteMessageRequest) GetMessageId() uint64 { if x != nil { return x.MessageId } return 0 } // Used in the `DeleteMessage` endpoint. type DeleteMessageResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *DeleteMessageResponse) Reset() { *x = DeleteMessageResponse{} if protoimpl.UnsafeEnabled { mi := &file_chat_v1_messages_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DeleteMessageResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*DeleteMessageResponse) ProtoMessage() {} func (x *DeleteMessageResponse) ProtoReflect() protoreflect.Message { mi := &file_chat_v1_messages_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 DeleteMessageResponse.ProtoReflect.Descriptor instead. func (*DeleteMessageResponse) Descriptor() ([]byte, []int) { return file_chat_v1_messages_proto_rawDescGZIP(), []int{18} } // Used in the `TriggerAction` endpoint. type TriggerActionRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Guild ID of the guild where the channel is. GuildId uint64 `protobuf:"varint,1,opt,name=guild_id,json=guildId,proto3" json:"guild_id,omitempty"` // Channel ID of the channel where the message is. ChannelId uint64 `protobuf:"varint,2,opt,name=channel_id,json=channelId,proto3" json:"channel_id,omitempty"` // Message ID of the message you want to trigger an action in. MessageId uint64 `protobuf:"varint,3,opt,name=message_id,json=messageId,proto3" json:"message_id,omitempty"` // Payload of action data. Payload *ActionPayload `protobuf:"bytes,4,opt,name=payload,proto3" json:"payload,omitempty"` } func (x *TriggerActionRequest) Reset() { *x = TriggerActionRequest{} if protoimpl.UnsafeEnabled { mi := &file_chat_v1_messages_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TriggerActionRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*TriggerActionRequest) ProtoMessage() {} func (x *TriggerActionRequest) ProtoReflect() protoreflect.Message { mi := &file_chat_v1_messages_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 TriggerActionRequest.ProtoReflect.Descriptor instead. func (*TriggerActionRequest) Descriptor() ([]byte, []int) { return file_chat_v1_messages_proto_rawDescGZIP(), []int{19} } func (x *TriggerActionRequest) GetGuildId() uint64 { if x != nil { return x.GuildId } return 0 } func (x *TriggerActionRequest) GetChannelId() uint64 { if x != nil { return x.ChannelId } return 0 } func (x *TriggerActionRequest) GetMessageId() uint64 { if x != nil { return x.MessageId } return 0 } func (x *TriggerActionRequest) GetPayload() *ActionPayload { if x != nil { return x.Payload } return nil } // Used in the `TriggerAction` endpoint. type TriggerActionResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *TriggerActionResponse) Reset() { *x = TriggerActionResponse{} if protoimpl.UnsafeEnabled { mi := &file_chat_v1_messages_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TriggerActionResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*TriggerActionResponse) ProtoMessage() {} func (x *TriggerActionResponse) ProtoReflect() protoreflect.Message { mi := &file_chat_v1_messages_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 TriggerActionResponse.ProtoReflect.Descriptor instead. func (*TriggerActionResponse) Descriptor() ([]byte, []int) { return file_chat_v1_messages_proto_rawDescGZIP(), []int{20} } // Used in the `SendMessage` endpoint. type SendMessageRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Guild ID of the guild where the channel is. GuildId uint64 `protobuf:"varint,1,opt,name=guild_id,json=guildId,proto3" json:"guild_id,omitempty"` // Channel ID of the channel you want to send a message in. ChannelId uint64 `protobuf:"varint,2,opt,name=channel_id,json=channelId,proto3" json:"channel_id,omitempty"` // Content of the new message. Content *Content `protobuf:"bytes,3,opt,name=content,proto3" json:"content,omitempty"` // Echo ID of the new message. This can be used by clients to // determine whether a message is sent. EchoId *uint64 `protobuf:"varint,4,opt,name=echo_id,json=echoId,proto3,oneof" json:"echo_id,omitempty"` // The overrides of this new message. Overrides *Overrides `protobuf:"bytes,6,opt,name=overrides,proto3,oneof" json:"overrides,omitempty"` // The message this new message is a reply to. InReplyTo *uint64 `protobuf:"varint,7,opt,name=in_reply_to,json=inReplyTo,proto3,oneof" json:"in_reply_to,omitempty"` // The metadata of this new message. Metadata *v1.Metadata `protobuf:"bytes,5,opt,name=metadata,proto3,oneof" json:"metadata,omitempty"` } func (x *SendMessageRequest) Reset() { *x = SendMessageRequest{} if protoimpl.UnsafeEnabled { mi := &file_chat_v1_messages_proto_msgTypes[21] 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_chat_v1_messages_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 SendMessageRequest.ProtoReflect.Descriptor instead. func (*SendMessageRequest) Descriptor() ([]byte, []int) { return file_chat_v1_messages_proto_rawDescGZIP(), []int{21} } func (x *SendMessageRequest) GetGuildId() uint64 { if x != nil { return x.GuildId } return 0 } func (x *SendMessageRequest) GetChannelId() uint64 { if x != nil { return x.ChannelId } return 0 } func (x *SendMessageRequest) GetContent() *Content { if x != nil { return x.Content } return nil } func (x *SendMessageRequest) GetEchoId() uint64 { if x != nil && x.EchoId != nil { return *x.EchoId } return 0 } func (x *SendMessageRequest) GetOverrides() *Overrides { if x != nil { return x.Overrides } return nil } func (x *SendMessageRequest) GetInReplyTo() uint64 { if x != nil && x.InReplyTo != nil { return *x.InReplyTo } return 0 } func (x *SendMessageRequest) GetMetadata() *v1.Metadata { if x != nil { return x.Metadata } return nil } // Used in the `SendMessage` endpoint. type SendMessageResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Message ID of the message sent. MessageId uint64 `protobuf:"varint,1,opt,name=message_id,json=messageId,proto3" json:"message_id,omitempty"` } func (x *SendMessageResponse) Reset() { *x = SendMessageResponse{} if protoimpl.UnsafeEnabled { mi := &file_chat_v1_messages_proto_msgTypes[22] 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_chat_v1_messages_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 SendMessageResponse.ProtoReflect.Descriptor instead. func (*SendMessageResponse) Descriptor() ([]byte, []int) { return file_chat_v1_messages_proto_rawDescGZIP(), []int{22} } func (x *SendMessageResponse) GetMessageId() uint64 { if x != nil { return x.MessageId } return 0 } // Used in the `UpdateMessageText` endpoint. type UpdateMessageTextRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Guild ID of the guild where the channel is. GuildId uint64 `protobuf:"varint,1,opt,name=guild_id,json=guildId,proto3" json:"guild_id,omitempty"` // Channel ID of the channel where the message is. ChannelId uint64 `protobuf:"varint,2,opt,name=channel_id,json=channelId,proto3" json:"channel_id,omitempty"` // Message ID of the message you want to edit the text of. MessageId uint64 `protobuf:"varint,3,opt,name=message_id,json=messageId,proto3" json:"message_id,omitempty"` // New content for this message. NewContent *FormattedText `protobuf:"bytes,4,opt,name=new_content,json=newContent,proto3" json:"new_content,omitempty"` } func (x *UpdateMessageTextRequest) Reset() { *x = UpdateMessageTextRequest{} if protoimpl.UnsafeEnabled { mi := &file_chat_v1_messages_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateMessageTextRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateMessageTextRequest) ProtoMessage() {} func (x *UpdateMessageTextRequest) ProtoReflect() protoreflect.Message { mi := &file_chat_v1_messages_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 UpdateMessageTextRequest.ProtoReflect.Descriptor instead. func (*UpdateMessageTextRequest) Descriptor() ([]byte, []int) { return file_chat_v1_messages_proto_rawDescGZIP(), []int{23} } func (x *UpdateMessageTextRequest) GetGuildId() uint64 { if x != nil { return x.GuildId } return 0 } func (x *UpdateMessageTextRequest) GetChannelId() uint64 { if x != nil { return x.ChannelId } return 0 } func (x *UpdateMessageTextRequest) GetMessageId() uint64 { if x != nil { return x.MessageId } return 0 } func (x *UpdateMessageTextRequest) GetNewContent() *FormattedText { if x != nil { return x.NewContent } return nil } // Used in the `UpdateMessageText` endpoint. type UpdateMessageTextResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *UpdateMessageTextResponse) Reset() { *x = UpdateMessageTextResponse{} if protoimpl.UnsafeEnabled { mi := &file_chat_v1_messages_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateMessageTextResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateMessageTextResponse) ProtoMessage() {} func (x *UpdateMessageTextResponse) ProtoReflect() protoreflect.Message { mi := &file_chat_v1_messages_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 UpdateMessageTextResponse.ProtoReflect.Descriptor instead. func (*UpdateMessageTextResponse) Descriptor() ([]byte, []int) { return file_chat_v1_messages_proto_rawDescGZIP(), []int{24} } // Used in the `PinMessage` endpoint. type PinMessageRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Guild ID of the guild where the channel is. GuildId uint64 `protobuf:"varint,1,opt,name=guild_id,json=guildId,proto3" json:"guild_id,omitempty"` // Channel ID of the channel where the message is. ChannelId uint64 `protobuf:"varint,2,opt,name=channel_id,json=channelId,proto3" json:"channel_id,omitempty"` // Message ID of the message we want to pin. MessageId uint64 `protobuf:"varint,3,opt,name=message_id,json=messageId,proto3" json:"message_id,omitempty"` } func (x *PinMessageRequest) Reset() { *x = PinMessageRequest{} if protoimpl.UnsafeEnabled { mi := &file_chat_v1_messages_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *PinMessageRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*PinMessageRequest) ProtoMessage() {} func (x *PinMessageRequest) ProtoReflect() protoreflect.Message { mi := &file_chat_v1_messages_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 PinMessageRequest.ProtoReflect.Descriptor instead. func (*PinMessageRequest) Descriptor() ([]byte, []int) { return file_chat_v1_messages_proto_rawDescGZIP(), []int{25} } func (x *PinMessageRequest) GetGuildId() uint64 { if x != nil { return x.GuildId } return 0 } func (x *PinMessageRequest) GetChannelId() uint64 { if x != nil { return x.ChannelId } return 0 } func (x *PinMessageRequest) GetMessageId() uint64 { if x != nil { return x.MessageId } return 0 } // Used in the `UnpinMessage` endpoint. type PinMessageResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *PinMessageResponse) Reset() { *x = PinMessageResponse{} if protoimpl.UnsafeEnabled { mi := &file_chat_v1_messages_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *PinMessageResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*PinMessageResponse) ProtoMessage() {} func (x *PinMessageResponse) ProtoReflect() protoreflect.Message { mi := &file_chat_v1_messages_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 PinMessageResponse.ProtoReflect.Descriptor instead. func (*PinMessageResponse) Descriptor() ([]byte, []int) { return file_chat_v1_messages_proto_rawDescGZIP(), []int{26} } // Used in the `UnpinMessage` endpoint. type UnpinMessageRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Guild ID of the guild where the channel is. GuildId uint64 `protobuf:"varint,1,opt,name=guild_id,json=guildId,proto3" json:"guild_id,omitempty"` // Channel ID of the channel where the message is. ChannelId uint64 `protobuf:"varint,2,opt,name=channel_id,json=channelId,proto3" json:"channel_id,omitempty"` // Message ID of the message we want to unpin. MessageId uint64 `protobuf:"varint,3,opt,name=message_id,json=messageId,proto3" json:"message_id,omitempty"` } func (x *UnpinMessageRequest) Reset() { *x = UnpinMessageRequest{} if protoimpl.UnsafeEnabled { mi := &file_chat_v1_messages_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UnpinMessageRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*UnpinMessageRequest) ProtoMessage() {} func (x *UnpinMessageRequest) ProtoReflect() protoreflect.Message { mi := &file_chat_v1_messages_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 UnpinMessageRequest.ProtoReflect.Descriptor instead. func (*UnpinMessageRequest) Descriptor() ([]byte, []int) { return file_chat_v1_messages_proto_rawDescGZIP(), []int{27} } func (x *UnpinMessageRequest) GetGuildId() uint64 { if x != nil { return x.GuildId } return 0 } func (x *UnpinMessageRequest) GetChannelId() uint64 { if x != nil { return x.ChannelId } return 0 } func (x *UnpinMessageRequest) GetMessageId() uint64 { if x != nil { return x.MessageId } return 0 } // Used in the `UnpinMessage` endpoint. type UnpinMessageResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *UnpinMessageResponse) Reset() { *x = UnpinMessageResponse{} if protoimpl.UnsafeEnabled { mi := &file_chat_v1_messages_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UnpinMessageResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*UnpinMessageResponse) ProtoMessage() {} func (x *UnpinMessageResponse) ProtoReflect() protoreflect.Message { mi := &file_chat_v1_messages_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 UnpinMessageResponse.ProtoReflect.Descriptor instead. func (*UnpinMessageResponse) Descriptor() ([]byte, []int) { return file_chat_v1_messages_proto_rawDescGZIP(), []int{28} } // Used in the `GetPinnedMessages` endpoint. type GetPinnedMessagesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Guild ID of the guild where the channel is. GuildId uint64 `protobuf:"varint,1,opt,name=guild_id,json=guildId,proto3" json:"guild_id,omitempty"` // Channel ID of the channel we want to get pins of. ChannelId uint64 `protobuf:"varint,2,opt,name=channel_id,json=channelId,proto3" json:"channel_id,omitempty"` } func (x *GetPinnedMessagesRequest) Reset() { *x = GetPinnedMessagesRequest{} if protoimpl.UnsafeEnabled { mi := &file_chat_v1_messages_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetPinnedMessagesRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetPinnedMessagesRequest) ProtoMessage() {} func (x *GetPinnedMessagesRequest) ProtoReflect() protoreflect.Message { mi := &file_chat_v1_messages_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 GetPinnedMessagesRequest.ProtoReflect.Descriptor instead. func (*GetPinnedMessagesRequest) Descriptor() ([]byte, []int) { return file_chat_v1_messages_proto_rawDescGZIP(), []int{29} } func (x *GetPinnedMessagesRequest) GetGuildId() uint64 { if x != nil { return x.GuildId } return 0 } func (x *GetPinnedMessagesRequest) GetChannelId() uint64 { if x != nil { return x.ChannelId } return 0 } // Used in the `GetPinnedMessages` endpoint. type GetPinnedMessagesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // The IDs of the pinned messages. PinnedMessageIds []uint64 `protobuf:"varint,1,rep,packed,name=pinned_message_ids,json=pinnedMessageIds,proto3" json:"pinned_message_ids,omitempty"` } func (x *GetPinnedMessagesResponse) Reset() { *x = GetPinnedMessagesResponse{} if protoimpl.UnsafeEnabled { mi := &file_chat_v1_messages_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetPinnedMessagesResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetPinnedMessagesResponse) ProtoMessage() {} func (x *GetPinnedMessagesResponse) ProtoReflect() protoreflect.Message { mi := &file_chat_v1_messages_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 GetPinnedMessagesResponse.ProtoReflect.Descriptor instead. func (*GetPinnedMessagesResponse) Descriptor() ([]byte, []int) { return file_chat_v1_messages_proto_rawDescGZIP(), []int{30} } func (x *GetPinnedMessagesResponse) GetPinnedMessageIds() []uint64 { if x != nil { return x.PinnedMessageIds } return nil } // Used in `AddReaction` endpoint. type AddReactionRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Guild ID of the guild where the channel is. GuildId uint64 `protobuf:"varint,1,opt,name=guild_id,json=guildId,proto3" json:"guild_id,omitempty"` // Channel ID of the channel where the message is. ChannelId uint64 `protobuf:"varint,2,opt,name=channel_id,json=channelId,proto3" json:"channel_id,omitempty"` // Message ID of the message we want to add a reaction to. MessageId uint64 `protobuf:"varint,3,opt,name=message_id,json=messageId,proto3" json:"message_id,omitempty"` // The emote we want to react with. Emote *v11.Emote `protobuf:"bytes,4,opt,name=emote,proto3" json:"emote,omitempty"` } func (x *AddReactionRequest) Reset() { *x = AddReactionRequest{} if protoimpl.UnsafeEnabled { mi := &file_chat_v1_messages_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AddReactionRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*AddReactionRequest) ProtoMessage() {} func (x *AddReactionRequest) ProtoReflect() protoreflect.Message { mi := &file_chat_v1_messages_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 AddReactionRequest.ProtoReflect.Descriptor instead. func (*AddReactionRequest) Descriptor() ([]byte, []int) { return file_chat_v1_messages_proto_rawDescGZIP(), []int{31} } func (x *AddReactionRequest) GetGuildId() uint64 { if x != nil { return x.GuildId } return 0 } func (x *AddReactionRequest) GetChannelId() uint64 { if x != nil { return x.ChannelId } return 0 } func (x *AddReactionRequest) GetMessageId() uint64 { if x != nil { return x.MessageId } return 0 } func (x *AddReactionRequest) GetEmote() *v11.Emote { if x != nil { return x.Emote } return nil } // Used in `AddReaction` endpoint. type AddReactionResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *AddReactionResponse) Reset() { *x = AddReactionResponse{} if protoimpl.UnsafeEnabled { mi := &file_chat_v1_messages_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AddReactionResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*AddReactionResponse) ProtoMessage() {} func (x *AddReactionResponse) ProtoReflect() protoreflect.Message { mi := &file_chat_v1_messages_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 AddReactionResponse.ProtoReflect.Descriptor instead. func (*AddReactionResponse) Descriptor() ([]byte, []int) { return file_chat_v1_messages_proto_rawDescGZIP(), []int{32} } // Used in `RemoveReaction` endpoint. type RemoveReactionRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Guild ID of the guild where the channel is. GuildId uint64 `protobuf:"varint,1,opt,name=guild_id,json=guildId,proto3" json:"guild_id,omitempty"` // Channel ID of the channel where the message is. ChannelId uint64 `protobuf:"varint,2,opt,name=channel_id,json=channelId,proto3" json:"channel_id,omitempty"` // Message ID of the message we want to remove a reaction. MessageId uint64 `protobuf:"varint,3,opt,name=message_id,json=messageId,proto3" json:"message_id,omitempty"` // The emote we want to remove the react of. Emote *v11.Emote `protobuf:"bytes,4,opt,name=emote,proto3" json:"emote,omitempty"` } func (x *RemoveReactionRequest) Reset() { *x = RemoveReactionRequest{} if protoimpl.UnsafeEnabled { mi := &file_chat_v1_messages_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *RemoveReactionRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*RemoveReactionRequest) ProtoMessage() {} func (x *RemoveReactionRequest) ProtoReflect() protoreflect.Message { mi := &file_chat_v1_messages_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 RemoveReactionRequest.ProtoReflect.Descriptor instead. func (*RemoveReactionRequest) Descriptor() ([]byte, []int) { return file_chat_v1_messages_proto_rawDescGZIP(), []int{33} } func (x *RemoveReactionRequest) GetGuildId() uint64 { if x != nil { return x.GuildId } return 0 } func (x *RemoveReactionRequest) GetChannelId() uint64 { if x != nil { return x.ChannelId } return 0 } func (x *RemoveReactionRequest) GetMessageId() uint64 { if x != nil { return x.MessageId } return 0 } func (x *RemoveReactionRequest) GetEmote() *v11.Emote { if x != nil { return x.Emote } return nil } // Used in `RemoveReaction` endpoint. type RemoveReactionResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *RemoveReactionResponse) Reset() { *x = RemoveReactionResponse{} if protoimpl.UnsafeEnabled { mi := &file_chat_v1_messages_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *RemoveReactionResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*RemoveReactionResponse) ProtoMessage() {} func (x *RemoveReactionResponse) ProtoReflect() protoreflect.Message { mi := &file_chat_v1_messages_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 RemoveReactionResponse.ProtoReflect.Descriptor instead. func (*RemoveReactionResponse) Descriptor() ([]byte, []int) { return file_chat_v1_messages_proto_rawDescGZIP(), []int{34} } // The payload data for a button action type ActionPayload_Button struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // The data from the Button action Data []byte `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` } func (x *ActionPayload_Button) Reset() { *x = ActionPayload_Button{} if protoimpl.UnsafeEnabled { mi := &file_chat_v1_messages_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ActionPayload_Button) String() string { return protoimpl.X.MessageStringOf(x) } func (*ActionPayload_Button) ProtoMessage() {} func (x *ActionPayload_Button) ProtoReflect() protoreflect.Message { mi := &file_chat_v1_messages_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 ActionPayload_Button.ProtoReflect.Descriptor instead. func (*ActionPayload_Button) Descriptor() ([]byte, []int) { return file_chat_v1_messages_proto_rawDescGZIP(), []int{1, 0} } func (x *ActionPayload_Button) GetData() []byte { if x != nil { return x.Data } return nil } // The payload for a dropdown action type ActionPayload_Dropdown struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // The user choice from the dropdown. Choice []byte `protobuf:"bytes,1,opt,name=choice,proto3" json:"choice,omitempty"` } func (x *ActionPayload_Dropdown) Reset() { *x = ActionPayload_Dropdown{} if protoimpl.UnsafeEnabled { mi := &file_chat_v1_messages_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ActionPayload_Dropdown) String() string { return protoimpl.X.MessageStringOf(x) } func (*ActionPayload_Dropdown) ProtoMessage() {} func (x *ActionPayload_Dropdown) ProtoReflect() protoreflect.Message { mi := &file_chat_v1_messages_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 ActionPayload_Dropdown.ProtoReflect.Descriptor instead. func (*ActionPayload_Dropdown) Descriptor() ([]byte, []int) { return file_chat_v1_messages_proto_rawDescGZIP(), []int{1, 1} } func (x *ActionPayload_Dropdown) GetChoice() []byte { if x != nil { return x.Choice } return nil } // The payload for a text input action type ActionPayload_Input struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // The user input. Input string `protobuf:"bytes,1,opt,name=input,proto3" json:"input,omitempty"` // The bot-provided data Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` } func (x *ActionPayload_Input) Reset() { *x = ActionPayload_Input{} if protoimpl.UnsafeEnabled { mi := &file_chat_v1_messages_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ActionPayload_Input) String() string { return protoimpl.X.MessageStringOf(x) } func (*ActionPayload_Input) ProtoMessage() {} func (x *ActionPayload_Input) ProtoReflect() protoreflect.Message { mi := &file_chat_v1_messages_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 ActionPayload_Input.ProtoReflect.Descriptor instead. func (*ActionPayload_Input) Descriptor() ([]byte, []int) { return file_chat_v1_messages_proto_rawDescGZIP(), []int{1, 2} } func (x *ActionPayload_Input) GetInput() string { if x != nil { return x.Input } return "" } func (x *ActionPayload_Input) GetData() []byte { if x != nil { return x.Data } return nil } // A button that users can click on to trigger an action. type Action_Button struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // The text to show on the button. Text string `protobuf:"bytes,1,opt,name=text,proto3" json:"text,omitempty"` // Action data, which should be used in the call to perform the action. Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` // An external URL that the button links to. // This makes it so that tapping this button will open said URL instead // of triggering the action. Url *string `protobuf:"bytes,3,opt,name=url,proto3,oneof" json:"url,omitempty"` } func (x *Action_Button) Reset() { *x = Action_Button{} if protoimpl.UnsafeEnabled { mi := &file_chat_v1_messages_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Action_Button) String() string { return protoimpl.X.MessageStringOf(x) } func (*Action_Button) ProtoMessage() {} func (x *Action_Button) ProtoReflect() protoreflect.Message { mi := &file_chat_v1_messages_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 Action_Button.ProtoReflect.Descriptor instead. func (*Action_Button) Descriptor() ([]byte, []int) { return file_chat_v1_messages_proto_rawDescGZIP(), []int{2, 0} } func (x *Action_Button) GetText() string { if x != nil { return x.Text } return "" } func (x *Action_Button) GetData() []byte { if x != nil { return x.Data } return nil } func (x *Action_Button) GetUrl() string { if x != nil && x.Url != nil { return *x.Url } return "" } // A dropdown menu that users can click on to trigger an action. type Action_Dropdown struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // The text describing the dropdown. Label string `protobuf:"bytes,1,opt,name=label,proto3" json:"label,omitempty"` // The options in the dropdown. Entries []*Action_Dropdown_Entry `protobuf:"bytes,2,rep,name=entries,proto3" json:"entries,omitempty"` } func (x *Action_Dropdown) Reset() { *x = Action_Dropdown{} if protoimpl.UnsafeEnabled { mi := &file_chat_v1_messages_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Action_Dropdown) String() string { return protoimpl.X.MessageStringOf(x) } func (*Action_Dropdown) ProtoMessage() {} func (x *Action_Dropdown) ProtoReflect() protoreflect.Message { mi := &file_chat_v1_messages_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 Action_Dropdown.ProtoReflect.Descriptor instead. func (*Action_Dropdown) Descriptor() ([]byte, []int) { return file_chat_v1_messages_proto_rawDescGZIP(), []int{2, 1} } func (x *Action_Dropdown) GetLabel() string { if x != nil { return x.Label } return "" } func (x *Action_Dropdown) GetEntries() []*Action_Dropdown_Entry { if x != nil { return x.Entries } return nil } // A text input that users can type in to trigger an action. type Action_Input struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // The label describing the input. Label string `protobuf:"bytes,1,opt,name=label,proto3" json:"label,omitempty"` // Whether this text input should be a multiline one or not. Multiline bool `protobuf:"varint,2,opt,name=multiline,proto3" json:"multiline,omitempty"` // Contextual data allowing the bot to discern what the user input is for Data []byte `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"` } func (x *Action_Input) Reset() { *x = Action_Input{} if protoimpl.UnsafeEnabled { mi := &file_chat_v1_messages_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Action_Input) String() string { return protoimpl.X.MessageStringOf(x) } func (*Action_Input) ProtoMessage() {} func (x *Action_Input) ProtoReflect() protoreflect.Message { mi := &file_chat_v1_messages_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 Action_Input.ProtoReflect.Descriptor instead. func (*Action_Input) Descriptor() ([]byte, []int) { return file_chat_v1_messages_proto_rawDescGZIP(), []int{2, 2} } func (x *Action_Input) GetLabel() string { if x != nil { return x.Label } return "" } func (x *Action_Input) GetMultiline() bool { if x != nil { return x.Multiline } return false } func (x *Action_Input) GetData() []byte { if x != nil { return x.Data } return nil } // An entry in the dropdown type Action_Dropdown_Entry struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // The dropdown's UI label. Label string `protobuf:"bytes,1,opt,name=label,proto3" json:"label,omitempty"` // The dropdown's associated data. Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` } func (x *Action_Dropdown_Entry) Reset() { *x = Action_Dropdown_Entry{} if protoimpl.UnsafeEnabled { mi := &file_chat_v1_messages_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Action_Dropdown_Entry) String() string { return protoimpl.X.MessageStringOf(x) } func (*Action_Dropdown_Entry) ProtoMessage() {} func (x *Action_Dropdown_Entry) ProtoReflect() protoreflect.Message { mi := &file_chat_v1_messages_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 Action_Dropdown_Entry.ProtoReflect.Descriptor instead. func (*Action_Dropdown_Entry) Descriptor() ([]byte, []int) { return file_chat_v1_messages_proto_rawDescGZIP(), []int{2, 1, 0} } func (x *Action_Dropdown_Entry) GetLabel() string { if x != nil { return x.Label } return "" } func (x *Action_Dropdown_Entry) GetData() []byte { if x != nil { return x.Data } return nil } // Object representing an embed heading. type Embed_EmbedHeading struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Text of the heading. Text string `protobuf:"bytes,1,opt,name=text,proto3" json:"text,omitempty"` // Subtext of the heading. Subtext *string `protobuf:"bytes,2,opt,name=subtext,proto3,oneof" json:"subtext,omitempty"` // URL of the heading. Url *string `protobuf:"bytes,3,opt,name=url,proto3,oneof" json:"url,omitempty"` // Icon of the heading. Icon *string `protobuf:"bytes,4,opt,name=icon,proto3,oneof" json:"icon,omitempty"` } func (x *Embed_EmbedHeading) Reset() { *x = Embed_EmbedHeading{} if protoimpl.UnsafeEnabled { mi := &file_chat_v1_messages_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Embed_EmbedHeading) String() string { return protoimpl.X.MessageStringOf(x) } func (*Embed_EmbedHeading) ProtoMessage() {} func (x *Embed_EmbedHeading) ProtoReflect() protoreflect.Message { mi := &file_chat_v1_messages_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 Embed_EmbedHeading.ProtoReflect.Descriptor instead. func (*Embed_EmbedHeading) Descriptor() ([]byte, []int) { return file_chat_v1_messages_proto_rawDescGZIP(), []int{3, 0} } func (x *Embed_EmbedHeading) GetText() string { if x != nil { return x.Text } return "" } func (x *Embed_EmbedHeading) GetSubtext() string { if x != nil && x.Subtext != nil { return *x.Subtext } return "" } func (x *Embed_EmbedHeading) GetUrl() string { if x != nil && x.Url != nil { return *x.Url } return "" } func (x *Embed_EmbedHeading) GetIcon() string { if x != nil && x.Icon != nil { return *x.Icon } return "" } // Object representing an embed field. type Embed_EmbedField struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Title of this field. Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"` // Subtitle of this field. Subtitle *string `protobuf:"bytes,2,opt,name=subtitle,proto3,oneof" json:"subtitle,omitempty"` // Body text of this field (eg. a description). Body *FormattedText `protobuf:"bytes,3,opt,name=body,proto3,oneof" json:"body,omitempty"` // Image URL of this field. ImageUrl *string `protobuf:"bytes,4,opt,name=image_url,json=imageUrl,proto3,oneof" json:"image_url,omitempty"` // How to present this field. Presentation Embed_EmbedField_Presentation `protobuf:"varint,5,opt,name=presentation,proto3,enum=protocol.chat.v1.Embed_EmbedField_Presentation" json:"presentation,omitempty"` // Actions of this field. Actions []*Action `protobuf:"bytes,6,rep,name=actions,proto3" json:"actions,omitempty"` } func (x *Embed_EmbedField) Reset() { *x = Embed_EmbedField{} if protoimpl.UnsafeEnabled { mi := &file_chat_v1_messages_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Embed_EmbedField) String() string { return protoimpl.X.MessageStringOf(x) } func (*Embed_EmbedField) ProtoMessage() {} func (x *Embed_EmbedField) ProtoReflect() protoreflect.Message { mi := &file_chat_v1_messages_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 Embed_EmbedField.ProtoReflect.Descriptor instead. func (*Embed_EmbedField) Descriptor() ([]byte, []int) { return file_chat_v1_messages_proto_rawDescGZIP(), []int{3, 1} } func (x *Embed_EmbedField) GetTitle() string { if x != nil { return x.Title } return "" } func (x *Embed_EmbedField) GetSubtitle() string { if x != nil && x.Subtitle != nil { return *x.Subtitle } return "" } func (x *Embed_EmbedField) GetBody() *FormattedText { if x != nil { return x.Body } return nil } func (x *Embed_EmbedField) GetImageUrl() string { if x != nil && x.ImageUrl != nil { return *x.ImageUrl } return "" } func (x *Embed_EmbedField) GetPresentation() Embed_EmbedField_Presentation { if x != nil { return x.Presentation } return Embed_EmbedField_PRESENTATION_DATA_UNSPECIFIED } func (x *Embed_EmbedField) GetActions() []*Action { if x != nil { return x.Actions } return nil } // Object representing text content. type Content_TextContent struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Text content. Content *FormattedText `protobuf:"bytes,1,opt,name=content,proto3" json:"content,omitempty"` } func (x *Content_TextContent) Reset() { *x = Content_TextContent{} if protoimpl.UnsafeEnabled { mi := &file_chat_v1_messages_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Content_TextContent) String() string { return protoimpl.X.MessageStringOf(x) } func (*Content_TextContent) ProtoMessage() {} func (x *Content_TextContent) ProtoReflect() protoreflect.Message { mi := &file_chat_v1_messages_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 Content_TextContent.ProtoReflect.Descriptor instead. func (*Content_TextContent) Descriptor() ([]byte, []int) { return file_chat_v1_messages_proto_rawDescGZIP(), []int{7, 0} } func (x *Content_TextContent) GetContent() *FormattedText { if x != nil { return x.Content } return nil } // Object representing embed content. type Content_EmbedContent struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Embed content. Embeds []*Embed `protobuf:"bytes,1,rep,name=embeds,proto3" json:"embeds,omitempty"` } func (x *Content_EmbedContent) Reset() { *x = Content_EmbedContent{} if protoimpl.UnsafeEnabled { mi := &file_chat_v1_messages_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Content_EmbedContent) String() string { return protoimpl.X.MessageStringOf(x) } func (*Content_EmbedContent) ProtoMessage() {} func (x *Content_EmbedContent) ProtoReflect() protoreflect.Message { mi := &file_chat_v1_messages_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 Content_EmbedContent.ProtoReflect.Descriptor instead. func (*Content_EmbedContent) Descriptor() ([]byte, []int) { return file_chat_v1_messages_proto_rawDescGZIP(), []int{7, 1} } func (x *Content_EmbedContent) GetEmbeds() []*Embed { if x != nil { return x.Embeds } return nil } // Object representing attachment content. type Content_AttachmentContent struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // A list of attachments. Files []*Attachment `protobuf:"bytes,1,rep,name=files,proto3" json:"files,omitempty"` } func (x *Content_AttachmentContent) Reset() { *x = Content_AttachmentContent{} if protoimpl.UnsafeEnabled { mi := &file_chat_v1_messages_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Content_AttachmentContent) String() string { return protoimpl.X.MessageStringOf(x) } func (*Content_AttachmentContent) ProtoMessage() {} func (x *Content_AttachmentContent) ProtoReflect() protoreflect.Message { mi := &file_chat_v1_messages_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 Content_AttachmentContent.ProtoReflect.Descriptor instead. func (*Content_AttachmentContent) Descriptor() ([]byte, []int) { return file_chat_v1_messages_proto_rawDescGZIP(), []int{7, 2} } func (x *Content_AttachmentContent) GetFiles() []*Attachment { if x != nil { return x.Files } return nil } // Object representing photo content. type Content_PhotoContent struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // A list of photos. Photos []*Photo `protobuf:"bytes,1,rep,name=photos,proto3" json:"photos,omitempty"` } func (x *Content_PhotoContent) Reset() { *x = Content_PhotoContent{} if protoimpl.UnsafeEnabled { mi := &file_chat_v1_messages_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Content_PhotoContent) String() string { return protoimpl.X.MessageStringOf(x) } func (*Content_PhotoContent) ProtoMessage() {} func (x *Content_PhotoContent) ProtoReflect() protoreflect.Message { mi := &file_chat_v1_messages_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 Content_PhotoContent.ProtoReflect.Descriptor instead. func (*Content_PhotoContent) Descriptor() ([]byte, []int) { return file_chat_v1_messages_proto_rawDescGZIP(), []int{7, 3} } func (x *Content_PhotoContent) GetPhotos() []*Photo { if x != nil { return x.Photos } return nil } // Represents a user rejecting an invite. // // This can only be used by servers themselves. Servers should reject // messages with this content if they are sent by a user. type Content_InviteRejected struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // User ID of the invitee. InviteeId uint64 `protobuf:"varint,1,opt,name=invitee_id,json=inviteeId,proto3" json:"invitee_id,omitempty"` // User ID of the inviter. InviterId uint64 `protobuf:"varint,2,opt,name=inviter_id,json=inviterId,proto3" json:"inviter_id,omitempty"` } func (x *Content_InviteRejected) Reset() { *x = Content_InviteRejected{} if protoimpl.UnsafeEnabled { mi := &file_chat_v1_messages_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Content_InviteRejected) String() string { return protoimpl.X.MessageStringOf(x) } func (*Content_InviteRejected) ProtoMessage() {} func (x *Content_InviteRejected) ProtoReflect() protoreflect.Message { mi := &file_chat_v1_messages_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 Content_InviteRejected.ProtoReflect.Descriptor instead. func (*Content_InviteRejected) Descriptor() ([]byte, []int) { return file_chat_v1_messages_proto_rawDescGZIP(), []int{7, 4} } func (x *Content_InviteRejected) GetInviteeId() uint64 { if x != nil { return x.InviteeId } return 0 } func (x *Content_InviteRejected) GetInviterId() uint64 { if x != nil { return x.InviterId } return 0 } // Represents a user accepting an invite. // // This can only be used by servers themselves. Servers should reject // messages with this content if they are sent by a user. type Content_InviteAccepted struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // User ID of the invitee. InviteeId uint64 `protobuf:"varint,1,opt,name=invitee_id,json=inviteeId,proto3" json:"invitee_id,omitempty"` // User ID of the inviter. InviterId uint64 `protobuf:"varint,2,opt,name=inviter_id,json=inviterId,proto3" json:"inviter_id,omitempty"` } func (x *Content_InviteAccepted) Reset() { *x = Content_InviteAccepted{} if protoimpl.UnsafeEnabled { mi := &file_chat_v1_messages_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Content_InviteAccepted) String() string { return protoimpl.X.MessageStringOf(x) } func (*Content_InviteAccepted) ProtoMessage() {} func (x *Content_InviteAccepted) ProtoReflect() protoreflect.Message { mi := &file_chat_v1_messages_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 Content_InviteAccepted.ProtoReflect.Descriptor instead. func (*Content_InviteAccepted) Descriptor() ([]byte, []int) { return file_chat_v1_messages_proto_rawDescGZIP(), []int{7, 5} } func (x *Content_InviteAccepted) GetInviteeId() uint64 { if x != nil { return x.InviteeId } return 0 } func (x *Content_InviteAccepted) GetInviterId() uint64 { if x != nil { return x.InviterId } return 0 } // Represents a guild upgrade from "room" to "normal". // // This can only be used by servers themselves. Servers should reject // messages with this content if they are sent by a user. type Content_RoomUpgradedToGuild struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // User ID of the user that upgraded the guild. UpgradedBy uint64 `protobuf:"varint,1,opt,name=upgraded_by,json=upgradedBy,proto3" json:"upgraded_by,omitempty"` } func (x *Content_RoomUpgradedToGuild) Reset() { *x = Content_RoomUpgradedToGuild{} if protoimpl.UnsafeEnabled { mi := &file_chat_v1_messages_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Content_RoomUpgradedToGuild) String() string { return protoimpl.X.MessageStringOf(x) } func (*Content_RoomUpgradedToGuild) ProtoMessage() {} func (x *Content_RoomUpgradedToGuild) ProtoReflect() protoreflect.Message { mi := &file_chat_v1_messages_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 Content_RoomUpgradedToGuild.ProtoReflect.Descriptor instead. func (*Content_RoomUpgradedToGuild) Descriptor() ([]byte, []int) { return file_chat_v1_messages_proto_rawDescGZIP(), []int{7, 6} } func (x *Content_RoomUpgradedToGuild) GetUpgradedBy() uint64 { if x != nil { return x.UpgradedBy } return 0 } // Bold text type Format_Bold struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *Format_Bold) Reset() { *x = Format_Bold{} if protoimpl.UnsafeEnabled { mi := &file_chat_v1_messages_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Format_Bold) String() string { return protoimpl.X.MessageStringOf(x) } func (*Format_Bold) ProtoMessage() {} func (x *Format_Bold) ProtoReflect() protoreflect.Message { mi := &file_chat_v1_messages_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 Format_Bold.ProtoReflect.Descriptor instead. func (*Format_Bold) Descriptor() ([]byte, []int) { return file_chat_v1_messages_proto_rawDescGZIP(), []int{9, 0} } // Italic text type Format_Italic struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *Format_Italic) Reset() { *x = Format_Italic{} if protoimpl.UnsafeEnabled { mi := &file_chat_v1_messages_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Format_Italic) String() string { return protoimpl.X.MessageStringOf(x) } func (*Format_Italic) ProtoMessage() {} func (x *Format_Italic) ProtoReflect() protoreflect.Message { mi := &file_chat_v1_messages_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 Format_Italic.ProtoReflect.Descriptor instead. func (*Format_Italic) Descriptor() ([]byte, []int) { return file_chat_v1_messages_proto_rawDescGZIP(), []int{9, 1} } // Underlined text type Format_Underline struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *Format_Underline) Reset() { *x = Format_Underline{} if protoimpl.UnsafeEnabled { mi := &file_chat_v1_messages_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Format_Underline) String() string { return protoimpl.X.MessageStringOf(x) } func (*Format_Underline) ProtoMessage() {} func (x *Format_Underline) ProtoReflect() protoreflect.Message { mi := &file_chat_v1_messages_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 Format_Underline.ProtoReflect.Descriptor instead. func (*Format_Underline) Descriptor() ([]byte, []int) { return file_chat_v1_messages_proto_rawDescGZIP(), []int{9, 2} } // Monospace text type Format_Monospace struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *Format_Monospace) Reset() { *x = Format_Monospace{} if protoimpl.UnsafeEnabled { mi := &file_chat_v1_messages_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Format_Monospace) String() string { return protoimpl.X.MessageStringOf(x) } func (*Format_Monospace) ProtoMessage() {} func (x *Format_Monospace) ProtoReflect() protoreflect.Message { mi := &file_chat_v1_messages_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 Format_Monospace.ProtoReflect.Descriptor instead. func (*Format_Monospace) Descriptor() ([]byte, []int) { return file_chat_v1_messages_proto_rawDescGZIP(), []int{9, 3} } // Superscript text type Format_Superscript struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *Format_Superscript) Reset() { *x = Format_Superscript{} if protoimpl.UnsafeEnabled { mi := &file_chat_v1_messages_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Format_Superscript) String() string { return protoimpl.X.MessageStringOf(x) } func (*Format_Superscript) ProtoMessage() {} func (x *Format_Superscript) ProtoReflect() protoreflect.Message { mi := &file_chat_v1_messages_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 Format_Superscript.ProtoReflect.Descriptor instead. func (*Format_Superscript) Descriptor() ([]byte, []int) { return file_chat_v1_messages_proto_rawDescGZIP(), []int{9, 4} } // Subscript text type Format_Subscript struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *Format_Subscript) Reset() { *x = Format_Subscript{} if protoimpl.UnsafeEnabled { mi := &file_chat_v1_messages_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Format_Subscript) String() string { return protoimpl.X.MessageStringOf(x) } func (*Format_Subscript) ProtoMessage() {} func (x *Format_Subscript) ProtoReflect() protoreflect.Message { mi := &file_chat_v1_messages_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 Format_Subscript.ProtoReflect.Descriptor instead. func (*Format_Subscript) Descriptor() ([]byte, []int) { return file_chat_v1_messages_proto_rawDescGZIP(), []int{9, 5} } // A larger codeblock, with a programming language specified // Clients should ideally not bound the width of codeblock messages, // possibly scrolling the codeblock horizontally separately from the // rest of the message type Format_CodeBlock struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // programming language of the code block Language string `protobuf:"bytes,1,opt,name=language,proto3" json:"language,omitempty"` } func (x *Format_CodeBlock) Reset() { *x = Format_CodeBlock{} if protoimpl.UnsafeEnabled { mi := &file_chat_v1_messages_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Format_CodeBlock) String() string { return protoimpl.X.MessageStringOf(x) } func (*Format_CodeBlock) ProtoMessage() {} func (x *Format_CodeBlock) ProtoReflect() protoreflect.Message { mi := &file_chat_v1_messages_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 Format_CodeBlock.ProtoReflect.Descriptor instead. func (*Format_CodeBlock) Descriptor() ([]byte, []int) { return file_chat_v1_messages_proto_rawDescGZIP(), []int{9, 6} } func (x *Format_CodeBlock) GetLanguage() string { if x != nil { return x.Language } return "" } // Mention of a user (on the current homeserver) type Format_UserMention struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // user_id of the user being mentioned UserId uint64 `protobuf:"varint,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` } func (x *Format_UserMention) Reset() { *x = Format_UserMention{} if protoimpl.UnsafeEnabled { mi := &file_chat_v1_messages_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Format_UserMention) String() string { return protoimpl.X.MessageStringOf(x) } func (*Format_UserMention) ProtoMessage() {} func (x *Format_UserMention) ProtoReflect() protoreflect.Message { mi := &file_chat_v1_messages_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 Format_UserMention.ProtoReflect.Descriptor instead. func (*Format_UserMention) Descriptor() ([]byte, []int) { return file_chat_v1_messages_proto_rawDescGZIP(), []int{9, 7} } func (x *Format_UserMention) GetUserId() uint64 { if x != nil { return x.UserId } return 0 } // Mention of a role (on the current guild) type Format_RoleMention struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // the role being mentioned RoleId uint64 `protobuf:"varint,1,opt,name=role_id,json=roleId,proto3" json:"role_id,omitempty"` } func (x *Format_RoleMention) Reset() { *x = Format_RoleMention{} if protoimpl.UnsafeEnabled { mi := &file_chat_v1_messages_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Format_RoleMention) String() string { return protoimpl.X.MessageStringOf(x) } func (*Format_RoleMention) ProtoMessage() {} func (x *Format_RoleMention) ProtoReflect() protoreflect.Message { mi := &file_chat_v1_messages_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 Format_RoleMention.ProtoReflect.Descriptor instead. func (*Format_RoleMention) Descriptor() ([]byte, []int) { return file_chat_v1_messages_proto_rawDescGZIP(), []int{9, 8} } func (x *Format_RoleMention) GetRoleId() uint64 { if x != nil { return x.RoleId } return 0 } // Mention of a channel (on the current guild) type Format_ChannelMention struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // the channel being mentioned ChannelId uint64 `protobuf:"varint,1,opt,name=channel_id,json=channelId,proto3" json:"channel_id,omitempty"` } func (x *Format_ChannelMention) Reset() { *x = Format_ChannelMention{} if protoimpl.UnsafeEnabled { mi := &file_chat_v1_messages_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Format_ChannelMention) String() string { return protoimpl.X.MessageStringOf(x) } func (*Format_ChannelMention) ProtoMessage() {} func (x *Format_ChannelMention) ProtoReflect() protoreflect.Message { mi := &file_chat_v1_messages_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 Format_ChannelMention.ProtoReflect.Descriptor instead. func (*Format_ChannelMention) Descriptor() ([]byte, []int) { return file_chat_v1_messages_proto_rawDescGZIP(), []int{9, 9} } func (x *Format_ChannelMention) GetChannelId() uint64 { if x != nil { return x.ChannelId } return 0 } // Mention of a guild type Format_GuildMention struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // the guild being mentioned GuildId uint64 `protobuf:"varint,1,opt,name=guild_id,json=guildId,proto3" json:"guild_id,omitempty"` // which homeserver it belongs to Homeserver string `protobuf:"bytes,2,opt,name=homeserver,proto3" json:"homeserver,omitempty"` } func (x *Format_GuildMention) Reset() { *x = Format_GuildMention{} if protoimpl.UnsafeEnabled { mi := &file_chat_v1_messages_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Format_GuildMention) String() string { return protoimpl.X.MessageStringOf(x) } func (*Format_GuildMention) ProtoMessage() {} func (x *Format_GuildMention) ProtoReflect() protoreflect.Message { mi := &file_chat_v1_messages_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 Format_GuildMention.ProtoReflect.Descriptor instead. func (*Format_GuildMention) Descriptor() ([]byte, []int) { return file_chat_v1_messages_proto_rawDescGZIP(), []int{9, 10} } func (x *Format_GuildMention) GetGuildId() uint64 { if x != nil { return x.GuildId } return 0 } func (x *Format_GuildMention) GetHomeserver() string { if x != nil { return x.Homeserver } return "" } // An emoji type Format_Emoji struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // The HMC URL of the emoji ImageHmc string `protobuf:"bytes,1,opt,name=image_hmc,json=imageHmc,proto3" json:"image_hmc,omitempty"` // The ID of the emoji pack the emoji is from PackId uint64 `protobuf:"varint,2,opt,name=pack_id,json=packId,proto3" json:"pack_id,omitempty"` } func (x *Format_Emoji) Reset() { *x = Format_Emoji{} if protoimpl.UnsafeEnabled { mi := &file_chat_v1_messages_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Format_Emoji) String() string { return protoimpl.X.MessageStringOf(x) } func (*Format_Emoji) ProtoMessage() {} func (x *Format_Emoji) ProtoReflect() protoreflect.Message { mi := &file_chat_v1_messages_proto_msgTypes[62] 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 Format_Emoji.ProtoReflect.Descriptor instead. func (*Format_Emoji) Descriptor() ([]byte, []int) { return file_chat_v1_messages_proto_rawDescGZIP(), []int{9, 11} } func (x *Format_Emoji) GetImageHmc() string { if x != nil { return x.ImageHmc } return "" } func (x *Format_Emoji) GetPackId() uint64 { if x != nil { return x.PackId } return 0 } // Colour modification type Format_Color struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // The kind of colour modification to apply Kind Format_Color_Kind `protobuf:"varint,1,opt,name=kind,proto3,enum=protocol.chat.v1.Format_Color_Kind" json:"kind,omitempty"` } func (x *Format_Color) Reset() { *x = Format_Color{} if protoimpl.UnsafeEnabled { mi := &file_chat_v1_messages_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Format_Color) String() string { return protoimpl.X.MessageStringOf(x) } func (*Format_Color) ProtoMessage() {} func (x *Format_Color) ProtoReflect() protoreflect.Message { mi := &file_chat_v1_messages_proto_msgTypes[63] 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 Format_Color.ProtoReflect.Descriptor instead. func (*Format_Color) Descriptor() ([]byte, []int) { return file_chat_v1_messages_proto_rawDescGZIP(), []int{9, 12} } func (x *Format_Color) GetKind() Format_Color_Kind { if x != nil { return x.Kind } return Format_Color_KIND_DIM_UNSPECIFIED } // Replace a part of the text with the text matching the i18n code. // If i18n code was not found, keep the original text. type Format_Localization struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // i18n code for the text. I18NCode string `protobuf:"bytes,1,opt,name=i18n_code,json=i18nCode,proto3" json:"i18n_code,omitempty"` } func (x *Format_Localization) Reset() { *x = Format_Localization{} if protoimpl.UnsafeEnabled { mi := &file_chat_v1_messages_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Format_Localization) String() string { return protoimpl.X.MessageStringOf(x) } func (*Format_Localization) ProtoMessage() {} func (x *Format_Localization) ProtoReflect() protoreflect.Message { mi := &file_chat_v1_messages_proto_msgTypes[64] 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 Format_Localization.ProtoReflect.Descriptor instead. func (*Format_Localization) Descriptor() ([]byte, []int) { return file_chat_v1_messages_proto_rawDescGZIP(), []int{9, 13} } func (x *Format_Localization) GetI18NCode() string { if x != nil { return x.I18NCode } return "" } var File_chat_v1_messages_proto protoreflect.FileDescriptor var file_chat_v1_messages_proto_rawDesc = []byte{ 0x0a, 0x16, 0x63, 0x68, 0x61, 0x74, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x10, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x1a, 0x1b, 0x68, 0x61, 0x72, 0x6d, 0x6f, 0x6e, 0x79, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x14, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa0, 0x03, 0x0a, 0x09, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x12, 0x1f, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x88, 0x01, 0x01, 0x12, 0x23, 0x0a, 0x0c, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x12, 0x3b, 0x0a, 0x07, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x68, 0x61, 0x72, 0x6d, 0x6f, 0x6e, 0x79, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x48, 0x00, 0x52, 0x07, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x12, 0x4c, 0x0a, 0x10, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x70, 0x6c, 0x75, 0x72, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x68, 0x61, 0x72, 0x6d, 0x6f, 0x6e, 0x79, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x48, 0x00, 0x52, 0x0f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x50, 0x6c, 0x75, 0x72, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x48, 0x0a, 0x0e, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x68, 0x61, 0x72, 0x6d, 0x6f, 0x6e, 0x79, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x48, 0x00, 0x52, 0x0d, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x39, 0x0a, 0x06, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x68, 0x61, 0x72, 0x6d, 0x6f, 0x6e, 0x79, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x48, 0x00, 0x52, 0x06, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x22, 0xd8, 0x02, 0x0a, 0x0d, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x40, 0x0a, 0x06, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x2e, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x06, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x12, 0x46, 0x0a, 0x08, 0x64, 0x72, 0x6f, 0x70, 0x64, 0x6f, 0x77, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x2e, 0x44, 0x72, 0x6f, 0x70, 0x64, 0x6f, 0x77, 0x6e, 0x48, 0x00, 0x52, 0x08, 0x64, 0x72, 0x6f, 0x70, 0x64, 0x6f, 0x77, 0x6e, 0x12, 0x3d, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x2e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x48, 0x00, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x1a, 0x1c, 0x0a, 0x06, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x22, 0x0a, 0x08, 0x44, 0x72, 0x6f, 0x70, 0x64, 0x6f, 0x77, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x1a, 0x31, 0x0a, 0x05, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x42, 0x09, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x8c, 0x05, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3e, 0x0a, 0x0b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x39, 0x0a, 0x06, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x06, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x12, 0x3f, 0x0a, 0x08, 0x64, 0x72, 0x6f, 0x70, 0x64, 0x6f, 0x77, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x72, 0x6f, 0x70, 0x64, 0x6f, 0x77, 0x6e, 0x48, 0x00, 0x52, 0x08, 0x64, 0x72, 0x6f, 0x70, 0x64, 0x6f, 0x77, 0x6e, 0x12, 0x36, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x48, 0x00, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x1a, 0x4f, 0x0a, 0x06, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x15, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x88, 0x01, 0x01, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x75, 0x72, 0x6c, 0x1a, 0x96, 0x01, 0x0a, 0x08, 0x44, 0x72, 0x6f, 0x70, 0x64, 0x6f, 0x77, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x41, 0x0a, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x72, 0x6f, 0x70, 0x64, 0x6f, 0x77, 0x6e, 0x2e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x1a, 0x31, 0x0a, 0x05, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x4f, 0x0a, 0x05, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x6c, 0x69, 0x6e, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x4b, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x17, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x4f, 0x52, 0x4d, 0x41, 0x4c, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x52, 0x49, 0x4d, 0x41, 0x52, 0x59, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x45, 0x53, 0x54, 0x52, 0x55, 0x43, 0x54, 0x49, 0x56, 0x45, 0x10, 0x02, 0x42, 0x06, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x22, 0xa8, 0x07, 0x0a, 0x05, 0x45, 0x6d, 0x62, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x38, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x64, 0x54, 0x65, 0x78, 0x74, 0x48, 0x00, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x48, 0x01, 0x52, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x41, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6d, 0x62, 0x65, 0x64, 0x2e, 0x45, 0x6d, 0x62, 0x65, 0x64, 0x48, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x48, 0x02, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x41, 0x0a, 0x06, 0x66, 0x6f, 0x6f, 0x74, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6d, 0x62, 0x65, 0x64, 0x2e, 0x45, 0x6d, 0x62, 0x65, 0x64, 0x48, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x48, 0x03, 0x52, 0x06, 0x66, 0x6f, 0x6f, 0x74, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6d, 0x62, 0x65, 0x64, 0x2e, 0x45, 0x6d, 0x62, 0x65, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x1a, 0x8e, 0x01, 0x0a, 0x0c, 0x45, 0x6d, 0x62, 0x65, 0x64, 0x48, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x12, 0x1d, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x74, 0x65, 0x78, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x73, 0x75, 0x62, 0x74, 0x65, 0x78, 0x74, 0x88, 0x01, 0x01, 0x12, 0x15, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x73, 0x75, 0x62, 0x74, 0x65, 0x78, 0x74, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x75, 0x72, 0x6c, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x69, 0x63, 0x6f, 0x6e, 0x1a, 0xb7, 0x03, 0x0a, 0x0a, 0x45, 0x6d, 0x62, 0x65, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x1f, 0x0a, 0x08, 0x73, 0x75, 0x62, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x73, 0x75, 0x62, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x64, 0x54, 0x65, 0x78, 0x74, 0x48, 0x01, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x08, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x72, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x53, 0x0a, 0x0c, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6d, 0x62, 0x65, 0x64, 0x2e, 0x45, 0x6d, 0x62, 0x65, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x2e, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x69, 0x0a, 0x0c, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x1d, 0x50, 0x52, 0x45, 0x53, 0x45, 0x4e, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x20, 0x0a, 0x1c, 0x50, 0x52, 0x45, 0x53, 0x45, 0x4e, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x41, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x45, 0x44, 0x5f, 0x49, 0x4d, 0x41, 0x47, 0x45, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x52, 0x45, 0x53, 0x45, 0x4e, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x4f, 0x57, 0x10, 0x02, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x73, 0x75, 0x62, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x62, 0x6f, 0x64, 0x79, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x62, 0x6f, 0x64, 0x79, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x66, 0x6f, 0x6f, 0x74, 0x65, 0x72, 0x22, 0x51, 0x0a, 0x0d, 0x4d, 0x69, 0x6e, 0x69, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x6e, 0x61, 0x69, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xfa, 0x01, 0x0a, 0x05, 0x50, 0x68, 0x6f, 0x74, 0x6f, 0x12, 0x10, 0x0a, 0x03, 0x68, 0x6d, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x68, 0x6d, 0x63, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x12, 0x39, 0x0a, 0x07, 0x63, 0x61, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x64, 0x54, 0x65, 0x78, 0x74, 0x52, 0x07, 0x63, 0x61, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x45, 0x0a, 0x0d, 0x6d, 0x69, 0x6e, 0x69, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x6e, 0x61, 0x69, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x69, 0x6e, 0x69, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x6e, 0x61, 0x69, 0x6c, 0x52, 0x0d, 0x6d, 0x69, 0x6e, 0x69, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x6e, 0x61, 0x69, 0x6c, 0x22, 0xac, 0x01, 0x0a, 0x0a, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x69, 0x6d, 0x65, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x69, 0x6d, 0x65, 0x74, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x3e, 0x0a, 0x07, 0x63, 0x61, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x64, 0x54, 0x65, 0x78, 0x74, 0x48, 0x00, 0x52, 0x07, 0x63, 0x61, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x63, 0x61, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xd9, 0x08, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x4a, 0x0a, 0x0c, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0b, 0x74, 0x65, 0x78, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x4d, 0x0a, 0x0d, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x45, 0x6d, 0x62, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0c, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x5c, 0x0a, 0x12, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x11, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x4d, 0x0a, 0x0d, 0x70, 0x68, 0x6f, 0x74, 0x6f, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x68, 0x6f, 0x74, 0x6f, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0c, 0x70, 0x68, 0x6f, 0x74, 0x6f, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x53, 0x0a, 0x0f, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x48, 0x00, 0x52, 0x0e, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x12, 0x53, 0x0a, 0x0f, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x48, 0x00, 0x52, 0x0e, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x12, 0x64, 0x0a, 0x16, 0x72, 0x6f, 0x6f, 0x6d, 0x5f, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x64, 0x5f, 0x74, 0x6f, 0x5f, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x52, 0x6f, 0x6f, 0x6d, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x64, 0x54, 0x6f, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x48, 0x00, 0x52, 0x13, 0x72, 0x6f, 0x6f, 0x6d, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x64, 0x54, 0x6f, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x1a, 0x48, 0x0a, 0x0b, 0x54, 0x65, 0x78, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x39, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x64, 0x54, 0x65, 0x78, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x1a, 0x3f, 0x0a, 0x0c, 0x45, 0x6d, 0x62, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x2f, 0x0a, 0x06, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6d, 0x62, 0x65, 0x64, 0x52, 0x06, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x73, 0x1a, 0x47, 0x0a, 0x11, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x32, 0x0a, 0x05, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x1a, 0x3f, 0x0a, 0x0c, 0x50, 0x68, 0x6f, 0x74, 0x6f, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x2f, 0x0a, 0x06, 0x70, 0x68, 0x6f, 0x74, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x68, 0x6f, 0x74, 0x6f, 0x52, 0x06, 0x70, 0x68, 0x6f, 0x74, 0x6f, 0x73, 0x1a, 0x4e, 0x0a, 0x0e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x65, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x72, 0x49, 0x64, 0x1a, 0x4e, 0x0a, 0x0e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x65, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x72, 0x49, 0x64, 0x1a, 0x36, 0x0a, 0x13, 0x52, 0x6f, 0x6f, 0x6d, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x64, 0x54, 0x6f, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x64, 0x42, 0x79, 0x42, 0x09, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0x50, 0x0a, 0x08, 0x52, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x0a, 0x05, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6d, 0x6f, 0x74, 0x65, 0x52, 0x05, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xe6, 0x0c, 0x0a, 0x06, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x33, 0x0a, 0x04, 0x62, 0x6f, 0x6c, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x2e, 0x42, 0x6f, 0x6c, 0x64, 0x48, 0x00, 0x52, 0x04, 0x62, 0x6f, 0x6c, 0x64, 0x12, 0x39, 0x0a, 0x06, 0x69, 0x74, 0x61, 0x6c, 0x69, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x2e, 0x49, 0x74, 0x61, 0x6c, 0x69, 0x63, 0x48, 0x00, 0x52, 0x06, 0x69, 0x74, 0x61, 0x6c, 0x69, 0x63, 0x12, 0x42, 0x0a, 0x09, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x2e, 0x55, 0x6e, 0x64, 0x65, 0x72, 0x6c, 0x69, 0x6e, 0x65, 0x48, 0x00, 0x52, 0x09, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x6c, 0x69, 0x6e, 0x65, 0x12, 0x42, 0x0a, 0x09, 0x6d, 0x6f, 0x6e, 0x6f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x2e, 0x4d, 0x6f, 0x6e, 0x6f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x48, 0x00, 0x52, 0x09, 0x6d, 0x6f, 0x6e, 0x6f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x48, 0x0a, 0x0b, 0x73, 0x75, 0x70, 0x65, 0x72, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x2e, 0x53, 0x75, 0x70, 0x65, 0x72, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x48, 0x00, 0x52, 0x0b, 0x73, 0x75, 0x70, 0x65, 0x72, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x12, 0x42, 0x0a, 0x09, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x48, 0x00, 0x52, 0x09, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x12, 0x43, 0x0a, 0x0a, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x00, 0x52, 0x09, 0x63, 0x6f, 0x64, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x49, 0x0a, 0x0c, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x4d, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x49, 0x0a, 0x0c, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x4d, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0b, 0x72, 0x6f, 0x6c, 0x65, 0x4d, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x52, 0x0a, 0x0f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x6d, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4c, 0x0a, 0x0d, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x6d, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x2e, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0c, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x05, 0x65, 0x6d, 0x6f, 0x6a, 0x69, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x2e, 0x45, 0x6d, 0x6f, 0x6a, 0x69, 0x48, 0x00, 0x52, 0x05, 0x65, 0x6d, 0x6f, 0x6a, 0x69, 0x12, 0x36, 0x0a, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x2e, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x4b, 0x0a, 0x0c, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0c, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x06, 0x0a, 0x04, 0x42, 0x6f, 0x6c, 0x64, 0x1a, 0x08, 0x0a, 0x06, 0x49, 0x74, 0x61, 0x6c, 0x69, 0x63, 0x1a, 0x0b, 0x0a, 0x09, 0x55, 0x6e, 0x64, 0x65, 0x72, 0x6c, 0x69, 0x6e, 0x65, 0x1a, 0x0b, 0x0a, 0x09, 0x4d, 0x6f, 0x6e, 0x6f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x1a, 0x0d, 0x0a, 0x0b, 0x53, 0x75, 0x70, 0x65, 0x72, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x1a, 0x0b, 0x0a, 0x09, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x1a, 0x27, 0x0a, 0x09, 0x43, 0x6f, 0x64, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x1a, 0x26, 0x0a, 0x0b, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x1a, 0x26, 0x0a, 0x0b, 0x52, 0x6f, 0x6c, 0x65, 0x4d, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x72, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x1a, 0x2f, 0x0a, 0x0e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x1a, 0x49, 0x0a, 0x0c, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x68, 0x6f, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x68, 0x6f, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x1a, 0x3d, 0x0a, 0x05, 0x45, 0x6d, 0x6f, 0x6a, 0x69, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x68, 0x6d, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x48, 0x6d, 0x63, 0x12, 0x17, 0x0a, 0x07, 0x70, 0x61, 0x63, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x70, 0x61, 0x63, 0x6b, 0x49, 0x64, 0x1a, 0xba, 0x01, 0x0a, 0x05, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x37, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x2e, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x22, 0x78, 0x0a, 0x04, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x18, 0x0a, 0x14, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x44, 0x49, 0x4d, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x42, 0x52, 0x49, 0x47, 0x48, 0x54, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4e, 0x45, 0x47, 0x41, 0x54, 0x49, 0x56, 0x45, 0x10, 0x02, 0x12, 0x11, 0x0a, 0x0d, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x56, 0x45, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x04, 0x12, 0x10, 0x0a, 0x0c, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x57, 0x41, 0x52, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x05, 0x1a, 0x2b, 0x0a, 0x0c, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x31, 0x38, 0x6e, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x31, 0x38, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x55, 0x0a, 0x0d, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x64, 0x54, 0x65, 0x78, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x12, 0x30, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0xa6, 0x03, 0x0a, 0x07, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x43, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x68, 0x61, 0x72, 0x6d, 0x6f, 0x6e, 0x79, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x09, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x52, 0x09, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x65, 0x64, 0x69, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x08, 0x65, 0x64, 0x69, 0x74, 0x65, 0x64, 0x41, 0x74, 0x88, 0x01, 0x01, 0x12, 0x23, 0x0a, 0x0b, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x79, 0x5f, 0x74, 0x6f, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x48, 0x02, 0x52, 0x09, 0x69, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x54, 0x6f, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x38, 0x0a, 0x09, 0x72, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x72, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x65, 0x64, 0x69, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x79, 0x5f, 0x74, 0x6f, 0x22, 0x63, 0x0a, 0x0d, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x57, 0x69, 0x74, 0x68, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x33, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0xef, 0x02, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x58, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x35, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x01, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x22, 0x58, 0x0a, 0x09, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x1c, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x42, 0x45, 0x46, 0x4f, 0x52, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x52, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x46, 0x54, 0x45, 0x52, 0x10, 0x02, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xa1, 0x01, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x61, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x74, 0x6f, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x72, 0x65, 0x61, 0x63, 0x68, 0x65, 0x64, 0x54, 0x6f, 0x70, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65, 0x61, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x62, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x72, 0x65, 0x61, 0x63, 0x68, 0x65, 0x64, 0x42, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x12, 0x3b, 0x0a, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x57, 0x69, 0x74, 0x68, 0x49, 0x64, 0x52, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x22, 0x6c, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x22, 0x49, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x6f, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x22, 0x17, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xaa, 0x01, 0x0a, 0x14, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x17, 0x0a, 0x15, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x82, 0x03, 0x0a, 0x12, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x33, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x07, 0x65, 0x63, 0x68, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x06, 0x65, 0x63, 0x68, 0x6f, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x09, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x48, 0x01, 0x52, 0x09, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x23, 0x0a, 0x0b, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x79, 0x5f, 0x74, 0x6f, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x48, 0x02, 0x52, 0x09, 0x69, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x54, 0x6f, 0x88, 0x01, 0x01, 0x12, 0x43, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x68, 0x61, 0x72, 0x6d, 0x6f, 0x6e, 0x79, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x03, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x65, 0x63, 0x68, 0x6f, 0x5f, 0x69, 0x64, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x79, 0x5f, 0x74, 0x6f, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x34, 0x0a, 0x13, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x22, 0xb5, 0x01, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x65, 0x78, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x40, 0x0a, 0x0b, 0x6e, 0x65, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x64, 0x54, 0x65, 0x78, 0x74, 0x52, 0x0a, 0x6e, 0x65, 0x77, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0x1b, 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x65, 0x78, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6c, 0x0a, 0x11, 0x50, 0x69, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x22, 0x14, 0x0a, 0x12, 0x50, 0x69, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6e, 0x0a, 0x13, 0x55, 0x6e, 0x70, 0x69, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x22, 0x16, 0x0a, 0x14, 0x55, 0x6e, 0x70, 0x69, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x54, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x50, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x22, 0x49, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x50, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x04, 0x52, 0x10, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x73, 0x22, 0x9d, 0x01, 0x0a, 0x12, 0x41, 0x64, 0x64, 0x52, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x05, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6d, 0x6f, 0x74, 0x65, 0x52, 0x05, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x22, 0x15, 0x0a, 0x13, 0x41, 0x64, 0x64, 0x52, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xa0, 0x01, 0x0a, 0x15, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x05, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6d, 0x6f, 0x74, 0x65, 0x52, 0x05, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x22, 0x18, 0x0a, 0x16, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0xc3, 0x01, 0x0a, 0x14, 0x63, 0x6f, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x42, 0x0d, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x68, 0x61, 0x72, 0x6d, 0x6f, 0x6e, 0x79, 0x2d, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x73, 0x68, 0x69, 0x62, 0x73, 0x68, 0x69, 0x62, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x63, 0x68, 0x61, 0x74, 0x2f, 0x76, 0x31, 0x3b, 0x63, 0x68, 0x61, 0x74, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x50, 0x43, 0x58, 0xaa, 0x02, 0x10, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x10, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5c, 0x43, 0x68, 0x61, 0x74, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1c, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5c, 0x43, 0x68, 0x61, 0x74, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x12, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x3a, 0x3a, 0x43, 0x68, 0x61, 0x74, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( file_chat_v1_messages_proto_rawDescOnce sync.Once file_chat_v1_messages_proto_rawDescData = file_chat_v1_messages_proto_rawDesc ) func file_chat_v1_messages_proto_rawDescGZIP() []byte { file_chat_v1_messages_proto_rawDescOnce.Do(func() { file_chat_v1_messages_proto_rawDescData = protoimpl.X.CompressGZIP(file_chat_v1_messages_proto_rawDescData) }) return file_chat_v1_messages_proto_rawDescData } var file_chat_v1_messages_proto_enumTypes = make([]protoimpl.EnumInfo, 4) var file_chat_v1_messages_proto_msgTypes = make([]protoimpl.MessageInfo, 65) var file_chat_v1_messages_proto_goTypes = []interface{}{ (Action_Type)(0), // 0: protocol.chat.v1.Action.Type (Embed_EmbedField_Presentation)(0), // 1: protocol.chat.v1.Embed.EmbedField.Presentation (Format_Color_Kind)(0), // 2: protocol.chat.v1.Format.Color.Kind (GetChannelMessagesRequest_Direction)(0), // 3: protocol.chat.v1.GetChannelMessagesRequest.Direction (*Overrides)(nil), // 4: protocol.chat.v1.Overrides (*ActionPayload)(nil), // 5: protocol.chat.v1.ActionPayload (*Action)(nil), // 6: protocol.chat.v1.Action (*Embed)(nil), // 7: protocol.chat.v1.Embed (*Minithumbnail)(nil), // 8: protocol.chat.v1.Minithumbnail (*Photo)(nil), // 9: protocol.chat.v1.Photo (*Attachment)(nil), // 10: protocol.chat.v1.Attachment (*Content)(nil), // 11: protocol.chat.v1.Content (*Reaction)(nil), // 12: protocol.chat.v1.Reaction (*Format)(nil), // 13: protocol.chat.v1.Format (*FormattedText)(nil), // 14: protocol.chat.v1.FormattedText (*Message)(nil), // 15: protocol.chat.v1.Message (*MessageWithId)(nil), // 16: protocol.chat.v1.MessageWithId (*GetChannelMessagesRequest)(nil), // 17: protocol.chat.v1.GetChannelMessagesRequest (*GetChannelMessagesResponse)(nil), // 18: protocol.chat.v1.GetChannelMessagesResponse (*GetMessageRequest)(nil), // 19: protocol.chat.v1.GetMessageRequest (*GetMessageResponse)(nil), // 20: protocol.chat.v1.GetMessageResponse (*DeleteMessageRequest)(nil), // 21: protocol.chat.v1.DeleteMessageRequest (*DeleteMessageResponse)(nil), // 22: protocol.chat.v1.DeleteMessageResponse (*TriggerActionRequest)(nil), // 23: protocol.chat.v1.TriggerActionRequest (*TriggerActionResponse)(nil), // 24: protocol.chat.v1.TriggerActionResponse (*SendMessageRequest)(nil), // 25: protocol.chat.v1.SendMessageRequest (*SendMessageResponse)(nil), // 26: protocol.chat.v1.SendMessageResponse (*UpdateMessageTextRequest)(nil), // 27: protocol.chat.v1.UpdateMessageTextRequest (*UpdateMessageTextResponse)(nil), // 28: protocol.chat.v1.UpdateMessageTextResponse (*PinMessageRequest)(nil), // 29: protocol.chat.v1.PinMessageRequest (*PinMessageResponse)(nil), // 30: protocol.chat.v1.PinMessageResponse (*UnpinMessageRequest)(nil), // 31: protocol.chat.v1.UnpinMessageRequest (*UnpinMessageResponse)(nil), // 32: protocol.chat.v1.UnpinMessageResponse (*GetPinnedMessagesRequest)(nil), // 33: protocol.chat.v1.GetPinnedMessagesRequest (*GetPinnedMessagesResponse)(nil), // 34: protocol.chat.v1.GetPinnedMessagesResponse (*AddReactionRequest)(nil), // 35: protocol.chat.v1.AddReactionRequest (*AddReactionResponse)(nil), // 36: protocol.chat.v1.AddReactionResponse (*RemoveReactionRequest)(nil), // 37: protocol.chat.v1.RemoveReactionRequest (*RemoveReactionResponse)(nil), // 38: protocol.chat.v1.RemoveReactionResponse (*ActionPayload_Button)(nil), // 39: protocol.chat.v1.ActionPayload.Button (*ActionPayload_Dropdown)(nil), // 40: protocol.chat.v1.ActionPayload.Dropdown (*ActionPayload_Input)(nil), // 41: protocol.chat.v1.ActionPayload.Input (*Action_Button)(nil), // 42: protocol.chat.v1.Action.Button (*Action_Dropdown)(nil), // 43: protocol.chat.v1.Action.Dropdown (*Action_Input)(nil), // 44: protocol.chat.v1.Action.Input (*Action_Dropdown_Entry)(nil), // 45: protocol.chat.v1.Action.Dropdown.Entry (*Embed_EmbedHeading)(nil), // 46: protocol.chat.v1.Embed.EmbedHeading (*Embed_EmbedField)(nil), // 47: protocol.chat.v1.Embed.EmbedField (*Content_TextContent)(nil), // 48: protocol.chat.v1.Content.TextContent (*Content_EmbedContent)(nil), // 49: protocol.chat.v1.Content.EmbedContent (*Content_AttachmentContent)(nil), // 50: protocol.chat.v1.Content.AttachmentContent (*Content_PhotoContent)(nil), // 51: protocol.chat.v1.Content.PhotoContent (*Content_InviteRejected)(nil), // 52: protocol.chat.v1.Content.InviteRejected (*Content_InviteAccepted)(nil), // 53: protocol.chat.v1.Content.InviteAccepted (*Content_RoomUpgradedToGuild)(nil), // 54: protocol.chat.v1.Content.RoomUpgradedToGuild (*Format_Bold)(nil), // 55: protocol.chat.v1.Format.Bold (*Format_Italic)(nil), // 56: protocol.chat.v1.Format.Italic (*Format_Underline)(nil), // 57: protocol.chat.v1.Format.Underline (*Format_Monospace)(nil), // 58: protocol.chat.v1.Format.Monospace (*Format_Superscript)(nil), // 59: protocol.chat.v1.Format.Superscript (*Format_Subscript)(nil), // 60: protocol.chat.v1.Format.Subscript (*Format_CodeBlock)(nil), // 61: protocol.chat.v1.Format.CodeBlock (*Format_UserMention)(nil), // 62: protocol.chat.v1.Format.UserMention (*Format_RoleMention)(nil), // 63: protocol.chat.v1.Format.RoleMention (*Format_ChannelMention)(nil), // 64: protocol.chat.v1.Format.ChannelMention (*Format_GuildMention)(nil), // 65: protocol.chat.v1.Format.GuildMention (*Format_Emoji)(nil), // 66: protocol.chat.v1.Format.Emoji (*Format_Color)(nil), // 67: protocol.chat.v1.Format.Color (*Format_Localization)(nil), // 68: protocol.chat.v1.Format.Localization (*v1.Empty)(nil), // 69: protocol.harmonytypes.v1.Empty (*v11.Emote)(nil), // 70: protocol.emote.v1.Emote (*v1.Metadata)(nil), // 71: protocol.harmonytypes.v1.Metadata } var file_chat_v1_messages_proto_depIdxs = []int32{ 69, // 0: protocol.chat.v1.Overrides.webhook:type_name -> protocol.harmonytypes.v1.Empty 69, // 1: protocol.chat.v1.Overrides.system_plurality:type_name -> protocol.harmonytypes.v1.Empty 69, // 2: protocol.chat.v1.Overrides.system_message:type_name -> protocol.harmonytypes.v1.Empty 69, // 3: protocol.chat.v1.Overrides.bridge:type_name -> protocol.harmonytypes.v1.Empty 39, // 4: protocol.chat.v1.ActionPayload.button:type_name -> protocol.chat.v1.ActionPayload.Button 40, // 5: protocol.chat.v1.ActionPayload.dropdown:type_name -> protocol.chat.v1.ActionPayload.Dropdown 41, // 6: protocol.chat.v1.ActionPayload.input:type_name -> protocol.chat.v1.ActionPayload.Input 0, // 7: protocol.chat.v1.Action.action_type:type_name -> protocol.chat.v1.Action.Type 42, // 8: protocol.chat.v1.Action.button:type_name -> protocol.chat.v1.Action.Button 43, // 9: protocol.chat.v1.Action.dropdown:type_name -> protocol.chat.v1.Action.Dropdown 44, // 10: protocol.chat.v1.Action.input:type_name -> protocol.chat.v1.Action.Input 14, // 11: protocol.chat.v1.Embed.body:type_name -> protocol.chat.v1.FormattedText 46, // 12: protocol.chat.v1.Embed.header:type_name -> protocol.chat.v1.Embed.EmbedHeading 46, // 13: protocol.chat.v1.Embed.footer:type_name -> protocol.chat.v1.Embed.EmbedHeading 47, // 14: protocol.chat.v1.Embed.fields:type_name -> protocol.chat.v1.Embed.EmbedField 14, // 15: protocol.chat.v1.Photo.caption:type_name -> protocol.chat.v1.FormattedText 8, // 16: protocol.chat.v1.Photo.minithumbnail:type_name -> protocol.chat.v1.Minithumbnail 14, // 17: protocol.chat.v1.Attachment.caption:type_name -> protocol.chat.v1.FormattedText 48, // 18: protocol.chat.v1.Content.text_message:type_name -> protocol.chat.v1.Content.TextContent 49, // 19: protocol.chat.v1.Content.embed_message:type_name -> protocol.chat.v1.Content.EmbedContent 50, // 20: protocol.chat.v1.Content.attachment_message:type_name -> protocol.chat.v1.Content.AttachmentContent 51, // 21: protocol.chat.v1.Content.photo_message:type_name -> protocol.chat.v1.Content.PhotoContent 52, // 22: protocol.chat.v1.Content.invite_rejected:type_name -> protocol.chat.v1.Content.InviteRejected 53, // 23: protocol.chat.v1.Content.invite_accepted:type_name -> protocol.chat.v1.Content.InviteAccepted 54, // 24: protocol.chat.v1.Content.room_upgraded_to_guild:type_name -> protocol.chat.v1.Content.RoomUpgradedToGuild 70, // 25: protocol.chat.v1.Reaction.emote:type_name -> protocol.emote.v1.Emote 55, // 26: protocol.chat.v1.Format.bold:type_name -> protocol.chat.v1.Format.Bold 56, // 27: protocol.chat.v1.Format.italic:type_name -> protocol.chat.v1.Format.Italic 57, // 28: protocol.chat.v1.Format.underline:type_name -> protocol.chat.v1.Format.Underline 58, // 29: protocol.chat.v1.Format.monospace:type_name -> protocol.chat.v1.Format.Monospace 59, // 30: protocol.chat.v1.Format.superscript:type_name -> protocol.chat.v1.Format.Superscript 60, // 31: protocol.chat.v1.Format.subscript:type_name -> protocol.chat.v1.Format.Subscript 61, // 32: protocol.chat.v1.Format.code_block:type_name -> protocol.chat.v1.Format.CodeBlock 62, // 33: protocol.chat.v1.Format.user_mention:type_name -> protocol.chat.v1.Format.UserMention 63, // 34: protocol.chat.v1.Format.role_mention:type_name -> protocol.chat.v1.Format.RoleMention 64, // 35: protocol.chat.v1.Format.channel_mention:type_name -> protocol.chat.v1.Format.ChannelMention 65, // 36: protocol.chat.v1.Format.guild_mention:type_name -> protocol.chat.v1.Format.GuildMention 66, // 37: protocol.chat.v1.Format.emoji:type_name -> protocol.chat.v1.Format.Emoji 67, // 38: protocol.chat.v1.Format.color:type_name -> protocol.chat.v1.Format.Color 68, // 39: protocol.chat.v1.Format.localization:type_name -> protocol.chat.v1.Format.Localization 13, // 40: protocol.chat.v1.FormattedText.format:type_name -> protocol.chat.v1.Format 71, // 41: protocol.chat.v1.Message.metadata:type_name -> protocol.harmonytypes.v1.Metadata 4, // 42: protocol.chat.v1.Message.overrides:type_name -> protocol.chat.v1.Overrides 11, // 43: protocol.chat.v1.Message.content:type_name -> protocol.chat.v1.Content 12, // 44: protocol.chat.v1.Message.reactions:type_name -> protocol.chat.v1.Reaction 15, // 45: protocol.chat.v1.MessageWithId.message:type_name -> protocol.chat.v1.Message 3, // 46: protocol.chat.v1.GetChannelMessagesRequest.direction:type_name -> protocol.chat.v1.GetChannelMessagesRequest.Direction 16, // 47: protocol.chat.v1.GetChannelMessagesResponse.messages:type_name -> protocol.chat.v1.MessageWithId 15, // 48: protocol.chat.v1.GetMessageResponse.message:type_name -> protocol.chat.v1.Message 5, // 49: protocol.chat.v1.TriggerActionRequest.payload:type_name -> protocol.chat.v1.ActionPayload 11, // 50: protocol.chat.v1.SendMessageRequest.content:type_name -> protocol.chat.v1.Content 4, // 51: protocol.chat.v1.SendMessageRequest.overrides:type_name -> protocol.chat.v1.Overrides 71, // 52: protocol.chat.v1.SendMessageRequest.metadata:type_name -> protocol.harmonytypes.v1.Metadata 14, // 53: protocol.chat.v1.UpdateMessageTextRequest.new_content:type_name -> protocol.chat.v1.FormattedText 70, // 54: protocol.chat.v1.AddReactionRequest.emote:type_name -> protocol.emote.v1.Emote 70, // 55: protocol.chat.v1.RemoveReactionRequest.emote:type_name -> protocol.emote.v1.Emote 45, // 56: protocol.chat.v1.Action.Dropdown.entries:type_name -> protocol.chat.v1.Action.Dropdown.Entry 14, // 57: protocol.chat.v1.Embed.EmbedField.body:type_name -> protocol.chat.v1.FormattedText 1, // 58: protocol.chat.v1.Embed.EmbedField.presentation:type_name -> protocol.chat.v1.Embed.EmbedField.Presentation 6, // 59: protocol.chat.v1.Embed.EmbedField.actions:type_name -> protocol.chat.v1.Action 14, // 60: protocol.chat.v1.Content.TextContent.content:type_name -> protocol.chat.v1.FormattedText 7, // 61: protocol.chat.v1.Content.EmbedContent.embeds:type_name -> protocol.chat.v1.Embed 10, // 62: protocol.chat.v1.Content.AttachmentContent.files:type_name -> protocol.chat.v1.Attachment 9, // 63: protocol.chat.v1.Content.PhotoContent.photos:type_name -> protocol.chat.v1.Photo 2, // 64: protocol.chat.v1.Format.Color.kind:type_name -> protocol.chat.v1.Format.Color.Kind 65, // [65:65] is the sub-list for method output_type 65, // [65:65] is the sub-list for method input_type 65, // [65:65] is the sub-list for extension type_name 65, // [65:65] is the sub-list for extension extendee 0, // [0:65] is the sub-list for field type_name } func init() { file_chat_v1_messages_proto_init() } func file_chat_v1_messages_proto_init() { if File_chat_v1_messages_proto != nil { return } if !protoimpl.UnsafeEnabled { file_chat_v1_messages_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Overrides); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_v1_messages_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ActionPayload); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_v1_messages_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Action); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_v1_messages_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Embed); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_v1_messages_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Minithumbnail); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_v1_messages_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Photo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_v1_messages_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Attachment); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_v1_messages_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Content); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_v1_messages_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Reaction); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_v1_messages_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Format); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_v1_messages_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FormattedText); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_v1_messages_proto_msgTypes[11].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_chat_v1_messages_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MessageWithId); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_v1_messages_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetChannelMessagesRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_v1_messages_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetChannelMessagesResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_v1_messages_proto_msgTypes[15].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_chat_v1_messages_proto_msgTypes[16].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_chat_v1_messages_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteMessageRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_v1_messages_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteMessageResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_v1_messages_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TriggerActionRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_v1_messages_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TriggerActionResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_v1_messages_proto_msgTypes[21].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_chat_v1_messages_proto_msgTypes[22].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_chat_v1_messages_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateMessageTextRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_v1_messages_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateMessageTextResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_v1_messages_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PinMessageRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_v1_messages_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PinMessageResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_v1_messages_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UnpinMessageRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_v1_messages_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UnpinMessageResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_v1_messages_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetPinnedMessagesRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_v1_messages_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetPinnedMessagesResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_v1_messages_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AddReactionRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_v1_messages_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AddReactionResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_v1_messages_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RemoveReactionRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_v1_messages_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RemoveReactionResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_v1_messages_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ActionPayload_Button); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_v1_messages_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ActionPayload_Dropdown); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_v1_messages_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ActionPayload_Input); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_v1_messages_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Action_Button); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_v1_messages_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Action_Dropdown); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_v1_messages_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Action_Input); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_v1_messages_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Action_Dropdown_Entry); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_v1_messages_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Embed_EmbedHeading); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_v1_messages_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Embed_EmbedField); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_v1_messages_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Content_TextContent); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_v1_messages_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Content_EmbedContent); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_v1_messages_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Content_AttachmentContent); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_v1_messages_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Content_PhotoContent); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_v1_messages_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Content_InviteRejected); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_v1_messages_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Content_InviteAccepted); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_v1_messages_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Content_RoomUpgradedToGuild); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_v1_messages_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Format_Bold); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_v1_messages_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Format_Italic); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_v1_messages_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Format_Underline); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_v1_messages_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Format_Monospace); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_v1_messages_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Format_Superscript); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_v1_messages_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Format_Subscript); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_v1_messages_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Format_CodeBlock); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_v1_messages_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Format_UserMention); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_v1_messages_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Format_RoleMention); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_v1_messages_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Format_ChannelMention); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_v1_messages_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Format_GuildMention); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_v1_messages_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Format_Emoji); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_v1_messages_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Format_Color); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_chat_v1_messages_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Format_Localization); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } } file_chat_v1_messages_proto_msgTypes[0].OneofWrappers = []interface{}{ (*Overrides_UserDefined)(nil), (*Overrides_Webhook)(nil), (*Overrides_SystemPlurality)(nil), (*Overrides_SystemMessage)(nil), (*Overrides_Bridge)(nil), } file_chat_v1_messages_proto_msgTypes[1].OneofWrappers = []interface{}{ (*ActionPayload_Button_)(nil), (*ActionPayload_Dropdown_)(nil), (*ActionPayload_Input_)(nil), } file_chat_v1_messages_proto_msgTypes[2].OneofWrappers = []interface{}{ (*Action_Button_)(nil), (*Action_Dropdown_)(nil), (*Action_Input_)(nil), } file_chat_v1_messages_proto_msgTypes[3].OneofWrappers = []interface{}{} file_chat_v1_messages_proto_msgTypes[6].OneofWrappers = []interface{}{} file_chat_v1_messages_proto_msgTypes[7].OneofWrappers = []interface{}{ (*Content_TextMessage)(nil), (*Content_EmbedMessage)(nil), (*Content_AttachmentMessage)(nil), (*Content_PhotoMessage)(nil), (*Content_InviteRejected_)(nil), (*Content_InviteAccepted_)(nil), (*Content_RoomUpgradedToGuild_)(nil), } file_chat_v1_messages_proto_msgTypes[9].OneofWrappers = []interface{}{ (*Format_Bold_)(nil), (*Format_Italic_)(nil), (*Format_Underline_)(nil), (*Format_Monospace_)(nil), (*Format_Superscript_)(nil), (*Format_Subscript_)(nil), (*Format_CodeBlock_)(nil), (*Format_UserMention_)(nil), (*Format_RoleMention_)(nil), (*Format_ChannelMention_)(nil), (*Format_GuildMention_)(nil), (*Format_Emoji_)(nil), (*Format_Color_)(nil), (*Format_Localization_)(nil), } file_chat_v1_messages_proto_msgTypes[11].OneofWrappers = []interface{}{} file_chat_v1_messages_proto_msgTypes[13].OneofWrappers = []interface{}{} file_chat_v1_messages_proto_msgTypes[21].OneofWrappers = []interface{}{} file_chat_v1_messages_proto_msgTypes[38].OneofWrappers = []interface{}{} file_chat_v1_messages_proto_msgTypes[42].OneofWrappers = []interface{}{} file_chat_v1_messages_proto_msgTypes[43].OneofWrappers = []interface{}{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_chat_v1_messages_proto_rawDesc, NumEnums: 4, NumMessages: 65, NumExtensions: 0, NumServices: 0, }, GoTypes: file_chat_v1_messages_proto_goTypes, DependencyIndexes: file_chat_v1_messages_proto_depIdxs, EnumInfos: file_chat_v1_messages_proto_enumTypes, MessageInfos: file_chat_v1_messages_proto_msgTypes, }.Build() File_chat_v1_messages_proto = out.File file_chat_v1_messages_proto_rawDesc = nil file_chat_v1_messages_proto_goTypes = nil file_chat_v1_messages_proto_depIdxs = nil }