// Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.27.1 // protoc v7.34.1 // source: model.proto package pbx import ( 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) ) // Authentication level type AuthLevel int32 const ( AuthLevel_NONE AuthLevel = 0 AuthLevel_ANON AuthLevel = 10 AuthLevel_AUTH AuthLevel = 20 AuthLevel_ROOT AuthLevel = 30 ) // Enum value maps for AuthLevel. var ( AuthLevel_name = map[int32]string{ 0: "NONE", 10: "ANON", 20: "AUTH", 30: "ROOT", } AuthLevel_value = map[string]int32{ "NONE": 0, "ANON": 10, "AUTH": 20, "ROOT": 30, } ) func (x AuthLevel) Enum() *AuthLevel { p := new(AuthLevel) *p = x return p } func (x AuthLevel) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (AuthLevel) Descriptor() protoreflect.EnumDescriptor { return file_model_proto_enumTypes[0].Descriptor() } func (AuthLevel) Type() protoreflect.EnumType { return &file_model_proto_enumTypes[0] } func (x AuthLevel) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use AuthLevel.Descriptor instead. func (AuthLevel) EnumDescriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{0} } type InfoNote int32 const ( // Invalid value. The name must be globally unique. InfoNote_X1 InfoNote = 0 InfoNote_READ InfoNote = 1 InfoNote_RECV InfoNote = 2 InfoNote_KP InfoNote = 3 InfoNote_CALL InfoNote = 4 ) // Enum value maps for InfoNote. var ( InfoNote_name = map[int32]string{ 0: "X1", 1: "READ", 2: "RECV", 3: "KP", 4: "CALL", } InfoNote_value = map[string]int32{ "X1": 0, "READ": 1, "RECV": 2, "KP": 3, "CALL": 4, } ) func (x InfoNote) Enum() *InfoNote { p := new(InfoNote) *p = x return p } func (x InfoNote) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (InfoNote) Descriptor() protoreflect.EnumDescriptor { return file_model_proto_enumTypes[1].Descriptor() } func (InfoNote) Type() protoreflect.EnumType { return &file_model_proto_enumTypes[1] } func (x InfoNote) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use InfoNote.Descriptor instead. func (InfoNote) EnumDescriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{1} } type CallEvent int32 const ( // Invalid value. The name must be globally unique. CallEvent_X2 CallEvent = 0 CallEvent_ACCEPT CallEvent = 1 CallEvent_ANSWER CallEvent = 2 CallEvent_HANG_UP CallEvent = 3 CallEvent_ICE_CANDIDATE CallEvent = 4 CallEvent_INVITE CallEvent = 5 CallEvent_OFFER CallEvent = 6 CallEvent_RINGING CallEvent = 7 ) // Enum value maps for CallEvent. var ( CallEvent_name = map[int32]string{ 0: "X2", 1: "ACCEPT", 2: "ANSWER", 3: "HANG_UP", 4: "ICE_CANDIDATE", 5: "INVITE", 6: "OFFER", 7: "RINGING", } CallEvent_value = map[string]int32{ "X2": 0, "ACCEPT": 1, "ANSWER": 2, "HANG_UP": 3, "ICE_CANDIDATE": 4, "INVITE": 5, "OFFER": 6, "RINGING": 7, } ) func (x CallEvent) Enum() *CallEvent { p := new(CallEvent) *p = x return p } func (x CallEvent) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (CallEvent) Descriptor() protoreflect.EnumDescriptor { return file_model_proto_enumTypes[2].Descriptor() } func (CallEvent) Type() protoreflect.EnumType { return &file_model_proto_enumTypes[2] } func (x CallEvent) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use CallEvent.Descriptor instead. func (CallEvent) EnumDescriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{2} } // Plugin response codes type RespCode int32 const ( // Instruct Tinode server to continue with default processing of the client request. RespCode_CONTINUE RespCode = 0 // Drop the request as if the client did not send it RespCode_DROP RespCode = 1 // Send the the provided srvmsg response to the client. ServerResp must contain non-zero // srvmsg. RespCode_RESPOND RespCode = 2 // Replace client's original request with the provided clmsg request then continue with // processing. ServerResp must contain non-zero clmsg. RespCode_REPLACE RespCode = 3 ) // Enum value maps for RespCode. var ( RespCode_name = map[int32]string{ 0: "CONTINUE", 1: "DROP", 2: "RESPOND", 3: "REPLACE", } RespCode_value = map[string]int32{ "CONTINUE": 0, "DROP": 1, "RESPOND": 2, "REPLACE": 3, } ) func (x RespCode) Enum() *RespCode { p := new(RespCode) *p = x return p } func (x RespCode) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (RespCode) Descriptor() protoreflect.EnumDescriptor { return file_model_proto_enumTypes[3].Descriptor() } func (RespCode) Type() protoreflect.EnumType { return &file_model_proto_enumTypes[3] } func (x RespCode) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use RespCode.Descriptor instead. func (RespCode) EnumDescriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{3} } type Crud int32 const ( Crud_CREATE Crud = 0 Crud_UPDATE Crud = 1 Crud_DELETE Crud = 2 ) // Enum value maps for Crud. var ( Crud_name = map[int32]string{ 0: "CREATE", 1: "UPDATE", 2: "DELETE", } Crud_value = map[string]int32{ "CREATE": 0, "UPDATE": 1, "DELETE": 2, } ) func (x Crud) Enum() *Crud { p := new(Crud) *p = x return p } func (x Crud) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (Crud) Descriptor() protoreflect.EnumDescriptor { return file_model_proto_enumTypes[4].Descriptor() } func (Crud) Type() protoreflect.EnumType { return &file_model_proto_enumTypes[4] } func (x Crud) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use Crud.Descriptor instead. func (Crud) EnumDescriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{4} } // What to delete, either "msg" to delete messages (default) or "topic" to delete the topic or "sub" // to delete a subscription to topic. type ClientDel_What int32 const ( // Invalid value. The name must be globally unique. ClientDel_X0 ClientDel_What = 0 ClientDel_MSG ClientDel_What = 1 ClientDel_TOPIC ClientDel_What = 2 ClientDel_SUB ClientDel_What = 3 ClientDel_USER ClientDel_What = 4 ClientDel_CRED ClientDel_What = 5 ) // Enum value maps for ClientDel_What. var ( ClientDel_What_name = map[int32]string{ 0: "X0", 1: "MSG", 2: "TOPIC", 3: "SUB", 4: "USER", 5: "CRED", } ClientDel_What_value = map[string]int32{ "X0": 0, "MSG": 1, "TOPIC": 2, "SUB": 3, "USER": 4, "CRED": 5, } ) func (x ClientDel_What) Enum() *ClientDel_What { p := new(ClientDel_What) *p = x return p } func (x ClientDel_What) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (ClientDel_What) Descriptor() protoreflect.EnumDescriptor { return file_model_proto_enumTypes[5].Descriptor() } func (ClientDel_What) Type() protoreflect.EnumType { return &file_model_proto_enumTypes[5] } func (x ClientDel_What) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use ClientDel_What.Descriptor instead. func (ClientDel_What) EnumDescriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{18, 0} } type ServerPres_What int32 const ( // Invalid value. The name must be globally unique. ServerPres_X3 ServerPres_What = 0 ServerPres_ON ServerPres_What = 1 ServerPres_OFF ServerPres_What = 2 ServerPres_UA ServerPres_What = 3 ServerPres_UPD ServerPres_What = 4 ServerPres_GONE ServerPres_What = 5 ServerPres_ACS ServerPres_What = 6 ServerPres_TERM ServerPres_What = 7 ServerPres_MSG ServerPres_What = 8 ServerPres_READ ServerPres_What = 9 ServerPres_RECV ServerPres_What = 10 ServerPres_DEL ServerPres_What = 11 ServerPres_TAGS ServerPres_What = 12 ServerPres_AUX ServerPres_What = 13 ) // Enum value maps for ServerPres_What. var ( ServerPres_What_name = map[int32]string{ 0: "X3", 1: "ON", 2: "OFF", 3: "UA", 4: "UPD", 5: "GONE", 6: "ACS", 7: "TERM", 8: "MSG", 9: "READ", 10: "RECV", 11: "DEL", 12: "TAGS", 13: "AUX", } ServerPres_What_value = map[string]int32{ "X3": 0, "ON": 1, "OFF": 2, "UA": 3, "UPD": 4, "GONE": 5, "ACS": 6, "TERM": 7, "MSG": 8, "READ": 9, "RECV": 10, "DEL": 11, "TAGS": 12, "AUX": 13, } ) func (x ServerPres_What) Enum() *ServerPres_What { p := new(ServerPres_What) *p = x return p } func (x ServerPres_What) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (ServerPres_What) Descriptor() protoreflect.EnumDescriptor { return file_model_proto_enumTypes[6].Descriptor() } func (ServerPres_What) Type() protoreflect.EnumType { return &file_model_proto_enumTypes[6] } func (x ServerPres_What) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use ServerPres_What.Descriptor instead. func (ServerPres_What) EnumDescriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{28, 0} } // Dummy placeholder message. type Unused struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *Unused) Reset() { *x = Unused{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Unused) String() string { return protoimpl.X.MessageStringOf(x) } func (*Unused) ProtoMessage() {} func (x *Unused) ProtoReflect() protoreflect.Message { mi := &file_model_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 Unused.ProtoReflect.Descriptor instead. func (*Unused) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{0} } // Topic default access mode type DefaultAcsMode struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Auth string `protobuf:"bytes,1,opt,name=auth,proto3" json:"auth,omitempty"` Anon string `protobuf:"bytes,2,opt,name=anon,proto3" json:"anon,omitempty"` } func (x *DefaultAcsMode) Reset() { *x = DefaultAcsMode{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DefaultAcsMode) String() string { return protoimpl.X.MessageStringOf(x) } func (*DefaultAcsMode) ProtoMessage() {} func (x *DefaultAcsMode) ProtoReflect() protoreflect.Message { mi := &file_model_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 DefaultAcsMode.ProtoReflect.Descriptor instead. func (*DefaultAcsMode) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{1} } func (x *DefaultAcsMode) GetAuth() string { if x != nil { return x.Auth } return "" } func (x *DefaultAcsMode) GetAnon() string { if x != nil { return x.Anon } return "" } // Actual access mode type AccessMode struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Access mode requested by the user Want string `protobuf:"bytes,1,opt,name=want,proto3" json:"want,omitempty"` // Access mode granted to the user by the admin Given string `protobuf:"bytes,2,opt,name=given,proto3" json:"given,omitempty"` } func (x *AccessMode) Reset() { *x = AccessMode{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AccessMode) String() string { return protoimpl.X.MessageStringOf(x) } func (*AccessMode) ProtoMessage() {} func (x *AccessMode) ProtoReflect() protoreflect.Message { mi := &file_model_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 AccessMode.ProtoReflect.Descriptor instead. func (*AccessMode) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{2} } func (x *AccessMode) GetWant() string { if x != nil { return x.Want } return "" } func (x *AccessMode) GetGiven() string { if x != nil { return x.Given } return "" } // SetSub: payload in set.sub request to update current subscription or invite another user, {sub.what} == "sub" type SetSub struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // User affected by this request. Default (empty): current user UserId string `protobuf:"bytes,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` // Access mode change, either Given or Want depending on context Mode string `protobuf:"bytes,2,opt,name=mode,proto3" json:"mode,omitempty"` } func (x *SetSub) Reset() { *x = SetSub{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SetSub) String() string { return protoimpl.X.MessageStringOf(x) } func (*SetSub) ProtoMessage() {} func (x *SetSub) ProtoReflect() protoreflect.Message { mi := &file_model_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 SetSub.ProtoReflect.Descriptor instead. func (*SetSub) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{3} } func (x *SetSub) GetUserId() string { if x != nil { return x.UserId } return "" } func (x *SetSub) GetMode() string { if x != nil { return x.Mode } return "" } // Credentials such as email or phone number type ClientCred struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Credential type, i.e. `email` or `tel`. Method string `protobuf:"bytes,1,opt,name=method,proto3" json:"method,omitempty"` // Value to verify, i.e. `user@example.com` or `+18003287448` Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` // Verification response Response string `protobuf:"bytes,3,opt,name=response,proto3" json:"response,omitempty"` // Request parameters, such as preferences or country code. Params map[string][]byte `protobuf:"bytes,4,rep,name=params,proto3" json:"params,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } func (x *ClientCred) Reset() { *x = ClientCred{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ClientCred) String() string { return protoimpl.X.MessageStringOf(x) } func (*ClientCred) ProtoMessage() {} func (x *ClientCred) ProtoReflect() protoreflect.Message { mi := &file_model_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 ClientCred.ProtoReflect.Descriptor instead. func (*ClientCred) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{4} } func (x *ClientCred) GetMethod() string { if x != nil { return x.Method } return "" } func (x *ClientCred) GetValue() string { if x != nil { return x.Value } return "" } func (x *ClientCred) GetResponse() string { if x != nil { return x.Response } return "" } func (x *ClientCred) GetParams() map[string][]byte { if x != nil { return x.Params } return nil } // SetDesc: C2S in set.what == "desc" and sub.init message type SetDesc struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields DefaultAcs *DefaultAcsMode `protobuf:"bytes,1,opt,name=default_acs,json=defaultAcs,proto3" json:"default_acs,omitempty"` Public []byte `protobuf:"bytes,2,opt,name=public,proto3" json:"public,omitempty"` Private []byte `protobuf:"bytes,3,opt,name=private,proto3" json:"private,omitempty"` Trusted []byte `protobuf:"bytes,4,opt,name=trusted,proto3" json:"trusted,omitempty"` } func (x *SetDesc) Reset() { *x = SetDesc{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SetDesc) String() string { return protoimpl.X.MessageStringOf(x) } func (*SetDesc) ProtoMessage() {} func (x *SetDesc) ProtoReflect() protoreflect.Message { mi := &file_model_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 SetDesc.ProtoReflect.Descriptor instead. func (*SetDesc) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{5} } func (x *SetDesc) GetDefaultAcs() *DefaultAcsMode { if x != nil { return x.DefaultAcs } return nil } func (x *SetDesc) GetPublic() []byte { if x != nil { return x.Public } return nil } func (x *SetDesc) GetPrivate() []byte { if x != nil { return x.Private } return nil } func (x *SetDesc) GetTrusted() []byte { if x != nil { return x.Trusted } return nil } type SeqRange struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Low int32 `protobuf:"varint,1,opt,name=low,proto3" json:"low,omitempty"` Hi int32 `protobuf:"varint,2,opt,name=hi,proto3" json:"hi,omitempty"` } func (x *SeqRange) Reset() { *x = SeqRange{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SeqRange) String() string { return protoimpl.X.MessageStringOf(x) } func (*SeqRange) ProtoMessage() {} func (x *SeqRange) ProtoReflect() protoreflect.Message { mi := &file_model_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 SeqRange.ProtoReflect.Descriptor instead. func (*SeqRange) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{6} } func (x *SeqRange) GetLow() int32 { if x != nil { return x.Low } return 0 } func (x *SeqRange) GetHi() int32 { if x != nil { return x.Hi } return 0 } type GetOpts struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Timestamp in milliseconds since epoch 01/01/1970 IfModifiedSince int64 `protobuf:"varint,1,opt,name=if_modified_since,json=ifModifiedSince,proto3" json:"if_modified_since,omitempty"` // Limit search to this user ID User string `protobuf:"bytes,2,opt,name=user,proto3" json:"user,omitempty"` // Limit search results to one topic; Topic string `protobuf:"bytes,3,opt,name=topic,proto3" json:"topic,omitempty"` // Load messages with seq id equal or greater than this SinceId int32 `protobuf:"varint,4,opt,name=since_id,json=sinceId,proto3" json:"since_id,omitempty"` // Load messages with seq id lower than this BeforeId int32 `protobuf:"varint,5,opt,name=before_id,json=beforeId,proto3" json:"before_id,omitempty"` // Maximum number of results to return Limit int32 `protobuf:"varint,6,opt,name=limit,proto3" json:"limit,omitempty"` // Load messages by id or ranges of ids Ranges []*SeqRange `protobuf:"bytes,7,rep,name=ranges,proto3" json:"ranges,omitempty"` } func (x *GetOpts) Reset() { *x = GetOpts{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetOpts) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetOpts) ProtoMessage() {} func (x *GetOpts) ProtoReflect() protoreflect.Message { mi := &file_model_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 GetOpts.ProtoReflect.Descriptor instead. func (*GetOpts) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{7} } func (x *GetOpts) GetIfModifiedSince() int64 { if x != nil { return x.IfModifiedSince } return 0 } func (x *GetOpts) GetUser() string { if x != nil { return x.User } return "" } func (x *GetOpts) GetTopic() string { if x != nil { return x.Topic } return "" } func (x *GetOpts) GetSinceId() int32 { if x != nil { return x.SinceId } return 0 } func (x *GetOpts) GetBeforeId() int32 { if x != nil { return x.BeforeId } return 0 } func (x *GetOpts) GetLimit() int32 { if x != nil { return x.Limit } return 0 } func (x *GetOpts) GetRanges() []*SeqRange { if x != nil { return x.Ranges } return nil } type GetQuery struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields What string `protobuf:"bytes,1,opt,name=what,proto3" json:"what,omitempty"` // Parameters of "desc" request Desc *GetOpts `protobuf:"bytes,2,opt,name=desc,proto3" json:"desc,omitempty"` // Parameters of "sub" request Sub *GetOpts `protobuf:"bytes,3,opt,name=sub,proto3" json:"sub,omitempty"` // Parameters of "data" request Data *GetOpts `protobuf:"bytes,4,opt,name=data,proto3" json:"data,omitempty"` } func (x *GetQuery) Reset() { *x = GetQuery{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetQuery) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetQuery) ProtoMessage() {} func (x *GetQuery) ProtoReflect() protoreflect.Message { mi := &file_model_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 GetQuery.ProtoReflect.Descriptor instead. func (*GetQuery) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{8} } func (x *GetQuery) GetWhat() string { if x != nil { return x.What } return "" } func (x *GetQuery) GetDesc() *GetOpts { if x != nil { return x.Desc } return nil } func (x *GetQuery) GetSub() *GetOpts { if x != nil { return x.Sub } return nil } func (x *GetQuery) GetData() *GetOpts { if x != nil { return x.Data } return nil } type SetQuery struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Topic metadata, new topic & new subscriptions only Desc *SetDesc `protobuf:"bytes,1,opt,name=desc,proto3" json:"desc,omitempty"` // Subscription parameters Sub *SetSub `protobuf:"bytes,2,opt,name=sub,proto3" json:"sub,omitempty"` // Indexable tags Tags []string `protobuf:"bytes,3,rep,name=tags,proto3" json:"tags,omitempty"` // Credential being updated. Cred *ClientCred `protobuf:"bytes,4,opt,name=cred,proto3" json:"cred,omitempty"` // Auxiliary data. Aux map[string][]byte `protobuf:"bytes,5,rep,name=aux,proto3" json:"aux,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } func (x *SetQuery) Reset() { *x = SetQuery{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SetQuery) String() string { return protoimpl.X.MessageStringOf(x) } func (*SetQuery) ProtoMessage() {} func (x *SetQuery) ProtoReflect() protoreflect.Message { mi := &file_model_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 SetQuery.ProtoReflect.Descriptor instead. func (*SetQuery) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{9} } func (x *SetQuery) GetDesc() *SetDesc { if x != nil { return x.Desc } return nil } func (x *SetQuery) GetSub() *SetSub { if x != nil { return x.Sub } return nil } func (x *SetQuery) GetTags() []string { if x != nil { return x.Tags } return nil } func (x *SetQuery) GetCred() *ClientCred { if x != nil { return x.Cred } return nil } func (x *SetQuery) GetAux() map[string][]byte { if x != nil { return x.Aux } return nil } // Client handshake type ClientHi struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` UserAgent string `protobuf:"bytes,2,opt,name=user_agent,json=userAgent,proto3" json:"user_agent,omitempty"` Ver string `protobuf:"bytes,3,opt,name=ver,proto3" json:"ver,omitempty"` DeviceId string `protobuf:"bytes,4,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"` Lang string `protobuf:"bytes,5,opt,name=lang,proto3" json:"lang,omitempty"` Platform string `protobuf:"bytes,6,opt,name=platform,proto3" json:"platform,omitempty"` Background bool `protobuf:"varint,7,opt,name=background,proto3" json:"background,omitempty"` Tenant string `protobuf:"bytes,8,opt,name=tenant,proto3" json:"tenant,omitempty"` } func (x *ClientHi) Reset() { *x = ClientHi{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ClientHi) String() string { return protoimpl.X.MessageStringOf(x) } func (*ClientHi) ProtoMessage() {} func (x *ClientHi) ProtoReflect() protoreflect.Message { mi := &file_model_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 ClientHi.ProtoReflect.Descriptor instead. func (*ClientHi) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{10} } func (x *ClientHi) GetId() string { if x != nil { return x.Id } return "" } func (x *ClientHi) GetUserAgent() string { if x != nil { return x.UserAgent } return "" } func (x *ClientHi) GetVer() string { if x != nil { return x.Ver } return "" } func (x *ClientHi) GetDeviceId() string { if x != nil { return x.DeviceId } return "" } func (x *ClientHi) GetLang() string { if x != nil { return x.Lang } return "" } func (x *ClientHi) GetPlatform() string { if x != nil { return x.Platform } return "" } func (x *ClientHi) GetBackground() bool { if x != nil { return x.Background } return false } func (x *ClientHi) GetTenant() string { if x != nil { return x.Tenant } return "" } // User creation message {acc} type ClientAcc struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // User being created or updated UserId string `protobuf:"bytes,2,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` // The initial authentication scheme the account can use Scheme string `protobuf:"bytes,3,opt,name=scheme,proto3" json:"scheme,omitempty"` // Shared secret Secret []byte `protobuf:"bytes,4,opt,name=secret,proto3" json:"secret,omitempty"` // Authenticate session with the newly created account Login bool `protobuf:"varint,5,opt,name=login,proto3" json:"login,omitempty"` // Indexable tags for user discovery Tags []string `protobuf:"bytes,6,rep,name=tags,proto3" json:"tags,omitempty"` // User initialization data when creating a new user, otherwise ignored Desc *SetDesc `protobuf:"bytes,7,opt,name=desc,proto3" json:"desc,omitempty"` // Credentials for verification. Cred []*ClientCred `protobuf:"bytes,8,rep,name=cred,proto3" json:"cred,omitempty"` // Authentication token used for resetting a password. Token []byte `protobuf:"bytes,9,opt,name=token,proto3" json:"token,omitempty"` // Account state: normal ("ok"), suspended State string `protobuf:"bytes,10,opt,name=state,proto3" json:"state,omitempty"` // AuthLevel AuthLevel AuthLevel `protobuf:"varint,11,opt,name=auth_level,json=authLevel,proto3,enum=pbx.AuthLevel" json:"auth_level,omitempty"` // Temporary auth params for one-off actions like password reset. TmpScheme string `protobuf:"bytes,12,opt,name=tmp_scheme,json=tmpScheme,proto3" json:"tmp_scheme,omitempty"` TmpSecret []byte `protobuf:"bytes,13,opt,name=tmp_secret,json=tmpSecret,proto3" json:"tmp_secret,omitempty"` } func (x *ClientAcc) Reset() { *x = ClientAcc{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ClientAcc) String() string { return protoimpl.X.MessageStringOf(x) } func (*ClientAcc) ProtoMessage() {} func (x *ClientAcc) ProtoReflect() protoreflect.Message { mi := &file_model_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 ClientAcc.ProtoReflect.Descriptor instead. func (*ClientAcc) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{11} } func (x *ClientAcc) GetId() string { if x != nil { return x.Id } return "" } func (x *ClientAcc) GetUserId() string { if x != nil { return x.UserId } return "" } func (x *ClientAcc) GetScheme() string { if x != nil { return x.Scheme } return "" } func (x *ClientAcc) GetSecret() []byte { if x != nil { return x.Secret } return nil } func (x *ClientAcc) GetLogin() bool { if x != nil { return x.Login } return false } func (x *ClientAcc) GetTags() []string { if x != nil { return x.Tags } return nil } func (x *ClientAcc) GetDesc() *SetDesc { if x != nil { return x.Desc } return nil } func (x *ClientAcc) GetCred() []*ClientCred { if x != nil { return x.Cred } return nil } func (x *ClientAcc) GetToken() []byte { if x != nil { return x.Token } return nil } func (x *ClientAcc) GetState() string { if x != nil { return x.State } return "" } func (x *ClientAcc) GetAuthLevel() AuthLevel { if x != nil { return x.AuthLevel } return AuthLevel_NONE } func (x *ClientAcc) GetTmpScheme() string { if x != nil { return x.TmpScheme } return "" } func (x *ClientAcc) GetTmpSecret() []byte { if x != nil { return x.TmpSecret } return nil } // Login {login} message type ClientLogin struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // Authentication scheme Scheme string `protobuf:"bytes,2,opt,name=scheme,proto3" json:"scheme,omitempty"` // Shared secret Secret []byte `protobuf:"bytes,3,opt,name=secret,proto3" json:"secret,omitempty"` // Credentials for verification. Cred []*ClientCred `protobuf:"bytes,4,rep,name=cred,proto3" json:"cred,omitempty"` } func (x *ClientLogin) Reset() { *x = ClientLogin{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ClientLogin) String() string { return protoimpl.X.MessageStringOf(x) } func (*ClientLogin) ProtoMessage() {} func (x *ClientLogin) ProtoReflect() protoreflect.Message { mi := &file_model_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 ClientLogin.ProtoReflect.Descriptor instead. func (*ClientLogin) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{12} } func (x *ClientLogin) GetId() string { if x != nil { return x.Id } return "" } func (x *ClientLogin) GetScheme() string { if x != nil { return x.Scheme } return "" } func (x *ClientLogin) GetSecret() []byte { if x != nil { return x.Secret } return nil } func (x *ClientLogin) GetCred() []*ClientCred { if x != nil { return x.Cred } return nil } // Subscription request {sub} message type ClientSub struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Topic string `protobuf:"bytes,2,opt,name=topic,proto3" json:"topic,omitempty"` // mirrors {set} SetQuery *SetQuery `protobuf:"bytes,3,opt,name=set_query,json=setQuery,proto3" json:"set_query,omitempty"` // mirrors {get} GetQuery *GetQuery `protobuf:"bytes,4,opt,name=get_query,json=getQuery,proto3" json:"get_query,omitempty"` } func (x *ClientSub) Reset() { *x = ClientSub{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ClientSub) String() string { return protoimpl.X.MessageStringOf(x) } func (*ClientSub) ProtoMessage() {} func (x *ClientSub) ProtoReflect() protoreflect.Message { mi := &file_model_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 ClientSub.ProtoReflect.Descriptor instead. func (*ClientSub) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{13} } func (x *ClientSub) GetId() string { if x != nil { return x.Id } return "" } func (x *ClientSub) GetTopic() string { if x != nil { return x.Topic } return "" } func (x *ClientSub) GetSetQuery() *SetQuery { if x != nil { return x.SetQuery } return nil } func (x *ClientSub) GetGetQuery() *GetQuery { if x != nil { return x.GetQuery } return nil } // Unsubscribe {leave} request message type ClientLeave struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Topic string `protobuf:"bytes,2,opt,name=topic,proto3" json:"topic,omitempty"` Unsub bool `protobuf:"varint,3,opt,name=unsub,proto3" json:"unsub,omitempty"` } func (x *ClientLeave) Reset() { *x = ClientLeave{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ClientLeave) String() string { return protoimpl.X.MessageStringOf(x) } func (*ClientLeave) ProtoMessage() {} func (x *ClientLeave) ProtoReflect() protoreflect.Message { mi := &file_model_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 ClientLeave.ProtoReflect.Descriptor instead. func (*ClientLeave) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{14} } func (x *ClientLeave) GetId() string { if x != nil { return x.Id } return "" } func (x *ClientLeave) GetTopic() string { if x != nil { return x.Topic } return "" } func (x *ClientLeave) GetUnsub() bool { if x != nil { return x.Unsub } return false } // ClientPub is client's request to publish data to topic subscribers {pub} type ClientPub struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Topic string `protobuf:"bytes,2,opt,name=topic,proto3" json:"topic,omitempty"` NoEcho bool `protobuf:"varint,3,opt,name=no_echo,json=noEcho,proto3" json:"no_echo,omitempty"` Head map[string][]byte `protobuf:"bytes,4,rep,name=head,proto3" json:"head,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` Content []byte `protobuf:"bytes,5,opt,name=content,proto3" json:"content,omitempty"` } func (x *ClientPub) Reset() { *x = ClientPub{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ClientPub) String() string { return protoimpl.X.MessageStringOf(x) } func (*ClientPub) ProtoMessage() {} func (x *ClientPub) ProtoReflect() protoreflect.Message { mi := &file_model_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 ClientPub.ProtoReflect.Descriptor instead. func (*ClientPub) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{15} } func (x *ClientPub) GetId() string { if x != nil { return x.Id } return "" } func (x *ClientPub) GetTopic() string { if x != nil { return x.Topic } return "" } func (x *ClientPub) GetNoEcho() bool { if x != nil { return x.NoEcho } return false } func (x *ClientPub) GetHead() map[string][]byte { if x != nil { return x.Head } return nil } func (x *ClientPub) GetContent() []byte { if x != nil { return x.Content } return nil } // Query topic state {get} type ClientGet struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Topic string `protobuf:"bytes,2,opt,name=topic,proto3" json:"topic,omitempty"` Query *GetQuery `protobuf:"bytes,3,opt,name=query,proto3" json:"query,omitempty"` } func (x *ClientGet) Reset() { *x = ClientGet{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ClientGet) String() string { return protoimpl.X.MessageStringOf(x) } func (*ClientGet) ProtoMessage() {} func (x *ClientGet) ProtoReflect() protoreflect.Message { mi := &file_model_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 ClientGet.ProtoReflect.Descriptor instead. func (*ClientGet) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{16} } func (x *ClientGet) GetId() string { if x != nil { return x.Id } return "" } func (x *ClientGet) GetTopic() string { if x != nil { return x.Topic } return "" } func (x *ClientGet) GetQuery() *GetQuery { if x != nil { return x.Query } return nil } // Update topic state {set} type ClientSet struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Topic string `protobuf:"bytes,2,opt,name=topic,proto3" json:"topic,omitempty"` Query *SetQuery `protobuf:"bytes,3,opt,name=query,proto3" json:"query,omitempty"` } func (x *ClientSet) Reset() { *x = ClientSet{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ClientSet) String() string { return protoimpl.X.MessageStringOf(x) } func (*ClientSet) ProtoMessage() {} func (x *ClientSet) ProtoReflect() protoreflect.Message { mi := &file_model_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 ClientSet.ProtoReflect.Descriptor instead. func (*ClientSet) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{17} } func (x *ClientSet) GetId() string { if x != nil { return x.Id } return "" } func (x *ClientSet) GetTopic() string { if x != nil { return x.Topic } return "" } func (x *ClientSet) GetQuery() *SetQuery { if x != nil { return x.Query } return nil } // ClientDel delete messages or topic type ClientDel struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Topic string `protobuf:"bytes,2,opt,name=topic,proto3" json:"topic,omitempty"` What ClientDel_What `protobuf:"varint,3,opt,name=what,proto3,enum=pbx.ClientDel_What" json:"what,omitempty"` // Delete messages by id or range of ids DelSeq []*SeqRange `protobuf:"bytes,4,rep,name=del_seq,json=delSeq,proto3" json:"del_seq,omitempty"` // User ID of the subscription to delete UserId string `protobuf:"bytes,5,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` // Credential to delete. Cred *ClientCred `protobuf:"bytes,6,opt,name=cred,proto3" json:"cred,omitempty"` // Request to hard-delete messages for all users, if such option is available. Hard bool `protobuf:"varint,7,opt,name=hard,proto3" json:"hard,omitempty"` } func (x *ClientDel) Reset() { *x = ClientDel{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ClientDel) String() string { return protoimpl.X.MessageStringOf(x) } func (*ClientDel) ProtoMessage() {} func (x *ClientDel) ProtoReflect() protoreflect.Message { mi := &file_model_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 ClientDel.ProtoReflect.Descriptor instead. func (*ClientDel) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{18} } func (x *ClientDel) GetId() string { if x != nil { return x.Id } return "" } func (x *ClientDel) GetTopic() string { if x != nil { return x.Topic } return "" } func (x *ClientDel) GetWhat() ClientDel_What { if x != nil { return x.What } return ClientDel_X0 } func (x *ClientDel) GetDelSeq() []*SeqRange { if x != nil { return x.DelSeq } return nil } func (x *ClientDel) GetUserId() string { if x != nil { return x.UserId } return "" } func (x *ClientDel) GetCred() *ClientCred { if x != nil { return x.Cred } return nil } func (x *ClientDel) GetHard() bool { if x != nil { return x.Hard } return false } // ClientNote is a client-generated notification for topic subscribers type ClientNote struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Topic string `protobuf:"bytes,1,opt,name=topic,proto3" json:"topic,omitempty"` // what is being reported: "recv" - message received, "read" - message read, // "kp" - typing notification, "call" - voice/video call What InfoNote `protobuf:"varint,2,opt,name=what,proto3,enum=pbx.InfoNote" json:"what,omitempty"` // Server-issued message ID being reported SeqId int32 `protobuf:"varint,3,opt,name=seq_id,json=seqId,proto3" json:"seq_id,omitempty"` // Client's count of unread messages to report back to the server. Used in push notifications on iOS. Unread int32 `protobuf:"varint,4,opt,name=unread,proto3" json:"unread,omitempty"` // Call event. Event CallEvent `protobuf:"varint,5,opt,name=event,proto3,enum=pbx.CallEvent" json:"event,omitempty"` // Arbitrary json payload (used in video calls). Payload []byte `protobuf:"bytes,6,opt,name=payload,proto3" json:"payload,omitempty"` } func (x *ClientNote) Reset() { *x = ClientNote{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ClientNote) String() string { return protoimpl.X.MessageStringOf(x) } func (*ClientNote) ProtoMessage() {} func (x *ClientNote) ProtoReflect() protoreflect.Message { mi := &file_model_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 ClientNote.ProtoReflect.Descriptor instead. func (*ClientNote) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{19} } func (x *ClientNote) GetTopic() string { if x != nil { return x.Topic } return "" } func (x *ClientNote) GetWhat() InfoNote { if x != nil { return x.What } return InfoNote_X1 } func (x *ClientNote) GetSeqId() int32 { if x != nil { return x.SeqId } return 0 } func (x *ClientNote) GetUnread() int32 { if x != nil { return x.Unread } return 0 } func (x *ClientNote) GetEvent() CallEvent { if x != nil { return x.Event } return CallEvent_X2 } func (x *ClientNote) GetPayload() []byte { if x != nil { return x.Payload } return nil } type ClientExtra struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Attachments []string `protobuf:"bytes,1,rep,name=attachments,proto3" json:"attachments,omitempty"` // Root user may send messages on behalf of other users. OnBehalfOf string `protobuf:"bytes,2,opt,name=on_behalf_of,json=onBehalfOf,proto3" json:"on_behalf_of,omitempty"` AuthLevel AuthLevel `protobuf:"varint,3,opt,name=auth_level,json=authLevel,proto3,enum=pbx.AuthLevel" json:"auth_level,omitempty"` } func (x *ClientExtra) Reset() { *x = ClientExtra{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ClientExtra) String() string { return protoimpl.X.MessageStringOf(x) } func (*ClientExtra) ProtoMessage() {} func (x *ClientExtra) ProtoReflect() protoreflect.Message { mi := &file_model_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 ClientExtra.ProtoReflect.Descriptor instead. func (*ClientExtra) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{20} } func (x *ClientExtra) GetAttachments() []string { if x != nil { return x.Attachments } return nil } func (x *ClientExtra) GetOnBehalfOf() string { if x != nil { return x.OnBehalfOf } return "" } func (x *ClientExtra) GetAuthLevel() AuthLevel { if x != nil { return x.AuthLevel } return AuthLevel_NONE } type ClientMsg struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Types that are assignable to Message: // // *ClientMsg_Hi // *ClientMsg_Acc // *ClientMsg_Login // *ClientMsg_Sub // *ClientMsg_Leave // *ClientMsg_Pub // *ClientMsg_Get // *ClientMsg_Set // *ClientMsg_Del // *ClientMsg_Note Message isClientMsg_Message `protobuf_oneof:"Message"` // Additional message parameters. Extra *ClientExtra `protobuf:"bytes,13,opt,name=extra,proto3" json:"extra,omitempty"` } func (x *ClientMsg) Reset() { *x = ClientMsg{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ClientMsg) String() string { return protoimpl.X.MessageStringOf(x) } func (*ClientMsg) ProtoMessage() {} func (x *ClientMsg) ProtoReflect() protoreflect.Message { mi := &file_model_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 ClientMsg.ProtoReflect.Descriptor instead. func (*ClientMsg) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{21} } func (m *ClientMsg) GetMessage() isClientMsg_Message { if m != nil { return m.Message } return nil } func (x *ClientMsg) GetHi() *ClientHi { if x, ok := x.GetMessage().(*ClientMsg_Hi); ok { return x.Hi } return nil } func (x *ClientMsg) GetAcc() *ClientAcc { if x, ok := x.GetMessage().(*ClientMsg_Acc); ok { return x.Acc } return nil } func (x *ClientMsg) GetLogin() *ClientLogin { if x, ok := x.GetMessage().(*ClientMsg_Login); ok { return x.Login } return nil } func (x *ClientMsg) GetSub() *ClientSub { if x, ok := x.GetMessage().(*ClientMsg_Sub); ok { return x.Sub } return nil } func (x *ClientMsg) GetLeave() *ClientLeave { if x, ok := x.GetMessage().(*ClientMsg_Leave); ok { return x.Leave } return nil } func (x *ClientMsg) GetPub() *ClientPub { if x, ok := x.GetMessage().(*ClientMsg_Pub); ok { return x.Pub } return nil } func (x *ClientMsg) GetGet() *ClientGet { if x, ok := x.GetMessage().(*ClientMsg_Get); ok { return x.Get } return nil } func (x *ClientMsg) GetSet() *ClientSet { if x, ok := x.GetMessage().(*ClientMsg_Set); ok { return x.Set } return nil } func (x *ClientMsg) GetDel() *ClientDel { if x, ok := x.GetMessage().(*ClientMsg_Del); ok { return x.Del } return nil } func (x *ClientMsg) GetNote() *ClientNote { if x, ok := x.GetMessage().(*ClientMsg_Note); ok { return x.Note } return nil } func (x *ClientMsg) GetExtra() *ClientExtra { if x != nil { return x.Extra } return nil } type isClientMsg_Message interface { isClientMsg_Message() } type ClientMsg_Hi struct { Hi *ClientHi `protobuf:"bytes,1,opt,name=hi,proto3,oneof"` } type ClientMsg_Acc struct { Acc *ClientAcc `protobuf:"bytes,2,opt,name=acc,proto3,oneof"` } type ClientMsg_Login struct { Login *ClientLogin `protobuf:"bytes,3,opt,name=login,proto3,oneof"` } type ClientMsg_Sub struct { Sub *ClientSub `protobuf:"bytes,4,opt,name=sub,proto3,oneof"` } type ClientMsg_Leave struct { Leave *ClientLeave `protobuf:"bytes,5,opt,name=leave,proto3,oneof"` } type ClientMsg_Pub struct { Pub *ClientPub `protobuf:"bytes,6,opt,name=pub,proto3,oneof"` } type ClientMsg_Get struct { Get *ClientGet `protobuf:"bytes,7,opt,name=get,proto3,oneof"` } type ClientMsg_Set struct { Set *ClientSet `protobuf:"bytes,8,opt,name=set,proto3,oneof"` } type ClientMsg_Del struct { Del *ClientDel `protobuf:"bytes,9,opt,name=del,proto3,oneof"` } type ClientMsg_Note struct { Note *ClientNote `protobuf:"bytes,10,opt,name=note,proto3,oneof"` } func (*ClientMsg_Hi) isClientMsg_Message() {} func (*ClientMsg_Acc) isClientMsg_Message() {} func (*ClientMsg_Login) isClientMsg_Message() {} func (*ClientMsg_Sub) isClientMsg_Message() {} func (*ClientMsg_Leave) isClientMsg_Message() {} func (*ClientMsg_Pub) isClientMsg_Message() {} func (*ClientMsg_Get) isClientMsg_Message() {} func (*ClientMsg_Set) isClientMsg_Message() {} func (*ClientMsg_Del) isClientMsg_Message() {} func (*ClientMsg_Note) isClientMsg_Message() {} // Credentials type ServerCred struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Credential type, i.e. `email` or `tel`. Method string `protobuf:"bytes,1,opt,name=method,proto3" json:"method,omitempty"` // Value to verify, i.e. `user@example.com` or `+18003287448` Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` // Indicator that the credential is validated Done bool `protobuf:"varint,3,opt,name=done,proto3" json:"done,omitempty"` } func (x *ServerCred) Reset() { *x = ServerCred{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ServerCred) String() string { return protoimpl.X.MessageStringOf(x) } func (*ServerCred) ProtoMessage() {} func (x *ServerCred) ProtoReflect() protoreflect.Message { mi := &file_model_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 ServerCred.ProtoReflect.Descriptor instead. func (*ServerCred) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{22} } func (x *ServerCred) GetMethod() string { if x != nil { return x.Method } return "" } func (x *ServerCred) GetValue() string { if x != nil { return x.Value } return "" } func (x *ServerCred) GetDone() bool { if x != nil { return x.Done } return false } // Topic description, S2C in Meta message type TopicDesc struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields CreatedAt int64 `protobuf:"varint,1,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` UpdatedAt int64 `protobuf:"varint,2,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` TouchedAt int64 `protobuf:"varint,3,opt,name=touched_at,json=touchedAt,proto3" json:"touched_at,omitempty"` Defacs *DefaultAcsMode `protobuf:"bytes,4,opt,name=defacs,proto3" json:"defacs,omitempty"` Acs *AccessMode `protobuf:"bytes,5,opt,name=acs,proto3" json:"acs,omitempty"` SeqId int32 `protobuf:"varint,6,opt,name=seq_id,json=seqId,proto3" json:"seq_id,omitempty"` ReadId int32 `protobuf:"varint,7,opt,name=read_id,json=readId,proto3" json:"read_id,omitempty"` RecvId int32 `protobuf:"varint,8,opt,name=recv_id,json=recvId,proto3" json:"recv_id,omitempty"` DelId int32 `protobuf:"varint,9,opt,name=del_id,json=delId,proto3" json:"del_id,omitempty"` Public []byte `protobuf:"bytes,10,opt,name=public,proto3" json:"public,omitempty"` Private []byte `protobuf:"bytes,11,opt,name=private,proto3" json:"private,omitempty"` State string `protobuf:"bytes,12,opt,name=state,proto3" json:"state,omitempty"` StateAt int64 `protobuf:"varint,13,opt,name=state_at,json=stateAt,proto3" json:"state_at,omitempty"` Trusted []byte `protobuf:"bytes,14,opt,name=trusted,proto3" json:"trusted,omitempty"` IsChan bool `protobuf:"varint,17,opt,name=is_chan,json=isChan,proto3" json:"is_chan,omitempty"` // 17! Online bool `protobuf:"varint,18,opt,name=online,proto3" json:"online,omitempty"` // P2P only: other user's last online timestamp & user agent LastSeenTime int64 `protobuf:"varint,15,opt,name=last_seen_time,json=lastSeenTime,proto3" json:"last_seen_time,omitempty"` LastSeenUserAgent string `protobuf:"bytes,16,opt,name=last_seen_user_agent,json=lastSeenUserAgent,proto3" json:"last_seen_user_agent,omitempty"` } func (x *TopicDesc) Reset() { *x = TopicDesc{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TopicDesc) String() string { return protoimpl.X.MessageStringOf(x) } func (*TopicDesc) ProtoMessage() {} func (x *TopicDesc) ProtoReflect() protoreflect.Message { mi := &file_model_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 TopicDesc.ProtoReflect.Descriptor instead. func (*TopicDesc) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{23} } func (x *TopicDesc) GetCreatedAt() int64 { if x != nil { return x.CreatedAt } return 0 } func (x *TopicDesc) GetUpdatedAt() int64 { if x != nil { return x.UpdatedAt } return 0 } func (x *TopicDesc) GetTouchedAt() int64 { if x != nil { return x.TouchedAt } return 0 } func (x *TopicDesc) GetDefacs() *DefaultAcsMode { if x != nil { return x.Defacs } return nil } func (x *TopicDesc) GetAcs() *AccessMode { if x != nil { return x.Acs } return nil } func (x *TopicDesc) GetSeqId() int32 { if x != nil { return x.SeqId } return 0 } func (x *TopicDesc) GetReadId() int32 { if x != nil { return x.ReadId } return 0 } func (x *TopicDesc) GetRecvId() int32 { if x != nil { return x.RecvId } return 0 } func (x *TopicDesc) GetDelId() int32 { if x != nil { return x.DelId } return 0 } func (x *TopicDesc) GetPublic() []byte { if x != nil { return x.Public } return nil } func (x *TopicDesc) GetPrivate() []byte { if x != nil { return x.Private } return nil } func (x *TopicDesc) GetState() string { if x != nil { return x.State } return "" } func (x *TopicDesc) GetStateAt() int64 { if x != nil { return x.StateAt } return 0 } func (x *TopicDesc) GetTrusted() []byte { if x != nil { return x.Trusted } return nil } func (x *TopicDesc) GetIsChan() bool { if x != nil { return x.IsChan } return false } func (x *TopicDesc) GetOnline() bool { if x != nil { return x.Online } return false } func (x *TopicDesc) GetLastSeenTime() int64 { if x != nil { return x.LastSeenTime } return 0 } func (x *TopicDesc) GetLastSeenUserAgent() string { if x != nil { return x.LastSeenUserAgent } return "" } // MsgTopicSub: topic subscription details, sent in Meta message type TopicSub struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UpdatedAt int64 `protobuf:"varint,1,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` DeletedAt int64 `protobuf:"varint,2,opt,name=deleted_at,json=deletedAt,proto3" json:"deleted_at,omitempty"` Online bool `protobuf:"varint,3,opt,name=online,proto3" json:"online,omitempty"` Acs *AccessMode `protobuf:"bytes,4,opt,name=acs,proto3" json:"acs,omitempty"` ReadId int32 `protobuf:"varint,5,opt,name=read_id,json=readId,proto3" json:"read_id,omitempty"` RecvId int32 `protobuf:"varint,6,opt,name=recv_id,json=recvId,proto3" json:"recv_id,omitempty"` Public []byte `protobuf:"bytes,7,opt,name=public,proto3" json:"public,omitempty"` Trusted []byte `protobuf:"bytes,16,opt,name=trusted,proto3" json:"trusted,omitempty"` // 16! Private []byte `protobuf:"bytes,8,opt,name=private,proto3" json:"private,omitempty"` // Uid of the subscribed user UserId string `protobuf:"bytes,9,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` // Topic name of this subscription Topic string `protobuf:"bytes,10,opt,name=topic,proto3" json:"topic,omitempty"` TouchedAt int64 `protobuf:"varint,11,opt,name=touched_at,json=touchedAt,proto3" json:"touched_at,omitempty"` // ID of the last {data} message in a topic SeqId int32 `protobuf:"varint,12,opt,name=seq_id,json=seqId,proto3" json:"seq_id,omitempty"` // Messages are deleted up to this ID DelId int32 `protobuf:"varint,13,opt,name=del_id,json=delId,proto3" json:"del_id,omitempty"` // Other user's last online timestamp & user agent LastSeenTime int64 `protobuf:"varint,14,opt,name=last_seen_time,json=lastSeenTime,proto3" json:"last_seen_time,omitempty"` LastSeenUserAgent string `protobuf:"bytes,15,opt,name=last_seen_user_agent,json=lastSeenUserAgent,proto3" json:"last_seen_user_agent,omitempty"` } func (x *TopicSub) Reset() { *x = TopicSub{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TopicSub) String() string { return protoimpl.X.MessageStringOf(x) } func (*TopicSub) ProtoMessage() {} func (x *TopicSub) ProtoReflect() protoreflect.Message { mi := &file_model_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 TopicSub.ProtoReflect.Descriptor instead. func (*TopicSub) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{24} } func (x *TopicSub) GetUpdatedAt() int64 { if x != nil { return x.UpdatedAt } return 0 } func (x *TopicSub) GetDeletedAt() int64 { if x != nil { return x.DeletedAt } return 0 } func (x *TopicSub) GetOnline() bool { if x != nil { return x.Online } return false } func (x *TopicSub) GetAcs() *AccessMode { if x != nil { return x.Acs } return nil } func (x *TopicSub) GetReadId() int32 { if x != nil { return x.ReadId } return 0 } func (x *TopicSub) GetRecvId() int32 { if x != nil { return x.RecvId } return 0 } func (x *TopicSub) GetPublic() []byte { if x != nil { return x.Public } return nil } func (x *TopicSub) GetTrusted() []byte { if x != nil { return x.Trusted } return nil } func (x *TopicSub) GetPrivate() []byte { if x != nil { return x.Private } return nil } func (x *TopicSub) GetUserId() string { if x != nil { return x.UserId } return "" } func (x *TopicSub) GetTopic() string { if x != nil { return x.Topic } return "" } func (x *TopicSub) GetTouchedAt() int64 { if x != nil { return x.TouchedAt } return 0 } func (x *TopicSub) GetSeqId() int32 { if x != nil { return x.SeqId } return 0 } func (x *TopicSub) GetDelId() int32 { if x != nil { return x.DelId } return 0 } func (x *TopicSub) GetLastSeenTime() int64 { if x != nil { return x.LastSeenTime } return 0 } func (x *TopicSub) GetLastSeenUserAgent() string { if x != nil { return x.LastSeenUserAgent } return "" } type DelValues struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields DelId int32 `protobuf:"varint,1,opt,name=del_id,json=delId,proto3" json:"del_id,omitempty"` DelSeq []*SeqRange `protobuf:"bytes,2,rep,name=del_seq,json=delSeq,proto3" json:"del_seq,omitempty"` } func (x *DelValues) Reset() { *x = DelValues{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DelValues) String() string { return protoimpl.X.MessageStringOf(x) } func (*DelValues) ProtoMessage() {} func (x *DelValues) ProtoReflect() protoreflect.Message { mi := &file_model_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 DelValues.ProtoReflect.Descriptor instead. func (*DelValues) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{25} } func (x *DelValues) GetDelId() int32 { if x != nil { return x.DelId } return 0 } func (x *DelValues) GetDelSeq() []*SeqRange { if x != nil { return x.DelSeq } return nil } // {ctrl} message type ServerCtrl struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Topic string `protobuf:"bytes,2,opt,name=topic,proto3" json:"topic,omitempty"` Code int32 `protobuf:"varint,3,opt,name=code,proto3" json:"code,omitempty"` Text string `protobuf:"bytes,4,opt,name=text,proto3" json:"text,omitempty"` Params map[string][]byte `protobuf:"bytes,5,rep,name=params,proto3" json:"params,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } func (x *ServerCtrl) Reset() { *x = ServerCtrl{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ServerCtrl) String() string { return protoimpl.X.MessageStringOf(x) } func (*ServerCtrl) ProtoMessage() {} func (x *ServerCtrl) ProtoReflect() protoreflect.Message { mi := &file_model_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 ServerCtrl.ProtoReflect.Descriptor instead. func (*ServerCtrl) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{26} } func (x *ServerCtrl) GetId() string { if x != nil { return x.Id } return "" } func (x *ServerCtrl) GetTopic() string { if x != nil { return x.Topic } return "" } func (x *ServerCtrl) GetCode() int32 { if x != nil { return x.Code } return 0 } func (x *ServerCtrl) GetText() string { if x != nil { return x.Text } return "" } func (x *ServerCtrl) GetParams() map[string][]byte { if x != nil { return x.Params } return nil } // {data} message type ServerData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Topic string `protobuf:"bytes,1,opt,name=topic,proto3" json:"topic,omitempty"` // ID of the user who originated the message as {pub}, could be empty if sent by the system FromUserId string `protobuf:"bytes,2,opt,name=from_user_id,json=fromUserId,proto3" json:"from_user_id,omitempty"` // Timestamp when the message was sent. Timestamp int64 `protobuf:"varint,7,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Timestamp when the message was deleted or 0. Milliseconds since the epoch 01/01/1970 DeletedAt int64 `protobuf:"varint,3,opt,name=deleted_at,json=deletedAt,proto3" json:"deleted_at,omitempty"` SeqId int32 `protobuf:"varint,4,opt,name=seq_id,json=seqId,proto3" json:"seq_id,omitempty"` Head map[string][]byte `protobuf:"bytes,5,rep,name=head,proto3" json:"head,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` Content []byte `protobuf:"bytes,6,opt,name=content,proto3" json:"content,omitempty"` } func (x *ServerData) Reset() { *x = ServerData{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ServerData) String() string { return protoimpl.X.MessageStringOf(x) } func (*ServerData) ProtoMessage() {} func (x *ServerData) ProtoReflect() protoreflect.Message { mi := &file_model_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 ServerData.ProtoReflect.Descriptor instead. func (*ServerData) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{27} } func (x *ServerData) GetTopic() string { if x != nil { return x.Topic } return "" } func (x *ServerData) GetFromUserId() string { if x != nil { return x.FromUserId } return "" } func (x *ServerData) GetTimestamp() int64 { if x != nil { return x.Timestamp } return 0 } func (x *ServerData) GetDeletedAt() int64 { if x != nil { return x.DeletedAt } return 0 } func (x *ServerData) GetSeqId() int32 { if x != nil { return x.SeqId } return 0 } func (x *ServerData) GetHead() map[string][]byte { if x != nil { return x.Head } return nil } func (x *ServerData) GetContent() []byte { if x != nil { return x.Content } return nil } // {pres} message type ServerPres struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Topic string `protobuf:"bytes,1,opt,name=topic,proto3" json:"topic,omitempty"` Src string `protobuf:"bytes,2,opt,name=src,proto3" json:"src,omitempty"` What ServerPres_What `protobuf:"varint,3,opt,name=what,proto3,enum=pbx.ServerPres_What" json:"what,omitempty"` UserAgent string `protobuf:"bytes,4,opt,name=user_agent,json=userAgent,proto3" json:"user_agent,omitempty"` SeqId int32 `protobuf:"varint,5,opt,name=seq_id,json=seqId,proto3" json:"seq_id,omitempty"` DelId int32 `protobuf:"varint,6,opt,name=del_id,json=delId,proto3" json:"del_id,omitempty"` DelSeq []*SeqRange `protobuf:"bytes,7,rep,name=del_seq,json=delSeq,proto3" json:"del_seq,omitempty"` TargetUserId string `protobuf:"bytes,8,opt,name=target_user_id,json=targetUserId,proto3" json:"target_user_id,omitempty"` ActorUserId string `protobuf:"bytes,9,opt,name=actor_user_id,json=actorUserId,proto3" json:"actor_user_id,omitempty"` Acs *AccessMode `protobuf:"bytes,10,opt,name=acs,proto3" json:"acs,omitempty"` } func (x *ServerPres) Reset() { *x = ServerPres{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ServerPres) String() string { return protoimpl.X.MessageStringOf(x) } func (*ServerPres) ProtoMessage() {} func (x *ServerPres) ProtoReflect() protoreflect.Message { mi := &file_model_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 ServerPres.ProtoReflect.Descriptor instead. func (*ServerPres) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{28} } func (x *ServerPres) GetTopic() string { if x != nil { return x.Topic } return "" } func (x *ServerPres) GetSrc() string { if x != nil { return x.Src } return "" } func (x *ServerPres) GetWhat() ServerPres_What { if x != nil { return x.What } return ServerPres_X3 } func (x *ServerPres) GetUserAgent() string { if x != nil { return x.UserAgent } return "" } func (x *ServerPres) GetSeqId() int32 { if x != nil { return x.SeqId } return 0 } func (x *ServerPres) GetDelId() int32 { if x != nil { return x.DelId } return 0 } func (x *ServerPres) GetDelSeq() []*SeqRange { if x != nil { return x.DelSeq } return nil } func (x *ServerPres) GetTargetUserId() string { if x != nil { return x.TargetUserId } return "" } func (x *ServerPres) GetActorUserId() string { if x != nil { return x.ActorUserId } return "" } func (x *ServerPres) GetAcs() *AccessMode { if x != nil { return x.Acs } return nil } // {meta} message type ServerMeta struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Topic string `protobuf:"bytes,2,opt,name=topic,proto3" json:"topic,omitempty"` Desc *TopicDesc `protobuf:"bytes,3,opt,name=desc,proto3" json:"desc,omitempty"` Sub []*TopicSub `protobuf:"bytes,4,rep,name=sub,proto3" json:"sub,omitempty"` Del *DelValues `protobuf:"bytes,5,opt,name=del,proto3" json:"del,omitempty"` Tags []string `protobuf:"bytes,6,rep,name=tags,proto3" json:"tags,omitempty"` Cred []*ServerCred `protobuf:"bytes,7,rep,name=cred,proto3" json:"cred,omitempty"` Aux map[string][]byte `protobuf:"bytes,8,rep,name=aux,proto3" json:"aux,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } func (x *ServerMeta) Reset() { *x = ServerMeta{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ServerMeta) String() string { return protoimpl.X.MessageStringOf(x) } func (*ServerMeta) ProtoMessage() {} func (x *ServerMeta) ProtoReflect() protoreflect.Message { mi := &file_model_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 ServerMeta.ProtoReflect.Descriptor instead. func (*ServerMeta) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{29} } func (x *ServerMeta) GetId() string { if x != nil { return x.Id } return "" } func (x *ServerMeta) GetTopic() string { if x != nil { return x.Topic } return "" } func (x *ServerMeta) GetDesc() *TopicDesc { if x != nil { return x.Desc } return nil } func (x *ServerMeta) GetSub() []*TopicSub { if x != nil { return x.Sub } return nil } func (x *ServerMeta) GetDel() *DelValues { if x != nil { return x.Del } return nil } func (x *ServerMeta) GetTags() []string { if x != nil { return x.Tags } return nil } func (x *ServerMeta) GetCred() []*ServerCred { if x != nil { return x.Cred } return nil } func (x *ServerMeta) GetAux() map[string][]byte { if x != nil { return x.Aux } return nil } // {info} message: server-side copy of ClientNote with From and optional Src added. type ServerInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Topic string `protobuf:"bytes,1,opt,name=topic,proto3" json:"topic,omitempty"` FromUserId string `protobuf:"bytes,2,opt,name=from_user_id,json=fromUserId,proto3" json:"from_user_id,omitempty"` What InfoNote `protobuf:"varint,3,opt,name=what,proto3,enum=pbx.InfoNote" json:"what,omitempty"` SeqId int32 `protobuf:"varint,4,opt,name=seq_id,json=seqId,proto3" json:"seq_id,omitempty"` Src string `protobuf:"bytes,5,opt,name=src,proto3" json:"src,omitempty"` Event CallEvent `protobuf:"varint,6,opt,name=event,proto3,enum=pbx.CallEvent" json:"event,omitempty"` Payload []byte `protobuf:"bytes,7,opt,name=payload,proto3" json:"payload,omitempty"` } func (x *ServerInfo) Reset() { *x = ServerInfo{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ServerInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*ServerInfo) ProtoMessage() {} func (x *ServerInfo) ProtoReflect() protoreflect.Message { mi := &file_model_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 ServerInfo.ProtoReflect.Descriptor instead. func (*ServerInfo) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{30} } func (x *ServerInfo) GetTopic() string { if x != nil { return x.Topic } return "" } func (x *ServerInfo) GetFromUserId() string { if x != nil { return x.FromUserId } return "" } func (x *ServerInfo) GetWhat() InfoNote { if x != nil { return x.What } return InfoNote_X1 } func (x *ServerInfo) GetSeqId() int32 { if x != nil { return x.SeqId } return 0 } func (x *ServerInfo) GetSrc() string { if x != nil { return x.Src } return "" } func (x *ServerInfo) GetEvent() CallEvent { if x != nil { return x.Event } return CallEvent_X2 } func (x *ServerInfo) GetPayload() []byte { if x != nil { return x.Payload } return nil } // Cumulative message type ServerMsg struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Types that are assignable to Message: // // *ServerMsg_Ctrl // *ServerMsg_Data // *ServerMsg_Pres // *ServerMsg_Meta // *ServerMsg_Info Message isServerMsg_Message `protobuf_oneof:"Message"` // DEPRECATED. Will be removed soon. // When response is sent to Root, send internal topic name too. // // Deprecated: Do not use. Topic string `protobuf:"bytes,6,opt,name=topic,proto3" json:"topic,omitempty"` } func (x *ServerMsg) Reset() { *x = ServerMsg{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ServerMsg) String() string { return protoimpl.X.MessageStringOf(x) } func (*ServerMsg) ProtoMessage() {} func (x *ServerMsg) ProtoReflect() protoreflect.Message { mi := &file_model_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 ServerMsg.ProtoReflect.Descriptor instead. func (*ServerMsg) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{31} } func (m *ServerMsg) GetMessage() isServerMsg_Message { if m != nil { return m.Message } return nil } func (x *ServerMsg) GetCtrl() *ServerCtrl { if x, ok := x.GetMessage().(*ServerMsg_Ctrl); ok { return x.Ctrl } return nil } func (x *ServerMsg) GetData() *ServerData { if x, ok := x.GetMessage().(*ServerMsg_Data); ok { return x.Data } return nil } func (x *ServerMsg) GetPres() *ServerPres { if x, ok := x.GetMessage().(*ServerMsg_Pres); ok { return x.Pres } return nil } func (x *ServerMsg) GetMeta() *ServerMeta { if x, ok := x.GetMessage().(*ServerMsg_Meta); ok { return x.Meta } return nil } func (x *ServerMsg) GetInfo() *ServerInfo { if x, ok := x.GetMessage().(*ServerMsg_Info); ok { return x.Info } return nil } // Deprecated: Do not use. func (x *ServerMsg) GetTopic() string { if x != nil { return x.Topic } return "" } type isServerMsg_Message interface { isServerMsg_Message() } type ServerMsg_Ctrl struct { Ctrl *ServerCtrl `protobuf:"bytes,1,opt,name=ctrl,proto3,oneof"` } type ServerMsg_Data struct { Data *ServerData `protobuf:"bytes,2,opt,name=data,proto3,oneof"` } type ServerMsg_Pres struct { Pres *ServerPres `protobuf:"bytes,3,opt,name=pres,proto3,oneof"` } type ServerMsg_Meta struct { Meta *ServerMeta `protobuf:"bytes,4,opt,name=meta,proto3,oneof"` } type ServerMsg_Info struct { Info *ServerInfo `protobuf:"bytes,5,opt,name=info,proto3,oneof"` } func (*ServerMsg_Ctrl) isServerMsg_Message() {} func (*ServerMsg_Data) isServerMsg_Message() {} func (*ServerMsg_Pres) isServerMsg_Message() {} func (*ServerMsg_Meta) isServerMsg_Message() {} func (*ServerMsg_Info) isServerMsg_Message() {} type ServerResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Status RespCode `protobuf:"varint,1,opt,name=status,proto3,enum=pbx.RespCode" json:"status,omitempty"` Srvmsg *ServerMsg `protobuf:"bytes,2,opt,name=srvmsg,proto3" json:"srvmsg,omitempty"` Clmsg *ClientMsg `protobuf:"bytes,3,opt,name=clmsg,proto3" json:"clmsg,omitempty"` } func (x *ServerResp) Reset() { *x = ServerResp{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ServerResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*ServerResp) ProtoMessage() {} func (x *ServerResp) ProtoReflect() protoreflect.Message { mi := &file_model_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 ServerResp.ProtoReflect.Descriptor instead. func (*ServerResp) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{32} } func (x *ServerResp) GetStatus() RespCode { if x != nil { return x.Status } return RespCode_CONTINUE } func (x *ServerResp) GetSrvmsg() *ServerMsg { if x != nil { return x.Srvmsg } return nil } func (x *ServerResp) GetClmsg() *ClientMsg { if x != nil { return x.Clmsg } return nil } // Context message type Session struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` UserId string `protobuf:"bytes,2,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` AuthLevel AuthLevel `protobuf:"varint,3,opt,name=auth_level,json=authLevel,proto3,enum=pbx.AuthLevel" json:"auth_level,omitempty"` RemoteAddr string `protobuf:"bytes,4,opt,name=remote_addr,json=remoteAddr,proto3" json:"remote_addr,omitempty"` UserAgent string `protobuf:"bytes,5,opt,name=user_agent,json=userAgent,proto3" json:"user_agent,omitempty"` DeviceId string `protobuf:"bytes,6,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"` Language string `protobuf:"bytes,7,opt,name=language,proto3" json:"language,omitempty"` } func (x *Session) Reset() { *x = Session{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Session) String() string { return protoimpl.X.MessageStringOf(x) } func (*Session) ProtoMessage() {} func (x *Session) ProtoReflect() protoreflect.Message { mi := &file_model_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 Session.ProtoReflect.Descriptor instead. func (*Session) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{33} } func (x *Session) GetSessionId() string { if x != nil { return x.SessionId } return "" } func (x *Session) GetUserId() string { if x != nil { return x.UserId } return "" } func (x *Session) GetAuthLevel() AuthLevel { if x != nil { return x.AuthLevel } return AuthLevel_NONE } func (x *Session) GetRemoteAddr() string { if x != nil { return x.RemoteAddr } return "" } func (x *Session) GetUserAgent() string { if x != nil { return x.UserAgent } return "" } func (x *Session) GetDeviceId() string { if x != nil { return x.DeviceId } return "" } func (x *Session) GetLanguage() string { if x != nil { return x.Language } return "" } type ClientReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Msg *ClientMsg `protobuf:"bytes,1,opt,name=msg,proto3" json:"msg,omitempty"` Sess *Session `protobuf:"bytes,2,opt,name=sess,proto3" json:"sess,omitempty"` } func (x *ClientReq) Reset() { *x = ClientReq{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ClientReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*ClientReq) ProtoMessage() {} func (x *ClientReq) ProtoReflect() protoreflect.Message { mi := &file_model_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 ClientReq.ProtoReflect.Descriptor instead. func (*ClientReq) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{34} } func (x *ClientReq) GetMsg() *ClientMsg { if x != nil { return x.Msg } return nil } func (x *ClientReq) GetSess() *Session { if x != nil { return x.Sess } return nil } type SearchQuery struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserId string `protobuf:"bytes,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` Query string `protobuf:"bytes,2,opt,name=query,proto3" json:"query,omitempty"` } func (x *SearchQuery) Reset() { *x = SearchQuery{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SearchQuery) String() string { return protoimpl.X.MessageStringOf(x) } func (*SearchQuery) ProtoMessage() {} func (x *SearchQuery) ProtoReflect() protoreflect.Message { mi := &file_model_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 SearchQuery.ProtoReflect.Descriptor instead. func (*SearchQuery) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{35} } func (x *SearchQuery) GetUserId() string { if x != nil { return x.UserId } return "" } func (x *SearchQuery) GetQuery() string { if x != nil { return x.Query } return "" } type SearchFound struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Status RespCode `protobuf:"varint,1,opt,name=status,proto3,enum=pbx.RespCode" json:"status,omitempty"` // New search query If status == REPLACE, otherwise unset. Query string `protobuf:"bytes,2,opt,name=query,proto3" json:"query,omitempty"` // Search results. Result []*TopicSub `protobuf:"bytes,3,rep,name=result,proto3" json:"result,omitempty"` } func (x *SearchFound) Reset() { *x = SearchFound{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SearchFound) String() string { return protoimpl.X.MessageStringOf(x) } func (*SearchFound) ProtoMessage() {} func (x *SearchFound) ProtoReflect() protoreflect.Message { mi := &file_model_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 SearchFound.ProtoReflect.Descriptor instead. func (*SearchFound) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{36} } func (x *SearchFound) GetStatus() RespCode { if x != nil { return x.Status } return RespCode_CONTINUE } func (x *SearchFound) GetQuery() string { if x != nil { return x.Query } return "" } func (x *SearchFound) GetResult() []*TopicSub { if x != nil { return x.Result } return nil } type TopicEvent struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Action Crud `protobuf:"varint,1,opt,name=action,proto3,enum=pbx.Crud" json:"action,omitempty"` Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` Desc *TopicDesc `protobuf:"bytes,3,opt,name=desc,proto3" json:"desc,omitempty"` } func (x *TopicEvent) Reset() { *x = TopicEvent{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TopicEvent) String() string { return protoimpl.X.MessageStringOf(x) } func (*TopicEvent) ProtoMessage() {} func (x *TopicEvent) ProtoReflect() protoreflect.Message { mi := &file_model_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 TopicEvent.ProtoReflect.Descriptor instead. func (*TopicEvent) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{37} } func (x *TopicEvent) GetAction() Crud { if x != nil { return x.Action } return Crud_CREATE } func (x *TopicEvent) GetName() string { if x != nil { return x.Name } return "" } func (x *TopicEvent) GetDesc() *TopicDesc { if x != nil { return x.Desc } return nil } type AccountEvent struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Action Crud `protobuf:"varint,1,opt,name=action,proto3,enum=pbx.Crud" json:"action,omitempty"` UserId string `protobuf:"bytes,2,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` DefaultAcs *DefaultAcsMode `protobuf:"bytes,3,opt,name=default_acs,json=defaultAcs,proto3" json:"default_acs,omitempty"` Public []byte `protobuf:"bytes,4,opt,name=public,proto3" json:"public,omitempty"` // Indexable tags for user discovery Tags []string `protobuf:"bytes,8,rep,name=tags,proto3" json:"tags,omitempty"` } func (x *AccountEvent) Reset() { *x = AccountEvent{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AccountEvent) String() string { return protoimpl.X.MessageStringOf(x) } func (*AccountEvent) ProtoMessage() {} func (x *AccountEvent) ProtoReflect() protoreflect.Message { mi := &file_model_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 AccountEvent.ProtoReflect.Descriptor instead. func (*AccountEvent) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{38} } func (x *AccountEvent) GetAction() Crud { if x != nil { return x.Action } return Crud_CREATE } func (x *AccountEvent) GetUserId() string { if x != nil { return x.UserId } return "" } func (x *AccountEvent) GetDefaultAcs() *DefaultAcsMode { if x != nil { return x.DefaultAcs } return nil } func (x *AccountEvent) GetPublic() []byte { if x != nil { return x.Public } return nil } func (x *AccountEvent) GetTags() []string { if x != nil { return x.Tags } return nil } type SubscriptionEvent struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Action Crud `protobuf:"varint,1,opt,name=action,proto3,enum=pbx.Crud" json:"action,omitempty"` Topic string `protobuf:"bytes,2,opt,name=topic,proto3" json:"topic,omitempty"` UserId string `protobuf:"bytes,3,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` DelId int32 `protobuf:"varint,4,opt,name=del_id,json=delId,proto3" json:"del_id,omitempty"` ReadId int32 `protobuf:"varint,5,opt,name=read_id,json=readId,proto3" json:"read_id,omitempty"` RecvId int32 `protobuf:"varint,6,opt,name=recv_id,json=recvId,proto3" json:"recv_id,omitempty"` Mode *AccessMode `protobuf:"bytes,7,opt,name=mode,proto3" json:"mode,omitempty"` Private []byte `protobuf:"bytes,8,opt,name=private,proto3" json:"private,omitempty"` } func (x *SubscriptionEvent) Reset() { *x = SubscriptionEvent{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SubscriptionEvent) String() string { return protoimpl.X.MessageStringOf(x) } func (*SubscriptionEvent) ProtoMessage() {} func (x *SubscriptionEvent) ProtoReflect() protoreflect.Message { mi := &file_model_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 SubscriptionEvent.ProtoReflect.Descriptor instead. func (*SubscriptionEvent) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{39} } func (x *SubscriptionEvent) GetAction() Crud { if x != nil { return x.Action } return Crud_CREATE } func (x *SubscriptionEvent) GetTopic() string { if x != nil { return x.Topic } return "" } func (x *SubscriptionEvent) GetUserId() string { if x != nil { return x.UserId } return "" } func (x *SubscriptionEvent) GetDelId() int32 { if x != nil { return x.DelId } return 0 } func (x *SubscriptionEvent) GetReadId() int32 { if x != nil { return x.ReadId } return 0 } func (x *SubscriptionEvent) GetRecvId() int32 { if x != nil { return x.RecvId } return 0 } func (x *SubscriptionEvent) GetMode() *AccessMode { if x != nil { return x.Mode } return nil } func (x *SubscriptionEvent) GetPrivate() []byte { if x != nil { return x.Private } return nil } type MessageEvent struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Action Crud `protobuf:"varint,1,opt,name=action,proto3,enum=pbx.Crud" json:"action,omitempty"` Msg *ServerData `protobuf:"bytes,2,opt,name=msg,proto3" json:"msg,omitempty"` } func (x *MessageEvent) Reset() { *x = MessageEvent{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *MessageEvent) String() string { return protoimpl.X.MessageStringOf(x) } func (*MessageEvent) ProtoMessage() {} func (x *MessageEvent) ProtoReflect() protoreflect.Message { mi := &file_model_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 MessageEvent.ProtoReflect.Descriptor instead. func (*MessageEvent) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{40} } func (x *MessageEvent) GetAction() Crud { if x != nil { return x.Action } return Crud_CREATE } func (x *MessageEvent) GetMsg() *ServerData { if x != nil { return x.Msg } return nil } type Auth struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Scheme string `protobuf:"bytes,1,opt,name=scheme,proto3" json:"scheme,omitempty"` Secret string `protobuf:"bytes,2,opt,name=secret,proto3" json:"secret,omitempty"` } func (x *Auth) Reset() { *x = Auth{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Auth) String() string { return protoimpl.X.MessageStringOf(x) } func (*Auth) ProtoMessage() {} func (x *Auth) ProtoReflect() protoreflect.Message { mi := &file_model_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 Auth.ProtoReflect.Descriptor instead. func (*Auth) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{41} } func (x *Auth) GetScheme() string { if x != nil { return x.Scheme } return "" } func (x *Auth) GetSecret() string { if x != nil { return x.Secret } return "" } // File description. type FileMeta struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` MimeType string `protobuf:"bytes,2,opt,name=mime_type,json=mimeType,proto3" json:"mime_type,omitempty"` Etag string `protobuf:"bytes,3,opt,name=etag,proto3" json:"etag,omitempty"` Size int64 `protobuf:"varint,4,opt,name=size,proto3" json:"size,omitempty"` } func (x *FileMeta) Reset() { *x = FileMeta{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *FileMeta) String() string { return protoimpl.X.MessageStringOf(x) } func (*FileMeta) ProtoMessage() {} func (x *FileMeta) ProtoReflect() protoreflect.Message { mi := &file_model_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 FileMeta.ProtoReflect.Descriptor instead. func (*FileMeta) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{42} } func (x *FileMeta) GetName() string { if x != nil { return x.Name } return "" } func (x *FileMeta) GetMimeType() string { if x != nil { return x.MimeType } return "" } func (x *FileMeta) GetEtag() string { if x != nil { return x.Etag } return "" } func (x *FileMeta) GetSize() int64 { if x != nil { return x.Size } return 0 } // File upload request. type FileUpReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Request ID. Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // Request authentication credentials. Auth *Auth `protobuf:"bytes,2,opt,name=auth,proto3" json:"auth,omitempty"` // The topic this upload belongs to. Topic string `protobuf:"bytes,3,opt,name=topic,proto3" json:"topic,omitempty"` // Uploaded metadata. Meta *FileMeta `protobuf:"bytes,4,opt,name=meta,proto3" json:"meta,omitempty"` // File bytes being uploaded. Content []byte `protobuf:"bytes,5,opt,name=content,proto3" json:"content,omitempty"` } func (x *FileUpReq) Reset() { *x = FileUpReq{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *FileUpReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*FileUpReq) ProtoMessage() {} func (x *FileUpReq) ProtoReflect() protoreflect.Message { mi := &file_model_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 FileUpReq.ProtoReflect.Descriptor instead. func (*FileUpReq) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{43} } func (x *FileUpReq) GetId() string { if x != nil { return x.Id } return "" } func (x *FileUpReq) GetAuth() *Auth { if x != nil { return x.Auth } return nil } func (x *FileUpReq) GetTopic() string { if x != nil { return x.Topic } return "" } func (x *FileUpReq) GetMeta() *FileMeta { if x != nil { return x.Meta } return nil } func (x *FileUpReq) GetContent() []byte { if x != nil { return x.Content } return nil } // Response to file upload. type FileUpResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Response ID. Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // Response code. Code int32 `protobuf:"varint,2,opt,name=code,proto3" json:"code,omitempty"` // Response text. Text string `protobuf:"bytes,3,opt,name=text,proto3" json:"text,omitempty"` Meta *FileMeta `protobuf:"bytes,4,opt,name=meta,proto3" json:"meta,omitempty"` // New upload location. RedirUrl string `protobuf:"bytes,5,opt,name=redir_url,json=redirUrl,proto3" json:"redir_url,omitempty"` } func (x *FileUpResp) Reset() { *x = FileUpResp{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *FileUpResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*FileUpResp) ProtoMessage() {} func (x *FileUpResp) ProtoReflect() protoreflect.Message { mi := &file_model_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 FileUpResp.ProtoReflect.Descriptor instead. func (*FileUpResp) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{44} } func (x *FileUpResp) GetId() string { if x != nil { return x.Id } return "" } func (x *FileUpResp) GetCode() int32 { if x != nil { return x.Code } return 0 } func (x *FileUpResp) GetText() string { if x != nil { return x.Text } return "" } func (x *FileUpResp) GetMeta() *FileMeta { if x != nil { return x.Meta } return nil } func (x *FileUpResp) GetRedirUrl() string { if x != nil { return x.RedirUrl } return "" } // File download request. type FileDownReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Request ID Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // Request authentication credentials. Auth *Auth `protobuf:"bytes,2,opt,name=auth,proto3" json:"auth,omitempty"` // File URI to download. Uri string `protobuf:"bytes,3,opt,name=uri,proto3" json:"uri,omitempty"` // ETag IfModified string `protobuf:"bytes,4,opt,name=if_modified,json=ifModified,proto3" json:"if_modified,omitempty"` } func (x *FileDownReq) Reset() { *x = FileDownReq{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *FileDownReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*FileDownReq) ProtoMessage() {} func (x *FileDownReq) ProtoReflect() protoreflect.Message { mi := &file_model_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 FileDownReq.ProtoReflect.Descriptor instead. func (*FileDownReq) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{45} } func (x *FileDownReq) GetId() string { if x != nil { return x.Id } return "" } func (x *FileDownReq) GetAuth() *Auth { if x != nil { return x.Auth } return nil } func (x *FileDownReq) GetUri() string { if x != nil { return x.Uri } return "" } func (x *FileDownReq) GetIfModified() string { if x != nil { return x.IfModified } return "" } // Response to file download. type FileDownResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Response ID. Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // Response code. Code int32 `protobuf:"varint,2,opt,name=code,proto3" json:"code,omitempty"` // Response text. Text string `protobuf:"bytes,3,opt,name=text,proto3" json:"text,omitempty"` Meta *FileMeta `protobuf:"bytes,4,opt,name=meta,proto3" json:"meta,omitempty"` // File location. RedirUrl string `protobuf:"bytes,5,opt,name=redir_url,json=redirUrl,proto3" json:"redir_url,omitempty"` // File bytes. Content []byte `protobuf:"bytes,6,opt,name=content,proto3" json:"content,omitempty"` } func (x *FileDownResp) Reset() { *x = FileDownResp{} if protoimpl.UnsafeEnabled { mi := &file_model_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *FileDownResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*FileDownResp) ProtoMessage() {} func (x *FileDownResp) ProtoReflect() protoreflect.Message { mi := &file_model_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 FileDownResp.ProtoReflect.Descriptor instead. func (*FileDownResp) Descriptor() ([]byte, []int) { return file_model_proto_rawDescGZIP(), []int{46} } func (x *FileDownResp) GetId() string { if x != nil { return x.Id } return "" } func (x *FileDownResp) GetCode() int32 { if x != nil { return x.Code } return 0 } func (x *FileDownResp) GetText() string { if x != nil { return x.Text } return "" } func (x *FileDownResp) GetMeta() *FileMeta { if x != nil { return x.Meta } return nil } func (x *FileDownResp) GetRedirUrl() string { if x != nil { return x.RedirUrl } return "" } func (x *FileDownResp) GetContent() []byte { if x != nil { return x.Content } return nil } var File_model_proto protoreflect.FileDescriptor var file_model_proto_rawDesc = []byte{ 0x0a, 0x0b, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x03, 0x70, 0x62, 0x78, 0x22, 0x08, 0x0a, 0x06, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x22, 0x38, 0x0a, 0x0e, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x63, 0x73, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x75, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x75, 0x74, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x6e, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x6e, 0x6f, 0x6e, 0x22, 0x36, 0x0a, 0x0a, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x77, 0x61, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x77, 0x61, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x22, 0x35, 0x0a, 0x06, 0x53, 0x65, 0x74, 0x53, 0x75, 0x62, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0xc6, 0x01, 0x0a, 0x0a, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x72, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x72, 0x65, 0x64, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x8b, 0x01, 0x0a, 0x07, 0x53, 0x65, 0x74, 0x44, 0x65, 0x73, 0x63, 0x12, 0x34, 0x0a, 0x0b, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x61, 0x63, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x63, 0x73, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x0a, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x63, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x22, 0x2c, 0x0a, 0x08, 0x53, 0x65, 0x71, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6c, 0x6f, 0x77, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6c, 0x6f, 0x77, 0x12, 0x0e, 0x0a, 0x02, 0x68, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x68, 0x69, 0x22, 0xd4, 0x01, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x4f, 0x70, 0x74, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x69, 0x66, 0x5f, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x69, 0x66, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x53, 0x69, 0x6e, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x25, 0x0a, 0x06, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x53, 0x65, 0x71, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x06, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x22, 0x82, 0x01, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x77, 0x68, 0x61, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x77, 0x68, 0x61, 0x74, 0x12, 0x20, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x70, 0x74, 0x73, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x1e, 0x0a, 0x03, 0x73, 0x75, 0x62, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x70, 0x74, 0x73, 0x52, 0x03, 0x73, 0x75, 0x62, 0x12, 0x20, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x70, 0x74, 0x73, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xe6, 0x01, 0x0a, 0x08, 0x53, 0x65, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x20, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x53, 0x65, 0x74, 0x44, 0x65, 0x73, 0x63, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x1d, 0x0a, 0x03, 0x73, 0x75, 0x62, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x53, 0x65, 0x74, 0x53, 0x75, 0x62, 0x52, 0x03, 0x73, 0x75, 0x62, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x23, 0x0a, 0x04, 0x63, 0x72, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x72, 0x65, 0x64, 0x52, 0x04, 0x63, 0x72, 0x65, 0x64, 0x12, 0x28, 0x0a, 0x03, 0x61, 0x75, 0x78, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x53, 0x65, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x41, 0x75, 0x78, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x03, 0x61, 0x75, 0x78, 0x1a, 0x36, 0x0a, 0x08, 0x41, 0x75, 0x78, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xd0, 0x01, 0x0a, 0x08, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x48, 0x69, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x73, 0x65, 0x72, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x76, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x61, 0x6e, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6c, 0x61, 0x6e, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x22, 0xee, 0x02, 0x0a, 0x09, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x41, 0x63, 0x63, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x20, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x53, 0x65, 0x74, 0x44, 0x65, 0x73, 0x63, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x23, 0x0a, 0x04, 0x63, 0x72, 0x65, 0x64, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x72, 0x65, 0x64, 0x52, 0x04, 0x63, 0x72, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x2d, 0x0a, 0x0a, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0e, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x6d, 0x70, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x6d, 0x70, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x6d, 0x70, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x74, 0x6d, 0x70, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x22, 0x72, 0x0a, 0x0b, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x23, 0x0a, 0x04, 0x63, 0x72, 0x65, 0x64, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x72, 0x65, 0x64, 0x52, 0x04, 0x63, 0x72, 0x65, 0x64, 0x22, 0x89, 0x01, 0x0a, 0x09, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x75, 0x62, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x2a, 0x0a, 0x09, 0x73, 0x65, 0x74, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x53, 0x65, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x08, 0x73, 0x65, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x2a, 0x0a, 0x09, 0x67, 0x65, 0x74, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x47, 0x65, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x08, 0x67, 0x65, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x22, 0x49, 0x0a, 0x0b, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x14, 0x0a, 0x05, 0x75, 0x6e, 0x73, 0x75, 0x62, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x75, 0x6e, 0x73, 0x75, 0x62, 0x22, 0xcb, 0x01, 0x0a, 0x09, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x50, 0x75, 0x62, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x17, 0x0a, 0x07, 0x6e, 0x6f, 0x5f, 0x65, 0x63, 0x68, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x6e, 0x6f, 0x45, 0x63, 0x68, 0x6f, 0x12, 0x2c, 0x0a, 0x04, 0x68, 0x65, 0x61, 0x64, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x50, 0x75, 0x62, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x68, 0x65, 0x61, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x1a, 0x37, 0x0a, 0x09, 0x48, 0x65, 0x61, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x56, 0x0a, 0x09, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x47, 0x65, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x23, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x47, 0x65, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x22, 0x56, 0x0a, 0x09, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x23, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x53, 0x65, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x22, 0x95, 0x02, 0x0a, 0x09, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x27, 0x0a, 0x04, 0x77, 0x68, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x6c, 0x2e, 0x57, 0x68, 0x61, 0x74, 0x52, 0x04, 0x77, 0x68, 0x61, 0x74, 0x12, 0x26, 0x0a, 0x07, 0x64, 0x65, 0x6c, 0x5f, 0x73, 0x65, 0x71, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x53, 0x65, 0x71, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x06, 0x64, 0x65, 0x6c, 0x53, 0x65, 0x71, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x04, 0x63, 0x72, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x72, 0x65, 0x64, 0x52, 0x04, 0x63, 0x72, 0x65, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x61, 0x72, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x68, 0x61, 0x72, 0x64, 0x22, 0x3f, 0x0a, 0x04, 0x57, 0x68, 0x61, 0x74, 0x12, 0x06, 0x0a, 0x02, 0x58, 0x30, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x4d, 0x53, 0x47, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x54, 0x4f, 0x50, 0x49, 0x43, 0x10, 0x02, 0x12, 0x07, 0x0a, 0x03, 0x53, 0x55, 0x42, 0x10, 0x03, 0x12, 0x08, 0x0a, 0x04, 0x55, 0x53, 0x45, 0x52, 0x10, 0x04, 0x12, 0x08, 0x0a, 0x04, 0x43, 0x52, 0x45, 0x44, 0x10, 0x05, 0x22, 0xb4, 0x01, 0x0a, 0x0a, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4e, 0x6f, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x21, 0x0a, 0x04, 0x77, 0x68, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0d, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x4e, 0x6f, 0x74, 0x65, 0x52, 0x04, 0x77, 0x68, 0x61, 0x74, 0x12, 0x15, 0x0a, 0x06, 0x73, 0x65, 0x71, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x65, 0x71, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x6e, 0x72, 0x65, 0x61, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x75, 0x6e, 0x72, 0x65, 0x61, 0x64, 0x12, 0x24, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0e, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x43, 0x61, 0x6c, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x80, 0x01, 0x0a, 0x0b, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x45, 0x78, 0x74, 0x72, 0x61, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x20, 0x0a, 0x0c, 0x6f, 0x6e, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x6c, 0x66, 0x5f, 0x6f, 0x66, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x6e, 0x42, 0x65, 0x68, 0x61, 0x6c, 0x66, 0x4f, 0x66, 0x12, 0x2d, 0x0a, 0x0a, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0e, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x22, 0xb2, 0x03, 0x0a, 0x09, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x73, 0x67, 0x12, 0x1f, 0x0a, 0x02, 0x68, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x48, 0x69, 0x48, 0x00, 0x52, 0x02, 0x68, 0x69, 0x12, 0x22, 0x0a, 0x03, 0x61, 0x63, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x41, 0x63, 0x63, 0x48, 0x00, 0x52, 0x03, 0x61, 0x63, 0x63, 0x12, 0x28, 0x0a, 0x05, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x48, 0x00, 0x52, 0x05, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x22, 0x0a, 0x03, 0x73, 0x75, 0x62, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x75, 0x62, 0x48, 0x00, 0x52, 0x03, 0x73, 0x75, 0x62, 0x12, 0x28, 0x0a, 0x05, 0x6c, 0x65, 0x61, 0x76, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x48, 0x00, 0x52, 0x05, 0x6c, 0x65, 0x61, 0x76, 0x65, 0x12, 0x22, 0x0a, 0x03, 0x70, 0x75, 0x62, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x50, 0x75, 0x62, 0x48, 0x00, 0x52, 0x03, 0x70, 0x75, 0x62, 0x12, 0x22, 0x0a, 0x03, 0x67, 0x65, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x47, 0x65, 0x74, 0x48, 0x00, 0x52, 0x03, 0x67, 0x65, 0x74, 0x12, 0x22, 0x0a, 0x03, 0x73, 0x65, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x74, 0x48, 0x00, 0x52, 0x03, 0x73, 0x65, 0x74, 0x12, 0x22, 0x0a, 0x03, 0x64, 0x65, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x6c, 0x48, 0x00, 0x52, 0x03, 0x64, 0x65, 0x6c, 0x12, 0x25, 0x0a, 0x04, 0x6e, 0x6f, 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4e, 0x6f, 0x74, 0x65, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x6f, 0x74, 0x65, 0x12, 0x26, 0x0a, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x45, 0x78, 0x74, 0x72, 0x61, 0x52, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x42, 0x09, 0x0a, 0x07, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x4e, 0x0a, 0x0a, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x72, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x6f, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x64, 0x6f, 0x6e, 0x65, 0x22, 0x9d, 0x04, 0x0a, 0x09, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x44, 0x65, 0x73, 0x63, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x6f, 0x75, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x6f, 0x75, 0x63, 0x68, 0x65, 0x64, 0x41, 0x74, 0x12, 0x2b, 0x0a, 0x06, 0x64, 0x65, 0x66, 0x61, 0x63, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x63, 0x73, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x06, 0x64, 0x65, 0x66, 0x61, 0x63, 0x73, 0x12, 0x21, 0x0a, 0x03, 0x61, 0x63, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x03, 0x61, 0x63, 0x73, 0x12, 0x15, 0x0a, 0x06, 0x73, 0x65, 0x71, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x65, 0x71, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x72, 0x65, 0x61, 0x64, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x65, 0x63, 0x76, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x72, 0x65, 0x63, 0x76, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x64, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x73, 0x74, 0x61, 0x74, 0x65, 0x41, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x73, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x69, 0x73, 0x43, 0x68, 0x61, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x65, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2f, 0x0a, 0x14, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x65, 0x6e, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x22, 0xd4, 0x03, 0x0a, 0x08, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x53, 0x75, 0x62, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x12, 0x21, 0x0a, 0x03, 0x61, 0x63, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x03, 0x61, 0x63, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x72, 0x65, 0x61, 0x64, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x65, 0x63, 0x76, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x72, 0x65, 0x63, 0x76, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x6f, 0x75, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x6f, 0x75, 0x63, 0x68, 0x65, 0x64, 0x41, 0x74, 0x12, 0x15, 0x0a, 0x06, 0x73, 0x65, 0x71, 0x5f, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x65, 0x71, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x64, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x65, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2f, 0x0a, 0x14, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x65, 0x6e, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x22, 0x4a, 0x0a, 0x09, 0x44, 0x65, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x15, 0x0a, 0x06, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x64, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x07, 0x64, 0x65, 0x6c, 0x5f, 0x73, 0x65, 0x71, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x53, 0x65, 0x71, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x06, 0x64, 0x65, 0x6c, 0x53, 0x65, 0x71, 0x22, 0xca, 0x01, 0x0a, 0x0a, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x74, 0x72, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x12, 0x33, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x74, 0x72, 0x6c, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x9a, 0x02, 0x0a, 0x0a, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x20, 0x0a, 0x0c, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1d, 0x0a, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x15, 0x0a, 0x06, 0x73, 0x65, 0x71, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x65, 0x71, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x04, 0x68, 0x65, 0x61, 0x64, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x68, 0x65, 0x61, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x1a, 0x37, 0x0a, 0x09, 0x48, 0x65, 0x61, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xc9, 0x03, 0x0a, 0x0a, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x50, 0x72, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x72, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x72, 0x63, 0x12, 0x28, 0x0a, 0x04, 0x77, 0x68, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x50, 0x72, 0x65, 0x73, 0x2e, 0x57, 0x68, 0x61, 0x74, 0x52, 0x04, 0x77, 0x68, 0x61, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x73, 0x65, 0x72, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x15, 0x0a, 0x06, 0x73, 0x65, 0x71, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x65, 0x71, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x64, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x07, 0x64, 0x65, 0x6c, 0x5f, 0x73, 0x65, 0x71, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x53, 0x65, 0x71, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x06, 0x64, 0x65, 0x6c, 0x53, 0x65, 0x71, 0x12, 0x24, 0x0a, 0x0e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0d, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x03, 0x61, 0x63, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x03, 0x61, 0x63, 0x73, 0x22, 0x86, 0x01, 0x0a, 0x04, 0x57, 0x68, 0x61, 0x74, 0x12, 0x06, 0x0a, 0x02, 0x58, 0x33, 0x10, 0x00, 0x12, 0x06, 0x0a, 0x02, 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x4f, 0x46, 0x46, 0x10, 0x02, 0x12, 0x06, 0x0a, 0x02, 0x55, 0x41, 0x10, 0x03, 0x12, 0x07, 0x0a, 0x03, 0x55, 0x50, 0x44, 0x10, 0x04, 0x12, 0x08, 0x0a, 0x04, 0x47, 0x4f, 0x4e, 0x45, 0x10, 0x05, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x43, 0x53, 0x10, 0x06, 0x12, 0x08, 0x0a, 0x04, 0x54, 0x45, 0x52, 0x4d, 0x10, 0x07, 0x12, 0x07, 0x0a, 0x03, 0x4d, 0x53, 0x47, 0x10, 0x08, 0x12, 0x08, 0x0a, 0x04, 0x52, 0x45, 0x41, 0x44, 0x10, 0x09, 0x12, 0x08, 0x0a, 0x04, 0x52, 0x45, 0x43, 0x56, 0x10, 0x0a, 0x12, 0x07, 0x0a, 0x03, 0x44, 0x45, 0x4c, 0x10, 0x0b, 0x12, 0x08, 0x0a, 0x04, 0x54, 0x41, 0x47, 0x53, 0x10, 0x0c, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x55, 0x58, 0x10, 0x0d, 0x22, 0xb6, 0x02, 0x0a, 0x0a, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x22, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x44, 0x65, 0x73, 0x63, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x1f, 0x0a, 0x03, 0x73, 0x75, 0x62, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x53, 0x75, 0x62, 0x52, 0x03, 0x73, 0x75, 0x62, 0x12, 0x20, 0x0a, 0x03, 0x64, 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x44, 0x65, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x03, 0x64, 0x65, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x23, 0x0a, 0x04, 0x63, 0x72, 0x65, 0x64, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x72, 0x65, 0x64, 0x52, 0x04, 0x63, 0x72, 0x65, 0x64, 0x12, 0x2a, 0x0a, 0x03, 0x61, 0x75, 0x78, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x2e, 0x41, 0x75, 0x78, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x03, 0x61, 0x75, 0x78, 0x1a, 0x36, 0x0a, 0x08, 0x41, 0x75, 0x78, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xd0, 0x01, 0x0a, 0x0a, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x20, 0x0a, 0x0c, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x04, 0x77, 0x68, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0d, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x4e, 0x6f, 0x74, 0x65, 0x52, 0x04, 0x77, 0x68, 0x61, 0x74, 0x12, 0x15, 0x0a, 0x06, 0x73, 0x65, 0x71, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x65, 0x71, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x72, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x72, 0x63, 0x12, 0x24, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0e, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x43, 0x61, 0x6c, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0xf3, 0x01, 0x0a, 0x09, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x25, 0x0a, 0x04, 0x63, 0x74, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x74, 0x72, 0x6c, 0x48, 0x00, 0x52, 0x04, 0x63, 0x74, 0x72, 0x6c, 0x12, 0x25, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x25, 0x0a, 0x04, 0x70, 0x72, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x50, 0x72, 0x65, 0x73, 0x48, 0x00, 0x52, 0x04, 0x70, 0x72, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x48, 0x00, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x12, 0x25, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x48, 0x00, 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x42, 0x09, 0x0a, 0x07, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x81, 0x01, 0x0a, 0x0a, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x25, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0d, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x26, 0x0a, 0x06, 0x73, 0x72, 0x76, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x52, 0x06, 0x73, 0x72, 0x76, 0x6d, 0x73, 0x67, 0x12, 0x24, 0x0a, 0x05, 0x63, 0x6c, 0x6d, 0x73, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x73, 0x67, 0x52, 0x05, 0x63, 0x6c, 0x6d, 0x73, 0x67, 0x22, 0xe9, 0x01, 0x0a, 0x07, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x0a, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0e, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x41, 0x64, 0x64, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x73, 0x65, 0x72, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x22, 0x4f, 0x0a, 0x09, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x12, 0x20, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x73, 0x67, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, 0x20, 0x0a, 0x04, 0x73, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x73, 0x65, 0x73, 0x73, 0x22, 0x3c, 0x0a, 0x0b, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x22, 0x71, 0x0a, 0x0b, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x25, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0d, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x25, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x53, 0x75, 0x62, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x67, 0x0a, 0x0a, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x09, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x43, 0x72, 0x75, 0x64, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x44, 0x65, 0x73, 0x63, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x22, 0xac, 0x01, 0x0a, 0x0c, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x09, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x43, 0x72, 0x75, 0x64, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x34, 0x0a, 0x0b, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x61, 0x63, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x63, 0x73, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x0a, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x63, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x22, 0xed, 0x01, 0x0a, 0x11, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x09, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x43, 0x72, 0x75, 0x64, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x64, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x72, 0x65, 0x61, 0x64, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x65, 0x63, 0x76, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x72, 0x65, 0x63, 0x76, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x22, 0x54, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x09, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x43, 0x72, 0x75, 0x64, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, 0x36, 0x0a, 0x04, 0x41, 0x75, 0x74, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x22, 0x63, 0x0a, 0x08, 0x46, 0x69, 0x6c, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x69, 0x6d, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x69, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x65, 0x74, 0x61, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x65, 0x74, 0x61, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x22, 0x8d, 0x01, 0x0a, 0x09, 0x46, 0x69, 0x6c, 0x65, 0x55, 0x70, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x04, 0x61, 0x75, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x52, 0x04, 0x61, 0x75, 0x74, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x21, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0x84, 0x01, 0x0a, 0x0a, 0x46, 0x69, 0x6c, 0x65, 0x55, 0x70, 0x52, 0x65, 0x73, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x12, 0x21, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x64, 0x69, 0x72, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x64, 0x69, 0x72, 0x55, 0x72, 0x6c, 0x22, 0x6f, 0x0a, 0x0b, 0x46, 0x69, 0x6c, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x04, 0x61, 0x75, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x52, 0x04, 0x61, 0x75, 0x74, 0x68, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x66, 0x5f, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x66, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x22, 0xa0, 0x01, 0x0a, 0x0c, 0x46, 0x69, 0x6c, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x12, 0x21, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x64, 0x69, 0x72, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x64, 0x69, 0x72, 0x55, 0x72, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2a, 0x33, 0x0a, 0x09, 0x41, 0x75, 0x74, 0x68, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x41, 0x4e, 0x4f, 0x4e, 0x10, 0x0a, 0x12, 0x08, 0x0a, 0x04, 0x41, 0x55, 0x54, 0x48, 0x10, 0x14, 0x12, 0x08, 0x0a, 0x04, 0x52, 0x4f, 0x4f, 0x54, 0x10, 0x1e, 0x2a, 0x38, 0x0a, 0x08, 0x49, 0x6e, 0x66, 0x6f, 0x4e, 0x6f, 0x74, 0x65, 0x12, 0x06, 0x0a, 0x02, 0x58, 0x31, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x52, 0x45, 0x41, 0x44, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x52, 0x45, 0x43, 0x56, 0x10, 0x02, 0x12, 0x06, 0x0a, 0x02, 0x4b, 0x50, 0x10, 0x03, 0x12, 0x08, 0x0a, 0x04, 0x43, 0x41, 0x4c, 0x4c, 0x10, 0x04, 0x2a, 0x6f, 0x0a, 0x09, 0x43, 0x61, 0x6c, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x06, 0x0a, 0x02, 0x58, 0x32, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x41, 0x43, 0x43, 0x45, 0x50, 0x54, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x41, 0x4e, 0x53, 0x57, 0x45, 0x52, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x48, 0x41, 0x4e, 0x47, 0x5f, 0x55, 0x50, 0x10, 0x03, 0x12, 0x11, 0x0a, 0x0d, 0x49, 0x43, 0x45, 0x5f, 0x43, 0x41, 0x4e, 0x44, 0x49, 0x44, 0x41, 0x54, 0x45, 0x10, 0x04, 0x12, 0x0a, 0x0a, 0x06, 0x49, 0x4e, 0x56, 0x49, 0x54, 0x45, 0x10, 0x05, 0x12, 0x09, 0x0a, 0x05, 0x4f, 0x46, 0x46, 0x45, 0x52, 0x10, 0x06, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x49, 0x4e, 0x47, 0x49, 0x4e, 0x47, 0x10, 0x07, 0x2a, 0x3c, 0x0a, 0x08, 0x52, 0x65, 0x73, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x4f, 0x4e, 0x54, 0x49, 0x4e, 0x55, 0x45, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x44, 0x52, 0x4f, 0x50, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x45, 0x53, 0x50, 0x4f, 0x4e, 0x44, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x45, 0x50, 0x4c, 0x41, 0x43, 0x45, 0x10, 0x03, 0x2a, 0x2a, 0x0a, 0x04, 0x43, 0x72, 0x75, 0x64, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x02, 0x32, 0xaf, 0x01, 0x0a, 0x04, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x33, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x6f, 0x70, 0x12, 0x0e, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x73, 0x67, 0x1a, 0x0e, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x22, 0x00, 0x28, 0x01, 0x30, 0x01, 0x12, 0x37, 0x0a, 0x10, 0x4c, 0x61, 0x72, 0x67, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x12, 0x0e, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x55, 0x70, 0x52, 0x65, 0x71, 0x1a, 0x0f, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x55, 0x70, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x28, 0x01, 0x12, 0x39, 0x0a, 0x0e, 0x4c, 0x61, 0x72, 0x67, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x12, 0x10, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x30, 0x01, 0x32, 0x9f, 0x02, 0x0a, 0x06, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x12, 0x2d, 0x0a, 0x08, 0x46, 0x69, 0x72, 0x65, 0x48, 0x6f, 0x73, 0x65, 0x12, 0x0e, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x0f, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x2c, 0x0a, 0x04, 0x46, 0x69, 0x6e, 0x64, 0x12, 0x10, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x51, 0x75, 0x65, 0x72, 0x79, 0x1a, 0x10, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x22, 0x00, 0x12, 0x2b, 0x0a, 0x07, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x11, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x1a, 0x0b, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x22, 0x00, 0x12, 0x27, 0x0a, 0x05, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x1a, 0x0b, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x22, 0x00, 0x12, 0x35, 0x0a, 0x0c, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x1a, 0x0b, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x22, 0x00, 0x12, 0x2b, 0x0a, 0x07, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x11, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x1a, 0x0b, 0x2e, 0x70, 0x62, 0x78, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x22, 0x00, 0x42, 0x1c, 0x5a, 0x1a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x74, 0x69, 0x6e, 0x6f, 0x64, 0x65, 0x2f, 0x63, 0x68, 0x61, 0x74, 0x2f, 0x70, 0x62, 0x78, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( file_model_proto_rawDescOnce sync.Once file_model_proto_rawDescData = file_model_proto_rawDesc ) func file_model_proto_rawDescGZIP() []byte { file_model_proto_rawDescOnce.Do(func() { file_model_proto_rawDescData = protoimpl.X.CompressGZIP(file_model_proto_rawDescData) }) return file_model_proto_rawDescData } var file_model_proto_enumTypes = make([]protoimpl.EnumInfo, 7) var file_model_proto_msgTypes = make([]protoimpl.MessageInfo, 53) var file_model_proto_goTypes = []interface{}{ (AuthLevel)(0), // 0: pbx.AuthLevel (InfoNote)(0), // 1: pbx.InfoNote (CallEvent)(0), // 2: pbx.CallEvent (RespCode)(0), // 3: pbx.RespCode (Crud)(0), // 4: pbx.Crud (ClientDel_What)(0), // 5: pbx.ClientDel.What (ServerPres_What)(0), // 6: pbx.ServerPres.What (*Unused)(nil), // 7: pbx.Unused (*DefaultAcsMode)(nil), // 8: pbx.DefaultAcsMode (*AccessMode)(nil), // 9: pbx.AccessMode (*SetSub)(nil), // 10: pbx.SetSub (*ClientCred)(nil), // 11: pbx.ClientCred (*SetDesc)(nil), // 12: pbx.SetDesc (*SeqRange)(nil), // 13: pbx.SeqRange (*GetOpts)(nil), // 14: pbx.GetOpts (*GetQuery)(nil), // 15: pbx.GetQuery (*SetQuery)(nil), // 16: pbx.SetQuery (*ClientHi)(nil), // 17: pbx.ClientHi (*ClientAcc)(nil), // 18: pbx.ClientAcc (*ClientLogin)(nil), // 19: pbx.ClientLogin (*ClientSub)(nil), // 20: pbx.ClientSub (*ClientLeave)(nil), // 21: pbx.ClientLeave (*ClientPub)(nil), // 22: pbx.ClientPub (*ClientGet)(nil), // 23: pbx.ClientGet (*ClientSet)(nil), // 24: pbx.ClientSet (*ClientDel)(nil), // 25: pbx.ClientDel (*ClientNote)(nil), // 26: pbx.ClientNote (*ClientExtra)(nil), // 27: pbx.ClientExtra (*ClientMsg)(nil), // 28: pbx.ClientMsg (*ServerCred)(nil), // 29: pbx.ServerCred (*TopicDesc)(nil), // 30: pbx.TopicDesc (*TopicSub)(nil), // 31: pbx.TopicSub (*DelValues)(nil), // 32: pbx.DelValues (*ServerCtrl)(nil), // 33: pbx.ServerCtrl (*ServerData)(nil), // 34: pbx.ServerData (*ServerPres)(nil), // 35: pbx.ServerPres (*ServerMeta)(nil), // 36: pbx.ServerMeta (*ServerInfo)(nil), // 37: pbx.ServerInfo (*ServerMsg)(nil), // 38: pbx.ServerMsg (*ServerResp)(nil), // 39: pbx.ServerResp (*Session)(nil), // 40: pbx.Session (*ClientReq)(nil), // 41: pbx.ClientReq (*SearchQuery)(nil), // 42: pbx.SearchQuery (*SearchFound)(nil), // 43: pbx.SearchFound (*TopicEvent)(nil), // 44: pbx.TopicEvent (*AccountEvent)(nil), // 45: pbx.AccountEvent (*SubscriptionEvent)(nil), // 46: pbx.SubscriptionEvent (*MessageEvent)(nil), // 47: pbx.MessageEvent (*Auth)(nil), // 48: pbx.Auth (*FileMeta)(nil), // 49: pbx.FileMeta (*FileUpReq)(nil), // 50: pbx.FileUpReq (*FileUpResp)(nil), // 51: pbx.FileUpResp (*FileDownReq)(nil), // 52: pbx.FileDownReq (*FileDownResp)(nil), // 53: pbx.FileDownResp nil, // 54: pbx.ClientCred.ParamsEntry nil, // 55: pbx.SetQuery.AuxEntry nil, // 56: pbx.ClientPub.HeadEntry nil, // 57: pbx.ServerCtrl.ParamsEntry nil, // 58: pbx.ServerData.HeadEntry nil, // 59: pbx.ServerMeta.AuxEntry } var file_model_proto_depIdxs = []int32{ 54, // 0: pbx.ClientCred.params:type_name -> pbx.ClientCred.ParamsEntry 8, // 1: pbx.SetDesc.default_acs:type_name -> pbx.DefaultAcsMode 13, // 2: pbx.GetOpts.ranges:type_name -> pbx.SeqRange 14, // 3: pbx.GetQuery.desc:type_name -> pbx.GetOpts 14, // 4: pbx.GetQuery.sub:type_name -> pbx.GetOpts 14, // 5: pbx.GetQuery.data:type_name -> pbx.GetOpts 12, // 6: pbx.SetQuery.desc:type_name -> pbx.SetDesc 10, // 7: pbx.SetQuery.sub:type_name -> pbx.SetSub 11, // 8: pbx.SetQuery.cred:type_name -> pbx.ClientCred 55, // 9: pbx.SetQuery.aux:type_name -> pbx.SetQuery.AuxEntry 12, // 10: pbx.ClientAcc.desc:type_name -> pbx.SetDesc 11, // 11: pbx.ClientAcc.cred:type_name -> pbx.ClientCred 0, // 12: pbx.ClientAcc.auth_level:type_name -> pbx.AuthLevel 11, // 13: pbx.ClientLogin.cred:type_name -> pbx.ClientCred 16, // 14: pbx.ClientSub.set_query:type_name -> pbx.SetQuery 15, // 15: pbx.ClientSub.get_query:type_name -> pbx.GetQuery 56, // 16: pbx.ClientPub.head:type_name -> pbx.ClientPub.HeadEntry 15, // 17: pbx.ClientGet.query:type_name -> pbx.GetQuery 16, // 18: pbx.ClientSet.query:type_name -> pbx.SetQuery 5, // 19: pbx.ClientDel.what:type_name -> pbx.ClientDel.What 13, // 20: pbx.ClientDel.del_seq:type_name -> pbx.SeqRange 11, // 21: pbx.ClientDel.cred:type_name -> pbx.ClientCred 1, // 22: pbx.ClientNote.what:type_name -> pbx.InfoNote 2, // 23: pbx.ClientNote.event:type_name -> pbx.CallEvent 0, // 24: pbx.ClientExtra.auth_level:type_name -> pbx.AuthLevel 17, // 25: pbx.ClientMsg.hi:type_name -> pbx.ClientHi 18, // 26: pbx.ClientMsg.acc:type_name -> pbx.ClientAcc 19, // 27: pbx.ClientMsg.login:type_name -> pbx.ClientLogin 20, // 28: pbx.ClientMsg.sub:type_name -> pbx.ClientSub 21, // 29: pbx.ClientMsg.leave:type_name -> pbx.ClientLeave 22, // 30: pbx.ClientMsg.pub:type_name -> pbx.ClientPub 23, // 31: pbx.ClientMsg.get:type_name -> pbx.ClientGet 24, // 32: pbx.ClientMsg.set:type_name -> pbx.ClientSet 25, // 33: pbx.ClientMsg.del:type_name -> pbx.ClientDel 26, // 34: pbx.ClientMsg.note:type_name -> pbx.ClientNote 27, // 35: pbx.ClientMsg.extra:type_name -> pbx.ClientExtra 8, // 36: pbx.TopicDesc.defacs:type_name -> pbx.DefaultAcsMode 9, // 37: pbx.TopicDesc.acs:type_name -> pbx.AccessMode 9, // 38: pbx.TopicSub.acs:type_name -> pbx.AccessMode 13, // 39: pbx.DelValues.del_seq:type_name -> pbx.SeqRange 57, // 40: pbx.ServerCtrl.params:type_name -> pbx.ServerCtrl.ParamsEntry 58, // 41: pbx.ServerData.head:type_name -> pbx.ServerData.HeadEntry 6, // 42: pbx.ServerPres.what:type_name -> pbx.ServerPres.What 13, // 43: pbx.ServerPres.del_seq:type_name -> pbx.SeqRange 9, // 44: pbx.ServerPres.acs:type_name -> pbx.AccessMode 30, // 45: pbx.ServerMeta.desc:type_name -> pbx.TopicDesc 31, // 46: pbx.ServerMeta.sub:type_name -> pbx.TopicSub 32, // 47: pbx.ServerMeta.del:type_name -> pbx.DelValues 29, // 48: pbx.ServerMeta.cred:type_name -> pbx.ServerCred 59, // 49: pbx.ServerMeta.aux:type_name -> pbx.ServerMeta.AuxEntry 1, // 50: pbx.ServerInfo.what:type_name -> pbx.InfoNote 2, // 51: pbx.ServerInfo.event:type_name -> pbx.CallEvent 33, // 52: pbx.ServerMsg.ctrl:type_name -> pbx.ServerCtrl 34, // 53: pbx.ServerMsg.data:type_name -> pbx.ServerData 35, // 54: pbx.ServerMsg.pres:type_name -> pbx.ServerPres 36, // 55: pbx.ServerMsg.meta:type_name -> pbx.ServerMeta 37, // 56: pbx.ServerMsg.info:type_name -> pbx.ServerInfo 3, // 57: pbx.ServerResp.status:type_name -> pbx.RespCode 38, // 58: pbx.ServerResp.srvmsg:type_name -> pbx.ServerMsg 28, // 59: pbx.ServerResp.clmsg:type_name -> pbx.ClientMsg 0, // 60: pbx.Session.auth_level:type_name -> pbx.AuthLevel 28, // 61: pbx.ClientReq.msg:type_name -> pbx.ClientMsg 40, // 62: pbx.ClientReq.sess:type_name -> pbx.Session 3, // 63: pbx.SearchFound.status:type_name -> pbx.RespCode 31, // 64: pbx.SearchFound.result:type_name -> pbx.TopicSub 4, // 65: pbx.TopicEvent.action:type_name -> pbx.Crud 30, // 66: pbx.TopicEvent.desc:type_name -> pbx.TopicDesc 4, // 67: pbx.AccountEvent.action:type_name -> pbx.Crud 8, // 68: pbx.AccountEvent.default_acs:type_name -> pbx.DefaultAcsMode 4, // 69: pbx.SubscriptionEvent.action:type_name -> pbx.Crud 9, // 70: pbx.SubscriptionEvent.mode:type_name -> pbx.AccessMode 4, // 71: pbx.MessageEvent.action:type_name -> pbx.Crud 34, // 72: pbx.MessageEvent.msg:type_name -> pbx.ServerData 48, // 73: pbx.FileUpReq.auth:type_name -> pbx.Auth 49, // 74: pbx.FileUpReq.meta:type_name -> pbx.FileMeta 49, // 75: pbx.FileUpResp.meta:type_name -> pbx.FileMeta 48, // 76: pbx.FileDownReq.auth:type_name -> pbx.Auth 49, // 77: pbx.FileDownResp.meta:type_name -> pbx.FileMeta 28, // 78: pbx.Node.MessageLoop:input_type -> pbx.ClientMsg 50, // 79: pbx.Node.LargeFileReceive:input_type -> pbx.FileUpReq 52, // 80: pbx.Node.LargeFileServe:input_type -> pbx.FileDownReq 41, // 81: pbx.Plugin.FireHose:input_type -> pbx.ClientReq 42, // 82: pbx.Plugin.Find:input_type -> pbx.SearchQuery 45, // 83: pbx.Plugin.Account:input_type -> pbx.AccountEvent 44, // 84: pbx.Plugin.Topic:input_type -> pbx.TopicEvent 46, // 85: pbx.Plugin.Subscription:input_type -> pbx.SubscriptionEvent 47, // 86: pbx.Plugin.Message:input_type -> pbx.MessageEvent 38, // 87: pbx.Node.MessageLoop:output_type -> pbx.ServerMsg 51, // 88: pbx.Node.LargeFileReceive:output_type -> pbx.FileUpResp 53, // 89: pbx.Node.LargeFileServe:output_type -> pbx.FileDownResp 39, // 90: pbx.Plugin.FireHose:output_type -> pbx.ServerResp 43, // 91: pbx.Plugin.Find:output_type -> pbx.SearchFound 7, // 92: pbx.Plugin.Account:output_type -> pbx.Unused 7, // 93: pbx.Plugin.Topic:output_type -> pbx.Unused 7, // 94: pbx.Plugin.Subscription:output_type -> pbx.Unused 7, // 95: pbx.Plugin.Message:output_type -> pbx.Unused 87, // [87:96] is the sub-list for method output_type 78, // [78:87] is the sub-list for method input_type 78, // [78:78] is the sub-list for extension type_name 78, // [78:78] is the sub-list for extension extendee 0, // [0:78] is the sub-list for field type_name } func init() { file_model_proto_init() } func file_model_proto_init() { if File_model_proto != nil { return } if !protoimpl.UnsafeEnabled { file_model_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Unused); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DefaultAcsMode); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AccessMode); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SetSub); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ClientCred); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SetDesc); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SeqRange); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetOpts); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetQuery); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SetQuery); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ClientHi); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ClientAcc); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ClientLogin); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ClientSub); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ClientLeave); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ClientPub); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ClientGet); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ClientSet); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ClientDel); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ClientNote); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ClientExtra); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ClientMsg); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ServerCred); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TopicDesc); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TopicSub); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DelValues); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ServerCtrl); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ServerData); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ServerPres); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ServerMeta); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ServerInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ServerMsg); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ServerResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Session); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ClientReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SearchQuery); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SearchFound); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TopicEvent); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AccountEvent); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SubscriptionEvent); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MessageEvent); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Auth); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FileMeta); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FileUpReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FileUpResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FileDownReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_model_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FileDownResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } } file_model_proto_msgTypes[21].OneofWrappers = []interface{}{ (*ClientMsg_Hi)(nil), (*ClientMsg_Acc)(nil), (*ClientMsg_Login)(nil), (*ClientMsg_Sub)(nil), (*ClientMsg_Leave)(nil), (*ClientMsg_Pub)(nil), (*ClientMsg_Get)(nil), (*ClientMsg_Set)(nil), (*ClientMsg_Del)(nil), (*ClientMsg_Note)(nil), } file_model_proto_msgTypes[31].OneofWrappers = []interface{}{ (*ServerMsg_Ctrl)(nil), (*ServerMsg_Data)(nil), (*ServerMsg_Pres)(nil), (*ServerMsg_Meta)(nil), (*ServerMsg_Info)(nil), } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_model_proto_rawDesc, NumEnums: 7, NumMessages: 53, NumExtensions: 0, NumServices: 2, }, GoTypes: file_model_proto_goTypes, DependencyIndexes: file_model_proto_depIdxs, EnumInfos: file_model_proto_enumTypes, MessageInfos: file_model_proto_msgTypes, }.Build() File_model_proto = out.File file_model_proto_rawDesc = nil file_model_proto_goTypes = nil file_model_proto_depIdxs = nil }