From d6cfe3c68b6d303467badb19520bf0e912d92f0d Mon Sep 17 00:00:00 2001 From: Denys Smirnov Date: Mon, 9 Dec 2024 19:58:12 +0200 Subject: [PATCH] Update API for SIP. --- .changeset/yellow-beers-sin.md | 6 + livekit/livekit_models.pb.go | 499 ++++---- livekit/livekit_sip.pb.go | 1952 ++++++++++++++++++++++---------- livekit/livekit_sip.twirp.go | 1392 ++++++++++++++++++----- livekit/sip.go | 272 +++++ livekit/types.go | 46 + protobufs/livekit_models.proto | 5 + protobufs/livekit_sip.proto | 73 +- 8 files changed, 3136 insertions(+), 1109 deletions(-) create mode 100644 .changeset/yellow-beers-sin.md diff --git a/.changeset/yellow-beers-sin.md b/.changeset/yellow-beers-sin.md new file mode 100644 index 00000000..73ea9fa8 --- /dev/null +++ b/.changeset/yellow-beers-sin.md @@ -0,0 +1,6 @@ +--- +"@livekit/protocol": minor +"github.com/livekit/protocol": minor +--- + +Update API for SIP. diff --git a/livekit/livekit_models.pb.go b/livekit/livekit_models.pb.go index b56c1a24..97b18a59 100644 --- a/livekit/livekit_models.pb.go +++ b/livekit/livekit_models.pb.go @@ -752,7 +752,7 @@ func (x ParticipantInfo_State) Number() protoreflect.EnumNumber { // Deprecated: Use ParticipantInfo_State.Descriptor instead. func (ParticipantInfo_State) EnumDescriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{4, 0} + return file_livekit_models_proto_rawDescGZIP(), []int{5, 0} } type ParticipantInfo_Kind int32 @@ -812,7 +812,7 @@ func (x ParticipantInfo_Kind) Number() protoreflect.EnumNumber { // Deprecated: Use ParticipantInfo_Kind.Descriptor instead. func (ParticipantInfo_Kind) EnumDescriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{4, 1} + return file_livekit_models_proto_rawDescGZIP(), []int{5, 1} } type Encryption_Type int32 @@ -861,7 +861,7 @@ func (x Encryption_Type) Number() protoreflect.EnumNumber { // Deprecated: Use Encryption_Type.Descriptor instead. func (Encryption_Type) EnumDescriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{5, 0} + return file_livekit_models_proto_rawDescGZIP(), []int{6, 0} } type DataPacket_Kind int32 @@ -907,7 +907,7 @@ func (x DataPacket_Kind) Number() protoreflect.EnumNumber { // Deprecated: Use DataPacket_Kind.Descriptor instead. func (DataPacket_Kind) EnumDescriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{9, 0} + return file_livekit_models_proto_rawDescGZIP(), []int{10, 0} } type ServerInfo_Edition int32 @@ -953,7 +953,7 @@ func (x ServerInfo_Edition) Number() protoreflect.EnumNumber { // Deprecated: Use ServerInfo_Edition.Descriptor instead. func (ServerInfo_Edition) EnumDescriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{22, 0} + return file_livekit_models_proto_rawDescGZIP(), []int{23, 0} } type ClientInfo_SDK int32 @@ -1032,7 +1032,7 @@ func (x ClientInfo_SDK) Number() protoreflect.EnumNumber { // Deprecated: Use ClientInfo_SDK.Descriptor instead. func (ClientInfo_SDK) EnumDescriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{23, 0} + return file_livekit_models_proto_rawDescGZIP(), []int{24, 0} } // enum for operation types (specific to TextHeader) @@ -1085,7 +1085,53 @@ func (x DataStream_OperationType) Number() protoreflect.EnumNumber { // Deprecated: Use DataStream_OperationType.Descriptor instead. func (DataStream_OperationType) EnumDescriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{34, 0} + return file_livekit_models_proto_rawDescGZIP(), []int{35, 0} +} + +// ListUpdate is used for updated APIs where 'repeated string' field is modified. +type ListUpdate struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Set []string `protobuf:"bytes,1,rep,name=set,proto3" json:"set,omitempty"` // set the field to a new list +} + +func (x *ListUpdate) Reset() { + *x = ListUpdate{} + mi := &file_livekit_models_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListUpdate) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListUpdate) ProtoMessage() {} + +func (x *ListUpdate) ProtoReflect() protoreflect.Message { + mi := &file_livekit_models_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListUpdate.ProtoReflect.Descriptor instead. +func (*ListUpdate) Descriptor() ([]byte, []int) { + return file_livekit_models_proto_rawDescGZIP(), []int{0} +} + +func (x *ListUpdate) GetSet() []string { + if x != nil { + return x.Set + } + return nil } type Room struct { @@ -1110,7 +1156,7 @@ type Room struct { func (x *Room) Reset() { *x = Room{} - mi := &file_livekit_models_proto_msgTypes[0] + mi := &file_livekit_models_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1122,7 +1168,7 @@ func (x *Room) String() string { func (*Room) ProtoMessage() {} func (x *Room) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[0] + mi := &file_livekit_models_proto_msgTypes[1] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1135,7 +1181,7 @@ func (x *Room) ProtoReflect() protoreflect.Message { // Deprecated: Use Room.ProtoReflect.Descriptor instead. func (*Room) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{0} + return file_livekit_models_proto_rawDescGZIP(), []int{1} } func (x *Room) GetSid() string { @@ -1240,7 +1286,7 @@ type Codec struct { func (x *Codec) Reset() { *x = Codec{} - mi := &file_livekit_models_proto_msgTypes[1] + mi := &file_livekit_models_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1252,7 +1298,7 @@ func (x *Codec) String() string { func (*Codec) ProtoMessage() {} func (x *Codec) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[1] + mi := &file_livekit_models_proto_msgTypes[2] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1265,7 +1311,7 @@ func (x *Codec) ProtoReflect() protoreflect.Message { // Deprecated: Use Codec.ProtoReflect.Descriptor instead. func (*Codec) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{1} + return file_livekit_models_proto_rawDescGZIP(), []int{2} } func (x *Codec) GetMime() string { @@ -1294,7 +1340,7 @@ type PlayoutDelay struct { func (x *PlayoutDelay) Reset() { *x = PlayoutDelay{} - mi := &file_livekit_models_proto_msgTypes[2] + mi := &file_livekit_models_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1306,7 +1352,7 @@ func (x *PlayoutDelay) String() string { func (*PlayoutDelay) ProtoMessage() {} func (x *PlayoutDelay) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[2] + mi := &file_livekit_models_proto_msgTypes[3] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1319,7 +1365,7 @@ func (x *PlayoutDelay) ProtoReflect() protoreflect.Message { // Deprecated: Use PlayoutDelay.ProtoReflect.Descriptor instead. func (*PlayoutDelay) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{2} + return file_livekit_models_proto_rawDescGZIP(), []int{3} } func (x *PlayoutDelay) GetEnabled() bool { @@ -1376,7 +1422,7 @@ type ParticipantPermission struct { func (x *ParticipantPermission) Reset() { *x = ParticipantPermission{} - mi := &file_livekit_models_proto_msgTypes[3] + mi := &file_livekit_models_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1388,7 +1434,7 @@ func (x *ParticipantPermission) String() string { func (*ParticipantPermission) ProtoMessage() {} func (x *ParticipantPermission) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[3] + mi := &file_livekit_models_proto_msgTypes[4] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1401,7 +1447,7 @@ func (x *ParticipantPermission) ProtoReflect() protoreflect.Message { // Deprecated: Use ParticipantPermission.ProtoReflect.Descriptor instead. func (*ParticipantPermission) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{3} + return file_livekit_models_proto_rawDescGZIP(), []int{4} } func (x *ParticipantPermission) GetCanSubscribe() bool { @@ -1495,7 +1541,7 @@ type ParticipantInfo struct { func (x *ParticipantInfo) Reset() { *x = ParticipantInfo{} - mi := &file_livekit_models_proto_msgTypes[4] + mi := &file_livekit_models_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1507,7 +1553,7 @@ func (x *ParticipantInfo) String() string { func (*ParticipantInfo) ProtoMessage() {} func (x *ParticipantInfo) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[4] + mi := &file_livekit_models_proto_msgTypes[5] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1520,7 +1566,7 @@ func (x *ParticipantInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use ParticipantInfo.ProtoReflect.Descriptor instead. func (*ParticipantInfo) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{4} + return file_livekit_models_proto_rawDescGZIP(), []int{5} } func (x *ParticipantInfo) GetSid() string { @@ -1629,7 +1675,7 @@ type Encryption struct { func (x *Encryption) Reset() { *x = Encryption{} - mi := &file_livekit_models_proto_msgTypes[5] + mi := &file_livekit_models_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1641,7 +1687,7 @@ func (x *Encryption) String() string { func (*Encryption) ProtoMessage() {} func (x *Encryption) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[5] + mi := &file_livekit_models_proto_msgTypes[6] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1654,7 +1700,7 @@ func (x *Encryption) ProtoReflect() protoreflect.Message { // Deprecated: Use Encryption.ProtoReflect.Descriptor instead. func (*Encryption) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{5} + return file_livekit_models_proto_rawDescGZIP(), []int{6} } type SimulcastCodecInfo struct { @@ -1670,7 +1716,7 @@ type SimulcastCodecInfo struct { func (x *SimulcastCodecInfo) Reset() { *x = SimulcastCodecInfo{} - mi := &file_livekit_models_proto_msgTypes[6] + mi := &file_livekit_models_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1682,7 +1728,7 @@ func (x *SimulcastCodecInfo) String() string { func (*SimulcastCodecInfo) ProtoMessage() {} func (x *SimulcastCodecInfo) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[6] + mi := &file_livekit_models_proto_msgTypes[7] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1695,7 +1741,7 @@ func (x *SimulcastCodecInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use SimulcastCodecInfo.ProtoReflect.Descriptor instead. func (*SimulcastCodecInfo) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{6} + return file_livekit_models_proto_rawDescGZIP(), []int{7} } func (x *SimulcastCodecInfo) GetMimeType() string { @@ -1762,7 +1808,7 @@ type TrackInfo struct { func (x *TrackInfo) Reset() { *x = TrackInfo{} - mi := &file_livekit_models_proto_msgTypes[7] + mi := &file_livekit_models_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1774,7 +1820,7 @@ func (x *TrackInfo) String() string { func (*TrackInfo) ProtoMessage() {} func (x *TrackInfo) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[7] + mi := &file_livekit_models_proto_msgTypes[8] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1787,7 +1833,7 @@ func (x *TrackInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use TrackInfo.ProtoReflect.Descriptor instead. func (*TrackInfo) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{7} + return file_livekit_models_proto_rawDescGZIP(), []int{8} } func (x *TrackInfo) GetSid() string { @@ -1940,7 +1986,7 @@ type VideoLayer struct { func (x *VideoLayer) Reset() { *x = VideoLayer{} - mi := &file_livekit_models_proto_msgTypes[8] + mi := &file_livekit_models_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1952,7 +1998,7 @@ func (x *VideoLayer) String() string { func (*VideoLayer) ProtoMessage() {} func (x *VideoLayer) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[8] + mi := &file_livekit_models_proto_msgTypes[9] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1965,7 +2011,7 @@ func (x *VideoLayer) ProtoReflect() protoreflect.Message { // Deprecated: Use VideoLayer.ProtoReflect.Descriptor instead. func (*VideoLayer) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{8} + return file_livekit_models_proto_rawDescGZIP(), []int{9} } func (x *VideoLayer) GetQuality() VideoQuality { @@ -2033,7 +2079,7 @@ type DataPacket struct { func (x *DataPacket) Reset() { *x = DataPacket{} - mi := &file_livekit_models_proto_msgTypes[9] + mi := &file_livekit_models_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2045,7 +2091,7 @@ func (x *DataPacket) String() string { func (*DataPacket) ProtoMessage() {} func (x *DataPacket) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[9] + mi := &file_livekit_models_proto_msgTypes[10] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2058,7 +2104,7 @@ func (x *DataPacket) ProtoReflect() protoreflect.Message { // Deprecated: Use DataPacket.ProtoReflect.Descriptor instead. func (*DataPacket) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{9} + return file_livekit_models_proto_rawDescGZIP(), []int{10} } // Deprecated: Marked as deprecated in livekit_models.proto. @@ -2249,7 +2295,7 @@ type ActiveSpeakerUpdate struct { func (x *ActiveSpeakerUpdate) Reset() { *x = ActiveSpeakerUpdate{} - mi := &file_livekit_models_proto_msgTypes[10] + mi := &file_livekit_models_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2261,7 +2307,7 @@ func (x *ActiveSpeakerUpdate) String() string { func (*ActiveSpeakerUpdate) ProtoMessage() {} func (x *ActiveSpeakerUpdate) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[10] + mi := &file_livekit_models_proto_msgTypes[11] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2274,7 +2320,7 @@ func (x *ActiveSpeakerUpdate) ProtoReflect() protoreflect.Message { // Deprecated: Use ActiveSpeakerUpdate.ProtoReflect.Descriptor instead. func (*ActiveSpeakerUpdate) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{10} + return file_livekit_models_proto_rawDescGZIP(), []int{11} } func (x *ActiveSpeakerUpdate) GetSpeakers() []*SpeakerInfo { @@ -2298,7 +2344,7 @@ type SpeakerInfo struct { func (x *SpeakerInfo) Reset() { *x = SpeakerInfo{} - mi := &file_livekit_models_proto_msgTypes[11] + mi := &file_livekit_models_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2310,7 +2356,7 @@ func (x *SpeakerInfo) String() string { func (*SpeakerInfo) ProtoMessage() {} func (x *SpeakerInfo) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[11] + mi := &file_livekit_models_proto_msgTypes[12] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2323,7 +2369,7 @@ func (x *SpeakerInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use SpeakerInfo.ProtoReflect.Descriptor instead. func (*SpeakerInfo) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{11} + return file_livekit_models_proto_rawDescGZIP(), []int{12} } func (x *SpeakerInfo) GetSid() string { @@ -2379,7 +2425,7 @@ type UserPacket struct { func (x *UserPacket) Reset() { *x = UserPacket{} - mi := &file_livekit_models_proto_msgTypes[12] + mi := &file_livekit_models_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2391,7 +2437,7 @@ func (x *UserPacket) String() string { func (*UserPacket) ProtoMessage() {} func (x *UserPacket) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[12] + mi := &file_livekit_models_proto_msgTypes[13] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2404,7 +2450,7 @@ func (x *UserPacket) ProtoReflect() protoreflect.Message { // Deprecated: Use UserPacket.ProtoReflect.Descriptor instead. func (*UserPacket) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{12} + return file_livekit_models_proto_rawDescGZIP(), []int{13} } // Deprecated: Marked as deprecated in livekit_models.proto. @@ -2485,7 +2531,7 @@ type SipDTMF struct { func (x *SipDTMF) Reset() { *x = SipDTMF{} - mi := &file_livekit_models_proto_msgTypes[13] + mi := &file_livekit_models_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2497,7 +2543,7 @@ func (x *SipDTMF) String() string { func (*SipDTMF) ProtoMessage() {} func (x *SipDTMF) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[13] + mi := &file_livekit_models_proto_msgTypes[14] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2510,7 +2556,7 @@ func (x *SipDTMF) ProtoReflect() protoreflect.Message { // Deprecated: Use SipDTMF.ProtoReflect.Descriptor instead. func (*SipDTMF) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{13} + return file_livekit_models_proto_rawDescGZIP(), []int{14} } func (x *SipDTMF) GetCode() uint32 { @@ -2540,7 +2586,7 @@ type Transcription struct { func (x *Transcription) Reset() { *x = Transcription{} - mi := &file_livekit_models_proto_msgTypes[14] + mi := &file_livekit_models_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2552,7 +2598,7 @@ func (x *Transcription) String() string { func (*Transcription) ProtoMessage() {} func (x *Transcription) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[14] + mi := &file_livekit_models_proto_msgTypes[15] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2565,7 +2611,7 @@ func (x *Transcription) ProtoReflect() protoreflect.Message { // Deprecated: Use Transcription.ProtoReflect.Descriptor instead. func (*Transcription) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{14} + return file_livekit_models_proto_rawDescGZIP(), []int{15} } func (x *Transcription) GetTranscribedParticipantIdentity() string { @@ -2604,7 +2650,7 @@ type TranscriptionSegment struct { func (x *TranscriptionSegment) Reset() { *x = TranscriptionSegment{} - mi := &file_livekit_models_proto_msgTypes[15] + mi := &file_livekit_models_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2616,7 +2662,7 @@ func (x *TranscriptionSegment) String() string { func (*TranscriptionSegment) ProtoMessage() {} func (x *TranscriptionSegment) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[15] + mi := &file_livekit_models_proto_msgTypes[16] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2629,7 +2675,7 @@ func (x *TranscriptionSegment) ProtoReflect() protoreflect.Message { // Deprecated: Use TranscriptionSegment.ProtoReflect.Descriptor instead. func (*TranscriptionSegment) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{15} + return file_livekit_models_proto_rawDescGZIP(), []int{16} } func (x *TranscriptionSegment) GetId() string { @@ -2689,7 +2735,7 @@ type ChatMessage struct { func (x *ChatMessage) Reset() { *x = ChatMessage{} - mi := &file_livekit_models_proto_msgTypes[16] + mi := &file_livekit_models_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2701,7 +2747,7 @@ func (x *ChatMessage) String() string { func (*ChatMessage) ProtoMessage() {} func (x *ChatMessage) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[16] + mi := &file_livekit_models_proto_msgTypes[17] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2714,7 +2760,7 @@ func (x *ChatMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use ChatMessage.ProtoReflect.Descriptor instead. func (*ChatMessage) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{16} + return file_livekit_models_proto_rawDescGZIP(), []int{17} } func (x *ChatMessage) GetId() string { @@ -2773,7 +2819,7 @@ type RpcRequest struct { func (x *RpcRequest) Reset() { *x = RpcRequest{} - mi := &file_livekit_models_proto_msgTypes[17] + mi := &file_livekit_models_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2785,7 +2831,7 @@ func (x *RpcRequest) String() string { func (*RpcRequest) ProtoMessage() {} func (x *RpcRequest) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[17] + mi := &file_livekit_models_proto_msgTypes[18] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2798,7 +2844,7 @@ func (x *RpcRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RpcRequest.ProtoReflect.Descriptor instead. func (*RpcRequest) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{17} + return file_livekit_models_proto_rawDescGZIP(), []int{18} } func (x *RpcRequest) GetId() string { @@ -2846,7 +2892,7 @@ type RpcAck struct { func (x *RpcAck) Reset() { *x = RpcAck{} - mi := &file_livekit_models_proto_msgTypes[18] + mi := &file_livekit_models_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2858,7 +2904,7 @@ func (x *RpcAck) String() string { func (*RpcAck) ProtoMessage() {} func (x *RpcAck) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[18] + mi := &file_livekit_models_proto_msgTypes[19] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2871,7 +2917,7 @@ func (x *RpcAck) ProtoReflect() protoreflect.Message { // Deprecated: Use RpcAck.ProtoReflect.Descriptor instead. func (*RpcAck) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{18} + return file_livekit_models_proto_rawDescGZIP(), []int{19} } func (x *RpcAck) GetRequestId() string { @@ -2896,7 +2942,7 @@ type RpcResponse struct { func (x *RpcResponse) Reset() { *x = RpcResponse{} - mi := &file_livekit_models_proto_msgTypes[19] + mi := &file_livekit_models_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2908,7 +2954,7 @@ func (x *RpcResponse) String() string { func (*RpcResponse) ProtoMessage() {} func (x *RpcResponse) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[19] + mi := &file_livekit_models_proto_msgTypes[20] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2921,7 +2967,7 @@ func (x *RpcResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RpcResponse.ProtoReflect.Descriptor instead. func (*RpcResponse) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{19} + return file_livekit_models_proto_rawDescGZIP(), []int{20} } func (x *RpcResponse) GetRequestId() string { @@ -2980,7 +3026,7 @@ type RpcError struct { func (x *RpcError) Reset() { *x = RpcError{} - mi := &file_livekit_models_proto_msgTypes[20] + mi := &file_livekit_models_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2992,7 +3038,7 @@ func (x *RpcError) String() string { func (*RpcError) ProtoMessage() {} func (x *RpcError) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[20] + mi := &file_livekit_models_proto_msgTypes[21] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3005,7 +3051,7 @@ func (x *RpcError) ProtoReflect() protoreflect.Message { // Deprecated: Use RpcError.ProtoReflect.Descriptor instead. func (*RpcError) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{20} + return file_livekit_models_proto_rawDescGZIP(), []int{21} } func (x *RpcError) GetCode() uint32 { @@ -3041,7 +3087,7 @@ type ParticipantTracks struct { func (x *ParticipantTracks) Reset() { *x = ParticipantTracks{} - mi := &file_livekit_models_proto_msgTypes[21] + mi := &file_livekit_models_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3053,7 +3099,7 @@ func (x *ParticipantTracks) String() string { func (*ParticipantTracks) ProtoMessage() {} func (x *ParticipantTracks) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[21] + mi := &file_livekit_models_proto_msgTypes[22] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3066,7 +3112,7 @@ func (x *ParticipantTracks) ProtoReflect() protoreflect.Message { // Deprecated: Use ParticipantTracks.ProtoReflect.Descriptor instead. func (*ParticipantTracks) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{21} + return file_livekit_models_proto_rawDescGZIP(), []int{22} } func (x *ParticipantTracks) GetParticipantSid() string { @@ -3101,7 +3147,7 @@ type ServerInfo struct { func (x *ServerInfo) Reset() { *x = ServerInfo{} - mi := &file_livekit_models_proto_msgTypes[22] + mi := &file_livekit_models_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3113,7 +3159,7 @@ func (x *ServerInfo) String() string { func (*ServerInfo) ProtoMessage() {} func (x *ServerInfo) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[22] + mi := &file_livekit_models_proto_msgTypes[23] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3126,7 +3172,7 @@ func (x *ServerInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use ServerInfo.ProtoReflect.Descriptor instead. func (*ServerInfo) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{22} + return file_livekit_models_proto_rawDescGZIP(), []int{23} } func (x *ServerInfo) GetEdition() ServerInfo_Edition { @@ -3202,7 +3248,7 @@ type ClientInfo struct { func (x *ClientInfo) Reset() { *x = ClientInfo{} - mi := &file_livekit_models_proto_msgTypes[23] + mi := &file_livekit_models_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3214,7 +3260,7 @@ func (x *ClientInfo) String() string { func (*ClientInfo) ProtoMessage() {} func (x *ClientInfo) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[23] + mi := &file_livekit_models_proto_msgTypes[24] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3227,7 +3273,7 @@ func (x *ClientInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use ClientInfo.ProtoReflect.Descriptor instead. func (*ClientInfo) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{23} + return file_livekit_models_proto_rawDescGZIP(), []int{24} } func (x *ClientInfo) GetSdk() ClientInfo_SDK { @@ -3322,7 +3368,7 @@ type ClientConfiguration struct { func (x *ClientConfiguration) Reset() { *x = ClientConfiguration{} - mi := &file_livekit_models_proto_msgTypes[24] + mi := &file_livekit_models_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3334,7 +3380,7 @@ func (x *ClientConfiguration) String() string { func (*ClientConfiguration) ProtoMessage() {} func (x *ClientConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[24] + mi := &file_livekit_models_proto_msgTypes[25] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3347,7 +3393,7 @@ func (x *ClientConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use ClientConfiguration.ProtoReflect.Descriptor instead. func (*ClientConfiguration) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{24} + return file_livekit_models_proto_rawDescGZIP(), []int{25} } func (x *ClientConfiguration) GetVideo() *VideoConfiguration { @@ -3395,7 +3441,7 @@ type VideoConfiguration struct { func (x *VideoConfiguration) Reset() { *x = VideoConfiguration{} - mi := &file_livekit_models_proto_msgTypes[25] + mi := &file_livekit_models_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3407,7 +3453,7 @@ func (x *VideoConfiguration) String() string { func (*VideoConfiguration) ProtoMessage() {} func (x *VideoConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[25] + mi := &file_livekit_models_proto_msgTypes[26] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3420,7 +3466,7 @@ func (x *VideoConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use VideoConfiguration.ProtoReflect.Descriptor instead. func (*VideoConfiguration) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{25} + return file_livekit_models_proto_rawDescGZIP(), []int{26} } func (x *VideoConfiguration) GetHardwareEncoder() ClientConfigSetting { @@ -3443,7 +3489,7 @@ type DisabledCodecs struct { func (x *DisabledCodecs) Reset() { *x = DisabledCodecs{} - mi := &file_livekit_models_proto_msgTypes[26] + mi := &file_livekit_models_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3455,7 +3501,7 @@ func (x *DisabledCodecs) String() string { func (*DisabledCodecs) ProtoMessage() {} func (x *DisabledCodecs) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[26] + mi := &file_livekit_models_proto_msgTypes[27] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3468,7 +3514,7 @@ func (x *DisabledCodecs) ProtoReflect() protoreflect.Message { // Deprecated: Use DisabledCodecs.ProtoReflect.Descriptor instead. func (*DisabledCodecs) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{26} + return file_livekit_models_proto_rawDescGZIP(), []int{27} } func (x *DisabledCodecs) GetCodecs() []*Codec { @@ -3503,7 +3549,7 @@ type RTPDrift struct { func (x *RTPDrift) Reset() { *x = RTPDrift{} - mi := &file_livekit_models_proto_msgTypes[27] + mi := &file_livekit_models_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3515,7 +3561,7 @@ func (x *RTPDrift) String() string { func (*RTPDrift) ProtoMessage() {} func (x *RTPDrift) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[27] + mi := &file_livekit_models_proto_msgTypes[28] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3528,7 +3574,7 @@ func (x *RTPDrift) ProtoReflect() protoreflect.Message { // Deprecated: Use RTPDrift.ProtoReflect.Descriptor instead. func (*RTPDrift) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{27} + return file_livekit_models_proto_rawDescGZIP(), []int{28} } func (x *RTPDrift) GetStartTime() *timestamppb.Timestamp { @@ -3648,7 +3694,7 @@ type RTPStats struct { func (x *RTPStats) Reset() { *x = RTPStats{} - mi := &file_livekit_models_proto_msgTypes[28] + mi := &file_livekit_models_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3660,7 +3706,7 @@ func (x *RTPStats) String() string { func (*RTPStats) ProtoMessage() {} func (x *RTPStats) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[28] + mi := &file_livekit_models_proto_msgTypes[29] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3673,7 +3719,7 @@ func (x *RTPStats) ProtoReflect() protoreflect.Message { // Deprecated: Use RTPStats.ProtoReflect.Descriptor instead. func (*RTPStats) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{28} + return file_livekit_models_proto_rawDescGZIP(), []int{29} } func (x *RTPStats) GetStartTime() *timestamppb.Timestamp { @@ -4007,7 +4053,7 @@ type RTCPSenderReportState struct { func (x *RTCPSenderReportState) Reset() { *x = RTCPSenderReportState{} - mi := &file_livekit_models_proto_msgTypes[29] + mi := &file_livekit_models_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4019,7 +4065,7 @@ func (x *RTCPSenderReportState) String() string { func (*RTCPSenderReportState) ProtoMessage() {} func (x *RTCPSenderReportState) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[29] + mi := &file_livekit_models_proto_msgTypes[30] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4032,7 +4078,7 @@ func (x *RTCPSenderReportState) ProtoReflect() protoreflect.Message { // Deprecated: Use RTCPSenderReportState.ProtoReflect.Descriptor instead. func (*RTCPSenderReportState) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{29} + return file_livekit_models_proto_rawDescGZIP(), []int{30} } func (x *RTCPSenderReportState) GetRtpTimestamp() uint32 { @@ -4104,7 +4150,7 @@ type RTPForwarderState struct { func (x *RTPForwarderState) Reset() { *x = RTPForwarderState{} - mi := &file_livekit_models_proto_msgTypes[30] + mi := &file_livekit_models_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4116,7 +4162,7 @@ func (x *RTPForwarderState) String() string { func (*RTPForwarderState) ProtoMessage() {} func (x *RTPForwarderState) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[30] + mi := &file_livekit_models_proto_msgTypes[31] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4129,7 +4175,7 @@ func (x *RTPForwarderState) ProtoReflect() protoreflect.Message { // Deprecated: Use RTPForwarderState.ProtoReflect.Descriptor instead. func (*RTPForwarderState) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{30} + return file_livekit_models_proto_rawDescGZIP(), []int{31} } func (x *RTPForwarderState) GetStarted() bool { @@ -4220,7 +4266,7 @@ type RTPMungerState struct { func (x *RTPMungerState) Reset() { *x = RTPMungerState{} - mi := &file_livekit_models_proto_msgTypes[31] + mi := &file_livekit_models_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4232,7 +4278,7 @@ func (x *RTPMungerState) String() string { func (*RTPMungerState) ProtoMessage() {} func (x *RTPMungerState) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[31] + mi := &file_livekit_models_proto_msgTypes[32] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4245,7 +4291,7 @@ func (x *RTPMungerState) ProtoReflect() protoreflect.Message { // Deprecated: Use RTPMungerState.ProtoReflect.Descriptor instead. func (*RTPMungerState) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{31} + return file_livekit_models_proto_rawDescGZIP(), []int{32} } func (x *RTPMungerState) GetExtLastSequenceNumber() uint64 { @@ -4306,7 +4352,7 @@ type VP8MungerState struct { func (x *VP8MungerState) Reset() { *x = VP8MungerState{} - mi := &file_livekit_models_proto_msgTypes[32] + mi := &file_livekit_models_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4318,7 +4364,7 @@ func (x *VP8MungerState) String() string { func (*VP8MungerState) ProtoMessage() {} func (x *VP8MungerState) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[32] + mi := &file_livekit_models_proto_msgTypes[33] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4331,7 +4377,7 @@ func (x *VP8MungerState) ProtoReflect() protoreflect.Message { // Deprecated: Use VP8MungerState.ProtoReflect.Descriptor instead. func (*VP8MungerState) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{32} + return file_livekit_models_proto_rawDescGZIP(), []int{33} } func (x *VP8MungerState) GetExtLastPictureId() int32 { @@ -4394,7 +4440,7 @@ type TimedVersion struct { func (x *TimedVersion) Reset() { *x = TimedVersion{} - mi := &file_livekit_models_proto_msgTypes[33] + mi := &file_livekit_models_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4406,7 +4452,7 @@ func (x *TimedVersion) String() string { func (*TimedVersion) ProtoMessage() {} func (x *TimedVersion) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[33] + mi := &file_livekit_models_proto_msgTypes[34] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4419,7 +4465,7 @@ func (x *TimedVersion) ProtoReflect() protoreflect.Message { // Deprecated: Use TimedVersion.ProtoReflect.Descriptor instead. func (*TimedVersion) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{33} + return file_livekit_models_proto_rawDescGZIP(), []int{34} } func (x *TimedVersion) GetUnixMicro() int64 { @@ -4444,7 +4490,7 @@ type DataStream struct { func (x *DataStream) Reset() { *x = DataStream{} - mi := &file_livekit_models_proto_msgTypes[34] + mi := &file_livekit_models_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4456,7 +4502,7 @@ func (x *DataStream) String() string { func (*DataStream) ProtoMessage() {} func (x *DataStream) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[34] + mi := &file_livekit_models_proto_msgTypes[35] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4469,7 +4515,7 @@ func (x *DataStream) ProtoReflect() protoreflect.Message { // Deprecated: Use DataStream.ProtoReflect.Descriptor instead. func (*DataStream) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{34} + return file_livekit_models_proto_rawDescGZIP(), []int{35} } // header properties specific to text streams @@ -4487,7 +4533,7 @@ type DataStream_TextHeader struct { func (x *DataStream_TextHeader) Reset() { *x = DataStream_TextHeader{} - mi := &file_livekit_models_proto_msgTypes[37] + mi := &file_livekit_models_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4499,7 +4545,7 @@ func (x *DataStream_TextHeader) String() string { func (*DataStream_TextHeader) ProtoMessage() {} func (x *DataStream_TextHeader) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[37] + mi := &file_livekit_models_proto_msgTypes[38] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4512,7 +4558,7 @@ func (x *DataStream_TextHeader) ProtoReflect() protoreflect.Message { // Deprecated: Use DataStream_TextHeader.ProtoReflect.Descriptor instead. func (*DataStream_TextHeader) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{34, 0} + return file_livekit_models_proto_rawDescGZIP(), []int{35, 0} } func (x *DataStream_TextHeader) GetOperationType() DataStream_OperationType { @@ -4561,7 +4607,7 @@ type DataStream_FileHeader struct { func (x *DataStream_FileHeader) Reset() { *x = DataStream_FileHeader{} - mi := &file_livekit_models_proto_msgTypes[38] + mi := &file_livekit_models_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4573,7 +4619,7 @@ func (x *DataStream_FileHeader) String() string { func (*DataStream_FileHeader) ProtoMessage() {} func (x *DataStream_FileHeader) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[38] + mi := &file_livekit_models_proto_msgTypes[39] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4586,7 +4632,7 @@ func (x *DataStream_FileHeader) ProtoReflect() protoreflect.Message { // Deprecated: Use DataStream_FileHeader.ProtoReflect.Descriptor instead. func (*DataStream_FileHeader) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{34, 1} + return file_livekit_models_proto_rawDescGZIP(), []int{35, 1} } func (x *DataStream_FileHeader) GetFileName() string { @@ -4621,7 +4667,7 @@ type DataStream_Header struct { func (x *DataStream_Header) Reset() { *x = DataStream_Header{} - mi := &file_livekit_models_proto_msgTypes[39] + mi := &file_livekit_models_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4633,7 +4679,7 @@ func (x *DataStream_Header) String() string { func (*DataStream_Header) ProtoMessage() {} func (x *DataStream_Header) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[39] + mi := &file_livekit_models_proto_msgTypes[40] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4646,7 +4692,7 @@ func (x *DataStream_Header) ProtoReflect() protoreflect.Message { // Deprecated: Use DataStream_Header.ProtoReflect.Descriptor instead. func (*DataStream_Header) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{34, 2} + return file_livekit_models_proto_rawDescGZIP(), []int{35, 2} } func (x *DataStream_Header) GetStreamId() string { @@ -4757,7 +4803,7 @@ type DataStream_Chunk struct { func (x *DataStream_Chunk) Reset() { *x = DataStream_Chunk{} - mi := &file_livekit_models_proto_msgTypes[40] + mi := &file_livekit_models_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4769,7 +4815,7 @@ func (x *DataStream_Chunk) String() string { func (*DataStream_Chunk) ProtoMessage() {} func (x *DataStream_Chunk) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[40] + mi := &file_livekit_models_proto_msgTypes[41] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4782,7 +4828,7 @@ func (x *DataStream_Chunk) ProtoReflect() protoreflect.Message { // Deprecated: Use DataStream_Chunk.ProtoReflect.Descriptor instead. func (*DataStream_Chunk) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{34, 3} + return file_livekit_models_proto_rawDescGZIP(), []int{35, 3} } func (x *DataStream_Chunk) GetStreamId() string { @@ -4835,7 +4881,9 @@ var file_livekit_models_proto_rawDesc = []byte{ 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x15, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xf4, 0x03, 0x0a, 0x04, 0x52, 0x6f, 0x6f, 0x6d, + 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x1e, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x03, 0x73, 0x65, 0x74, 0x22, 0xf4, 0x03, 0x0a, 0x04, 0x52, 0x6f, 0x6f, 0x6d, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x5f, @@ -5650,7 +5698,7 @@ func file_livekit_models_proto_rawDescGZIP() []byte { } var file_livekit_models_proto_enumTypes = make([]protoimpl.EnumInfo, 19) -var file_livekit_models_proto_msgTypes = make([]protoimpl.MessageInfo, 42) +var file_livekit_models_proto_msgTypes = make([]protoimpl.MessageInfo, 43) var file_livekit_models_proto_goTypes = []any{ (AudioCodec)(0), // 0: livekit.AudioCodec (VideoCodec)(0), // 1: livekit.VideoCodec @@ -5671,116 +5719,117 @@ var file_livekit_models_proto_goTypes = []any{ (ServerInfo_Edition)(0), // 16: livekit.ServerInfo.Edition (ClientInfo_SDK)(0), // 17: livekit.ClientInfo.SDK (DataStream_OperationType)(0), // 18: livekit.DataStream.OperationType - (*Room)(nil), // 19: livekit.Room - (*Codec)(nil), // 20: livekit.Codec - (*PlayoutDelay)(nil), // 21: livekit.PlayoutDelay - (*ParticipantPermission)(nil), // 22: livekit.ParticipantPermission - (*ParticipantInfo)(nil), // 23: livekit.ParticipantInfo - (*Encryption)(nil), // 24: livekit.Encryption - (*SimulcastCodecInfo)(nil), // 25: livekit.SimulcastCodecInfo - (*TrackInfo)(nil), // 26: livekit.TrackInfo - (*VideoLayer)(nil), // 27: livekit.VideoLayer - (*DataPacket)(nil), // 28: livekit.DataPacket - (*ActiveSpeakerUpdate)(nil), // 29: livekit.ActiveSpeakerUpdate - (*SpeakerInfo)(nil), // 30: livekit.SpeakerInfo - (*UserPacket)(nil), // 31: livekit.UserPacket - (*SipDTMF)(nil), // 32: livekit.SipDTMF - (*Transcription)(nil), // 33: livekit.Transcription - (*TranscriptionSegment)(nil), // 34: livekit.TranscriptionSegment - (*ChatMessage)(nil), // 35: livekit.ChatMessage - (*RpcRequest)(nil), // 36: livekit.RpcRequest - (*RpcAck)(nil), // 37: livekit.RpcAck - (*RpcResponse)(nil), // 38: livekit.RpcResponse - (*RpcError)(nil), // 39: livekit.RpcError - (*ParticipantTracks)(nil), // 40: livekit.ParticipantTracks - (*ServerInfo)(nil), // 41: livekit.ServerInfo - (*ClientInfo)(nil), // 42: livekit.ClientInfo - (*ClientConfiguration)(nil), // 43: livekit.ClientConfiguration - (*VideoConfiguration)(nil), // 44: livekit.VideoConfiguration - (*DisabledCodecs)(nil), // 45: livekit.DisabledCodecs - (*RTPDrift)(nil), // 46: livekit.RTPDrift - (*RTPStats)(nil), // 47: livekit.RTPStats - (*RTCPSenderReportState)(nil), // 48: livekit.RTCPSenderReportState - (*RTPForwarderState)(nil), // 49: livekit.RTPForwarderState - (*RTPMungerState)(nil), // 50: livekit.RTPMungerState - (*VP8MungerState)(nil), // 51: livekit.VP8MungerState - (*TimedVersion)(nil), // 52: livekit.TimedVersion - (*DataStream)(nil), // 53: livekit.DataStream - nil, // 54: livekit.ParticipantInfo.AttributesEntry - nil, // 55: livekit.RTPStats.GapHistogramEntry - (*DataStream_TextHeader)(nil), // 56: livekit.DataStream.TextHeader - (*DataStream_FileHeader)(nil), // 57: livekit.DataStream.FileHeader - (*DataStream_Header)(nil), // 58: livekit.DataStream.Header - (*DataStream_Chunk)(nil), // 59: livekit.DataStream.Chunk - nil, // 60: livekit.DataStream.Header.ExtensionsEntry - (*MetricsBatch)(nil), // 61: livekit.MetricsBatch - (*timestamppb.Timestamp)(nil), // 62: google.protobuf.Timestamp + (*ListUpdate)(nil), // 19: livekit.ListUpdate + (*Room)(nil), // 20: livekit.Room + (*Codec)(nil), // 21: livekit.Codec + (*PlayoutDelay)(nil), // 22: livekit.PlayoutDelay + (*ParticipantPermission)(nil), // 23: livekit.ParticipantPermission + (*ParticipantInfo)(nil), // 24: livekit.ParticipantInfo + (*Encryption)(nil), // 25: livekit.Encryption + (*SimulcastCodecInfo)(nil), // 26: livekit.SimulcastCodecInfo + (*TrackInfo)(nil), // 27: livekit.TrackInfo + (*VideoLayer)(nil), // 28: livekit.VideoLayer + (*DataPacket)(nil), // 29: livekit.DataPacket + (*ActiveSpeakerUpdate)(nil), // 30: livekit.ActiveSpeakerUpdate + (*SpeakerInfo)(nil), // 31: livekit.SpeakerInfo + (*UserPacket)(nil), // 32: livekit.UserPacket + (*SipDTMF)(nil), // 33: livekit.SipDTMF + (*Transcription)(nil), // 34: livekit.Transcription + (*TranscriptionSegment)(nil), // 35: livekit.TranscriptionSegment + (*ChatMessage)(nil), // 36: livekit.ChatMessage + (*RpcRequest)(nil), // 37: livekit.RpcRequest + (*RpcAck)(nil), // 38: livekit.RpcAck + (*RpcResponse)(nil), // 39: livekit.RpcResponse + (*RpcError)(nil), // 40: livekit.RpcError + (*ParticipantTracks)(nil), // 41: livekit.ParticipantTracks + (*ServerInfo)(nil), // 42: livekit.ServerInfo + (*ClientInfo)(nil), // 43: livekit.ClientInfo + (*ClientConfiguration)(nil), // 44: livekit.ClientConfiguration + (*VideoConfiguration)(nil), // 45: livekit.VideoConfiguration + (*DisabledCodecs)(nil), // 46: livekit.DisabledCodecs + (*RTPDrift)(nil), // 47: livekit.RTPDrift + (*RTPStats)(nil), // 48: livekit.RTPStats + (*RTCPSenderReportState)(nil), // 49: livekit.RTCPSenderReportState + (*RTPForwarderState)(nil), // 50: livekit.RTPForwarderState + (*RTPMungerState)(nil), // 51: livekit.RTPMungerState + (*VP8MungerState)(nil), // 52: livekit.VP8MungerState + (*TimedVersion)(nil), // 53: livekit.TimedVersion + (*DataStream)(nil), // 54: livekit.DataStream + nil, // 55: livekit.ParticipantInfo.AttributesEntry + nil, // 56: livekit.RTPStats.GapHistogramEntry + (*DataStream_TextHeader)(nil), // 57: livekit.DataStream.TextHeader + (*DataStream_FileHeader)(nil), // 58: livekit.DataStream.FileHeader + (*DataStream_Header)(nil), // 59: livekit.DataStream.Header + (*DataStream_Chunk)(nil), // 60: livekit.DataStream.Chunk + nil, // 61: livekit.DataStream.Header.ExtensionsEntry + (*MetricsBatch)(nil), // 62: livekit.MetricsBatch + (*timestamppb.Timestamp)(nil), // 63: google.protobuf.Timestamp } var file_livekit_models_proto_depIdxs = []int32{ - 20, // 0: livekit.Room.enabled_codecs:type_name -> livekit.Codec - 52, // 1: livekit.Room.version:type_name -> livekit.TimedVersion + 21, // 0: livekit.Room.enabled_codecs:type_name -> livekit.Codec + 53, // 1: livekit.Room.version:type_name -> livekit.TimedVersion 4, // 2: livekit.ParticipantPermission.can_publish_sources:type_name -> livekit.TrackSource 12, // 3: livekit.ParticipantInfo.state:type_name -> livekit.ParticipantInfo.State - 26, // 4: livekit.ParticipantInfo.tracks:type_name -> livekit.TrackInfo - 22, // 5: livekit.ParticipantInfo.permission:type_name -> livekit.ParticipantPermission + 27, // 4: livekit.ParticipantInfo.tracks:type_name -> livekit.TrackInfo + 23, // 5: livekit.ParticipantInfo.permission:type_name -> livekit.ParticipantPermission 13, // 6: livekit.ParticipantInfo.kind:type_name -> livekit.ParticipantInfo.Kind - 54, // 7: livekit.ParticipantInfo.attributes:type_name -> livekit.ParticipantInfo.AttributesEntry + 55, // 7: livekit.ParticipantInfo.attributes:type_name -> livekit.ParticipantInfo.AttributesEntry 8, // 8: livekit.ParticipantInfo.disconnect_reason:type_name -> livekit.DisconnectReason - 27, // 9: livekit.SimulcastCodecInfo.layers:type_name -> livekit.VideoLayer + 28, // 9: livekit.SimulcastCodecInfo.layers:type_name -> livekit.VideoLayer 3, // 10: livekit.TrackInfo.type:type_name -> livekit.TrackType 4, // 11: livekit.TrackInfo.source:type_name -> livekit.TrackSource - 27, // 12: livekit.TrackInfo.layers:type_name -> livekit.VideoLayer - 25, // 13: livekit.TrackInfo.codecs:type_name -> livekit.SimulcastCodecInfo + 28, // 12: livekit.TrackInfo.layers:type_name -> livekit.VideoLayer + 26, // 13: livekit.TrackInfo.codecs:type_name -> livekit.SimulcastCodecInfo 14, // 14: livekit.TrackInfo.encryption:type_name -> livekit.Encryption.Type - 52, // 15: livekit.TrackInfo.version:type_name -> livekit.TimedVersion + 53, // 15: livekit.TrackInfo.version:type_name -> livekit.TimedVersion 11, // 16: livekit.TrackInfo.audio_features:type_name -> livekit.AudioTrackFeature 5, // 17: livekit.VideoLayer.quality:type_name -> livekit.VideoQuality 15, // 18: livekit.DataPacket.kind:type_name -> livekit.DataPacket.Kind - 31, // 19: livekit.DataPacket.user:type_name -> livekit.UserPacket - 29, // 20: livekit.DataPacket.speaker:type_name -> livekit.ActiveSpeakerUpdate - 32, // 21: livekit.DataPacket.sip_dtmf:type_name -> livekit.SipDTMF - 33, // 22: livekit.DataPacket.transcription:type_name -> livekit.Transcription - 61, // 23: livekit.DataPacket.metrics:type_name -> livekit.MetricsBatch - 35, // 24: livekit.DataPacket.chat_message:type_name -> livekit.ChatMessage - 36, // 25: livekit.DataPacket.rpc_request:type_name -> livekit.RpcRequest - 37, // 26: livekit.DataPacket.rpc_ack:type_name -> livekit.RpcAck - 38, // 27: livekit.DataPacket.rpc_response:type_name -> livekit.RpcResponse - 58, // 28: livekit.DataPacket.stream_header:type_name -> livekit.DataStream.Header - 59, // 29: livekit.DataPacket.stream_chunk:type_name -> livekit.DataStream.Chunk - 30, // 30: livekit.ActiveSpeakerUpdate.speakers:type_name -> livekit.SpeakerInfo - 34, // 31: livekit.Transcription.segments:type_name -> livekit.TranscriptionSegment - 39, // 32: livekit.RpcResponse.error:type_name -> livekit.RpcError + 32, // 19: livekit.DataPacket.user:type_name -> livekit.UserPacket + 30, // 20: livekit.DataPacket.speaker:type_name -> livekit.ActiveSpeakerUpdate + 33, // 21: livekit.DataPacket.sip_dtmf:type_name -> livekit.SipDTMF + 34, // 22: livekit.DataPacket.transcription:type_name -> livekit.Transcription + 62, // 23: livekit.DataPacket.metrics:type_name -> livekit.MetricsBatch + 36, // 24: livekit.DataPacket.chat_message:type_name -> livekit.ChatMessage + 37, // 25: livekit.DataPacket.rpc_request:type_name -> livekit.RpcRequest + 38, // 26: livekit.DataPacket.rpc_ack:type_name -> livekit.RpcAck + 39, // 27: livekit.DataPacket.rpc_response:type_name -> livekit.RpcResponse + 59, // 28: livekit.DataPacket.stream_header:type_name -> livekit.DataStream.Header + 60, // 29: livekit.DataPacket.stream_chunk:type_name -> livekit.DataStream.Chunk + 31, // 30: livekit.ActiveSpeakerUpdate.speakers:type_name -> livekit.SpeakerInfo + 35, // 31: livekit.Transcription.segments:type_name -> livekit.TranscriptionSegment + 40, // 32: livekit.RpcResponse.error:type_name -> livekit.RpcError 16, // 33: livekit.ServerInfo.edition:type_name -> livekit.ServerInfo.Edition 17, // 34: livekit.ClientInfo.sdk:type_name -> livekit.ClientInfo.SDK - 44, // 35: livekit.ClientConfiguration.video:type_name -> livekit.VideoConfiguration - 44, // 36: livekit.ClientConfiguration.screen:type_name -> livekit.VideoConfiguration + 45, // 35: livekit.ClientConfiguration.video:type_name -> livekit.VideoConfiguration + 45, // 36: livekit.ClientConfiguration.screen:type_name -> livekit.VideoConfiguration 7, // 37: livekit.ClientConfiguration.resume_connection:type_name -> livekit.ClientConfigSetting - 45, // 38: livekit.ClientConfiguration.disabled_codecs:type_name -> livekit.DisabledCodecs + 46, // 38: livekit.ClientConfiguration.disabled_codecs:type_name -> livekit.DisabledCodecs 7, // 39: livekit.ClientConfiguration.force_relay:type_name -> livekit.ClientConfigSetting 7, // 40: livekit.VideoConfiguration.hardware_encoder:type_name -> livekit.ClientConfigSetting - 20, // 41: livekit.DisabledCodecs.codecs:type_name -> livekit.Codec - 20, // 42: livekit.DisabledCodecs.publish:type_name -> livekit.Codec - 62, // 43: livekit.RTPDrift.start_time:type_name -> google.protobuf.Timestamp - 62, // 44: livekit.RTPDrift.end_time:type_name -> google.protobuf.Timestamp - 62, // 45: livekit.RTPStats.start_time:type_name -> google.protobuf.Timestamp - 62, // 46: livekit.RTPStats.end_time:type_name -> google.protobuf.Timestamp - 55, // 47: livekit.RTPStats.gap_histogram:type_name -> livekit.RTPStats.GapHistogramEntry - 62, // 48: livekit.RTPStats.last_pli:type_name -> google.protobuf.Timestamp - 62, // 49: livekit.RTPStats.last_fir:type_name -> google.protobuf.Timestamp - 62, // 50: livekit.RTPStats.last_key_frame:type_name -> google.protobuf.Timestamp - 62, // 51: livekit.RTPStats.last_layer_lock_pli:type_name -> google.protobuf.Timestamp - 46, // 52: livekit.RTPStats.packet_drift:type_name -> livekit.RTPDrift - 46, // 53: livekit.RTPStats.ntp_report_drift:type_name -> livekit.RTPDrift - 46, // 54: livekit.RTPStats.rebased_report_drift:type_name -> livekit.RTPDrift - 46, // 55: livekit.RTPStats.received_report_drift:type_name -> livekit.RTPDrift - 50, // 56: livekit.RTPForwarderState.rtp_munger:type_name -> livekit.RTPMungerState - 51, // 57: livekit.RTPForwarderState.vp8_munger:type_name -> livekit.VP8MungerState - 48, // 58: livekit.RTPForwarderState.sender_report_state:type_name -> livekit.RTCPSenderReportState + 21, // 41: livekit.DisabledCodecs.codecs:type_name -> livekit.Codec + 21, // 42: livekit.DisabledCodecs.publish:type_name -> livekit.Codec + 63, // 43: livekit.RTPDrift.start_time:type_name -> google.protobuf.Timestamp + 63, // 44: livekit.RTPDrift.end_time:type_name -> google.protobuf.Timestamp + 63, // 45: livekit.RTPStats.start_time:type_name -> google.protobuf.Timestamp + 63, // 46: livekit.RTPStats.end_time:type_name -> google.protobuf.Timestamp + 56, // 47: livekit.RTPStats.gap_histogram:type_name -> livekit.RTPStats.GapHistogramEntry + 63, // 48: livekit.RTPStats.last_pli:type_name -> google.protobuf.Timestamp + 63, // 49: livekit.RTPStats.last_fir:type_name -> google.protobuf.Timestamp + 63, // 50: livekit.RTPStats.last_key_frame:type_name -> google.protobuf.Timestamp + 63, // 51: livekit.RTPStats.last_layer_lock_pli:type_name -> google.protobuf.Timestamp + 47, // 52: livekit.RTPStats.packet_drift:type_name -> livekit.RTPDrift + 47, // 53: livekit.RTPStats.ntp_report_drift:type_name -> livekit.RTPDrift + 47, // 54: livekit.RTPStats.rebased_report_drift:type_name -> livekit.RTPDrift + 47, // 55: livekit.RTPStats.received_report_drift:type_name -> livekit.RTPDrift + 51, // 56: livekit.RTPForwarderState.rtp_munger:type_name -> livekit.RTPMungerState + 52, // 57: livekit.RTPForwarderState.vp8_munger:type_name -> livekit.VP8MungerState + 49, // 58: livekit.RTPForwarderState.sender_report_state:type_name -> livekit.RTCPSenderReportState 18, // 59: livekit.DataStream.TextHeader.operation_type:type_name -> livekit.DataStream.OperationType 14, // 60: livekit.DataStream.Header.encryption_type:type_name -> livekit.Encryption.Type - 60, // 61: livekit.DataStream.Header.extensions:type_name -> livekit.DataStream.Header.ExtensionsEntry - 56, // 62: livekit.DataStream.Header.text_header:type_name -> livekit.DataStream.TextHeader - 57, // 63: livekit.DataStream.Header.file_header:type_name -> livekit.DataStream.FileHeader + 61, // 61: livekit.DataStream.Header.extensions:type_name -> livekit.DataStream.Header.ExtensionsEntry + 57, // 62: livekit.DataStream.Header.text_header:type_name -> livekit.DataStream.TextHeader + 58, // 63: livekit.DataStream.Header.file_header:type_name -> livekit.DataStream.FileHeader 64, // [64:64] is the sub-list for method output_type 64, // [64:64] is the sub-list for method input_type 64, // [64:64] is the sub-list for extension type_name @@ -5794,7 +5843,7 @@ func file_livekit_models_proto_init() { return } file_livekit_metrics_proto_init() - file_livekit_models_proto_msgTypes[9].OneofWrappers = []any{ + file_livekit_models_proto_msgTypes[10].OneofWrappers = []any{ (*DataPacket_User)(nil), (*DataPacket_Speaker)(nil), (*DataPacket_SipDtmf)(nil), @@ -5807,27 +5856,27 @@ func file_livekit_models_proto_init() { (*DataPacket_StreamHeader)(nil), (*DataPacket_StreamChunk)(nil), } - file_livekit_models_proto_msgTypes[12].OneofWrappers = []any{} - file_livekit_models_proto_msgTypes[16].OneofWrappers = []any{} - file_livekit_models_proto_msgTypes[19].OneofWrappers = []any{ + file_livekit_models_proto_msgTypes[13].OneofWrappers = []any{} + file_livekit_models_proto_msgTypes[17].OneofWrappers = []any{} + file_livekit_models_proto_msgTypes[20].OneofWrappers = []any{ (*RpcResponse_Payload)(nil), (*RpcResponse_Error)(nil), } - file_livekit_models_proto_msgTypes[30].OneofWrappers = []any{ + file_livekit_models_proto_msgTypes[31].OneofWrappers = []any{ (*RTPForwarderState_Vp8Munger)(nil), } - file_livekit_models_proto_msgTypes[39].OneofWrappers = []any{ + file_livekit_models_proto_msgTypes[40].OneofWrappers = []any{ (*DataStream_Header_TextHeader)(nil), (*DataStream_Header_FileHeader)(nil), } - file_livekit_models_proto_msgTypes[40].OneofWrappers = []any{} + file_livekit_models_proto_msgTypes[41].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_livekit_models_proto_rawDesc, NumEnums: 19, - NumMessages: 42, + NumMessages: 43, NumExtensions: 0, NumServices: 0, }, diff --git a/livekit/livekit_sip.pb.go b/livekit/livekit_sip.pb.go index b076bf8b..0c002f4f 100644 --- a/livekit/livekit_sip.pb.go +++ b/livekit/livekit_sip.pb.go @@ -586,6 +586,93 @@ func (x *CreateSIPInboundTrunkRequest) GetTrunk() *SIPInboundTrunkInfo { return nil } +type UpdateSIPInboundTrunkRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + SipTrunkId string `protobuf:"bytes,1,opt,name=sip_trunk_id,json=sipTrunkId,proto3" json:"sip_trunk_id,omitempty"` + // Types that are assignable to Action: + // + // *UpdateSIPInboundTrunkRequest_Replace + // *UpdateSIPInboundTrunkRequest_Update + Action isUpdateSIPInboundTrunkRequest_Action `protobuf_oneof:"action"` +} + +func (x *UpdateSIPInboundTrunkRequest) Reset() { + *x = UpdateSIPInboundTrunkRequest{} + mi := &file_livekit_sip_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UpdateSIPInboundTrunkRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateSIPInboundTrunkRequest) ProtoMessage() {} + +func (x *UpdateSIPInboundTrunkRequest) ProtoReflect() protoreflect.Message { + mi := &file_livekit_sip_proto_msgTypes[3] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateSIPInboundTrunkRequest.ProtoReflect.Descriptor instead. +func (*UpdateSIPInboundTrunkRequest) Descriptor() ([]byte, []int) { + return file_livekit_sip_proto_rawDescGZIP(), []int{3} +} + +func (x *UpdateSIPInboundTrunkRequest) GetSipTrunkId() string { + if x != nil { + return x.SipTrunkId + } + return "" +} + +func (m *UpdateSIPInboundTrunkRequest) GetAction() isUpdateSIPInboundTrunkRequest_Action { + if m != nil { + return m.Action + } + return nil +} + +func (x *UpdateSIPInboundTrunkRequest) GetReplace() *SIPInboundTrunkInfo { + if x, ok := x.GetAction().(*UpdateSIPInboundTrunkRequest_Replace); ok { + return x.Replace + } + return nil +} + +func (x *UpdateSIPInboundTrunkRequest) GetUpdate() *SIPInboundTrunkUpdate { + if x, ok := x.GetAction().(*UpdateSIPInboundTrunkRequest_Update); ok { + return x.Update + } + return nil +} + +type isUpdateSIPInboundTrunkRequest_Action interface { + isUpdateSIPInboundTrunkRequest_Action() +} + +type UpdateSIPInboundTrunkRequest_Replace struct { + Replace *SIPInboundTrunkInfo `protobuf:"bytes,2,opt,name=replace,proto3,oneof"` +} + +type UpdateSIPInboundTrunkRequest_Update struct { + Update *SIPInboundTrunkUpdate `protobuf:"bytes,3,opt,name=update,proto3,oneof"` +} + +func (*UpdateSIPInboundTrunkRequest_Replace) isUpdateSIPInboundTrunkRequest_Action() {} + +func (*UpdateSIPInboundTrunkRequest_Update) isUpdateSIPInboundTrunkRequest_Action() {} + type SIPInboundTrunkInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -625,7 +712,7 @@ type SIPInboundTrunkInfo struct { func (x *SIPInboundTrunkInfo) Reset() { *x = SIPInboundTrunkInfo{} - mi := &file_livekit_sip_proto_msgTypes[3] + mi := &file_livekit_sip_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -637,7 +724,7 @@ func (x *SIPInboundTrunkInfo) String() string { func (*SIPInboundTrunkInfo) ProtoMessage() {} func (x *SIPInboundTrunkInfo) ProtoReflect() protoreflect.Message { - mi := &file_livekit_sip_proto_msgTypes[3] + mi := &file_livekit_sip_proto_msgTypes[4] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -650,7 +737,7 @@ func (x *SIPInboundTrunkInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use SIPInboundTrunkInfo.ProtoReflect.Descriptor instead. func (*SIPInboundTrunkInfo) Descriptor() ([]byte, []int) { - return file_livekit_sip_proto_rawDescGZIP(), []int{3} + return file_livekit_sip_proto_rawDescGZIP(), []int{4} } func (x *SIPInboundTrunkInfo) GetSipTrunkId() string { @@ -751,6 +838,99 @@ func (x *SIPInboundTrunkInfo) GetKrispEnabled() bool { return false } +type SIPInboundTrunkUpdate struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Numbers *ListUpdate `protobuf:"bytes,1,opt,name=numbers,proto3" json:"numbers,omitempty"` + AllowedAddresses *ListUpdate `protobuf:"bytes,2,opt,name=allowed_addresses,json=allowedAddresses,proto3" json:"allowed_addresses,omitempty"` + AllowedNumbers *ListUpdate `protobuf:"bytes,3,opt,name=allowed_numbers,json=allowedNumbers,proto3" json:"allowed_numbers,omitempty"` + AuthUsername *string `protobuf:"bytes,4,opt,name=auth_username,json=authUsername,proto3,oneof" json:"auth_username,omitempty"` + AuthPassword *string `protobuf:"bytes,5,opt,name=auth_password,json=authPassword,proto3,oneof" json:"auth_password,omitempty"` + Name *string `protobuf:"bytes,6,opt,name=name,proto3,oneof" json:"name,omitempty"` + Metadata *string `protobuf:"bytes,7,opt,name=metadata,proto3,oneof" json:"metadata,omitempty"` +} + +func (x *SIPInboundTrunkUpdate) Reset() { + *x = SIPInboundTrunkUpdate{} + mi := &file_livekit_sip_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SIPInboundTrunkUpdate) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SIPInboundTrunkUpdate) ProtoMessage() {} + +func (x *SIPInboundTrunkUpdate) ProtoReflect() protoreflect.Message { + mi := &file_livekit_sip_proto_msgTypes[5] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SIPInboundTrunkUpdate.ProtoReflect.Descriptor instead. +func (*SIPInboundTrunkUpdate) Descriptor() ([]byte, []int) { + return file_livekit_sip_proto_rawDescGZIP(), []int{5} +} + +func (x *SIPInboundTrunkUpdate) GetNumbers() *ListUpdate { + if x != nil { + return x.Numbers + } + return nil +} + +func (x *SIPInboundTrunkUpdate) GetAllowedAddresses() *ListUpdate { + if x != nil { + return x.AllowedAddresses + } + return nil +} + +func (x *SIPInboundTrunkUpdate) GetAllowedNumbers() *ListUpdate { + if x != nil { + return x.AllowedNumbers + } + return nil +} + +func (x *SIPInboundTrunkUpdate) GetAuthUsername() string { + if x != nil && x.AuthUsername != nil { + return *x.AuthUsername + } + return "" +} + +func (x *SIPInboundTrunkUpdate) GetAuthPassword() string { + if x != nil && x.AuthPassword != nil { + return *x.AuthPassword + } + return "" +} + +func (x *SIPInboundTrunkUpdate) GetName() string { + if x != nil && x.Name != nil { + return *x.Name + } + return "" +} + +func (x *SIPInboundTrunkUpdate) GetMetadata() string { + if x != nil && x.Metadata != nil { + return *x.Metadata + } + return "" +} + type CreateSIPOutboundTrunkRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -761,7 +941,7 @@ type CreateSIPOutboundTrunkRequest struct { func (x *CreateSIPOutboundTrunkRequest) Reset() { *x = CreateSIPOutboundTrunkRequest{} - mi := &file_livekit_sip_proto_msgTypes[4] + mi := &file_livekit_sip_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -773,7 +953,7 @@ func (x *CreateSIPOutboundTrunkRequest) String() string { func (*CreateSIPOutboundTrunkRequest) ProtoMessage() {} func (x *CreateSIPOutboundTrunkRequest) ProtoReflect() protoreflect.Message { - mi := &file_livekit_sip_proto_msgTypes[4] + mi := &file_livekit_sip_proto_msgTypes[6] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -786,7 +966,7 @@ func (x *CreateSIPOutboundTrunkRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateSIPOutboundTrunkRequest.ProtoReflect.Descriptor instead. func (*CreateSIPOutboundTrunkRequest) Descriptor() ([]byte, []int) { - return file_livekit_sip_proto_rawDescGZIP(), []int{4} + return file_livekit_sip_proto_rawDescGZIP(), []int{6} } func (x *CreateSIPOutboundTrunkRequest) GetTrunk() *SIPOutboundTrunkInfo { @@ -796,6 +976,93 @@ func (x *CreateSIPOutboundTrunkRequest) GetTrunk() *SIPOutboundTrunkInfo { return nil } +type UpdateSIPOutboundTrunkRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + SipTrunkId string `protobuf:"bytes,1,opt,name=sip_trunk_id,json=sipTrunkId,proto3" json:"sip_trunk_id,omitempty"` + // Types that are assignable to Action: + // + // *UpdateSIPOutboundTrunkRequest_Replace + // *UpdateSIPOutboundTrunkRequest_Update + Action isUpdateSIPOutboundTrunkRequest_Action `protobuf_oneof:"action"` +} + +func (x *UpdateSIPOutboundTrunkRequest) Reset() { + *x = UpdateSIPOutboundTrunkRequest{} + mi := &file_livekit_sip_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UpdateSIPOutboundTrunkRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateSIPOutboundTrunkRequest) ProtoMessage() {} + +func (x *UpdateSIPOutboundTrunkRequest) ProtoReflect() protoreflect.Message { + mi := &file_livekit_sip_proto_msgTypes[7] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateSIPOutboundTrunkRequest.ProtoReflect.Descriptor instead. +func (*UpdateSIPOutboundTrunkRequest) Descriptor() ([]byte, []int) { + return file_livekit_sip_proto_rawDescGZIP(), []int{7} +} + +func (x *UpdateSIPOutboundTrunkRequest) GetSipTrunkId() string { + if x != nil { + return x.SipTrunkId + } + return "" +} + +func (m *UpdateSIPOutboundTrunkRequest) GetAction() isUpdateSIPOutboundTrunkRequest_Action { + if m != nil { + return m.Action + } + return nil +} + +func (x *UpdateSIPOutboundTrunkRequest) GetReplace() *SIPOutboundTrunkInfo { + if x, ok := x.GetAction().(*UpdateSIPOutboundTrunkRequest_Replace); ok { + return x.Replace + } + return nil +} + +func (x *UpdateSIPOutboundTrunkRequest) GetUpdate() *SIPOutboundTrunkUpdate { + if x, ok := x.GetAction().(*UpdateSIPOutboundTrunkRequest_Update); ok { + return x.Update + } + return nil +} + +type isUpdateSIPOutboundTrunkRequest_Action interface { + isUpdateSIPOutboundTrunkRequest_Action() +} + +type UpdateSIPOutboundTrunkRequest_Replace struct { + Replace *SIPOutboundTrunkInfo `protobuf:"bytes,2,opt,name=replace,proto3,oneof"` +} + +type UpdateSIPOutboundTrunkRequest_Update struct { + Update *SIPOutboundTrunkUpdate `protobuf:"bytes,3,opt,name=update,proto3,oneof"` +} + +func (*UpdateSIPOutboundTrunkRequest_Replace) isUpdateSIPOutboundTrunkRequest_Action() {} + +func (*UpdateSIPOutboundTrunkRequest_Update) isUpdateSIPOutboundTrunkRequest_Action() {} + type SIPOutboundTrunkInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -830,7 +1097,7 @@ type SIPOutboundTrunkInfo struct { func (x *SIPOutboundTrunkInfo) Reset() { *x = SIPOutboundTrunkInfo{} - mi := &file_livekit_sip_proto_msgTypes[5] + mi := &file_livekit_sip_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -842,7 +1109,7 @@ func (x *SIPOutboundTrunkInfo) String() string { func (*SIPOutboundTrunkInfo) ProtoMessage() {} func (x *SIPOutboundTrunkInfo) ProtoReflect() protoreflect.Message { - mi := &file_livekit_sip_proto_msgTypes[5] + mi := &file_livekit_sip_proto_msgTypes[8] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -855,7 +1122,7 @@ func (x *SIPOutboundTrunkInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use SIPOutboundTrunkInfo.ProtoReflect.Descriptor instead. func (*SIPOutboundTrunkInfo) Descriptor() ([]byte, []int) { - return file_livekit_sip_proto_rawDescGZIP(), []int{5} + return file_livekit_sip_proto_rawDescGZIP(), []int{8} } func (x *SIPOutboundTrunkInfo) GetSipTrunkId() string { @@ -935,6 +1202,99 @@ func (x *SIPOutboundTrunkInfo) GetAttributesToHeaders() map[string]string { return nil } +type SIPOutboundTrunkUpdate struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Address *string `protobuf:"bytes,1,opt,name=address,proto3,oneof" json:"address,omitempty"` + Transport *SIPTransport `protobuf:"varint,2,opt,name=transport,proto3,enum=livekit.SIPTransport,oneof" json:"transport,omitempty"` + Numbers *ListUpdate `protobuf:"bytes,3,opt,name=numbers,proto3" json:"numbers,omitempty"` + AuthUsername *string `protobuf:"bytes,4,opt,name=auth_username,json=authUsername,proto3,oneof" json:"auth_username,omitempty"` + AuthPassword *string `protobuf:"bytes,5,opt,name=auth_password,json=authPassword,proto3,oneof" json:"auth_password,omitempty"` + Name *string `protobuf:"bytes,6,opt,name=name,proto3,oneof" json:"name,omitempty"` + Metadata *string `protobuf:"bytes,7,opt,name=metadata,proto3,oneof" json:"metadata,omitempty"` +} + +func (x *SIPOutboundTrunkUpdate) Reset() { + *x = SIPOutboundTrunkUpdate{} + mi := &file_livekit_sip_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SIPOutboundTrunkUpdate) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SIPOutboundTrunkUpdate) ProtoMessage() {} + +func (x *SIPOutboundTrunkUpdate) ProtoReflect() protoreflect.Message { + mi := &file_livekit_sip_proto_msgTypes[9] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SIPOutboundTrunkUpdate.ProtoReflect.Descriptor instead. +func (*SIPOutboundTrunkUpdate) Descriptor() ([]byte, []int) { + return file_livekit_sip_proto_rawDescGZIP(), []int{9} +} + +func (x *SIPOutboundTrunkUpdate) GetAddress() string { + if x != nil && x.Address != nil { + return *x.Address + } + return "" +} + +func (x *SIPOutboundTrunkUpdate) GetTransport() SIPTransport { + if x != nil && x.Transport != nil { + return *x.Transport + } + return SIPTransport_SIP_TRANSPORT_AUTO +} + +func (x *SIPOutboundTrunkUpdate) GetNumbers() *ListUpdate { + if x != nil { + return x.Numbers + } + return nil +} + +func (x *SIPOutboundTrunkUpdate) GetAuthUsername() string { + if x != nil && x.AuthUsername != nil { + return *x.AuthUsername + } + return "" +} + +func (x *SIPOutboundTrunkUpdate) GetAuthPassword() string { + if x != nil && x.AuthPassword != nil { + return *x.AuthPassword + } + return "" +} + +func (x *SIPOutboundTrunkUpdate) GetName() string { + if x != nil && x.Name != nil { + return *x.Name + } + return "" +} + +func (x *SIPOutboundTrunkUpdate) GetMetadata() string { + if x != nil && x.Metadata != nil { + return *x.Metadata + } + return "" +} + type GetSIPInboundTrunkRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -945,7 +1305,7 @@ type GetSIPInboundTrunkRequest struct { func (x *GetSIPInboundTrunkRequest) Reset() { *x = GetSIPInboundTrunkRequest{} - mi := &file_livekit_sip_proto_msgTypes[6] + mi := &file_livekit_sip_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -957,7 +1317,7 @@ func (x *GetSIPInboundTrunkRequest) String() string { func (*GetSIPInboundTrunkRequest) ProtoMessage() {} func (x *GetSIPInboundTrunkRequest) ProtoReflect() protoreflect.Message { - mi := &file_livekit_sip_proto_msgTypes[6] + mi := &file_livekit_sip_proto_msgTypes[10] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -970,7 +1330,7 @@ func (x *GetSIPInboundTrunkRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetSIPInboundTrunkRequest.ProtoReflect.Descriptor instead. func (*GetSIPInboundTrunkRequest) Descriptor() ([]byte, []int) { - return file_livekit_sip_proto_rawDescGZIP(), []int{6} + return file_livekit_sip_proto_rawDescGZIP(), []int{10} } func (x *GetSIPInboundTrunkRequest) GetSipTrunkId() string { @@ -990,7 +1350,7 @@ type GetSIPInboundTrunkResponse struct { func (x *GetSIPInboundTrunkResponse) Reset() { *x = GetSIPInboundTrunkResponse{} - mi := &file_livekit_sip_proto_msgTypes[7] + mi := &file_livekit_sip_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1002,7 +1362,7 @@ func (x *GetSIPInboundTrunkResponse) String() string { func (*GetSIPInboundTrunkResponse) ProtoMessage() {} func (x *GetSIPInboundTrunkResponse) ProtoReflect() protoreflect.Message { - mi := &file_livekit_sip_proto_msgTypes[7] + mi := &file_livekit_sip_proto_msgTypes[11] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1015,7 +1375,7 @@ func (x *GetSIPInboundTrunkResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetSIPInboundTrunkResponse.ProtoReflect.Descriptor instead. func (*GetSIPInboundTrunkResponse) Descriptor() ([]byte, []int) { - return file_livekit_sip_proto_rawDescGZIP(), []int{7} + return file_livekit_sip_proto_rawDescGZIP(), []int{11} } func (x *GetSIPInboundTrunkResponse) GetTrunk() *SIPInboundTrunkInfo { @@ -1035,7 +1395,7 @@ type GetSIPOutboundTrunkRequest struct { func (x *GetSIPOutboundTrunkRequest) Reset() { *x = GetSIPOutboundTrunkRequest{} - mi := &file_livekit_sip_proto_msgTypes[8] + mi := &file_livekit_sip_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1047,7 +1407,7 @@ func (x *GetSIPOutboundTrunkRequest) String() string { func (*GetSIPOutboundTrunkRequest) ProtoMessage() {} func (x *GetSIPOutboundTrunkRequest) ProtoReflect() protoreflect.Message { - mi := &file_livekit_sip_proto_msgTypes[8] + mi := &file_livekit_sip_proto_msgTypes[12] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1060,7 +1420,7 @@ func (x *GetSIPOutboundTrunkRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetSIPOutboundTrunkRequest.ProtoReflect.Descriptor instead. func (*GetSIPOutboundTrunkRequest) Descriptor() ([]byte, []int) { - return file_livekit_sip_proto_rawDescGZIP(), []int{8} + return file_livekit_sip_proto_rawDescGZIP(), []int{12} } func (x *GetSIPOutboundTrunkRequest) GetSipTrunkId() string { @@ -1080,7 +1440,7 @@ type GetSIPOutboundTrunkResponse struct { func (x *GetSIPOutboundTrunkResponse) Reset() { *x = GetSIPOutboundTrunkResponse{} - mi := &file_livekit_sip_proto_msgTypes[9] + mi := &file_livekit_sip_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1092,7 +1452,7 @@ func (x *GetSIPOutboundTrunkResponse) String() string { func (*GetSIPOutboundTrunkResponse) ProtoMessage() {} func (x *GetSIPOutboundTrunkResponse) ProtoReflect() protoreflect.Message { - mi := &file_livekit_sip_proto_msgTypes[9] + mi := &file_livekit_sip_proto_msgTypes[13] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1105,7 +1465,7 @@ func (x *GetSIPOutboundTrunkResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetSIPOutboundTrunkResponse.ProtoReflect.Descriptor instead. func (*GetSIPOutboundTrunkResponse) Descriptor() ([]byte, []int) { - return file_livekit_sip_proto_rawDescGZIP(), []int{9} + return file_livekit_sip_proto_rawDescGZIP(), []int{13} } func (x *GetSIPOutboundTrunkResponse) GetTrunk() *SIPOutboundTrunkInfo { @@ -1124,7 +1484,7 @@ type ListSIPTrunkRequest struct { func (x *ListSIPTrunkRequest) Reset() { *x = ListSIPTrunkRequest{} - mi := &file_livekit_sip_proto_msgTypes[10] + mi := &file_livekit_sip_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1136,7 +1496,7 @@ func (x *ListSIPTrunkRequest) String() string { func (*ListSIPTrunkRequest) ProtoMessage() {} func (x *ListSIPTrunkRequest) ProtoReflect() protoreflect.Message { - mi := &file_livekit_sip_proto_msgTypes[10] + mi := &file_livekit_sip_proto_msgTypes[14] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1149,7 +1509,7 @@ func (x *ListSIPTrunkRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListSIPTrunkRequest.ProtoReflect.Descriptor instead. func (*ListSIPTrunkRequest) Descriptor() ([]byte, []int) { - return file_livekit_sip_proto_rawDescGZIP(), []int{10} + return file_livekit_sip_proto_rawDescGZIP(), []int{14} } // Deprecated: Marked as deprecated in livekit_sip.proto. @@ -1163,7 +1523,7 @@ type ListSIPTrunkResponse struct { func (x *ListSIPTrunkResponse) Reset() { *x = ListSIPTrunkResponse{} - mi := &file_livekit_sip_proto_msgTypes[11] + mi := &file_livekit_sip_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1175,7 +1535,7 @@ func (x *ListSIPTrunkResponse) String() string { func (*ListSIPTrunkResponse) ProtoMessage() {} func (x *ListSIPTrunkResponse) ProtoReflect() protoreflect.Message { - mi := &file_livekit_sip_proto_msgTypes[11] + mi := &file_livekit_sip_proto_msgTypes[15] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1188,7 +1548,7 @@ func (x *ListSIPTrunkResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListSIPTrunkResponse.ProtoReflect.Descriptor instead. func (*ListSIPTrunkResponse) Descriptor() ([]byte, []int) { - return file_livekit_sip_proto_rawDescGZIP(), []int{11} + return file_livekit_sip_proto_rawDescGZIP(), []int{15} } func (x *ListSIPTrunkResponse) GetItems() []*SIPTrunkInfo { @@ -1206,7 +1566,7 @@ type ListSIPInboundTrunkRequest struct { func (x *ListSIPInboundTrunkRequest) Reset() { *x = ListSIPInboundTrunkRequest{} - mi := &file_livekit_sip_proto_msgTypes[12] + mi := &file_livekit_sip_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1218,7 +1578,7 @@ func (x *ListSIPInboundTrunkRequest) String() string { func (*ListSIPInboundTrunkRequest) ProtoMessage() {} func (x *ListSIPInboundTrunkRequest) ProtoReflect() protoreflect.Message { - mi := &file_livekit_sip_proto_msgTypes[12] + mi := &file_livekit_sip_proto_msgTypes[16] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1231,7 +1591,7 @@ func (x *ListSIPInboundTrunkRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListSIPInboundTrunkRequest.ProtoReflect.Descriptor instead. func (*ListSIPInboundTrunkRequest) Descriptor() ([]byte, []int) { - return file_livekit_sip_proto_rawDescGZIP(), []int{12} + return file_livekit_sip_proto_rawDescGZIP(), []int{16} } type ListSIPInboundTrunkResponse struct { @@ -1244,7 +1604,7 @@ type ListSIPInboundTrunkResponse struct { func (x *ListSIPInboundTrunkResponse) Reset() { *x = ListSIPInboundTrunkResponse{} - mi := &file_livekit_sip_proto_msgTypes[13] + mi := &file_livekit_sip_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1256,7 +1616,7 @@ func (x *ListSIPInboundTrunkResponse) String() string { func (*ListSIPInboundTrunkResponse) ProtoMessage() {} func (x *ListSIPInboundTrunkResponse) ProtoReflect() protoreflect.Message { - mi := &file_livekit_sip_proto_msgTypes[13] + mi := &file_livekit_sip_proto_msgTypes[17] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1269,7 +1629,7 @@ func (x *ListSIPInboundTrunkResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListSIPInboundTrunkResponse.ProtoReflect.Descriptor instead. func (*ListSIPInboundTrunkResponse) Descriptor() ([]byte, []int) { - return file_livekit_sip_proto_rawDescGZIP(), []int{13} + return file_livekit_sip_proto_rawDescGZIP(), []int{17} } func (x *ListSIPInboundTrunkResponse) GetItems() []*SIPInboundTrunkInfo { @@ -1287,7 +1647,7 @@ type ListSIPOutboundTrunkRequest struct { func (x *ListSIPOutboundTrunkRequest) Reset() { *x = ListSIPOutboundTrunkRequest{} - mi := &file_livekit_sip_proto_msgTypes[14] + mi := &file_livekit_sip_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1299,7 +1659,7 @@ func (x *ListSIPOutboundTrunkRequest) String() string { func (*ListSIPOutboundTrunkRequest) ProtoMessage() {} func (x *ListSIPOutboundTrunkRequest) ProtoReflect() protoreflect.Message { - mi := &file_livekit_sip_proto_msgTypes[14] + mi := &file_livekit_sip_proto_msgTypes[18] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1312,7 +1672,7 @@ func (x *ListSIPOutboundTrunkRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListSIPOutboundTrunkRequest.ProtoReflect.Descriptor instead. func (*ListSIPOutboundTrunkRequest) Descriptor() ([]byte, []int) { - return file_livekit_sip_proto_rawDescGZIP(), []int{14} + return file_livekit_sip_proto_rawDescGZIP(), []int{18} } type ListSIPOutboundTrunkResponse struct { @@ -1325,7 +1685,7 @@ type ListSIPOutboundTrunkResponse struct { func (x *ListSIPOutboundTrunkResponse) Reset() { *x = ListSIPOutboundTrunkResponse{} - mi := &file_livekit_sip_proto_msgTypes[15] + mi := &file_livekit_sip_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1337,7 +1697,7 @@ func (x *ListSIPOutboundTrunkResponse) String() string { func (*ListSIPOutboundTrunkResponse) ProtoMessage() {} func (x *ListSIPOutboundTrunkResponse) ProtoReflect() protoreflect.Message { - mi := &file_livekit_sip_proto_msgTypes[15] + mi := &file_livekit_sip_proto_msgTypes[19] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1350,7 +1710,7 @@ func (x *ListSIPOutboundTrunkResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListSIPOutboundTrunkResponse.ProtoReflect.Descriptor instead. func (*ListSIPOutboundTrunkResponse) Descriptor() ([]byte, []int) { - return file_livekit_sip_proto_rawDescGZIP(), []int{15} + return file_livekit_sip_proto_rawDescGZIP(), []int{19} } func (x *ListSIPOutboundTrunkResponse) GetItems() []*SIPOutboundTrunkInfo { @@ -1370,7 +1730,7 @@ type DeleteSIPTrunkRequest struct { func (x *DeleteSIPTrunkRequest) Reset() { *x = DeleteSIPTrunkRequest{} - mi := &file_livekit_sip_proto_msgTypes[16] + mi := &file_livekit_sip_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1382,7 +1742,7 @@ func (x *DeleteSIPTrunkRequest) String() string { func (*DeleteSIPTrunkRequest) ProtoMessage() {} func (x *DeleteSIPTrunkRequest) ProtoReflect() protoreflect.Message { - mi := &file_livekit_sip_proto_msgTypes[16] + mi := &file_livekit_sip_proto_msgTypes[20] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1395,7 +1755,7 @@ func (x *DeleteSIPTrunkRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteSIPTrunkRequest.ProtoReflect.Descriptor instead. func (*DeleteSIPTrunkRequest) Descriptor() ([]byte, []int) { - return file_livekit_sip_proto_rawDescGZIP(), []int{16} + return file_livekit_sip_proto_rawDescGZIP(), []int{20} } func (x *DeleteSIPTrunkRequest) GetSipTrunkId() string { @@ -1418,7 +1778,7 @@ type SIPDispatchRuleDirect struct { func (x *SIPDispatchRuleDirect) Reset() { *x = SIPDispatchRuleDirect{} - mi := &file_livekit_sip_proto_msgTypes[17] + mi := &file_livekit_sip_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1430,7 +1790,7 @@ func (x *SIPDispatchRuleDirect) String() string { func (*SIPDispatchRuleDirect) ProtoMessage() {} func (x *SIPDispatchRuleDirect) ProtoReflect() protoreflect.Message { - mi := &file_livekit_sip_proto_msgTypes[17] + mi := &file_livekit_sip_proto_msgTypes[21] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1443,7 +1803,7 @@ func (x *SIPDispatchRuleDirect) ProtoReflect() protoreflect.Message { // Deprecated: Use SIPDispatchRuleDirect.ProtoReflect.Descriptor instead. func (*SIPDispatchRuleDirect) Descriptor() ([]byte, []int) { - return file_livekit_sip_proto_rawDescGZIP(), []int{17} + return file_livekit_sip_proto_rawDescGZIP(), []int{21} } func (x *SIPDispatchRuleDirect) GetRoomName() string { @@ -1473,7 +1833,7 @@ type SIPDispatchRuleIndividual struct { func (x *SIPDispatchRuleIndividual) Reset() { *x = SIPDispatchRuleIndividual{} - mi := &file_livekit_sip_proto_msgTypes[18] + mi := &file_livekit_sip_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1485,7 +1845,7 @@ func (x *SIPDispatchRuleIndividual) String() string { func (*SIPDispatchRuleIndividual) ProtoMessage() {} func (x *SIPDispatchRuleIndividual) ProtoReflect() protoreflect.Message { - mi := &file_livekit_sip_proto_msgTypes[18] + mi := &file_livekit_sip_proto_msgTypes[22] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1498,7 +1858,7 @@ func (x *SIPDispatchRuleIndividual) ProtoReflect() protoreflect.Message { // Deprecated: Use SIPDispatchRuleIndividual.ProtoReflect.Descriptor instead. func (*SIPDispatchRuleIndividual) Descriptor() ([]byte, []int) { - return file_livekit_sip_proto_rawDescGZIP(), []int{18} + return file_livekit_sip_proto_rawDescGZIP(), []int{22} } func (x *SIPDispatchRuleIndividual) GetRoomPrefix() string { @@ -1530,7 +1890,7 @@ type SIPDispatchRuleCallee struct { func (x *SIPDispatchRuleCallee) Reset() { *x = SIPDispatchRuleCallee{} - mi := &file_livekit_sip_proto_msgTypes[19] + mi := &file_livekit_sip_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1542,7 +1902,7 @@ func (x *SIPDispatchRuleCallee) String() string { func (*SIPDispatchRuleCallee) ProtoMessage() {} func (x *SIPDispatchRuleCallee) ProtoReflect() protoreflect.Message { - mi := &file_livekit_sip_proto_msgTypes[19] + mi := &file_livekit_sip_proto_msgTypes[23] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1555,7 +1915,7 @@ func (x *SIPDispatchRuleCallee) ProtoReflect() protoreflect.Message { // Deprecated: Use SIPDispatchRuleCallee.ProtoReflect.Descriptor instead. func (*SIPDispatchRuleCallee) Descriptor() ([]byte, []int) { - return file_livekit_sip_proto_rawDescGZIP(), []int{19} + return file_livekit_sip_proto_rawDescGZIP(), []int{23} } func (x *SIPDispatchRuleCallee) GetRoomPrefix() string { @@ -1594,7 +1954,7 @@ type SIPDispatchRule struct { func (x *SIPDispatchRule) Reset() { *x = SIPDispatchRule{} - mi := &file_livekit_sip_proto_msgTypes[20] + mi := &file_livekit_sip_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1606,7 +1966,7 @@ func (x *SIPDispatchRule) String() string { func (*SIPDispatchRule) ProtoMessage() {} func (x *SIPDispatchRule) ProtoReflect() protoreflect.Message { - mi := &file_livekit_sip_proto_msgTypes[20] + mi := &file_livekit_sip_proto_msgTypes[24] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1619,7 +1979,7 @@ func (x *SIPDispatchRule) ProtoReflect() protoreflect.Message { // Deprecated: Use SIPDispatchRule.ProtoReflect.Descriptor instead. func (*SIPDispatchRule) Descriptor() ([]byte, []int) { - return file_livekit_sip_proto_rawDescGZIP(), []int{20} + return file_livekit_sip_proto_rawDescGZIP(), []int{24} } func (m *SIPDispatchRule) GetRule() isSIPDispatchRule_Rule { @@ -1682,28 +2042,42 @@ type CreateSIPDispatchRuleRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + DispatchRule *SIPDispatchRuleInfo `protobuf:"bytes,8,opt,name=dispatch_rule,json=dispatchRule,proto3" json:"dispatch_rule,omitempty"` // Rule ID is ignored + // Deprecated: Marked as deprecated in livekit_sip.proto. Rule *SIPDispatchRule `protobuf:"bytes,1,opt,name=rule,proto3" json:"rule,omitempty"` // What trunks are accepted for this dispatch rule // If empty all trunks will match this dispatch rule + // + // Deprecated: Marked as deprecated in livekit_sip.proto. TrunkIds []string `protobuf:"bytes,2,rep,name=trunk_ids,json=trunkIds,proto3" json:"trunk_ids,omitempty"` // By default the From value (Phone number) is used for participant name/identity and added to attributes. // If true, a random value for identity will be used and numbers will be omitted from attributes. + // + // Deprecated: Marked as deprecated in livekit_sip.proto. HidePhoneNumber bool `protobuf:"varint,3,opt,name=hide_phone_number,json=hidePhoneNumber,proto3" json:"hide_phone_number,omitempty"` // Dispatch Rule will only accept a call made to these numbers (if set). + // + // Deprecated: Marked as deprecated in livekit_sip.proto. InboundNumbers []string `protobuf:"bytes,6,rep,name=inbound_numbers,json=inboundNumbers,proto3" json:"inbound_numbers,omitempty"` // Optional human-readable name for the Dispatch Rule. + // + // Deprecated: Marked as deprecated in livekit_sip.proto. Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` // User-defined metadata for the Dispatch Rule. // Participants created by this rule will inherit this metadata. + // + // Deprecated: Marked as deprecated in livekit_sip.proto. Metadata string `protobuf:"bytes,5,opt,name=metadata,proto3" json:"metadata,omitempty"` // User-defined attributes for the Dispatch Rule. // Participants created by this rule will inherit these attributes. + // + // Deprecated: Marked as deprecated in livekit_sip.proto. Attributes map[string]string `protobuf:"bytes,7,rep,name=attributes,proto3" json:"attributes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } func (x *CreateSIPDispatchRuleRequest) Reset() { *x = CreateSIPDispatchRuleRequest{} - mi := &file_livekit_sip_proto_msgTypes[21] + mi := &file_livekit_sip_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1715,7 +2089,7 @@ func (x *CreateSIPDispatchRuleRequest) String() string { func (*CreateSIPDispatchRuleRequest) ProtoMessage() {} func (x *CreateSIPDispatchRuleRequest) ProtoReflect() protoreflect.Message { - mi := &file_livekit_sip_proto_msgTypes[21] + mi := &file_livekit_sip_proto_msgTypes[25] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1728,9 +2102,17 @@ func (x *CreateSIPDispatchRuleRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateSIPDispatchRuleRequest.ProtoReflect.Descriptor instead. func (*CreateSIPDispatchRuleRequest) Descriptor() ([]byte, []int) { - return file_livekit_sip_proto_rawDescGZIP(), []int{21} + return file_livekit_sip_proto_rawDescGZIP(), []int{25} +} + +func (x *CreateSIPDispatchRuleRequest) GetDispatchRule() *SIPDispatchRuleInfo { + if x != nil { + return x.DispatchRule + } + return nil } +// Deprecated: Marked as deprecated in livekit_sip.proto. func (x *CreateSIPDispatchRuleRequest) GetRule() *SIPDispatchRule { if x != nil { return x.Rule @@ -1738,6 +2120,7 @@ func (x *CreateSIPDispatchRuleRequest) GetRule() *SIPDispatchRule { return nil } +// Deprecated: Marked as deprecated in livekit_sip.proto. func (x *CreateSIPDispatchRuleRequest) GetTrunkIds() []string { if x != nil { return x.TrunkIds @@ -1745,6 +2128,7 @@ func (x *CreateSIPDispatchRuleRequest) GetTrunkIds() []string { return nil } +// Deprecated: Marked as deprecated in livekit_sip.proto. func (x *CreateSIPDispatchRuleRequest) GetHidePhoneNumber() bool { if x != nil { return x.HidePhoneNumber @@ -1752,6 +2136,7 @@ func (x *CreateSIPDispatchRuleRequest) GetHidePhoneNumber() bool { return false } +// Deprecated: Marked as deprecated in livekit_sip.proto. func (x *CreateSIPDispatchRuleRequest) GetInboundNumbers() []string { if x != nil { return x.InboundNumbers @@ -1759,6 +2144,7 @@ func (x *CreateSIPDispatchRuleRequest) GetInboundNumbers() []string { return nil } +// Deprecated: Marked as deprecated in livekit_sip.proto. func (x *CreateSIPDispatchRuleRequest) GetName() string { if x != nil { return x.Name @@ -1766,6 +2152,7 @@ func (x *CreateSIPDispatchRuleRequest) GetName() string { return "" } +// Deprecated: Marked as deprecated in livekit_sip.proto. func (x *CreateSIPDispatchRuleRequest) GetMetadata() string { if x != nil { return x.Metadata @@ -1773,6 +2160,7 @@ func (x *CreateSIPDispatchRuleRequest) GetMetadata() string { return "" } +// Deprecated: Marked as deprecated in livekit_sip.proto. func (x *CreateSIPDispatchRuleRequest) GetAttributes() map[string]string { if x != nil { return x.Attributes @@ -1780,6 +2168,93 @@ func (x *CreateSIPDispatchRuleRequest) GetAttributes() map[string]string { return nil } +type UpdateSIPDispatchRuleRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + SipDispatchRuleId string `protobuf:"bytes,1,opt,name=sip_dispatch_rule_id,json=sipDispatchRuleId,proto3" json:"sip_dispatch_rule_id,omitempty"` + // Types that are assignable to Action: + // + // *UpdateSIPDispatchRuleRequest_Replace + // *UpdateSIPDispatchRuleRequest_Update + Action isUpdateSIPDispatchRuleRequest_Action `protobuf_oneof:"action"` +} + +func (x *UpdateSIPDispatchRuleRequest) Reset() { + *x = UpdateSIPDispatchRuleRequest{} + mi := &file_livekit_sip_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UpdateSIPDispatchRuleRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateSIPDispatchRuleRequest) ProtoMessage() {} + +func (x *UpdateSIPDispatchRuleRequest) ProtoReflect() protoreflect.Message { + mi := &file_livekit_sip_proto_msgTypes[26] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateSIPDispatchRuleRequest.ProtoReflect.Descriptor instead. +func (*UpdateSIPDispatchRuleRequest) Descriptor() ([]byte, []int) { + return file_livekit_sip_proto_rawDescGZIP(), []int{26} +} + +func (x *UpdateSIPDispatchRuleRequest) GetSipDispatchRuleId() string { + if x != nil { + return x.SipDispatchRuleId + } + return "" +} + +func (m *UpdateSIPDispatchRuleRequest) GetAction() isUpdateSIPDispatchRuleRequest_Action { + if m != nil { + return m.Action + } + return nil +} + +func (x *UpdateSIPDispatchRuleRequest) GetReplace() *SIPDispatchRuleInfo { + if x, ok := x.GetAction().(*UpdateSIPDispatchRuleRequest_Replace); ok { + return x.Replace + } + return nil +} + +func (x *UpdateSIPDispatchRuleRequest) GetUpdate() *SIPDispatchRuleUpdate { + if x, ok := x.GetAction().(*UpdateSIPDispatchRuleRequest_Update); ok { + return x.Update + } + return nil +} + +type isUpdateSIPDispatchRuleRequest_Action interface { + isUpdateSIPDispatchRuleRequest_Action() +} + +type UpdateSIPDispatchRuleRequest_Replace struct { + Replace *SIPDispatchRuleInfo `protobuf:"bytes,2,opt,name=replace,proto3,oneof"` +} + +type UpdateSIPDispatchRuleRequest_Update struct { + Update *SIPDispatchRuleUpdate `protobuf:"bytes,3,opt,name=update,proto3,oneof"` +} + +func (*UpdateSIPDispatchRuleRequest_Replace) isUpdateSIPDispatchRuleRequest_Action() {} + +func (*UpdateSIPDispatchRuleRequest_Update) isUpdateSIPDispatchRuleRequest_Action() {} + type SIPDispatchRuleInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1803,7 +2278,7 @@ type SIPDispatchRuleInfo struct { func (x *SIPDispatchRuleInfo) Reset() { *x = SIPDispatchRuleInfo{} - mi := &file_livekit_sip_proto_msgTypes[22] + mi := &file_livekit_sip_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1815,7 +2290,7 @@ func (x *SIPDispatchRuleInfo) String() string { func (*SIPDispatchRuleInfo) ProtoMessage() {} func (x *SIPDispatchRuleInfo) ProtoReflect() protoreflect.Message { - mi := &file_livekit_sip_proto_msgTypes[22] + mi := &file_livekit_sip_proto_msgTypes[27] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1828,7 +2303,7 @@ func (x *SIPDispatchRuleInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use SIPDispatchRuleInfo.ProtoReflect.Descriptor instead. func (*SIPDispatchRuleInfo) Descriptor() ([]byte, []int) { - return file_livekit_sip_proto_rawDescGZIP(), []int{22} + return file_livekit_sip_proto_rawDescGZIP(), []int{27} } func (x *SIPDispatchRuleInfo) GetSipDispatchRuleId() string { @@ -1887,6 +2362,83 @@ func (x *SIPDispatchRuleInfo) GetAttributes() map[string]string { return nil } +type SIPDispatchRuleUpdate struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + TrunkIds *ListUpdate `protobuf:"bytes,1,opt,name=trunk_ids,json=trunkIds,proto3" json:"trunk_ids,omitempty"` + Rule *SIPDispatchRule `protobuf:"bytes,2,opt,name=rule,proto3" json:"rule,omitempty"` + Name *string `protobuf:"bytes,3,opt,name=name,proto3,oneof" json:"name,omitempty"` + Metadata *string `protobuf:"bytes,4,opt,name=metadata,proto3,oneof" json:"metadata,omitempty"` + Attributes map[string]string `protobuf:"bytes,5,rep,name=attributes,proto3" json:"attributes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` +} + +func (x *SIPDispatchRuleUpdate) Reset() { + *x = SIPDispatchRuleUpdate{} + mi := &file_livekit_sip_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SIPDispatchRuleUpdate) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SIPDispatchRuleUpdate) ProtoMessage() {} + +func (x *SIPDispatchRuleUpdate) ProtoReflect() protoreflect.Message { + mi := &file_livekit_sip_proto_msgTypes[28] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SIPDispatchRuleUpdate.ProtoReflect.Descriptor instead. +func (*SIPDispatchRuleUpdate) Descriptor() ([]byte, []int) { + return file_livekit_sip_proto_rawDescGZIP(), []int{28} +} + +func (x *SIPDispatchRuleUpdate) GetTrunkIds() *ListUpdate { + if x != nil { + return x.TrunkIds + } + return nil +} + +func (x *SIPDispatchRuleUpdate) GetRule() *SIPDispatchRule { + if x != nil { + return x.Rule + } + return nil +} + +func (x *SIPDispatchRuleUpdate) GetName() string { + if x != nil && x.Name != nil { + return *x.Name + } + return "" +} + +func (x *SIPDispatchRuleUpdate) GetMetadata() string { + if x != nil && x.Metadata != nil { + return *x.Metadata + } + return "" +} + +func (x *SIPDispatchRuleUpdate) GetAttributes() map[string]string { + if x != nil { + return x.Attributes + } + return nil +} + type ListSIPDispatchRuleRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1895,7 +2447,7 @@ type ListSIPDispatchRuleRequest struct { func (x *ListSIPDispatchRuleRequest) Reset() { *x = ListSIPDispatchRuleRequest{} - mi := &file_livekit_sip_proto_msgTypes[23] + mi := &file_livekit_sip_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1907,7 +2459,7 @@ func (x *ListSIPDispatchRuleRequest) String() string { func (*ListSIPDispatchRuleRequest) ProtoMessage() {} func (x *ListSIPDispatchRuleRequest) ProtoReflect() protoreflect.Message { - mi := &file_livekit_sip_proto_msgTypes[23] + mi := &file_livekit_sip_proto_msgTypes[29] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1920,7 +2472,7 @@ func (x *ListSIPDispatchRuleRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListSIPDispatchRuleRequest.ProtoReflect.Descriptor instead. func (*ListSIPDispatchRuleRequest) Descriptor() ([]byte, []int) { - return file_livekit_sip_proto_rawDescGZIP(), []int{23} + return file_livekit_sip_proto_rawDescGZIP(), []int{29} } type ListSIPDispatchRuleResponse struct { @@ -1933,7 +2485,7 @@ type ListSIPDispatchRuleResponse struct { func (x *ListSIPDispatchRuleResponse) Reset() { *x = ListSIPDispatchRuleResponse{} - mi := &file_livekit_sip_proto_msgTypes[24] + mi := &file_livekit_sip_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1945,7 +2497,7 @@ func (x *ListSIPDispatchRuleResponse) String() string { func (*ListSIPDispatchRuleResponse) ProtoMessage() {} func (x *ListSIPDispatchRuleResponse) ProtoReflect() protoreflect.Message { - mi := &file_livekit_sip_proto_msgTypes[24] + mi := &file_livekit_sip_proto_msgTypes[30] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1958,7 +2510,7 @@ func (x *ListSIPDispatchRuleResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListSIPDispatchRuleResponse.ProtoReflect.Descriptor instead. func (*ListSIPDispatchRuleResponse) Descriptor() ([]byte, []int) { - return file_livekit_sip_proto_rawDescGZIP(), []int{24} + return file_livekit_sip_proto_rawDescGZIP(), []int{30} } func (x *ListSIPDispatchRuleResponse) GetItems() []*SIPDispatchRuleInfo { @@ -1978,7 +2530,7 @@ type DeleteSIPDispatchRuleRequest struct { func (x *DeleteSIPDispatchRuleRequest) Reset() { *x = DeleteSIPDispatchRuleRequest{} - mi := &file_livekit_sip_proto_msgTypes[25] + mi := &file_livekit_sip_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1990,7 +2542,7 @@ func (x *DeleteSIPDispatchRuleRequest) String() string { func (*DeleteSIPDispatchRuleRequest) ProtoMessage() {} func (x *DeleteSIPDispatchRuleRequest) ProtoReflect() protoreflect.Message { - mi := &file_livekit_sip_proto_msgTypes[25] + mi := &file_livekit_sip_proto_msgTypes[31] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2003,7 +2555,7 @@ func (x *DeleteSIPDispatchRuleRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteSIPDispatchRuleRequest.ProtoReflect.Descriptor instead. func (*DeleteSIPDispatchRuleRequest) Descriptor() ([]byte, []int) { - return file_livekit_sip_proto_rawDescGZIP(), []int{25} + return file_livekit_sip_proto_rawDescGZIP(), []int{31} } func (x *DeleteSIPDispatchRuleRequest) GetSipDispatchRuleId() string { @@ -2057,7 +2609,7 @@ type CreateSIPParticipantRequest struct { func (x *CreateSIPParticipantRequest) Reset() { *x = CreateSIPParticipantRequest{} - mi := &file_livekit_sip_proto_msgTypes[26] + mi := &file_livekit_sip_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2069,7 +2621,7 @@ func (x *CreateSIPParticipantRequest) String() string { func (*CreateSIPParticipantRequest) ProtoMessage() {} func (x *CreateSIPParticipantRequest) ProtoReflect() protoreflect.Message { - mi := &file_livekit_sip_proto_msgTypes[26] + mi := &file_livekit_sip_proto_msgTypes[32] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2082,7 +2634,7 @@ func (x *CreateSIPParticipantRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateSIPParticipantRequest.ProtoReflect.Descriptor instead. func (*CreateSIPParticipantRequest) Descriptor() ([]byte, []int) { - return file_livekit_sip_proto_rawDescGZIP(), []int{26} + return file_livekit_sip_proto_rawDescGZIP(), []int{32} } func (x *CreateSIPParticipantRequest) GetSipTrunkId() string { @@ -2204,7 +2756,7 @@ type SIPParticipantInfo struct { func (x *SIPParticipantInfo) Reset() { *x = SIPParticipantInfo{} - mi := &file_livekit_sip_proto_msgTypes[27] + mi := &file_livekit_sip_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2216,7 +2768,7 @@ func (x *SIPParticipantInfo) String() string { func (*SIPParticipantInfo) ProtoMessage() {} func (x *SIPParticipantInfo) ProtoReflect() protoreflect.Message { - mi := &file_livekit_sip_proto_msgTypes[27] + mi := &file_livekit_sip_proto_msgTypes[33] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2229,7 +2781,7 @@ func (x *SIPParticipantInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use SIPParticipantInfo.ProtoReflect.Descriptor instead. func (*SIPParticipantInfo) Descriptor() ([]byte, []int) { - return file_livekit_sip_proto_rawDescGZIP(), []int{27} + return file_livekit_sip_proto_rawDescGZIP(), []int{33} } func (x *SIPParticipantInfo) GetParticipantId() string { @@ -2274,7 +2826,7 @@ type TransferSIPParticipantRequest struct { func (x *TransferSIPParticipantRequest) Reset() { *x = TransferSIPParticipantRequest{} - mi := &file_livekit_sip_proto_msgTypes[28] + mi := &file_livekit_sip_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2286,7 +2838,7 @@ func (x *TransferSIPParticipantRequest) String() string { func (*TransferSIPParticipantRequest) ProtoMessage() {} func (x *TransferSIPParticipantRequest) ProtoReflect() protoreflect.Message { - mi := &file_livekit_sip_proto_msgTypes[28] + mi := &file_livekit_sip_proto_msgTypes[34] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2299,7 +2851,7 @@ func (x *TransferSIPParticipantRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use TransferSIPParticipantRequest.ProtoReflect.Descriptor instead. func (*TransferSIPParticipantRequest) Descriptor() ([]byte, []int) { - return file_livekit_sip_proto_rawDescGZIP(), []int{28} + return file_livekit_sip_proto_rawDescGZIP(), []int{34} } func (x *TransferSIPParticipantRequest) GetParticipantIdentity() string { @@ -2353,7 +2905,7 @@ type SIPCallInfo struct { func (x *SIPCallInfo) Reset() { *x = SIPCallInfo{} - mi := &file_livekit_sip_proto_msgTypes[29] + mi := &file_livekit_sip_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2365,7 +2917,7 @@ func (x *SIPCallInfo) String() string { func (*SIPCallInfo) ProtoMessage() {} func (x *SIPCallInfo) ProtoReflect() protoreflect.Message { - mi := &file_livekit_sip_proto_msgTypes[29] + mi := &file_livekit_sip_proto_msgTypes[35] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2378,7 +2930,7 @@ func (x *SIPCallInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use SIPCallInfo.ProtoReflect.Descriptor instead. func (*SIPCallInfo) Descriptor() ([]byte, []int) { - return file_livekit_sip_proto_rawDescGZIP(), []int{29} + return file_livekit_sip_proto_rawDescGZIP(), []int{35} } func (x *SIPCallInfo) GetCallId() string { @@ -2493,7 +3045,7 @@ type SIPUri struct { func (x *SIPUri) Reset() { *x = SIPUri{} - mi := &file_livekit_sip_proto_msgTypes[30] + mi := &file_livekit_sip_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2505,7 +3057,7 @@ func (x *SIPUri) String() string { func (*SIPUri) ProtoMessage() {} func (x *SIPUri) ProtoReflect() protoreflect.Message { - mi := &file_livekit_sip_proto_msgTypes[30] + mi := &file_livekit_sip_proto_msgTypes[36] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2518,7 +3070,7 @@ func (x *SIPUri) ProtoReflect() protoreflect.Message { // Deprecated: Use SIPUri.ProtoReflect.Descriptor instead. func (*SIPUri) Descriptor() ([]byte, []int) { - return file_livekit_sip_proto_rawDescGZIP(), []int{30} + return file_livekit_sip_proto_rawDescGZIP(), []int{36} } func (x *SIPUri) GetUser() string { @@ -2643,444 +3195,576 @@ var file_livekit_sip_proto_rawDesc = []byte{ 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x32, 0x0a, 0x05, 0x74, 0x72, 0x75, 0x6e, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, - 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x74, 0x72, 0x75, 0x6e, 0x6b, 0x22, 0xb8, 0x07, 0x0a, - 0x13, 0x53, 0x49, 0x50, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, - 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x20, 0x0a, 0x0c, 0x73, 0x69, 0x70, 0x5f, 0x74, 0x72, 0x75, 0x6e, - 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x69, 0x70, 0x54, - 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, - 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x73, - 0x12, 0x2b, 0x0a, 0x11, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x61, 0x64, 0x64, 0x72, - 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x61, 0x6c, 0x6c, - 0x6f, 0x77, 0x65, 0x64, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x12, 0x27, 0x0a, - 0x0f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x73, - 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x4e, - 0x75, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x75, - 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, - 0x75, 0x74, 0x68, 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x61, - 0x75, 0x74, 0x68, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0c, 0x61, 0x75, 0x74, 0x68, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, - 0x12, 0x43, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x29, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x49, - 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x2e, - 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x68, 0x65, - 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x69, 0x0a, 0x15, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, - 0x5f, 0x74, 0x6f, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x0a, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, - 0x49, 0x50, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x6e, - 0x66, 0x6f, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x54, 0x6f, 0x41, 0x74, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x68, 0x65, 0x61, - 0x64, 0x65, 0x72, 0x73, 0x54, 0x6f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, - 0x12, 0x69, 0x0a, 0x15, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x5f, 0x74, - 0x6f, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x35, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x49, 0x6e, 0x62, - 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x41, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x54, 0x6f, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x73, 0x54, 0x6f, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x42, 0x0a, 0x0f, 0x72, - 0x69, 0x6e, 0x67, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x0b, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x0e, 0x72, 0x69, 0x6e, 0x67, 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, - 0x45, 0x0a, 0x11, 0x6d, 0x61, 0x78, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x64, 0x75, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x6d, 0x61, 0x78, 0x43, 0x61, 0x6c, 0x6c, 0x44, 0x75, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x6b, 0x72, 0x69, 0x73, 0x70, 0x5f, - 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x6b, - 0x72, 0x69, 0x73, 0x70, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x1a, 0x3a, 0x0a, 0x0c, 0x48, - 0x65, 0x61, 0x64, 0x65, 0x72, 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, 0x09, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x46, 0x0a, 0x18, 0x48, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x73, 0x54, 0x6f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 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, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, - 0x46, 0x0a, 0x18, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x54, 0x6f, 0x48, - 0x65, 0x61, 0x64, 0x65, 0x72, 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, 0x09, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x54, 0x0a, 0x1d, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x53, 0x49, 0x50, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, - 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x33, 0x0a, 0x05, 0x74, 0x72, 0x75, 0x6e, - 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, - 0x74, 0x2e, 0x53, 0x49, 0x50, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, - 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x74, 0x72, 0x75, 0x6e, 0x6b, 0x22, 0x85, 0x06, - 0x0a, 0x14, 0x53, 0x49, 0x50, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, - 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x20, 0x0a, 0x0c, 0x73, 0x69, 0x70, 0x5f, 0x74, 0x72, - 0x75, 0x6e, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x69, - 0x70, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, - 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, - 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, - 0x73, 0x73, 0x12, 0x33, 0x0a, 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, - 0x53, 0x49, 0x50, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x09, 0x74, 0x72, - 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x75, 0x6d, 0x62, 0x65, - 0x72, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, - 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x75, 0x74, 0x68, 0x55, 0x73, - 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x70, - 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, - 0x75, 0x74, 0x68, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x44, 0x0a, 0x07, 0x68, - 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6c, - 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, - 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x48, 0x65, 0x61, 0x64, - 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, - 0x73, 0x12, 0x6a, 0x0a, 0x15, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x74, 0x6f, 0x5f, - 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x36, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x4f, 0x75, - 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x2e, - 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x54, 0x6f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, - 0x73, 0x54, 0x6f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x6a, 0x0a, - 0x15, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x68, - 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x6c, - 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, - 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x41, 0x74, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x54, 0x6f, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, - 0x54, 0x6f, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x1a, 0x3a, 0x0a, 0x0c, 0x48, 0x65, 0x61, - 0x64, 0x65, 0x72, 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, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x46, 0x0a, 0x18, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, - 0x54, 0x6f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 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, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x46, 0x0a, - 0x18, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x54, 0x6f, 0x48, 0x65, 0x61, - 0x64, 0x65, 0x72, 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, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x3d, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x53, 0x49, 0x50, 0x49, - 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0c, 0x73, 0x69, 0x70, 0x5f, 0x74, 0x72, 0x75, 0x6e, 0x6b, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x69, 0x70, 0x54, 0x72, 0x75, - 0x6e, 0x6b, 0x49, 0x64, 0x22, 0x50, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x53, 0x49, 0x50, 0x49, 0x6e, - 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x32, 0x0a, 0x05, 0x74, 0x72, 0x75, 0x6e, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1c, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x49, - 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, - 0x05, 0x74, 0x72, 0x75, 0x6e, 0x6b, 0x22, 0x3e, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x53, 0x49, 0x50, - 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0c, 0x73, 0x69, 0x70, 0x5f, 0x74, 0x72, 0x75, 0x6e, - 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x69, 0x70, 0x54, - 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x64, 0x22, 0x52, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x53, 0x49, 0x50, - 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x05, 0x74, 0x72, 0x75, 0x6e, 0x6b, 0x18, 0x01, + 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x74, 0x72, 0x75, 0x6e, 0x6b, 0x22, 0xbe, 0x01, 0x0a, + 0x1c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x49, 0x50, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, + 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, + 0x0c, 0x73, 0x69, 0x70, 0x5f, 0x74, 0x72, 0x75, 0x6e, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x69, 0x70, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x64, 0x12, + 0x38, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1c, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x49, 0x6e, + 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x48, 0x00, + 0x52, 0x07, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x12, 0x38, 0x0a, 0x06, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6c, 0x69, 0x76, 0x65, + 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, + 0x75, 0x6e, 0x6b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x06, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xb8, 0x07, + 0x0a, 0x13, 0x53, 0x49, 0x50, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, + 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x20, 0x0a, 0x0c, 0x73, 0x69, 0x70, 0x5f, 0x74, 0x72, 0x75, + 0x6e, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x69, 0x70, + 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x75, 0x6d, 0x62, 0x65, + 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, + 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x61, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x61, 0x6c, + 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x12, 0x27, + 0x0a, 0x0f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, + 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, + 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x75, 0x74, 0x68, 0x5f, + 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, + 0x61, 0x75, 0x74, 0x68, 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, + 0x61, 0x75, 0x74, 0x68, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x75, 0x74, 0x68, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, + 0x64, 0x12, 0x43, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x09, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, + 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, + 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x68, + 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x69, 0x0a, 0x15, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, + 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, + 0x53, 0x49, 0x50, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x49, + 0x6e, 0x66, 0x6f, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x54, 0x6f, 0x41, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x68, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x73, 0x54, 0x6f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x73, 0x12, 0x69, 0x0a, 0x15, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x5f, + 0x74, 0x6f, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x35, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x49, 0x6e, + 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x41, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x54, 0x6f, 0x48, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x73, 0x54, 0x6f, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x42, 0x0a, 0x0f, + 0x72, 0x69, 0x6e, 0x67, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, + 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x0e, 0x72, 0x69, 0x6e, 0x67, 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, + 0x12, 0x45, 0x0a, 0x11, 0x6d, 0x61, 0x78, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x64, 0x75, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x6d, 0x61, 0x78, 0x43, 0x61, 0x6c, 0x6c, 0x44, + 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x6b, 0x72, 0x69, 0x73, 0x70, + 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, + 0x6b, 0x72, 0x69, 0x73, 0x70, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x1a, 0x3a, 0x0a, 0x0c, + 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 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, 0x09, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x46, 0x0a, 0x18, 0x48, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x73, 0x54, 0x6f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 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, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x1a, 0x46, 0x0a, 0x18, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x54, 0x6f, + 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 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, 0x09, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x8e, 0x03, 0x0a, 0x15, 0x53, 0x49, 0x50, + 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x12, 0x2d, 0x0a, 0x07, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x07, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, + 0x73, 0x12, 0x40, 0x0a, 0x11, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x61, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6c, + 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x52, 0x10, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x65, 0x73, 0x12, 0x3c, 0x0a, 0x0f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x6e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6c, + 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x52, 0x0e, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, + 0x73, 0x12, 0x28, 0x0a, 0x0d, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0c, 0x61, 0x75, 0x74, 0x68, + 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x61, + 0x75, 0x74, 0x68, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x48, 0x01, 0x52, 0x0c, 0x61, 0x75, 0x74, 0x68, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, + 0x72, 0x64, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1f, + 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x03, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x88, 0x01, 0x01, 0x42, + 0x10, 0x0a, 0x0e, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, + 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, + 0x6f, 0x72, 0x64, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x0b, 0x0a, 0x09, + 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x54, 0x0a, 0x1d, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x53, 0x49, 0x50, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, + 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x33, 0x0a, 0x05, 0x74, 0x72, + 0x75, 0x6e, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6c, 0x69, 0x76, 0x65, + 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, + 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x74, 0x72, 0x75, 0x6e, 0x6b, 0x22, + 0xc1, 0x01, 0x0a, 0x1d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x49, 0x50, 0x4f, 0x75, 0x74, + 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x20, 0x0a, 0x0c, 0x73, 0x69, 0x70, 0x5f, 0x74, 0x72, 0x75, 0x6e, 0x6b, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x69, 0x70, 0x54, 0x72, 0x75, 0x6e, + 0x6b, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x49, - 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x74, 0x72, 0x75, 0x6e, 0x6b, 0x22, 0x19, 0x0a, 0x13, 0x4c, 0x69, - 0x73, 0x74, 0x53, 0x49, 0x50, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x3a, 0x02, 0x18, 0x01, 0x22, 0x47, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x49, 0x50, - 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, - 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6c, - 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x49, - 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x3a, 0x02, 0x18, 0x01, 0x22, 0x1c, - 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x49, 0x50, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, - 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x51, 0x0a, 0x1b, - 0x4c, 0x69, 0x73, 0x74, 0x53, 0x49, 0x50, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, - 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x05, 0x69, - 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6c, 0x69, 0x76, - 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, - 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, - 0x1d, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x49, 0x50, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, - 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x53, - 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x49, 0x50, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, - 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, - 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, - 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x4f, 0x75, 0x74, 0x62, 0x6f, - 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x69, 0x74, - 0x65, 0x6d, 0x73, 0x22, 0x39, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x49, 0x50, - 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0c, + 0x6e, 0x66, 0x6f, 0x48, 0x00, 0x52, 0x07, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x12, 0x39, + 0x0a, 0x06, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, + 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x4f, 0x75, 0x74, 0x62, + 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, + 0x00, 0x52, 0x06, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x22, 0x85, 0x06, 0x0a, 0x14, 0x53, 0x49, 0x50, 0x4f, 0x75, 0x74, 0x62, 0x6f, + 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x20, 0x0a, 0x0c, 0x73, 0x69, 0x70, 0x5f, 0x74, 0x72, 0x75, 0x6e, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x73, 0x69, 0x70, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x64, 0x22, 0x46, - 0x0a, 0x15, 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, - 0x65, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x6f, 0x6f, 0x6d, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6f, 0x6d, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x70, 0x69, 0x6e, 0x22, 0x4e, 0x0a, 0x19, 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, - 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, - 0x75, 0x61, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x6f, 0x6f, 0x6d, 0x5f, 0x70, 0x72, 0x65, 0x66, - 0x69, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x6f, 0x6f, 0x6d, 0x50, 0x72, - 0x65, 0x66, 0x69, 0x78, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x70, 0x69, 0x6e, 0x22, 0x68, 0x0a, 0x15, 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, - 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x43, 0x61, 0x6c, 0x6c, 0x65, 0x65, 0x12, - 0x1f, 0x0a, 0x0b, 0x72, 0x6f, 0x6f, 0x6d, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x6f, 0x6f, 0x6d, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, - 0x12, 0x10, 0x0a, 0x03, 0x70, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x70, - 0x69, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x69, 0x7a, 0x65, - 0x22, 0xa1, 0x02, 0x0a, 0x0f, 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, - 0x52, 0x75, 0x6c, 0x65, 0x12, 0x52, 0x0a, 0x14, 0x64, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, - 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, + 0x28, 0x09, 0x52, 0x0a, 0x73, 0x69, 0x70, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x64, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x18, + 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x33, 0x0a, 0x09, 0x74, 0x72, 0x61, 0x6e, + 0x73, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x6c, 0x69, + 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, + 0x72, 0x74, 0x52, 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x18, 0x0a, + 0x07, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, + 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x75, 0x74, 0x68, 0x5f, + 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, + 0x61, 0x75, 0x74, 0x68, 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, + 0x61, 0x75, 0x74, 0x68, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x75, 0x74, 0x68, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, + 0x64, 0x12, 0x44, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x09, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, + 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x6e, 0x66, + 0x6f, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, + 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x6a, 0x0a, 0x15, 0x68, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, + 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, + 0x2e, 0x53, 0x49, 0x50, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, + 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x54, 0x6f, 0x41, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, + 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x54, 0x6f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x73, 0x12, 0x6a, 0x0a, 0x15, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x0b, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, + 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x6e, 0x66, + 0x6f, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x54, 0x6f, 0x48, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x61, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x54, 0x6f, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x1a, + 0x3a, 0x0a, 0x0c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 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, 0x09, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x46, 0x0a, 0x18, 0x48, + 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x54, 0x6f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 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, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x1a, 0x46, 0x0a, 0x18, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x73, 0x54, 0x6f, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 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, 0x09, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x82, 0x03, 0x0a, 0x16, + 0x53, 0x49, 0x50, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, + 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, + 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x48, + 0x01, 0x52, 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, + 0x2d, 0x0a, 0x07, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x13, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x07, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x28, + 0x0a, 0x0d, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x0c, 0x61, 0x75, 0x74, 0x68, 0x55, 0x73, 0x65, + 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x61, 0x75, 0x74, 0x68, + 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x03, 0x52, 0x0c, 0x61, 0x75, 0x74, 0x68, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x88, + 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x04, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x08, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x48, 0x05, 0x52, + 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, + 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x74, 0x72, 0x61, + 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x5f, + 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x61, 0x75, 0x74, + 0x68, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x22, 0x3d, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x53, 0x49, 0x50, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, + 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, + 0x0c, 0x73, 0x69, 0x70, 0x5f, 0x74, 0x72, 0x75, 0x6e, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x69, 0x70, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x64, 0x22, + 0x50, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x53, 0x49, 0x50, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, + 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, + 0x05, 0x74, 0x72, 0x75, 0x6e, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6c, + 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, + 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x74, 0x72, 0x75, 0x6e, + 0x6b, 0x22, 0x3e, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x53, 0x49, 0x50, 0x4f, 0x75, 0x74, 0x62, 0x6f, + 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x20, 0x0a, 0x0c, 0x73, 0x69, 0x70, 0x5f, 0x74, 0x72, 0x75, 0x6e, 0x6b, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x69, 0x70, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x49, + 0x64, 0x22, 0x52, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x53, 0x49, 0x50, 0x4f, 0x75, 0x74, 0x62, 0x6f, + 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x33, 0x0a, 0x05, 0x74, 0x72, 0x75, 0x6e, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1d, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x4f, 0x75, 0x74, + 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, + 0x74, 0x72, 0x75, 0x6e, 0x6b, 0x22, 0x19, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x49, 0x50, + 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x3a, 0x02, 0x18, 0x01, + 0x22, 0x47, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x49, 0x50, 0x54, 0x72, 0x75, 0x6e, 0x6b, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, + 0x74, 0x2e, 0x53, 0x49, 0x50, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, + 0x69, 0x74, 0x65, 0x6d, 0x73, 0x3a, 0x02, 0x18, 0x01, 0x22, 0x1c, 0x0a, 0x1a, 0x4c, 0x69, 0x73, + 0x74, 0x53, 0x49, 0x50, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x51, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x53, + 0x49, 0x50, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, + 0x53, 0x49, 0x50, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x1d, 0x0a, 0x1b, 0x4c, 0x69, + 0x73, 0x74, 0x53, 0x49, 0x50, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, + 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x53, 0x0a, 0x1c, 0x4c, 0x69, 0x73, + 0x74, 0x53, 0x49, 0x50, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, + 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x05, 0x69, 0x74, 0x65, + 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, + 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, + 0x75, 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x39, + 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x49, 0x50, 0x54, 0x72, 0x75, 0x6e, 0x6b, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0c, 0x73, 0x69, 0x70, 0x5f, 0x74, + 0x72, 0x75, 0x6e, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, + 0x69, 0x70, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x64, 0x22, 0x46, 0x0a, 0x15, 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x44, 0x69, 0x72, 0x65, - 0x63, 0x74, 0x48, 0x00, 0x52, 0x12, 0x64, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, - 0x6c, 0x65, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x12, 0x5e, 0x0a, 0x18, 0x64, 0x69, 0x73, 0x70, - 0x61, 0x74, 0x63, 0x68, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x76, 0x69, - 0x64, 0x75, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6c, 0x69, 0x76, - 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, - 0x52, 0x75, 0x6c, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x48, 0x00, - 0x52, 0x16, 0x64, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x49, 0x6e, - 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x12, 0x52, 0x0a, 0x14, 0x64, 0x69, 0x73, 0x70, - 0x61, 0x74, 0x63, 0x68, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x65, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, - 0x2e, 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, - 0x43, 0x61, 0x6c, 0x6c, 0x65, 0x65, 0x48, 0x00, 0x52, 0x12, 0x64, 0x69, 0x73, 0x70, 0x61, 0x74, - 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x43, 0x61, 0x6c, 0x6c, 0x65, 0x65, 0x42, 0x06, 0x0a, 0x04, - 0x72, 0x75, 0x6c, 0x65, 0x22, 0x84, 0x03, 0x0a, 0x1c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, - 0x49, 0x50, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, - 0x50, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x04, 0x72, - 0x75, 0x6c, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x72, 0x75, 0x6e, 0x6b, 0x5f, 0x69, 0x64, 0x73, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x74, 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x64, 0x73, - 0x12, 0x2a, 0x0a, 0x11, 0x68, 0x69, 0x64, 0x65, 0x5f, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x5f, 0x6e, - 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x68, 0x69, 0x64, - 0x65, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x27, 0x0a, 0x0f, - 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, - 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x4e, 0x75, - 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x55, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x6c, 0x69, 0x76, 0x65, - 0x6b, 0x69, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, + 0x63, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x6f, 0x6f, 0x6d, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6f, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x10, 0x0a, 0x03, 0x70, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x70, 0x69, + 0x6e, 0x22, 0x4e, 0x0a, 0x19, 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, + 0x52, 0x75, 0x6c, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x12, 0x1f, + 0x0a, 0x0b, 0x72, 0x6f, 0x6f, 0x6d, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x6f, 0x6f, 0x6d, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, + 0x10, 0x0a, 0x03, 0x70, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x70, 0x69, + 0x6e, 0x22, 0x68, 0x0a, 0x15, 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, + 0x52, 0x75, 0x6c, 0x65, 0x43, 0x61, 0x6c, 0x6c, 0x65, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x6f, + 0x6f, 0x6d, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x72, 0x6f, 0x6f, 0x6d, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x10, 0x0a, 0x03, 0x70, + 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x70, 0x69, 0x6e, 0x12, 0x1c, 0x0a, + 0x09, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x09, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x22, 0xa1, 0x02, 0x0a, 0x0f, + 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x12, + 0x52, 0x0a, 0x14, 0x64, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x72, 0x75, 0x6c, 0x65, + 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, + 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, 0x70, 0x61, + 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x48, 0x00, 0x52, + 0x12, 0x64, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x44, 0x69, 0x72, + 0x65, 0x63, 0x74, 0x12, 0x5e, 0x0a, 0x18, 0x64, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x5f, + 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, + 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x49, + 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x48, 0x00, 0x52, 0x16, 0x64, 0x69, 0x73, + 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, + 0x75, 0x61, 0x6c, 0x12, 0x52, 0x0a, 0x14, 0x64, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x5f, + 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x65, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1e, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x44, + 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x43, 0x61, 0x6c, 0x6c, 0x65, + 0x65, 0x48, 0x00, 0x52, 0x12, 0x64, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, + 0x65, 0x43, 0x61, 0x6c, 0x6c, 0x65, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x22, + 0xe3, 0x03, 0x0a, 0x1c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x41, 0x0a, 0x0d, 0x64, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x72, 0x75, 0x6c, + 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, + 0x74, 0x2e, 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, + 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, + 0x75, 0x6c, 0x65, 0x12, 0x30, 0x0a, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x18, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x44, + 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x42, 0x02, 0x18, 0x01, 0x52, + 0x04, 0x72, 0x75, 0x6c, 0x65, 0x12, 0x1f, 0x0a, 0x09, 0x74, 0x72, 0x75, 0x6e, 0x6b, 0x5f, 0x69, + 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x08, 0x74, 0x72, + 0x75, 0x6e, 0x6b, 0x49, 0x64, 0x73, 0x12, 0x2e, 0x0a, 0x11, 0x68, 0x69, 0x64, 0x65, 0x5f, 0x70, + 0x68, 0x6f, 0x6e, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x08, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0f, 0x68, 0x69, 0x64, 0x65, 0x50, 0x68, 0x6f, 0x6e, 0x65, + 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x2b, 0x0a, 0x0f, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, + 0x64, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x42, + 0x02, 0x18, 0x01, 0x52, 0x0e, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x73, 0x12, 0x16, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x08, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, + 0x01, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x59, 0x0a, 0x0a, 0x61, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x35, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 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, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xcd, 0x01, 0x0a, 0x1c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2f, 0x0a, 0x14, 0x73, 0x69, 0x70, 0x5f, 0x64, 0x69, + 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x73, 0x69, 0x70, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, + 0x68, 0x52, 0x75, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x38, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6c, 0x61, + 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, + 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, + 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x48, 0x00, 0x52, 0x07, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, + 0x65, 0x12, 0x38, 0x0a, 0x06, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1e, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x44, + 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x48, 0x00, 0x52, 0x06, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xa3, 0x03, 0x0a, 0x13, 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, + 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2f, 0x0a, + 0x14, 0x73, 0x69, 0x70, 0x5f, 0x64, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x72, 0x75, + 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x73, 0x69, 0x70, + 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x2c, + 0x0a, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6c, + 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, + 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x12, 0x1b, 0x0a, 0x09, + 0x74, 0x72, 0x75, 0x6e, 0x6b, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x08, 0x74, 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x64, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x68, 0x69, 0x64, + 0x65, 0x5f, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x68, 0x69, 0x64, 0x65, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x27, 0x0a, 0x0f, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, + 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, + 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x4c, + 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x08, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, + 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 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, 0x09, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xa3, 0x03, 0x0a, 0x13, - 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x49, - 0x6e, 0x66, 0x6f, 0x12, 0x2f, 0x0a, 0x14, 0x73, 0x69, 0x70, 0x5f, 0x64, 0x69, 0x73, 0x70, 0x61, - 0x74, 0x63, 0x68, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x11, 0x73, 0x69, 0x70, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, - 0x6c, 0x65, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, - 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x75, - 0x6c, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x72, 0x75, 0x6e, 0x6b, 0x5f, 0x69, 0x64, 0x73, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x74, 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x64, 0x73, 0x12, - 0x2a, 0x0a, 0x11, 0x68, 0x69, 0x64, 0x65, 0x5f, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x5f, 0x6e, 0x75, - 0x6d, 0x62, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x68, 0x69, 0x64, 0x65, - 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x27, 0x0a, 0x0f, 0x69, - 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x07, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x4e, 0x75, 0x6d, - 0x62, 0x65, 0x72, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x12, 0x4c, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, - 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, - 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 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, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, - 0x01, 0x22, 0x1c, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, 0x70, - 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, - 0x51, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, - 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, - 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, 0x70, 0x61, - 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x69, 0x74, 0x65, - 0x6d, 0x73, 0x22, 0x4f, 0x0a, 0x1c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x49, 0x50, 0x44, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xd6, 0x02, 0x0a, 0x15, + 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x30, 0x0a, 0x09, 0x74, 0x72, 0x75, 0x6e, 0x6b, 0x5f, 0x69, + 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, + 0x69, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x08, 0x74, + 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x64, 0x73, 0x12, 0x2c, 0x0a, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, + 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x52, + 0x04, 0x72, 0x75, 0x6c, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1f, + 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x01, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x88, 0x01, 0x01, 0x12, + 0x4e, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x05, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, + 0x50, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x1a, + 0x3d, 0x0a, 0x0f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 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, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x07, + 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x22, 0x1c, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x2f, 0x0a, 0x14, 0x73, 0x69, 0x70, 0x5f, 0x64, 0x69, 0x73, 0x70, 0x61, 0x74, - 0x63, 0x68, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x11, 0x73, 0x69, 0x70, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, - 0x65, 0x49, 0x64, 0x22, 0xaa, 0x06, 0x0a, 0x1b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x49, - 0x50, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0c, 0x73, 0x69, 0x70, 0x5f, 0x74, 0x72, 0x75, 0x6e, 0x6b, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x69, 0x70, 0x54, 0x72, - 0x75, 0x6e, 0x6b, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0b, 0x73, 0x69, 0x70, 0x5f, 0x63, 0x61, 0x6c, - 0x6c, 0x5f, 0x74, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, 0x70, 0x43, - 0x61, 0x6c, 0x6c, 0x54, 0x6f, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x69, 0x70, 0x5f, 0x6e, 0x75, 0x6d, - 0x62, 0x65, 0x72, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, 0x70, 0x4e, 0x75, - 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x6f, 0x6f, 0x6d, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6f, 0x6d, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x31, 0x0a, 0x14, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, - 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x73, 0x74, 0x22, 0x51, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, + 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x32, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x1c, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x44, 0x69, + 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, + 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x4f, 0x0a, 0x1c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, + 0x49, 0x50, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2f, 0x0a, 0x14, 0x73, 0x69, 0x70, 0x5f, 0x64, 0x69, 0x73, + 0x70, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x11, 0x73, 0x69, 0x70, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, + 0x52, 0x75, 0x6c, 0x65, 0x49, 0x64, 0x22, 0xaa, 0x06, 0x0a, 0x1b, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x53, 0x49, 0x50, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0c, 0x73, 0x69, 0x70, 0x5f, 0x74, 0x72, + 0x75, 0x6e, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x69, + 0x70, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0b, 0x73, 0x69, 0x70, 0x5f, + 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x74, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, + 0x69, 0x70, 0x43, 0x61, 0x6c, 0x6c, 0x54, 0x6f, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x69, 0x70, 0x5f, + 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, + 0x70, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x6f, 0x6f, 0x6d, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6f, 0x6d, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x31, 0x0a, 0x14, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, + 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x13, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x49, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x29, 0x0a, 0x10, 0x70, 0x61, 0x72, 0x74, 0x69, + 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x4e, 0x61, + 0x6d, 0x65, 0x12, 0x31, 0x0a, 0x14, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, + 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x13, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x76, 0x0a, 0x16, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, + 0x70, 0x61, 0x6e, 0x74, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, + 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x49, 0x50, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, + 0x70, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x61, 0x72, 0x74, + 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x15, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, + 0x61, 0x6e, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x12, 0x0a, + 0x04, 0x64, 0x74, 0x6d, 0x66, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x74, 0x6d, + 0x66, 0x12, 0x27, 0x0a, 0x0d, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x72, 0x69, 0x6e, 0x67, 0x74, 0x6f, + 0x6e, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0c, 0x70, 0x6c, + 0x61, 0x79, 0x52, 0x69, 0x6e, 0x67, 0x74, 0x6f, 0x6e, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x6c, + 0x61, 0x79, 0x5f, 0x64, 0x69, 0x61, 0x6c, 0x74, 0x6f, 0x6e, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0c, 0x70, 0x6c, 0x61, 0x79, 0x44, 0x69, 0x61, 0x6c, 0x74, 0x6f, 0x6e, 0x65, 0x12, + 0x2a, 0x0a, 0x11, 0x68, 0x69, 0x64, 0x65, 0x5f, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x5f, 0x6e, 0x75, + 0x6d, 0x62, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x68, 0x69, 0x64, 0x65, + 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x42, 0x0a, 0x0f, 0x72, + 0x69, 0x6e, 0x67, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x0b, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x0e, 0x72, 0x69, 0x6e, 0x67, 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, + 0x45, 0x0a, 0x11, 0x6d, 0x61, 0x78, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x64, 0x75, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x6d, 0x61, 0x78, 0x43, 0x61, 0x6c, 0x6c, 0x44, 0x75, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x5f, 0x6b, 0x72, 0x69, 0x73, 0x70, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x65, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x4b, 0x72, 0x69, 0x73, 0x70, 0x1a, 0x48, 0x0a, 0x1a, 0x50, 0x61, 0x72, + 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 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, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x22, 0xab, 0x01, 0x0a, 0x12, 0x53, 0x49, 0x50, 0x50, 0x61, 0x72, 0x74, 0x69, + 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x61, + 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0d, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x49, + 0x64, 0x12, 0x31, 0x0a, 0x14, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, + 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x74, 0x79, 0x12, 0x29, 0x0a, 0x10, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, - 0x61, 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, - 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x31, 0x0a, 0x14, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x5f, 0x6d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x70, - 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x12, 0x76, 0x0a, 0x16, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, - 0x74, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x09, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x53, 0x49, 0x50, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, - 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, - 0x70, 0x61, 0x6e, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x52, 0x15, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, - 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x74, - 0x6d, 0x66, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x74, 0x6d, 0x66, 0x12, 0x27, - 0x0a, 0x0d, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x72, 0x69, 0x6e, 0x67, 0x74, 0x6f, 0x6e, 0x65, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x08, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0c, 0x70, 0x6c, 0x61, 0x79, 0x52, - 0x69, 0x6e, 0x67, 0x74, 0x6f, 0x6e, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x6c, 0x61, 0x79, 0x5f, - 0x64, 0x69, 0x61, 0x6c, 0x74, 0x6f, 0x6e, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, - 0x70, 0x6c, 0x61, 0x79, 0x44, 0x69, 0x61, 0x6c, 0x74, 0x6f, 0x6e, 0x65, 0x12, 0x2a, 0x0a, 0x11, - 0x68, 0x69, 0x64, 0x65, 0x5f, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, - 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x68, 0x69, 0x64, 0x65, 0x50, 0x68, 0x6f, - 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x42, 0x0a, 0x0f, 0x72, 0x69, 0x6e, 0x67, - 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x72, 0x69, - 0x6e, 0x67, 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x45, 0x0a, 0x11, - 0x6d, 0x61, 0x78, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x0f, 0x6d, 0x61, 0x78, 0x43, 0x61, 0x6c, 0x6c, 0x44, 0x75, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6b, 0x72, - 0x69, 0x73, 0x70, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x65, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x4b, 0x72, 0x69, 0x73, 0x70, 0x1a, 0x48, 0x0a, 0x1a, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, - 0x69, 0x70, 0x61, 0x6e, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 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, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x22, 0xab, 0x01, 0x0a, 0x12, 0x53, 0x49, 0x50, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, - 0x61, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x61, 0x72, 0x74, 0x69, - 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0d, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x31, - 0x0a, 0x14, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x70, 0x61, - 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, - 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x6f, 0x6f, 0x6d, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6f, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, - 0x0a, 0x0b, 0x73, 0x69, 0x70, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, 0x70, 0x43, 0x61, 0x6c, 0x6c, 0x49, 0x64, 0x22, 0xb5, - 0x01, 0x0a, 0x1d, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x53, 0x49, 0x50, 0x50, 0x61, - 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x31, 0x0a, 0x14, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x5f, - 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, - 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x74, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x6f, 0x6f, 0x6d, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6f, 0x6d, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x5f, 0x74, 0x6f, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, - 0x6f, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x64, 0x69, 0x61, 0x6c, 0x74, 0x6f, - 0x6e, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x70, 0x6c, 0x61, 0x79, 0x44, 0x69, - 0x61, 0x6c, 0x74, 0x6f, 0x6e, 0x65, 0x22, 0xae, 0x04, 0x0a, 0x0b, 0x53, 0x49, 0x50, 0x43, 0x61, - 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x61, 0x6c, 0x6c, 0x49, 0x64, 0x12, - 0x19, 0x0a, 0x08, 0x74, 0x72, 0x75, 0x6e, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x74, 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x6f, - 0x6f, 0x6d, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, - 0x6f, 0x6f, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x6f, 0x6f, 0x6d, 0x5f, - 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x6f, 0x6f, 0x6d, 0x49, 0x64, - 0x12, 0x31, 0x0a, 0x14, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x5f, - 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, - 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x74, 0x79, 0x12, 0x2a, 0x0a, 0x08, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x75, 0x72, 0x69, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, - 0x53, 0x49, 0x50, 0x55, 0x72, 0x69, 0x52, 0x07, 0x66, 0x72, 0x6f, 0x6d, 0x55, 0x72, 0x69, 0x12, - 0x26, 0x0a, 0x06, 0x74, 0x6f, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x0f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x55, 0x72, 0x69, - 0x52, 0x05, 0x74, 0x6f, 0x55, 0x72, 0x69, 0x12, 0x3e, 0x0a, 0x10, 0x65, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x64, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, - 0x0e, 0x32, 0x13, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x46, - 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x0f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x46, - 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x37, 0x0a, 0x0b, 0x63, 0x61, 0x6c, 0x6c, 0x5f, - 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x6c, - 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x43, 0x61, 0x6c, 0x6c, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x52, 0x0a, 0x63, 0x61, 0x6c, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, - 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0a, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x19, - 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x07, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x41, 0x74, 0x12, 0x46, 0x0a, 0x11, 0x64, 0x69, 0x73, - 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x0c, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x44, - 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x52, - 0x10, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x52, 0x65, 0x61, 0x73, 0x6f, - 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x89, 0x01, 0x0a, 0x06, 0x53, 0x49, 0x50, 0x55, - 0x72, 0x69, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, - 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x33, - 0x0a, 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x15, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x54, - 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, - 0x6f, 0x72, 0x74, 0x2a, 0x6b, 0x0a, 0x0c, 0x53, 0x49, 0x50, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, - 0x6f, 0x72, 0x74, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x49, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, - 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x55, 0x54, 0x4f, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x53, - 0x49, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x55, 0x44, 0x50, - 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x49, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x50, - 0x4f, 0x52, 0x54, 0x5f, 0x54, 0x43, 0x50, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x49, 0x50, - 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x54, 0x4c, 0x53, 0x10, 0x03, - 0x2a, 0x77, 0x0a, 0x0d, 0x53, 0x49, 0x50, 0x43, 0x61, 0x6c, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x43, 0x53, 0x5f, 0x43, 0x41, 0x4c, 0x4c, 0x5f, 0x49, 0x4e, - 0x43, 0x4f, 0x4d, 0x49, 0x4e, 0x47, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x53, 0x43, 0x53, 0x5f, - 0x50, 0x41, 0x52, 0x54, 0x49, 0x43, 0x49, 0x50, 0x41, 0x4e, 0x54, 0x5f, 0x4a, 0x4f, 0x49, 0x4e, - 0x45, 0x44, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x43, 0x53, 0x5f, 0x41, 0x43, 0x54, 0x49, - 0x56, 0x45, 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x43, 0x53, 0x5f, 0x44, 0x49, 0x53, 0x43, - 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x45, 0x44, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x43, - 0x53, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x04, 0x2a, 0x29, 0x0a, 0x0a, 0x53, 0x49, 0x50, - 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, - 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x4b, 0x52, 0x49, 0x53, 0x50, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, - 0x45, 0x44, 0x10, 0x01, 0x32, 0xba, 0x09, 0x0a, 0x03, 0x53, 0x49, 0x50, 0x12, 0x50, 0x0a, 0x0c, - 0x4c, 0x69, 0x73, 0x74, 0x53, 0x49, 0x50, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x12, 0x1c, 0x2e, 0x6c, - 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x49, 0x50, 0x54, 0x72, - 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x6c, 0x69, 0x76, - 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x49, 0x50, 0x54, 0x72, 0x75, 0x6e, - 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, 0x12, 0x5c, - 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x49, 0x50, 0x49, 0x6e, 0x62, 0x6f, 0x75, - 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x12, 0x25, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, - 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x49, 0x50, 0x49, 0x6e, 0x62, 0x6f, 0x75, - 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, - 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x49, 0x6e, 0x62, 0x6f, - 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x5f, 0x0a, 0x16, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x49, 0x50, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, - 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x12, 0x26, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, - 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x49, 0x50, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, - 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, - 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x4f, 0x75, 0x74, 0x62, - 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x5d, 0x0a, - 0x12, 0x47, 0x65, 0x74, 0x53, 0x49, 0x50, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, - 0x75, 0x6e, 0x6b, 0x12, 0x22, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x47, 0x65, - 0x74, 0x53, 0x49, 0x50, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, - 0x74, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x49, 0x50, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, - 0x72, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x60, 0x0a, 0x13, - 0x47, 0x65, 0x74, 0x53, 0x49, 0x50, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, - 0x75, 0x6e, 0x6b, 0x12, 0x23, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x47, 0x65, - 0x74, 0x53, 0x49, 0x50, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, - 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, - 0x69, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x49, 0x50, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, + 0x74, 0x69, 0x74, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x6f, 0x6f, 0x6d, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6f, 0x6d, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x1e, 0x0a, 0x0b, 0x73, 0x69, 0x70, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x69, 0x64, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, 0x70, 0x43, 0x61, 0x6c, 0x6c, 0x49, + 0x64, 0x22, 0xb5, 0x01, 0x0a, 0x1d, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x53, 0x49, + 0x50, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x31, 0x0a, 0x14, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, + 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x13, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x49, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x6f, 0x6f, 0x6d, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6f, 0x6d, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x5f, + 0x74, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, + 0x65, 0x72, 0x54, 0x6f, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x64, 0x69, 0x61, + 0x6c, 0x74, 0x6f, 0x6e, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x70, 0x6c, 0x61, + 0x79, 0x44, 0x69, 0x61, 0x6c, 0x74, 0x6f, 0x6e, 0x65, 0x22, 0xae, 0x04, 0x0a, 0x0b, 0x53, 0x49, + 0x50, 0x43, 0x61, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x61, 0x6c, + 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x61, 0x6c, 0x6c, + 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x72, 0x75, 0x6e, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x64, 0x12, 0x1b, 0x0a, + 0x09, 0x72, 0x6f, 0x6f, 0x6d, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x72, 0x6f, 0x6f, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x6f, + 0x6f, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x6f, 0x6f, + 0x6d, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x14, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, + 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x13, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x49, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x2a, 0x0a, 0x08, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x75, + 0x72, 0x69, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, + 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x55, 0x72, 0x69, 0x52, 0x07, 0x66, 0x72, 0x6f, 0x6d, 0x55, + 0x72, 0x69, 0x12, 0x26, 0x0a, 0x06, 0x74, 0x6f, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, + 0x55, 0x72, 0x69, 0x52, 0x05, 0x74, 0x6f, 0x55, 0x72, 0x69, 0x12, 0x3e, 0x0a, 0x10, 0x65, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x64, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x0e, + 0x20, 0x03, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, + 0x49, 0x50, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x0f, 0x65, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x64, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x37, 0x0a, 0x0b, 0x63, 0x61, + 0x6c, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x16, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x43, 0x61, 0x6c, + 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0a, 0x63, 0x61, 0x6c, 0x6c, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, + 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x41, + 0x74, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0b, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x41, 0x74, 0x12, 0x46, 0x0a, 0x11, + 0x64, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, + 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, + 0x74, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x52, 0x65, 0x61, 0x73, + 0x6f, 0x6e, 0x52, 0x10, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x52, 0x65, + 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x0d, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x89, 0x01, 0x0a, 0x06, 0x53, + 0x49, 0x50, 0x55, 0x72, 0x69, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x73, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x12, 0x12, 0x0a, + 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x6f, 0x72, + 0x74, 0x12, 0x33, 0x0a, 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, + 0x49, 0x50, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x09, 0x74, 0x72, 0x61, + 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2a, 0x6b, 0x0a, 0x0c, 0x53, 0x49, 0x50, 0x54, 0x72, 0x61, + 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x49, 0x50, 0x5f, 0x54, 0x52, + 0x41, 0x4e, 0x53, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x55, 0x54, 0x4f, 0x10, 0x00, 0x12, 0x15, + 0x0a, 0x11, 0x53, 0x49, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x50, 0x4f, 0x52, 0x54, 0x5f, + 0x55, 0x44, 0x50, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x49, 0x50, 0x5f, 0x54, 0x52, 0x41, + 0x4e, 0x53, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x54, 0x43, 0x50, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, + 0x53, 0x49, 0x50, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x54, 0x4c, + 0x53, 0x10, 0x03, 0x2a, 0x77, 0x0a, 0x0d, 0x53, 0x49, 0x50, 0x43, 0x61, 0x6c, 0x6c, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x43, 0x53, 0x5f, 0x43, 0x41, 0x4c, 0x4c, + 0x5f, 0x49, 0x4e, 0x43, 0x4f, 0x4d, 0x49, 0x4e, 0x47, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x53, + 0x43, 0x53, 0x5f, 0x50, 0x41, 0x52, 0x54, 0x49, 0x43, 0x49, 0x50, 0x41, 0x4e, 0x54, 0x5f, 0x4a, + 0x4f, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x43, 0x53, 0x5f, 0x41, + 0x43, 0x54, 0x49, 0x56, 0x45, 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x43, 0x53, 0x5f, 0x44, + 0x49, 0x53, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x45, 0x44, 0x10, 0x03, 0x12, 0x0d, 0x0a, + 0x09, 0x53, 0x43, 0x53, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x04, 0x2a, 0x29, 0x0a, 0x0a, + 0x53, 0x49, 0x50, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, + 0x4e, 0x45, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x4b, 0x52, 0x49, 0x53, 0x50, 0x5f, 0x45, 0x4e, + 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x01, 0x32, 0xd7, 0x0b, 0x0a, 0x03, 0x53, 0x49, 0x50, 0x12, + 0x50, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x49, 0x50, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x12, + 0x1c, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x49, + 0x50, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, + 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x49, 0x50, 0x54, + 0x72, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88, 0x02, + 0x01, 0x12, 0x5c, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x49, 0x50, 0x49, 0x6e, + 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x12, 0x25, 0x2e, 0x6c, 0x69, 0x76, + 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x49, 0x50, 0x49, 0x6e, + 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x1c, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x49, + 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x12, + 0x5f, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x49, 0x50, 0x4f, 0x75, 0x74, 0x62, + 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x12, 0x26, 0x2e, 0x6c, 0x69, 0x76, 0x65, + 0x6b, 0x69, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x49, 0x50, 0x4f, 0x75, 0x74, + 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x1d, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x4f, + 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, + 0x12, 0x5c, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x49, 0x50, 0x49, 0x6e, 0x62, + 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x12, 0x25, 0x2e, 0x6c, 0x69, 0x76, 0x65, + 0x6b, 0x69, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x49, 0x50, 0x49, 0x6e, 0x62, + 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x1c, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x49, 0x6e, + 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x5f, + 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x49, 0x50, 0x4f, 0x75, 0x74, 0x62, 0x6f, + 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x12, 0x26, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, + 0x69, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x49, 0x50, 0x4f, 0x75, 0x74, 0x62, + 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x1d, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x4f, 0x75, + 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x12, + 0x5d, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x53, 0x49, 0x50, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, + 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x12, 0x22, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, + 0x47, 0x65, 0x74, 0x53, 0x49, 0x50, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, + 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x6c, 0x69, 0x76, 0x65, + 0x6b, 0x69, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x49, 0x50, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x60, - 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x49, 0x50, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, + 0x0a, 0x13, 0x47, 0x65, 0x74, 0x53, 0x49, 0x50, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x12, 0x23, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x53, 0x49, 0x50, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, + 0x47, 0x65, 0x74, 0x53, 0x49, 0x50, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x6c, 0x69, 0x76, - 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x49, 0x50, 0x49, 0x6e, 0x62, 0x6f, + 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x49, 0x50, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x63, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x49, 0x50, 0x4f, 0x75, 0x74, 0x62, 0x6f, - 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x12, 0x24, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, - 0x69, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x49, 0x50, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, - 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, - 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x49, 0x50, - 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x47, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, - 0x49, 0x50, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x12, 0x1e, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, - 0x74, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x49, 0x50, 0x54, 0x72, 0x75, 0x6e, 0x6b, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, - 0x74, 0x2e, 0x53, 0x49, 0x50, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x5c, - 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, 0x70, 0x61, + 0x12, 0x60, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x49, 0x50, 0x49, 0x6e, 0x62, 0x6f, 0x75, + 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x12, 0x23, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, + 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x49, 0x50, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, + 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x6c, + 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x49, 0x50, 0x49, 0x6e, + 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x63, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x49, 0x50, 0x4f, 0x75, 0x74, + 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x12, 0x24, 0x2e, 0x6c, 0x69, 0x76, + 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x49, 0x50, 0x4f, 0x75, 0x74, 0x62, + 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x25, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, + 0x49, 0x50, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x47, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x53, 0x49, 0x50, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x12, 0x1e, 0x2e, 0x6c, 0x69, 0x76, 0x65, + 0x6b, 0x69, 0x74, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x49, 0x50, 0x54, 0x72, 0x75, + 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x6c, 0x69, 0x76, 0x65, + 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, + 0x12, 0x5c, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, + 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x25, 0x2e, 0x6c, 0x69, 0x76, 0x65, + 0x6b, 0x69, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, + 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x1c, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x44, 0x69, + 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x5c, + 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x25, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, - 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, 0x70, 0x61, + 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x49, 0x50, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x60, 0x0a, 0x13, @@ -3128,7 +3812,7 @@ func file_livekit_sip_proto_rawDescGZIP() []byte { } var file_livekit_sip_proto_enumTypes = make([]protoimpl.EnumInfo, 4) -var file_livekit_sip_proto_msgTypes = make([]protoimpl.MessageInfo, 40) +var file_livekit_sip_proto_msgTypes = make([]protoimpl.MessageInfo, 47) var file_livekit_sip_proto_goTypes = []any{ (SIPTransport)(0), // 0: livekit.SIPTransport (SIPCallStatus)(0), // 1: livekit.SIPCallStatus @@ -3137,114 +3821,143 @@ var file_livekit_sip_proto_goTypes = []any{ (*CreateSIPTrunkRequest)(nil), // 4: livekit.CreateSIPTrunkRequest (*SIPTrunkInfo)(nil), // 5: livekit.SIPTrunkInfo (*CreateSIPInboundTrunkRequest)(nil), // 6: livekit.CreateSIPInboundTrunkRequest - (*SIPInboundTrunkInfo)(nil), // 7: livekit.SIPInboundTrunkInfo - (*CreateSIPOutboundTrunkRequest)(nil), // 8: livekit.CreateSIPOutboundTrunkRequest - (*SIPOutboundTrunkInfo)(nil), // 9: livekit.SIPOutboundTrunkInfo - (*GetSIPInboundTrunkRequest)(nil), // 10: livekit.GetSIPInboundTrunkRequest - (*GetSIPInboundTrunkResponse)(nil), // 11: livekit.GetSIPInboundTrunkResponse - (*GetSIPOutboundTrunkRequest)(nil), // 12: livekit.GetSIPOutboundTrunkRequest - (*GetSIPOutboundTrunkResponse)(nil), // 13: livekit.GetSIPOutboundTrunkResponse - (*ListSIPTrunkRequest)(nil), // 14: livekit.ListSIPTrunkRequest - (*ListSIPTrunkResponse)(nil), // 15: livekit.ListSIPTrunkResponse - (*ListSIPInboundTrunkRequest)(nil), // 16: livekit.ListSIPInboundTrunkRequest - (*ListSIPInboundTrunkResponse)(nil), // 17: livekit.ListSIPInboundTrunkResponse - (*ListSIPOutboundTrunkRequest)(nil), // 18: livekit.ListSIPOutboundTrunkRequest - (*ListSIPOutboundTrunkResponse)(nil), // 19: livekit.ListSIPOutboundTrunkResponse - (*DeleteSIPTrunkRequest)(nil), // 20: livekit.DeleteSIPTrunkRequest - (*SIPDispatchRuleDirect)(nil), // 21: livekit.SIPDispatchRuleDirect - (*SIPDispatchRuleIndividual)(nil), // 22: livekit.SIPDispatchRuleIndividual - (*SIPDispatchRuleCallee)(nil), // 23: livekit.SIPDispatchRuleCallee - (*SIPDispatchRule)(nil), // 24: livekit.SIPDispatchRule - (*CreateSIPDispatchRuleRequest)(nil), // 25: livekit.CreateSIPDispatchRuleRequest - (*SIPDispatchRuleInfo)(nil), // 26: livekit.SIPDispatchRuleInfo - (*ListSIPDispatchRuleRequest)(nil), // 27: livekit.ListSIPDispatchRuleRequest - (*ListSIPDispatchRuleResponse)(nil), // 28: livekit.ListSIPDispatchRuleResponse - (*DeleteSIPDispatchRuleRequest)(nil), // 29: livekit.DeleteSIPDispatchRuleRequest - (*CreateSIPParticipantRequest)(nil), // 30: livekit.CreateSIPParticipantRequest - (*SIPParticipantInfo)(nil), // 31: livekit.SIPParticipantInfo - (*TransferSIPParticipantRequest)(nil), // 32: livekit.TransferSIPParticipantRequest - (*SIPCallInfo)(nil), // 33: livekit.SIPCallInfo - (*SIPUri)(nil), // 34: livekit.SIPUri - nil, // 35: livekit.SIPInboundTrunkInfo.HeadersEntry - nil, // 36: livekit.SIPInboundTrunkInfo.HeadersToAttributesEntry - nil, // 37: livekit.SIPInboundTrunkInfo.AttributesToHeadersEntry - nil, // 38: livekit.SIPOutboundTrunkInfo.HeadersEntry - nil, // 39: livekit.SIPOutboundTrunkInfo.HeadersToAttributesEntry - nil, // 40: livekit.SIPOutboundTrunkInfo.AttributesToHeadersEntry - nil, // 41: livekit.CreateSIPDispatchRuleRequest.AttributesEntry - nil, // 42: livekit.SIPDispatchRuleInfo.AttributesEntry - nil, // 43: livekit.CreateSIPParticipantRequest.ParticipantAttributesEntry - (*durationpb.Duration)(nil), // 44: google.protobuf.Duration - (DisconnectReason)(0), // 45: livekit.DisconnectReason - (*emptypb.Empty)(nil), // 46: google.protobuf.Empty + (*UpdateSIPInboundTrunkRequest)(nil), // 7: livekit.UpdateSIPInboundTrunkRequest + (*SIPInboundTrunkInfo)(nil), // 8: livekit.SIPInboundTrunkInfo + (*SIPInboundTrunkUpdate)(nil), // 9: livekit.SIPInboundTrunkUpdate + (*CreateSIPOutboundTrunkRequest)(nil), // 10: livekit.CreateSIPOutboundTrunkRequest + (*UpdateSIPOutboundTrunkRequest)(nil), // 11: livekit.UpdateSIPOutboundTrunkRequest + (*SIPOutboundTrunkInfo)(nil), // 12: livekit.SIPOutboundTrunkInfo + (*SIPOutboundTrunkUpdate)(nil), // 13: livekit.SIPOutboundTrunkUpdate + (*GetSIPInboundTrunkRequest)(nil), // 14: livekit.GetSIPInboundTrunkRequest + (*GetSIPInboundTrunkResponse)(nil), // 15: livekit.GetSIPInboundTrunkResponse + (*GetSIPOutboundTrunkRequest)(nil), // 16: livekit.GetSIPOutboundTrunkRequest + (*GetSIPOutboundTrunkResponse)(nil), // 17: livekit.GetSIPOutboundTrunkResponse + (*ListSIPTrunkRequest)(nil), // 18: livekit.ListSIPTrunkRequest + (*ListSIPTrunkResponse)(nil), // 19: livekit.ListSIPTrunkResponse + (*ListSIPInboundTrunkRequest)(nil), // 20: livekit.ListSIPInboundTrunkRequest + (*ListSIPInboundTrunkResponse)(nil), // 21: livekit.ListSIPInboundTrunkResponse + (*ListSIPOutboundTrunkRequest)(nil), // 22: livekit.ListSIPOutboundTrunkRequest + (*ListSIPOutboundTrunkResponse)(nil), // 23: livekit.ListSIPOutboundTrunkResponse + (*DeleteSIPTrunkRequest)(nil), // 24: livekit.DeleteSIPTrunkRequest + (*SIPDispatchRuleDirect)(nil), // 25: livekit.SIPDispatchRuleDirect + (*SIPDispatchRuleIndividual)(nil), // 26: livekit.SIPDispatchRuleIndividual + (*SIPDispatchRuleCallee)(nil), // 27: livekit.SIPDispatchRuleCallee + (*SIPDispatchRule)(nil), // 28: livekit.SIPDispatchRule + (*CreateSIPDispatchRuleRequest)(nil), // 29: livekit.CreateSIPDispatchRuleRequest + (*UpdateSIPDispatchRuleRequest)(nil), // 30: livekit.UpdateSIPDispatchRuleRequest + (*SIPDispatchRuleInfo)(nil), // 31: livekit.SIPDispatchRuleInfo + (*SIPDispatchRuleUpdate)(nil), // 32: livekit.SIPDispatchRuleUpdate + (*ListSIPDispatchRuleRequest)(nil), // 33: livekit.ListSIPDispatchRuleRequest + (*ListSIPDispatchRuleResponse)(nil), // 34: livekit.ListSIPDispatchRuleResponse + (*DeleteSIPDispatchRuleRequest)(nil), // 35: livekit.DeleteSIPDispatchRuleRequest + (*CreateSIPParticipantRequest)(nil), // 36: livekit.CreateSIPParticipantRequest + (*SIPParticipantInfo)(nil), // 37: livekit.SIPParticipantInfo + (*TransferSIPParticipantRequest)(nil), // 38: livekit.TransferSIPParticipantRequest + (*SIPCallInfo)(nil), // 39: livekit.SIPCallInfo + (*SIPUri)(nil), // 40: livekit.SIPUri + nil, // 41: livekit.SIPInboundTrunkInfo.HeadersEntry + nil, // 42: livekit.SIPInboundTrunkInfo.HeadersToAttributesEntry + nil, // 43: livekit.SIPInboundTrunkInfo.AttributesToHeadersEntry + nil, // 44: livekit.SIPOutboundTrunkInfo.HeadersEntry + nil, // 45: livekit.SIPOutboundTrunkInfo.HeadersToAttributesEntry + nil, // 46: livekit.SIPOutboundTrunkInfo.AttributesToHeadersEntry + nil, // 47: livekit.CreateSIPDispatchRuleRequest.AttributesEntry + nil, // 48: livekit.SIPDispatchRuleInfo.AttributesEntry + nil, // 49: livekit.SIPDispatchRuleUpdate.AttributesEntry + nil, // 50: livekit.CreateSIPParticipantRequest.ParticipantAttributesEntry + (*durationpb.Duration)(nil), // 51: google.protobuf.Duration + (*ListUpdate)(nil), // 52: livekit.ListUpdate + (DisconnectReason)(0), // 53: livekit.DisconnectReason + (*emptypb.Empty)(nil), // 54: google.protobuf.Empty } var file_livekit_sip_proto_depIdxs = []int32{ 3, // 0: livekit.SIPTrunkInfo.kind:type_name -> livekit.SIPTrunkInfo.TrunkKind 0, // 1: livekit.SIPTrunkInfo.transport:type_name -> livekit.SIPTransport - 7, // 2: livekit.CreateSIPInboundTrunkRequest.trunk:type_name -> livekit.SIPInboundTrunkInfo - 35, // 3: livekit.SIPInboundTrunkInfo.headers:type_name -> livekit.SIPInboundTrunkInfo.HeadersEntry - 36, // 4: livekit.SIPInboundTrunkInfo.headers_to_attributes:type_name -> livekit.SIPInboundTrunkInfo.HeadersToAttributesEntry - 37, // 5: livekit.SIPInboundTrunkInfo.attributes_to_headers:type_name -> livekit.SIPInboundTrunkInfo.AttributesToHeadersEntry - 44, // 6: livekit.SIPInboundTrunkInfo.ringing_timeout:type_name -> google.protobuf.Duration - 44, // 7: livekit.SIPInboundTrunkInfo.max_call_duration:type_name -> google.protobuf.Duration - 9, // 8: livekit.CreateSIPOutboundTrunkRequest.trunk:type_name -> livekit.SIPOutboundTrunkInfo - 0, // 9: livekit.SIPOutboundTrunkInfo.transport:type_name -> livekit.SIPTransport - 38, // 10: livekit.SIPOutboundTrunkInfo.headers:type_name -> livekit.SIPOutboundTrunkInfo.HeadersEntry - 39, // 11: livekit.SIPOutboundTrunkInfo.headers_to_attributes:type_name -> livekit.SIPOutboundTrunkInfo.HeadersToAttributesEntry - 40, // 12: livekit.SIPOutboundTrunkInfo.attributes_to_headers:type_name -> livekit.SIPOutboundTrunkInfo.AttributesToHeadersEntry - 7, // 13: livekit.GetSIPInboundTrunkResponse.trunk:type_name -> livekit.SIPInboundTrunkInfo - 9, // 14: livekit.GetSIPOutboundTrunkResponse.trunk:type_name -> livekit.SIPOutboundTrunkInfo - 5, // 15: livekit.ListSIPTrunkResponse.items:type_name -> livekit.SIPTrunkInfo - 7, // 16: livekit.ListSIPInboundTrunkResponse.items:type_name -> livekit.SIPInboundTrunkInfo - 9, // 17: livekit.ListSIPOutboundTrunkResponse.items:type_name -> livekit.SIPOutboundTrunkInfo - 21, // 18: livekit.SIPDispatchRule.dispatch_rule_direct:type_name -> livekit.SIPDispatchRuleDirect - 22, // 19: livekit.SIPDispatchRule.dispatch_rule_individual:type_name -> livekit.SIPDispatchRuleIndividual - 23, // 20: livekit.SIPDispatchRule.dispatch_rule_callee:type_name -> livekit.SIPDispatchRuleCallee - 24, // 21: livekit.CreateSIPDispatchRuleRequest.rule:type_name -> livekit.SIPDispatchRule - 41, // 22: livekit.CreateSIPDispatchRuleRequest.attributes:type_name -> livekit.CreateSIPDispatchRuleRequest.AttributesEntry - 24, // 23: livekit.SIPDispatchRuleInfo.rule:type_name -> livekit.SIPDispatchRule - 42, // 24: livekit.SIPDispatchRuleInfo.attributes:type_name -> livekit.SIPDispatchRuleInfo.AttributesEntry - 26, // 25: livekit.ListSIPDispatchRuleResponse.items:type_name -> livekit.SIPDispatchRuleInfo - 43, // 26: livekit.CreateSIPParticipantRequest.participant_attributes:type_name -> livekit.CreateSIPParticipantRequest.ParticipantAttributesEntry - 44, // 27: livekit.CreateSIPParticipantRequest.ringing_timeout:type_name -> google.protobuf.Duration - 44, // 28: livekit.CreateSIPParticipantRequest.max_call_duration:type_name -> google.protobuf.Duration - 34, // 29: livekit.SIPCallInfo.from_uri:type_name -> livekit.SIPUri - 34, // 30: livekit.SIPCallInfo.to_uri:type_name -> livekit.SIPUri - 2, // 31: livekit.SIPCallInfo.enabled_features:type_name -> livekit.SIPFeature - 1, // 32: livekit.SIPCallInfo.call_status:type_name -> livekit.SIPCallStatus - 45, // 33: livekit.SIPCallInfo.disconnect_reason:type_name -> livekit.DisconnectReason - 0, // 34: livekit.SIPUri.transport:type_name -> livekit.SIPTransport - 14, // 35: livekit.SIP.ListSIPTrunk:input_type -> livekit.ListSIPTrunkRequest - 6, // 36: livekit.SIP.CreateSIPInboundTrunk:input_type -> livekit.CreateSIPInboundTrunkRequest - 8, // 37: livekit.SIP.CreateSIPOutboundTrunk:input_type -> livekit.CreateSIPOutboundTrunkRequest - 10, // 38: livekit.SIP.GetSIPInboundTrunk:input_type -> livekit.GetSIPInboundTrunkRequest - 12, // 39: livekit.SIP.GetSIPOutboundTrunk:input_type -> livekit.GetSIPOutboundTrunkRequest - 16, // 40: livekit.SIP.ListSIPInboundTrunk:input_type -> livekit.ListSIPInboundTrunkRequest - 18, // 41: livekit.SIP.ListSIPOutboundTrunk:input_type -> livekit.ListSIPOutboundTrunkRequest - 20, // 42: livekit.SIP.DeleteSIPTrunk:input_type -> livekit.DeleteSIPTrunkRequest - 25, // 43: livekit.SIP.CreateSIPDispatchRule:input_type -> livekit.CreateSIPDispatchRuleRequest - 27, // 44: livekit.SIP.ListSIPDispatchRule:input_type -> livekit.ListSIPDispatchRuleRequest - 29, // 45: livekit.SIP.DeleteSIPDispatchRule:input_type -> livekit.DeleteSIPDispatchRuleRequest - 30, // 46: livekit.SIP.CreateSIPParticipant:input_type -> livekit.CreateSIPParticipantRequest - 32, // 47: livekit.SIP.TransferSIPParticipant:input_type -> livekit.TransferSIPParticipantRequest - 15, // 48: livekit.SIP.ListSIPTrunk:output_type -> livekit.ListSIPTrunkResponse - 7, // 49: livekit.SIP.CreateSIPInboundTrunk:output_type -> livekit.SIPInboundTrunkInfo - 9, // 50: livekit.SIP.CreateSIPOutboundTrunk:output_type -> livekit.SIPOutboundTrunkInfo - 11, // 51: livekit.SIP.GetSIPInboundTrunk:output_type -> livekit.GetSIPInboundTrunkResponse - 13, // 52: livekit.SIP.GetSIPOutboundTrunk:output_type -> livekit.GetSIPOutboundTrunkResponse - 17, // 53: livekit.SIP.ListSIPInboundTrunk:output_type -> livekit.ListSIPInboundTrunkResponse - 19, // 54: livekit.SIP.ListSIPOutboundTrunk:output_type -> livekit.ListSIPOutboundTrunkResponse - 5, // 55: livekit.SIP.DeleteSIPTrunk:output_type -> livekit.SIPTrunkInfo - 26, // 56: livekit.SIP.CreateSIPDispatchRule:output_type -> livekit.SIPDispatchRuleInfo - 28, // 57: livekit.SIP.ListSIPDispatchRule:output_type -> livekit.ListSIPDispatchRuleResponse - 26, // 58: livekit.SIP.DeleteSIPDispatchRule:output_type -> livekit.SIPDispatchRuleInfo - 31, // 59: livekit.SIP.CreateSIPParticipant:output_type -> livekit.SIPParticipantInfo - 46, // 60: livekit.SIP.TransferSIPParticipant:output_type -> google.protobuf.Empty - 48, // [48:61] is the sub-list for method output_type - 35, // [35:48] is the sub-list for method input_type - 35, // [35:35] is the sub-list for extension type_name - 35, // [35:35] is the sub-list for extension extendee - 0, // [0:35] is the sub-list for field type_name + 8, // 2: livekit.CreateSIPInboundTrunkRequest.trunk:type_name -> livekit.SIPInboundTrunkInfo + 8, // 3: livekit.UpdateSIPInboundTrunkRequest.replace:type_name -> livekit.SIPInboundTrunkInfo + 9, // 4: livekit.UpdateSIPInboundTrunkRequest.update:type_name -> livekit.SIPInboundTrunkUpdate + 41, // 5: livekit.SIPInboundTrunkInfo.headers:type_name -> livekit.SIPInboundTrunkInfo.HeadersEntry + 42, // 6: livekit.SIPInboundTrunkInfo.headers_to_attributes:type_name -> livekit.SIPInboundTrunkInfo.HeadersToAttributesEntry + 43, // 7: livekit.SIPInboundTrunkInfo.attributes_to_headers:type_name -> livekit.SIPInboundTrunkInfo.AttributesToHeadersEntry + 51, // 8: livekit.SIPInboundTrunkInfo.ringing_timeout:type_name -> google.protobuf.Duration + 51, // 9: livekit.SIPInboundTrunkInfo.max_call_duration:type_name -> google.protobuf.Duration + 52, // 10: livekit.SIPInboundTrunkUpdate.numbers:type_name -> livekit.ListUpdate + 52, // 11: livekit.SIPInboundTrunkUpdate.allowed_addresses:type_name -> livekit.ListUpdate + 52, // 12: livekit.SIPInboundTrunkUpdate.allowed_numbers:type_name -> livekit.ListUpdate + 12, // 13: livekit.CreateSIPOutboundTrunkRequest.trunk:type_name -> livekit.SIPOutboundTrunkInfo + 12, // 14: livekit.UpdateSIPOutboundTrunkRequest.replace:type_name -> livekit.SIPOutboundTrunkInfo + 13, // 15: livekit.UpdateSIPOutboundTrunkRequest.update:type_name -> livekit.SIPOutboundTrunkUpdate + 0, // 16: livekit.SIPOutboundTrunkInfo.transport:type_name -> livekit.SIPTransport + 44, // 17: livekit.SIPOutboundTrunkInfo.headers:type_name -> livekit.SIPOutboundTrunkInfo.HeadersEntry + 45, // 18: livekit.SIPOutboundTrunkInfo.headers_to_attributes:type_name -> livekit.SIPOutboundTrunkInfo.HeadersToAttributesEntry + 46, // 19: livekit.SIPOutboundTrunkInfo.attributes_to_headers:type_name -> livekit.SIPOutboundTrunkInfo.AttributesToHeadersEntry + 0, // 20: livekit.SIPOutboundTrunkUpdate.transport:type_name -> livekit.SIPTransport + 52, // 21: livekit.SIPOutboundTrunkUpdate.numbers:type_name -> livekit.ListUpdate + 8, // 22: livekit.GetSIPInboundTrunkResponse.trunk:type_name -> livekit.SIPInboundTrunkInfo + 12, // 23: livekit.GetSIPOutboundTrunkResponse.trunk:type_name -> livekit.SIPOutboundTrunkInfo + 5, // 24: livekit.ListSIPTrunkResponse.items:type_name -> livekit.SIPTrunkInfo + 8, // 25: livekit.ListSIPInboundTrunkResponse.items:type_name -> livekit.SIPInboundTrunkInfo + 12, // 26: livekit.ListSIPOutboundTrunkResponse.items:type_name -> livekit.SIPOutboundTrunkInfo + 25, // 27: livekit.SIPDispatchRule.dispatch_rule_direct:type_name -> livekit.SIPDispatchRuleDirect + 26, // 28: livekit.SIPDispatchRule.dispatch_rule_individual:type_name -> livekit.SIPDispatchRuleIndividual + 27, // 29: livekit.SIPDispatchRule.dispatch_rule_callee:type_name -> livekit.SIPDispatchRuleCallee + 31, // 30: livekit.CreateSIPDispatchRuleRequest.dispatch_rule:type_name -> livekit.SIPDispatchRuleInfo + 28, // 31: livekit.CreateSIPDispatchRuleRequest.rule:type_name -> livekit.SIPDispatchRule + 47, // 32: livekit.CreateSIPDispatchRuleRequest.attributes:type_name -> livekit.CreateSIPDispatchRuleRequest.AttributesEntry + 31, // 33: livekit.UpdateSIPDispatchRuleRequest.replace:type_name -> livekit.SIPDispatchRuleInfo + 32, // 34: livekit.UpdateSIPDispatchRuleRequest.update:type_name -> livekit.SIPDispatchRuleUpdate + 28, // 35: livekit.SIPDispatchRuleInfo.rule:type_name -> livekit.SIPDispatchRule + 48, // 36: livekit.SIPDispatchRuleInfo.attributes:type_name -> livekit.SIPDispatchRuleInfo.AttributesEntry + 52, // 37: livekit.SIPDispatchRuleUpdate.trunk_ids:type_name -> livekit.ListUpdate + 28, // 38: livekit.SIPDispatchRuleUpdate.rule:type_name -> livekit.SIPDispatchRule + 49, // 39: livekit.SIPDispatchRuleUpdate.attributes:type_name -> livekit.SIPDispatchRuleUpdate.AttributesEntry + 31, // 40: livekit.ListSIPDispatchRuleResponse.items:type_name -> livekit.SIPDispatchRuleInfo + 50, // 41: livekit.CreateSIPParticipantRequest.participant_attributes:type_name -> livekit.CreateSIPParticipantRequest.ParticipantAttributesEntry + 51, // 42: livekit.CreateSIPParticipantRequest.ringing_timeout:type_name -> google.protobuf.Duration + 51, // 43: livekit.CreateSIPParticipantRequest.max_call_duration:type_name -> google.protobuf.Duration + 40, // 44: livekit.SIPCallInfo.from_uri:type_name -> livekit.SIPUri + 40, // 45: livekit.SIPCallInfo.to_uri:type_name -> livekit.SIPUri + 2, // 46: livekit.SIPCallInfo.enabled_features:type_name -> livekit.SIPFeature + 1, // 47: livekit.SIPCallInfo.call_status:type_name -> livekit.SIPCallStatus + 53, // 48: livekit.SIPCallInfo.disconnect_reason:type_name -> livekit.DisconnectReason + 0, // 49: livekit.SIPUri.transport:type_name -> livekit.SIPTransport + 18, // 50: livekit.SIP.ListSIPTrunk:input_type -> livekit.ListSIPTrunkRequest + 6, // 51: livekit.SIP.CreateSIPInboundTrunk:input_type -> livekit.CreateSIPInboundTrunkRequest + 10, // 52: livekit.SIP.CreateSIPOutboundTrunk:input_type -> livekit.CreateSIPOutboundTrunkRequest + 7, // 53: livekit.SIP.UpdateSIPInboundTrunk:input_type -> livekit.UpdateSIPInboundTrunkRequest + 11, // 54: livekit.SIP.UpdateSIPOutboundTrunk:input_type -> livekit.UpdateSIPOutboundTrunkRequest + 14, // 55: livekit.SIP.GetSIPInboundTrunk:input_type -> livekit.GetSIPInboundTrunkRequest + 16, // 56: livekit.SIP.GetSIPOutboundTrunk:input_type -> livekit.GetSIPOutboundTrunkRequest + 20, // 57: livekit.SIP.ListSIPInboundTrunk:input_type -> livekit.ListSIPInboundTrunkRequest + 22, // 58: livekit.SIP.ListSIPOutboundTrunk:input_type -> livekit.ListSIPOutboundTrunkRequest + 24, // 59: livekit.SIP.DeleteSIPTrunk:input_type -> livekit.DeleteSIPTrunkRequest + 29, // 60: livekit.SIP.CreateSIPDispatchRule:input_type -> livekit.CreateSIPDispatchRuleRequest + 30, // 61: livekit.SIP.UpdateSIPDispatchRule:input_type -> livekit.UpdateSIPDispatchRuleRequest + 33, // 62: livekit.SIP.ListSIPDispatchRule:input_type -> livekit.ListSIPDispatchRuleRequest + 35, // 63: livekit.SIP.DeleteSIPDispatchRule:input_type -> livekit.DeleteSIPDispatchRuleRequest + 36, // 64: livekit.SIP.CreateSIPParticipant:input_type -> livekit.CreateSIPParticipantRequest + 38, // 65: livekit.SIP.TransferSIPParticipant:input_type -> livekit.TransferSIPParticipantRequest + 19, // 66: livekit.SIP.ListSIPTrunk:output_type -> livekit.ListSIPTrunkResponse + 8, // 67: livekit.SIP.CreateSIPInboundTrunk:output_type -> livekit.SIPInboundTrunkInfo + 12, // 68: livekit.SIP.CreateSIPOutboundTrunk:output_type -> livekit.SIPOutboundTrunkInfo + 8, // 69: livekit.SIP.UpdateSIPInboundTrunk:output_type -> livekit.SIPInboundTrunkInfo + 12, // 70: livekit.SIP.UpdateSIPOutboundTrunk:output_type -> livekit.SIPOutboundTrunkInfo + 15, // 71: livekit.SIP.GetSIPInboundTrunk:output_type -> livekit.GetSIPInboundTrunkResponse + 17, // 72: livekit.SIP.GetSIPOutboundTrunk:output_type -> livekit.GetSIPOutboundTrunkResponse + 21, // 73: livekit.SIP.ListSIPInboundTrunk:output_type -> livekit.ListSIPInboundTrunkResponse + 23, // 74: livekit.SIP.ListSIPOutboundTrunk:output_type -> livekit.ListSIPOutboundTrunkResponse + 5, // 75: livekit.SIP.DeleteSIPTrunk:output_type -> livekit.SIPTrunkInfo + 31, // 76: livekit.SIP.CreateSIPDispatchRule:output_type -> livekit.SIPDispatchRuleInfo + 31, // 77: livekit.SIP.UpdateSIPDispatchRule:output_type -> livekit.SIPDispatchRuleInfo + 34, // 78: livekit.SIP.ListSIPDispatchRule:output_type -> livekit.ListSIPDispatchRuleResponse + 31, // 79: livekit.SIP.DeleteSIPDispatchRule:output_type -> livekit.SIPDispatchRuleInfo + 37, // 80: livekit.SIP.CreateSIPParticipant:output_type -> livekit.SIPParticipantInfo + 54, // 81: livekit.SIP.TransferSIPParticipant:output_type -> google.protobuf.Empty + 66, // [66:82] is the sub-list for method output_type + 50, // [50:66] is the sub-list for method input_type + 50, // [50:50] is the sub-list for extension type_name + 50, // [50:50] is the sub-list for extension extendee + 0, // [0:50] is the sub-list for field type_name } func init() { file_livekit_sip_proto_init() } @@ -3253,18 +3966,33 @@ func file_livekit_sip_proto_init() { return } file_livekit_models_proto_init() - file_livekit_sip_proto_msgTypes[20].OneofWrappers = []any{ + file_livekit_sip_proto_msgTypes[3].OneofWrappers = []any{ + (*UpdateSIPInboundTrunkRequest_Replace)(nil), + (*UpdateSIPInboundTrunkRequest_Update)(nil), + } + file_livekit_sip_proto_msgTypes[5].OneofWrappers = []any{} + file_livekit_sip_proto_msgTypes[7].OneofWrappers = []any{ + (*UpdateSIPOutboundTrunkRequest_Replace)(nil), + (*UpdateSIPOutboundTrunkRequest_Update)(nil), + } + file_livekit_sip_proto_msgTypes[9].OneofWrappers = []any{} + file_livekit_sip_proto_msgTypes[24].OneofWrappers = []any{ (*SIPDispatchRule_DispatchRuleDirect)(nil), (*SIPDispatchRule_DispatchRuleIndividual)(nil), (*SIPDispatchRule_DispatchRuleCallee)(nil), } + file_livekit_sip_proto_msgTypes[26].OneofWrappers = []any{ + (*UpdateSIPDispatchRuleRequest_Replace)(nil), + (*UpdateSIPDispatchRuleRequest_Update)(nil), + } + file_livekit_sip_proto_msgTypes[28].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_livekit_sip_proto_rawDesc, NumEnums: 4, - NumMessages: 40, + NumMessages: 47, NumExtensions: 0, NumServices: 1, }, diff --git a/livekit/livekit_sip.twirp.go b/livekit/livekit_sip.twirp.go index 97c78235..1f021f32 100644 --- a/livekit/livekit_sip.twirp.go +++ b/livekit/livekit_sip.twirp.go @@ -36,6 +36,10 @@ type SIP interface { CreateSIPOutboundTrunk(context.Context, *CreateSIPOutboundTrunkRequest) (*SIPOutboundTrunkInfo, error) + UpdateSIPInboundTrunk(context.Context, *UpdateSIPInboundTrunkRequest) (*SIPInboundTrunkInfo, error) + + UpdateSIPOutboundTrunk(context.Context, *UpdateSIPOutboundTrunkRequest) (*SIPOutboundTrunkInfo, error) + GetSIPInboundTrunk(context.Context, *GetSIPInboundTrunkRequest) (*GetSIPInboundTrunkResponse, error) GetSIPOutboundTrunk(context.Context, *GetSIPOutboundTrunkRequest) (*GetSIPOutboundTrunkResponse, error) @@ -48,6 +52,8 @@ type SIP interface { CreateSIPDispatchRule(context.Context, *CreateSIPDispatchRuleRequest) (*SIPDispatchRuleInfo, error) + UpdateSIPDispatchRule(context.Context, *UpdateSIPDispatchRuleRequest) (*SIPDispatchRuleInfo, error) + ListSIPDispatchRule(context.Context, *ListSIPDispatchRuleRequest) (*ListSIPDispatchRuleResponse, error) DeleteSIPDispatchRule(context.Context, *DeleteSIPDispatchRuleRequest) (*SIPDispatchRuleInfo, error) @@ -63,7 +69,7 @@ type SIP interface { type sIPProtobufClient struct { client HTTPClient - urls [13]string + urls [16]string interceptor twirp.Interceptor opts twirp.ClientOptions } @@ -91,16 +97,19 @@ func NewSIPProtobufClient(baseURL string, client HTTPClient, opts ...twirp.Clien // Build method URLs: []/./ serviceURL := sanitizeBaseURL(baseURL) serviceURL += baseServicePath(pathPrefix, "livekit", "SIP") - urls := [13]string{ + urls := [16]string{ serviceURL + "ListSIPTrunk", serviceURL + "CreateSIPInboundTrunk", serviceURL + "CreateSIPOutboundTrunk", + serviceURL + "UpdateSIPInboundTrunk", + serviceURL + "UpdateSIPOutboundTrunk", serviceURL + "GetSIPInboundTrunk", serviceURL + "GetSIPOutboundTrunk", serviceURL + "ListSIPInboundTrunk", serviceURL + "ListSIPOutboundTrunk", serviceURL + "DeleteSIPTrunk", serviceURL + "CreateSIPDispatchRule", + serviceURL + "UpdateSIPDispatchRule", serviceURL + "ListSIPDispatchRule", serviceURL + "DeleteSIPDispatchRule", serviceURL + "CreateSIPParticipant", @@ -253,6 +262,98 @@ func (c *sIPProtobufClient) callCreateSIPOutboundTrunk(ctx context.Context, in * return out, nil } +func (c *sIPProtobufClient) UpdateSIPInboundTrunk(ctx context.Context, in *UpdateSIPInboundTrunkRequest) (*SIPInboundTrunkInfo, error) { + ctx = ctxsetters.WithPackageName(ctx, "livekit") + ctx = ctxsetters.WithServiceName(ctx, "SIP") + ctx = ctxsetters.WithMethodName(ctx, "UpdateSIPInboundTrunk") + caller := c.callUpdateSIPInboundTrunk + if c.interceptor != nil { + caller = func(ctx context.Context, req *UpdateSIPInboundTrunkRequest) (*SIPInboundTrunkInfo, error) { + resp, err := c.interceptor( + func(ctx context.Context, req interface{}) (interface{}, error) { + typedReq, ok := req.(*UpdateSIPInboundTrunkRequest) + if !ok { + return nil, twirp.InternalError("failed type assertion req.(*UpdateSIPInboundTrunkRequest) when calling interceptor") + } + return c.callUpdateSIPInboundTrunk(ctx, typedReq) + }, + )(ctx, req) + if resp != nil { + typedResp, ok := resp.(*SIPInboundTrunkInfo) + if !ok { + return nil, twirp.InternalError("failed type assertion resp.(*SIPInboundTrunkInfo) when calling interceptor") + } + return typedResp, err + } + return nil, err + } + } + return caller(ctx, in) +} + +func (c *sIPProtobufClient) callUpdateSIPInboundTrunk(ctx context.Context, in *UpdateSIPInboundTrunkRequest) (*SIPInboundTrunkInfo, error) { + out := new(SIPInboundTrunkInfo) + ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[3], in, out) + if err != nil { + twerr, ok := err.(twirp.Error) + if !ok { + twerr = twirp.InternalErrorWith(err) + } + callClientError(ctx, c.opts.Hooks, twerr) + return nil, err + } + + callClientResponseReceived(ctx, c.opts.Hooks) + + return out, nil +} + +func (c *sIPProtobufClient) UpdateSIPOutboundTrunk(ctx context.Context, in *UpdateSIPOutboundTrunkRequest) (*SIPOutboundTrunkInfo, error) { + ctx = ctxsetters.WithPackageName(ctx, "livekit") + ctx = ctxsetters.WithServiceName(ctx, "SIP") + ctx = ctxsetters.WithMethodName(ctx, "UpdateSIPOutboundTrunk") + caller := c.callUpdateSIPOutboundTrunk + if c.interceptor != nil { + caller = func(ctx context.Context, req *UpdateSIPOutboundTrunkRequest) (*SIPOutboundTrunkInfo, error) { + resp, err := c.interceptor( + func(ctx context.Context, req interface{}) (interface{}, error) { + typedReq, ok := req.(*UpdateSIPOutboundTrunkRequest) + if !ok { + return nil, twirp.InternalError("failed type assertion req.(*UpdateSIPOutboundTrunkRequest) when calling interceptor") + } + return c.callUpdateSIPOutboundTrunk(ctx, typedReq) + }, + )(ctx, req) + if resp != nil { + typedResp, ok := resp.(*SIPOutboundTrunkInfo) + if !ok { + return nil, twirp.InternalError("failed type assertion resp.(*SIPOutboundTrunkInfo) when calling interceptor") + } + return typedResp, err + } + return nil, err + } + } + return caller(ctx, in) +} + +func (c *sIPProtobufClient) callUpdateSIPOutboundTrunk(ctx context.Context, in *UpdateSIPOutboundTrunkRequest) (*SIPOutboundTrunkInfo, error) { + out := new(SIPOutboundTrunkInfo) + ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[4], in, out) + if err != nil { + twerr, ok := err.(twirp.Error) + if !ok { + twerr = twirp.InternalErrorWith(err) + } + callClientError(ctx, c.opts.Hooks, twerr) + return nil, err + } + + callClientResponseReceived(ctx, c.opts.Hooks) + + return out, nil +} + func (c *sIPProtobufClient) GetSIPInboundTrunk(ctx context.Context, in *GetSIPInboundTrunkRequest) (*GetSIPInboundTrunkResponse, error) { ctx = ctxsetters.WithPackageName(ctx, "livekit") ctx = ctxsetters.WithServiceName(ctx, "SIP") @@ -284,7 +385,7 @@ func (c *sIPProtobufClient) GetSIPInboundTrunk(ctx context.Context, in *GetSIPIn func (c *sIPProtobufClient) callGetSIPInboundTrunk(ctx context.Context, in *GetSIPInboundTrunkRequest) (*GetSIPInboundTrunkResponse, error) { out := new(GetSIPInboundTrunkResponse) - ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[3], in, out) + ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[5], in, out) if err != nil { twerr, ok := err.(twirp.Error) if !ok { @@ -330,7 +431,7 @@ func (c *sIPProtobufClient) GetSIPOutboundTrunk(ctx context.Context, in *GetSIPO func (c *sIPProtobufClient) callGetSIPOutboundTrunk(ctx context.Context, in *GetSIPOutboundTrunkRequest) (*GetSIPOutboundTrunkResponse, error) { out := new(GetSIPOutboundTrunkResponse) - ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[4], in, out) + ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[6], in, out) if err != nil { twerr, ok := err.(twirp.Error) if !ok { @@ -376,7 +477,7 @@ func (c *sIPProtobufClient) ListSIPInboundTrunk(ctx context.Context, in *ListSIP func (c *sIPProtobufClient) callListSIPInboundTrunk(ctx context.Context, in *ListSIPInboundTrunkRequest) (*ListSIPInboundTrunkResponse, error) { out := new(ListSIPInboundTrunkResponse) - ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[5], in, out) + ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[7], in, out) if err != nil { twerr, ok := err.(twirp.Error) if !ok { @@ -422,7 +523,7 @@ func (c *sIPProtobufClient) ListSIPOutboundTrunk(ctx context.Context, in *ListSI func (c *sIPProtobufClient) callListSIPOutboundTrunk(ctx context.Context, in *ListSIPOutboundTrunkRequest) (*ListSIPOutboundTrunkResponse, error) { out := new(ListSIPOutboundTrunkResponse) - ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[6], in, out) + ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[8], in, out) if err != nil { twerr, ok := err.(twirp.Error) if !ok { @@ -468,7 +569,7 @@ func (c *sIPProtobufClient) DeleteSIPTrunk(ctx context.Context, in *DeleteSIPTru func (c *sIPProtobufClient) callDeleteSIPTrunk(ctx context.Context, in *DeleteSIPTrunkRequest) (*SIPTrunkInfo, error) { out := new(SIPTrunkInfo) - ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[7], in, out) + ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[9], in, out) if err != nil { twerr, ok := err.(twirp.Error) if !ok { @@ -514,7 +615,53 @@ func (c *sIPProtobufClient) CreateSIPDispatchRule(ctx context.Context, in *Creat func (c *sIPProtobufClient) callCreateSIPDispatchRule(ctx context.Context, in *CreateSIPDispatchRuleRequest) (*SIPDispatchRuleInfo, error) { out := new(SIPDispatchRuleInfo) - ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[8], in, out) + ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[10], in, out) + if err != nil { + twerr, ok := err.(twirp.Error) + if !ok { + twerr = twirp.InternalErrorWith(err) + } + callClientError(ctx, c.opts.Hooks, twerr) + return nil, err + } + + callClientResponseReceived(ctx, c.opts.Hooks) + + return out, nil +} + +func (c *sIPProtobufClient) UpdateSIPDispatchRule(ctx context.Context, in *UpdateSIPDispatchRuleRequest) (*SIPDispatchRuleInfo, error) { + ctx = ctxsetters.WithPackageName(ctx, "livekit") + ctx = ctxsetters.WithServiceName(ctx, "SIP") + ctx = ctxsetters.WithMethodName(ctx, "UpdateSIPDispatchRule") + caller := c.callUpdateSIPDispatchRule + if c.interceptor != nil { + caller = func(ctx context.Context, req *UpdateSIPDispatchRuleRequest) (*SIPDispatchRuleInfo, error) { + resp, err := c.interceptor( + func(ctx context.Context, req interface{}) (interface{}, error) { + typedReq, ok := req.(*UpdateSIPDispatchRuleRequest) + if !ok { + return nil, twirp.InternalError("failed type assertion req.(*UpdateSIPDispatchRuleRequest) when calling interceptor") + } + return c.callUpdateSIPDispatchRule(ctx, typedReq) + }, + )(ctx, req) + if resp != nil { + typedResp, ok := resp.(*SIPDispatchRuleInfo) + if !ok { + return nil, twirp.InternalError("failed type assertion resp.(*SIPDispatchRuleInfo) when calling interceptor") + } + return typedResp, err + } + return nil, err + } + } + return caller(ctx, in) +} + +func (c *sIPProtobufClient) callUpdateSIPDispatchRule(ctx context.Context, in *UpdateSIPDispatchRuleRequest) (*SIPDispatchRuleInfo, error) { + out := new(SIPDispatchRuleInfo) + ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[11], in, out) if err != nil { twerr, ok := err.(twirp.Error) if !ok { @@ -560,7 +707,7 @@ func (c *sIPProtobufClient) ListSIPDispatchRule(ctx context.Context, in *ListSIP func (c *sIPProtobufClient) callListSIPDispatchRule(ctx context.Context, in *ListSIPDispatchRuleRequest) (*ListSIPDispatchRuleResponse, error) { out := new(ListSIPDispatchRuleResponse) - ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[9], in, out) + ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[12], in, out) if err != nil { twerr, ok := err.(twirp.Error) if !ok { @@ -606,7 +753,7 @@ func (c *sIPProtobufClient) DeleteSIPDispatchRule(ctx context.Context, in *Delet func (c *sIPProtobufClient) callDeleteSIPDispatchRule(ctx context.Context, in *DeleteSIPDispatchRuleRequest) (*SIPDispatchRuleInfo, error) { out := new(SIPDispatchRuleInfo) - ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[10], in, out) + ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[13], in, out) if err != nil { twerr, ok := err.(twirp.Error) if !ok { @@ -652,7 +799,7 @@ func (c *sIPProtobufClient) CreateSIPParticipant(ctx context.Context, in *Create func (c *sIPProtobufClient) callCreateSIPParticipant(ctx context.Context, in *CreateSIPParticipantRequest) (*SIPParticipantInfo, error) { out := new(SIPParticipantInfo) - ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[11], in, out) + ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[14], in, out) if err != nil { twerr, ok := err.(twirp.Error) if !ok { @@ -698,7 +845,7 @@ func (c *sIPProtobufClient) TransferSIPParticipant(ctx context.Context, in *Tran func (c *sIPProtobufClient) callTransferSIPParticipant(ctx context.Context, in *TransferSIPParticipantRequest) (*google_protobuf2.Empty, error) { out := new(google_protobuf2.Empty) - ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[12], in, out) + ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[15], in, out) if err != nil { twerr, ok := err.(twirp.Error) if !ok { @@ -719,7 +866,7 @@ func (c *sIPProtobufClient) callTransferSIPParticipant(ctx context.Context, in * type sIPJSONClient struct { client HTTPClient - urls [13]string + urls [16]string interceptor twirp.Interceptor opts twirp.ClientOptions } @@ -747,16 +894,19 @@ func NewSIPJSONClient(baseURL string, client HTTPClient, opts ...twirp.ClientOpt // Build method URLs: []/./ serviceURL := sanitizeBaseURL(baseURL) serviceURL += baseServicePath(pathPrefix, "livekit", "SIP") - urls := [13]string{ + urls := [16]string{ serviceURL + "ListSIPTrunk", serviceURL + "CreateSIPInboundTrunk", serviceURL + "CreateSIPOutboundTrunk", + serviceURL + "UpdateSIPInboundTrunk", + serviceURL + "UpdateSIPOutboundTrunk", serviceURL + "GetSIPInboundTrunk", serviceURL + "GetSIPOutboundTrunk", serviceURL + "ListSIPInboundTrunk", serviceURL + "ListSIPOutboundTrunk", serviceURL + "DeleteSIPTrunk", serviceURL + "CreateSIPDispatchRule", + serviceURL + "UpdateSIPDispatchRule", serviceURL + "ListSIPDispatchRule", serviceURL + "DeleteSIPDispatchRule", serviceURL + "CreateSIPParticipant", @@ -909,6 +1059,98 @@ func (c *sIPJSONClient) callCreateSIPOutboundTrunk(ctx context.Context, in *Crea return out, nil } +func (c *sIPJSONClient) UpdateSIPInboundTrunk(ctx context.Context, in *UpdateSIPInboundTrunkRequest) (*SIPInboundTrunkInfo, error) { + ctx = ctxsetters.WithPackageName(ctx, "livekit") + ctx = ctxsetters.WithServiceName(ctx, "SIP") + ctx = ctxsetters.WithMethodName(ctx, "UpdateSIPInboundTrunk") + caller := c.callUpdateSIPInboundTrunk + if c.interceptor != nil { + caller = func(ctx context.Context, req *UpdateSIPInboundTrunkRequest) (*SIPInboundTrunkInfo, error) { + resp, err := c.interceptor( + func(ctx context.Context, req interface{}) (interface{}, error) { + typedReq, ok := req.(*UpdateSIPInboundTrunkRequest) + if !ok { + return nil, twirp.InternalError("failed type assertion req.(*UpdateSIPInboundTrunkRequest) when calling interceptor") + } + return c.callUpdateSIPInboundTrunk(ctx, typedReq) + }, + )(ctx, req) + if resp != nil { + typedResp, ok := resp.(*SIPInboundTrunkInfo) + if !ok { + return nil, twirp.InternalError("failed type assertion resp.(*SIPInboundTrunkInfo) when calling interceptor") + } + return typedResp, err + } + return nil, err + } + } + return caller(ctx, in) +} + +func (c *sIPJSONClient) callUpdateSIPInboundTrunk(ctx context.Context, in *UpdateSIPInboundTrunkRequest) (*SIPInboundTrunkInfo, error) { + out := new(SIPInboundTrunkInfo) + ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[3], in, out) + if err != nil { + twerr, ok := err.(twirp.Error) + if !ok { + twerr = twirp.InternalErrorWith(err) + } + callClientError(ctx, c.opts.Hooks, twerr) + return nil, err + } + + callClientResponseReceived(ctx, c.opts.Hooks) + + return out, nil +} + +func (c *sIPJSONClient) UpdateSIPOutboundTrunk(ctx context.Context, in *UpdateSIPOutboundTrunkRequest) (*SIPOutboundTrunkInfo, error) { + ctx = ctxsetters.WithPackageName(ctx, "livekit") + ctx = ctxsetters.WithServiceName(ctx, "SIP") + ctx = ctxsetters.WithMethodName(ctx, "UpdateSIPOutboundTrunk") + caller := c.callUpdateSIPOutboundTrunk + if c.interceptor != nil { + caller = func(ctx context.Context, req *UpdateSIPOutboundTrunkRequest) (*SIPOutboundTrunkInfo, error) { + resp, err := c.interceptor( + func(ctx context.Context, req interface{}) (interface{}, error) { + typedReq, ok := req.(*UpdateSIPOutboundTrunkRequest) + if !ok { + return nil, twirp.InternalError("failed type assertion req.(*UpdateSIPOutboundTrunkRequest) when calling interceptor") + } + return c.callUpdateSIPOutboundTrunk(ctx, typedReq) + }, + )(ctx, req) + if resp != nil { + typedResp, ok := resp.(*SIPOutboundTrunkInfo) + if !ok { + return nil, twirp.InternalError("failed type assertion resp.(*SIPOutboundTrunkInfo) when calling interceptor") + } + return typedResp, err + } + return nil, err + } + } + return caller(ctx, in) +} + +func (c *sIPJSONClient) callUpdateSIPOutboundTrunk(ctx context.Context, in *UpdateSIPOutboundTrunkRequest) (*SIPOutboundTrunkInfo, error) { + out := new(SIPOutboundTrunkInfo) + ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[4], in, out) + if err != nil { + twerr, ok := err.(twirp.Error) + if !ok { + twerr = twirp.InternalErrorWith(err) + } + callClientError(ctx, c.opts.Hooks, twerr) + return nil, err + } + + callClientResponseReceived(ctx, c.opts.Hooks) + + return out, nil +} + func (c *sIPJSONClient) GetSIPInboundTrunk(ctx context.Context, in *GetSIPInboundTrunkRequest) (*GetSIPInboundTrunkResponse, error) { ctx = ctxsetters.WithPackageName(ctx, "livekit") ctx = ctxsetters.WithServiceName(ctx, "SIP") @@ -940,7 +1182,7 @@ func (c *sIPJSONClient) GetSIPInboundTrunk(ctx context.Context, in *GetSIPInboun func (c *sIPJSONClient) callGetSIPInboundTrunk(ctx context.Context, in *GetSIPInboundTrunkRequest) (*GetSIPInboundTrunkResponse, error) { out := new(GetSIPInboundTrunkResponse) - ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[3], in, out) + ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[5], in, out) if err != nil { twerr, ok := err.(twirp.Error) if !ok { @@ -986,7 +1228,7 @@ func (c *sIPJSONClient) GetSIPOutboundTrunk(ctx context.Context, in *GetSIPOutbo func (c *sIPJSONClient) callGetSIPOutboundTrunk(ctx context.Context, in *GetSIPOutboundTrunkRequest) (*GetSIPOutboundTrunkResponse, error) { out := new(GetSIPOutboundTrunkResponse) - ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[4], in, out) + ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[6], in, out) if err != nil { twerr, ok := err.(twirp.Error) if !ok { @@ -1032,7 +1274,7 @@ func (c *sIPJSONClient) ListSIPInboundTrunk(ctx context.Context, in *ListSIPInbo func (c *sIPJSONClient) callListSIPInboundTrunk(ctx context.Context, in *ListSIPInboundTrunkRequest) (*ListSIPInboundTrunkResponse, error) { out := new(ListSIPInboundTrunkResponse) - ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[5], in, out) + ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[7], in, out) if err != nil { twerr, ok := err.(twirp.Error) if !ok { @@ -1078,7 +1320,7 @@ func (c *sIPJSONClient) ListSIPOutboundTrunk(ctx context.Context, in *ListSIPOut func (c *sIPJSONClient) callListSIPOutboundTrunk(ctx context.Context, in *ListSIPOutboundTrunkRequest) (*ListSIPOutboundTrunkResponse, error) { out := new(ListSIPOutboundTrunkResponse) - ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[6], in, out) + ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[8], in, out) if err != nil { twerr, ok := err.(twirp.Error) if !ok { @@ -1124,7 +1366,7 @@ func (c *sIPJSONClient) DeleteSIPTrunk(ctx context.Context, in *DeleteSIPTrunkRe func (c *sIPJSONClient) callDeleteSIPTrunk(ctx context.Context, in *DeleteSIPTrunkRequest) (*SIPTrunkInfo, error) { out := new(SIPTrunkInfo) - ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[7], in, out) + ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[9], in, out) if err != nil { twerr, ok := err.(twirp.Error) if !ok { @@ -1170,7 +1412,7 @@ func (c *sIPJSONClient) CreateSIPDispatchRule(ctx context.Context, in *CreateSIP func (c *sIPJSONClient) callCreateSIPDispatchRule(ctx context.Context, in *CreateSIPDispatchRuleRequest) (*SIPDispatchRuleInfo, error) { out := new(SIPDispatchRuleInfo) - ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[8], in, out) + ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[10], in, out) if err != nil { twerr, ok := err.(twirp.Error) if !ok { @@ -1185,26 +1427,26 @@ func (c *sIPJSONClient) callCreateSIPDispatchRule(ctx context.Context, in *Creat return out, nil } -func (c *sIPJSONClient) ListSIPDispatchRule(ctx context.Context, in *ListSIPDispatchRuleRequest) (*ListSIPDispatchRuleResponse, error) { +func (c *sIPJSONClient) UpdateSIPDispatchRule(ctx context.Context, in *UpdateSIPDispatchRuleRequest) (*SIPDispatchRuleInfo, error) { ctx = ctxsetters.WithPackageName(ctx, "livekit") ctx = ctxsetters.WithServiceName(ctx, "SIP") - ctx = ctxsetters.WithMethodName(ctx, "ListSIPDispatchRule") - caller := c.callListSIPDispatchRule + ctx = ctxsetters.WithMethodName(ctx, "UpdateSIPDispatchRule") + caller := c.callUpdateSIPDispatchRule if c.interceptor != nil { - caller = func(ctx context.Context, req *ListSIPDispatchRuleRequest) (*ListSIPDispatchRuleResponse, error) { + caller = func(ctx context.Context, req *UpdateSIPDispatchRuleRequest) (*SIPDispatchRuleInfo, error) { resp, err := c.interceptor( func(ctx context.Context, req interface{}) (interface{}, error) { - typedReq, ok := req.(*ListSIPDispatchRuleRequest) + typedReq, ok := req.(*UpdateSIPDispatchRuleRequest) if !ok { - return nil, twirp.InternalError("failed type assertion req.(*ListSIPDispatchRuleRequest) when calling interceptor") + return nil, twirp.InternalError("failed type assertion req.(*UpdateSIPDispatchRuleRequest) when calling interceptor") } - return c.callListSIPDispatchRule(ctx, typedReq) + return c.callUpdateSIPDispatchRule(ctx, typedReq) }, )(ctx, req) if resp != nil { - typedResp, ok := resp.(*ListSIPDispatchRuleResponse) + typedResp, ok := resp.(*SIPDispatchRuleInfo) if !ok { - return nil, twirp.InternalError("failed type assertion resp.(*ListSIPDispatchRuleResponse) when calling interceptor") + return nil, twirp.InternalError("failed type assertion resp.(*SIPDispatchRuleInfo) when calling interceptor") } return typedResp, err } @@ -1214,9 +1456,9 @@ func (c *sIPJSONClient) ListSIPDispatchRule(ctx context.Context, in *ListSIPDisp return caller(ctx, in) } -func (c *sIPJSONClient) callListSIPDispatchRule(ctx context.Context, in *ListSIPDispatchRuleRequest) (*ListSIPDispatchRuleResponse, error) { - out := new(ListSIPDispatchRuleResponse) - ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[9], in, out) +func (c *sIPJSONClient) callUpdateSIPDispatchRule(ctx context.Context, in *UpdateSIPDispatchRuleRequest) (*SIPDispatchRuleInfo, error) { + out := new(SIPDispatchRuleInfo) + ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[11], in, out) if err != nil { twerr, ok := err.(twirp.Error) if !ok { @@ -1231,26 +1473,72 @@ func (c *sIPJSONClient) callListSIPDispatchRule(ctx context.Context, in *ListSIP return out, nil } -func (c *sIPJSONClient) DeleteSIPDispatchRule(ctx context.Context, in *DeleteSIPDispatchRuleRequest) (*SIPDispatchRuleInfo, error) { +func (c *sIPJSONClient) ListSIPDispatchRule(ctx context.Context, in *ListSIPDispatchRuleRequest) (*ListSIPDispatchRuleResponse, error) { ctx = ctxsetters.WithPackageName(ctx, "livekit") ctx = ctxsetters.WithServiceName(ctx, "SIP") - ctx = ctxsetters.WithMethodName(ctx, "DeleteSIPDispatchRule") - caller := c.callDeleteSIPDispatchRule + ctx = ctxsetters.WithMethodName(ctx, "ListSIPDispatchRule") + caller := c.callListSIPDispatchRule if c.interceptor != nil { - caller = func(ctx context.Context, req *DeleteSIPDispatchRuleRequest) (*SIPDispatchRuleInfo, error) { + caller = func(ctx context.Context, req *ListSIPDispatchRuleRequest) (*ListSIPDispatchRuleResponse, error) { resp, err := c.interceptor( func(ctx context.Context, req interface{}) (interface{}, error) { - typedReq, ok := req.(*DeleteSIPDispatchRuleRequest) + typedReq, ok := req.(*ListSIPDispatchRuleRequest) if !ok { - return nil, twirp.InternalError("failed type assertion req.(*DeleteSIPDispatchRuleRequest) when calling interceptor") + return nil, twirp.InternalError("failed type assertion req.(*ListSIPDispatchRuleRequest) when calling interceptor") } - return c.callDeleteSIPDispatchRule(ctx, typedReq) + return c.callListSIPDispatchRule(ctx, typedReq) }, )(ctx, req) if resp != nil { - typedResp, ok := resp.(*SIPDispatchRuleInfo) + typedResp, ok := resp.(*ListSIPDispatchRuleResponse) if !ok { - return nil, twirp.InternalError("failed type assertion resp.(*SIPDispatchRuleInfo) when calling interceptor") + return nil, twirp.InternalError("failed type assertion resp.(*ListSIPDispatchRuleResponse) when calling interceptor") + } + return typedResp, err + } + return nil, err + } + } + return caller(ctx, in) +} + +func (c *sIPJSONClient) callListSIPDispatchRule(ctx context.Context, in *ListSIPDispatchRuleRequest) (*ListSIPDispatchRuleResponse, error) { + out := new(ListSIPDispatchRuleResponse) + ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[12], in, out) + if err != nil { + twerr, ok := err.(twirp.Error) + if !ok { + twerr = twirp.InternalErrorWith(err) + } + callClientError(ctx, c.opts.Hooks, twerr) + return nil, err + } + + callClientResponseReceived(ctx, c.opts.Hooks) + + return out, nil +} + +func (c *sIPJSONClient) DeleteSIPDispatchRule(ctx context.Context, in *DeleteSIPDispatchRuleRequest) (*SIPDispatchRuleInfo, error) { + ctx = ctxsetters.WithPackageName(ctx, "livekit") + ctx = ctxsetters.WithServiceName(ctx, "SIP") + ctx = ctxsetters.WithMethodName(ctx, "DeleteSIPDispatchRule") + caller := c.callDeleteSIPDispatchRule + if c.interceptor != nil { + caller = func(ctx context.Context, req *DeleteSIPDispatchRuleRequest) (*SIPDispatchRuleInfo, error) { + resp, err := c.interceptor( + func(ctx context.Context, req interface{}) (interface{}, error) { + typedReq, ok := req.(*DeleteSIPDispatchRuleRequest) + if !ok { + return nil, twirp.InternalError("failed type assertion req.(*DeleteSIPDispatchRuleRequest) when calling interceptor") + } + return c.callDeleteSIPDispatchRule(ctx, typedReq) + }, + )(ctx, req) + if resp != nil { + typedResp, ok := resp.(*SIPDispatchRuleInfo) + if !ok { + return nil, twirp.InternalError("failed type assertion resp.(*SIPDispatchRuleInfo) when calling interceptor") } return typedResp, err } @@ -1262,7 +1550,7 @@ func (c *sIPJSONClient) DeleteSIPDispatchRule(ctx context.Context, in *DeleteSIP func (c *sIPJSONClient) callDeleteSIPDispatchRule(ctx context.Context, in *DeleteSIPDispatchRuleRequest) (*SIPDispatchRuleInfo, error) { out := new(SIPDispatchRuleInfo) - ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[10], in, out) + ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[13], in, out) if err != nil { twerr, ok := err.(twirp.Error) if !ok { @@ -1308,7 +1596,7 @@ func (c *sIPJSONClient) CreateSIPParticipant(ctx context.Context, in *CreateSIPP func (c *sIPJSONClient) callCreateSIPParticipant(ctx context.Context, in *CreateSIPParticipantRequest) (*SIPParticipantInfo, error) { out := new(SIPParticipantInfo) - ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[11], in, out) + ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[14], in, out) if err != nil { twerr, ok := err.(twirp.Error) if !ok { @@ -1354,7 +1642,7 @@ func (c *sIPJSONClient) TransferSIPParticipant(ctx context.Context, in *Transfer func (c *sIPJSONClient) callTransferSIPParticipant(ctx context.Context, in *TransferSIPParticipantRequest) (*google_protobuf2.Empty, error) { out := new(google_protobuf2.Empty) - ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[12], in, out) + ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[15], in, out) if err != nil { twerr, ok := err.(twirp.Error) if !ok { @@ -1475,6 +1763,12 @@ func (s *sIPServer) ServeHTTP(resp http.ResponseWriter, req *http.Request) { case "CreateSIPOutboundTrunk": s.serveCreateSIPOutboundTrunk(ctx, resp, req) return + case "UpdateSIPInboundTrunk": + s.serveUpdateSIPInboundTrunk(ctx, resp, req) + return + case "UpdateSIPOutboundTrunk": + s.serveUpdateSIPOutboundTrunk(ctx, resp, req) + return case "GetSIPInboundTrunk": s.serveGetSIPInboundTrunk(ctx, resp, req) return @@ -1493,6 +1787,9 @@ func (s *sIPServer) ServeHTTP(resp http.ResponseWriter, req *http.Request) { case "CreateSIPDispatchRule": s.serveCreateSIPDispatchRule(ctx, resp, req) return + case "UpdateSIPDispatchRule": + s.serveUpdateSIPDispatchRule(ctx, resp, req) + return case "ListSIPDispatchRule": s.serveListSIPDispatchRule(ctx, resp, req) return @@ -1512,7 +1809,367 @@ func (s *sIPServer) ServeHTTP(resp http.ResponseWriter, req *http.Request) { } } -func (s *sIPServer) serveListSIPTrunk(ctx context.Context, resp http.ResponseWriter, req *http.Request) { +func (s *sIPServer) serveListSIPTrunk(ctx context.Context, resp http.ResponseWriter, req *http.Request) { + header := req.Header.Get("Content-Type") + i := strings.Index(header, ";") + if i == -1 { + i = len(header) + } + switch strings.TrimSpace(strings.ToLower(header[:i])) { + case "application/json": + s.serveListSIPTrunkJSON(ctx, resp, req) + case "application/protobuf": + s.serveListSIPTrunkProtobuf(ctx, resp, req) + default: + msg := fmt.Sprintf("unexpected Content-Type: %q", req.Header.Get("Content-Type")) + twerr := badRouteError(msg, req.Method, req.URL.Path) + s.writeError(ctx, resp, twerr) + } +} + +func (s *sIPServer) serveListSIPTrunkJSON(ctx context.Context, resp http.ResponseWriter, req *http.Request) { + var err error + ctx = ctxsetters.WithMethodName(ctx, "ListSIPTrunk") + ctx, err = callRequestRouted(ctx, s.hooks) + if err != nil { + s.writeError(ctx, resp, err) + return + } + + d := json.NewDecoder(req.Body) + rawReqBody := json.RawMessage{} + if err := d.Decode(&rawReqBody); err != nil { + s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err) + return + } + reqContent := new(ListSIPTrunkRequest) + unmarshaler := protojson.UnmarshalOptions{DiscardUnknown: true} + if err = unmarshaler.Unmarshal(rawReqBody, reqContent); err != nil { + s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err) + return + } + + handler := s.SIP.ListSIPTrunk + if s.interceptor != nil { + handler = func(ctx context.Context, req *ListSIPTrunkRequest) (*ListSIPTrunkResponse, error) { + resp, err := s.interceptor( + func(ctx context.Context, req interface{}) (interface{}, error) { + typedReq, ok := req.(*ListSIPTrunkRequest) + if !ok { + return nil, twirp.InternalError("failed type assertion req.(*ListSIPTrunkRequest) when calling interceptor") + } + return s.SIP.ListSIPTrunk(ctx, typedReq) + }, + )(ctx, req) + if resp != nil { + typedResp, ok := resp.(*ListSIPTrunkResponse) + if !ok { + return nil, twirp.InternalError("failed type assertion resp.(*ListSIPTrunkResponse) when calling interceptor") + } + return typedResp, err + } + return nil, err + } + } + + // Call service method + var respContent *ListSIPTrunkResponse + func() { + defer ensurePanicResponses(ctx, resp, s.hooks) + respContent, err = handler(ctx, reqContent) + }() + + if err != nil { + s.writeError(ctx, resp, err) + return + } + if respContent == nil { + s.writeError(ctx, resp, twirp.InternalError("received a nil *ListSIPTrunkResponse and nil error while calling ListSIPTrunk. nil responses are not supported")) + return + } + + ctx = callResponsePrepared(ctx, s.hooks) + + marshaler := &protojson.MarshalOptions{UseProtoNames: !s.jsonCamelCase, EmitUnpopulated: !s.jsonSkipDefaults} + respBytes, err := marshaler.Marshal(respContent) + if err != nil { + s.writeError(ctx, resp, wrapInternal(err, "failed to marshal json response")) + return + } + + ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK) + resp.Header().Set("Content-Type", "application/json") + resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes))) + resp.WriteHeader(http.StatusOK) + + if n, err := resp.Write(respBytes); err != nil { + msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error()) + twerr := twirp.NewError(twirp.Unknown, msg) + ctx = callError(ctx, s.hooks, twerr) + } + callResponseSent(ctx, s.hooks) +} + +func (s *sIPServer) serveListSIPTrunkProtobuf(ctx context.Context, resp http.ResponseWriter, req *http.Request) { + var err error + ctx = ctxsetters.WithMethodName(ctx, "ListSIPTrunk") + ctx, err = callRequestRouted(ctx, s.hooks) + if err != nil { + s.writeError(ctx, resp, err) + return + } + + buf, err := io.ReadAll(req.Body) + if err != nil { + s.handleRequestBodyError(ctx, resp, "failed to read request body", err) + return + } + reqContent := new(ListSIPTrunkRequest) + if err = proto.Unmarshal(buf, reqContent); err != nil { + s.writeError(ctx, resp, malformedRequestError("the protobuf request could not be decoded")) + return + } + + handler := s.SIP.ListSIPTrunk + if s.interceptor != nil { + handler = func(ctx context.Context, req *ListSIPTrunkRequest) (*ListSIPTrunkResponse, error) { + resp, err := s.interceptor( + func(ctx context.Context, req interface{}) (interface{}, error) { + typedReq, ok := req.(*ListSIPTrunkRequest) + if !ok { + return nil, twirp.InternalError("failed type assertion req.(*ListSIPTrunkRequest) when calling interceptor") + } + return s.SIP.ListSIPTrunk(ctx, typedReq) + }, + )(ctx, req) + if resp != nil { + typedResp, ok := resp.(*ListSIPTrunkResponse) + if !ok { + return nil, twirp.InternalError("failed type assertion resp.(*ListSIPTrunkResponse) when calling interceptor") + } + return typedResp, err + } + return nil, err + } + } + + // Call service method + var respContent *ListSIPTrunkResponse + func() { + defer ensurePanicResponses(ctx, resp, s.hooks) + respContent, err = handler(ctx, reqContent) + }() + + if err != nil { + s.writeError(ctx, resp, err) + return + } + if respContent == nil { + s.writeError(ctx, resp, twirp.InternalError("received a nil *ListSIPTrunkResponse and nil error while calling ListSIPTrunk. nil responses are not supported")) + return + } + + ctx = callResponsePrepared(ctx, s.hooks) + + respBytes, err := proto.Marshal(respContent) + if err != nil { + s.writeError(ctx, resp, wrapInternal(err, "failed to marshal proto response")) + return + } + + ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK) + resp.Header().Set("Content-Type", "application/protobuf") + resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes))) + resp.WriteHeader(http.StatusOK) + if n, err := resp.Write(respBytes); err != nil { + msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error()) + twerr := twirp.NewError(twirp.Unknown, msg) + ctx = callError(ctx, s.hooks, twerr) + } + callResponseSent(ctx, s.hooks) +} + +func (s *sIPServer) serveCreateSIPInboundTrunk(ctx context.Context, resp http.ResponseWriter, req *http.Request) { + header := req.Header.Get("Content-Type") + i := strings.Index(header, ";") + if i == -1 { + i = len(header) + } + switch strings.TrimSpace(strings.ToLower(header[:i])) { + case "application/json": + s.serveCreateSIPInboundTrunkJSON(ctx, resp, req) + case "application/protobuf": + s.serveCreateSIPInboundTrunkProtobuf(ctx, resp, req) + default: + msg := fmt.Sprintf("unexpected Content-Type: %q", req.Header.Get("Content-Type")) + twerr := badRouteError(msg, req.Method, req.URL.Path) + s.writeError(ctx, resp, twerr) + } +} + +func (s *sIPServer) serveCreateSIPInboundTrunkJSON(ctx context.Context, resp http.ResponseWriter, req *http.Request) { + var err error + ctx = ctxsetters.WithMethodName(ctx, "CreateSIPInboundTrunk") + ctx, err = callRequestRouted(ctx, s.hooks) + if err != nil { + s.writeError(ctx, resp, err) + return + } + + d := json.NewDecoder(req.Body) + rawReqBody := json.RawMessage{} + if err := d.Decode(&rawReqBody); err != nil { + s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err) + return + } + reqContent := new(CreateSIPInboundTrunkRequest) + unmarshaler := protojson.UnmarshalOptions{DiscardUnknown: true} + if err = unmarshaler.Unmarshal(rawReqBody, reqContent); err != nil { + s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err) + return + } + + handler := s.SIP.CreateSIPInboundTrunk + if s.interceptor != nil { + handler = func(ctx context.Context, req *CreateSIPInboundTrunkRequest) (*SIPInboundTrunkInfo, error) { + resp, err := s.interceptor( + func(ctx context.Context, req interface{}) (interface{}, error) { + typedReq, ok := req.(*CreateSIPInboundTrunkRequest) + if !ok { + return nil, twirp.InternalError("failed type assertion req.(*CreateSIPInboundTrunkRequest) when calling interceptor") + } + return s.SIP.CreateSIPInboundTrunk(ctx, typedReq) + }, + )(ctx, req) + if resp != nil { + typedResp, ok := resp.(*SIPInboundTrunkInfo) + if !ok { + return nil, twirp.InternalError("failed type assertion resp.(*SIPInboundTrunkInfo) when calling interceptor") + } + return typedResp, err + } + return nil, err + } + } + + // Call service method + var respContent *SIPInboundTrunkInfo + func() { + defer ensurePanicResponses(ctx, resp, s.hooks) + respContent, err = handler(ctx, reqContent) + }() + + if err != nil { + s.writeError(ctx, resp, err) + return + } + if respContent == nil { + s.writeError(ctx, resp, twirp.InternalError("received a nil *SIPInboundTrunkInfo and nil error while calling CreateSIPInboundTrunk. nil responses are not supported")) + return + } + + ctx = callResponsePrepared(ctx, s.hooks) + + marshaler := &protojson.MarshalOptions{UseProtoNames: !s.jsonCamelCase, EmitUnpopulated: !s.jsonSkipDefaults} + respBytes, err := marshaler.Marshal(respContent) + if err != nil { + s.writeError(ctx, resp, wrapInternal(err, "failed to marshal json response")) + return + } + + ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK) + resp.Header().Set("Content-Type", "application/json") + resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes))) + resp.WriteHeader(http.StatusOK) + + if n, err := resp.Write(respBytes); err != nil { + msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error()) + twerr := twirp.NewError(twirp.Unknown, msg) + ctx = callError(ctx, s.hooks, twerr) + } + callResponseSent(ctx, s.hooks) +} + +func (s *sIPServer) serveCreateSIPInboundTrunkProtobuf(ctx context.Context, resp http.ResponseWriter, req *http.Request) { + var err error + ctx = ctxsetters.WithMethodName(ctx, "CreateSIPInboundTrunk") + ctx, err = callRequestRouted(ctx, s.hooks) + if err != nil { + s.writeError(ctx, resp, err) + return + } + + buf, err := io.ReadAll(req.Body) + if err != nil { + s.handleRequestBodyError(ctx, resp, "failed to read request body", err) + return + } + reqContent := new(CreateSIPInboundTrunkRequest) + if err = proto.Unmarshal(buf, reqContent); err != nil { + s.writeError(ctx, resp, malformedRequestError("the protobuf request could not be decoded")) + return + } + + handler := s.SIP.CreateSIPInboundTrunk + if s.interceptor != nil { + handler = func(ctx context.Context, req *CreateSIPInboundTrunkRequest) (*SIPInboundTrunkInfo, error) { + resp, err := s.interceptor( + func(ctx context.Context, req interface{}) (interface{}, error) { + typedReq, ok := req.(*CreateSIPInboundTrunkRequest) + if !ok { + return nil, twirp.InternalError("failed type assertion req.(*CreateSIPInboundTrunkRequest) when calling interceptor") + } + return s.SIP.CreateSIPInboundTrunk(ctx, typedReq) + }, + )(ctx, req) + if resp != nil { + typedResp, ok := resp.(*SIPInboundTrunkInfo) + if !ok { + return nil, twirp.InternalError("failed type assertion resp.(*SIPInboundTrunkInfo) when calling interceptor") + } + return typedResp, err + } + return nil, err + } + } + + // Call service method + var respContent *SIPInboundTrunkInfo + func() { + defer ensurePanicResponses(ctx, resp, s.hooks) + respContent, err = handler(ctx, reqContent) + }() + + if err != nil { + s.writeError(ctx, resp, err) + return + } + if respContent == nil { + s.writeError(ctx, resp, twirp.InternalError("received a nil *SIPInboundTrunkInfo and nil error while calling CreateSIPInboundTrunk. nil responses are not supported")) + return + } + + ctx = callResponsePrepared(ctx, s.hooks) + + respBytes, err := proto.Marshal(respContent) + if err != nil { + s.writeError(ctx, resp, wrapInternal(err, "failed to marshal proto response")) + return + } + + ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK) + resp.Header().Set("Content-Type", "application/protobuf") + resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes))) + resp.WriteHeader(http.StatusOK) + if n, err := resp.Write(respBytes); err != nil { + msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error()) + twerr := twirp.NewError(twirp.Unknown, msg) + ctx = callError(ctx, s.hooks, twerr) + } + callResponseSent(ctx, s.hooks) +} + +func (s *sIPServer) serveCreateSIPOutboundTrunk(ctx context.Context, resp http.ResponseWriter, req *http.Request) { header := req.Header.Get("Content-Type") i := strings.Index(header, ";") if i == -1 { @@ -1520,9 +2177,9 @@ func (s *sIPServer) serveListSIPTrunk(ctx context.Context, resp http.ResponseWri } switch strings.TrimSpace(strings.ToLower(header[:i])) { case "application/json": - s.serveListSIPTrunkJSON(ctx, resp, req) + s.serveCreateSIPOutboundTrunkJSON(ctx, resp, req) case "application/protobuf": - s.serveListSIPTrunkProtobuf(ctx, resp, req) + s.serveCreateSIPOutboundTrunkProtobuf(ctx, resp, req) default: msg := fmt.Sprintf("unexpected Content-Type: %q", req.Header.Get("Content-Type")) twerr := badRouteError(msg, req.Method, req.URL.Path) @@ -1530,9 +2187,9 @@ func (s *sIPServer) serveListSIPTrunk(ctx context.Context, resp http.ResponseWri } } -func (s *sIPServer) serveListSIPTrunkJSON(ctx context.Context, resp http.ResponseWriter, req *http.Request) { +func (s *sIPServer) serveCreateSIPOutboundTrunkJSON(ctx context.Context, resp http.ResponseWriter, req *http.Request) { var err error - ctx = ctxsetters.WithMethodName(ctx, "ListSIPTrunk") + ctx = ctxsetters.WithMethodName(ctx, "CreateSIPOutboundTrunk") ctx, err = callRequestRouted(ctx, s.hooks) if err != nil { s.writeError(ctx, resp, err) @@ -1545,29 +2202,29 @@ func (s *sIPServer) serveListSIPTrunkJSON(ctx context.Context, resp http.Respons s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err) return } - reqContent := new(ListSIPTrunkRequest) + reqContent := new(CreateSIPOutboundTrunkRequest) unmarshaler := protojson.UnmarshalOptions{DiscardUnknown: true} if err = unmarshaler.Unmarshal(rawReqBody, reqContent); err != nil { s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err) return } - handler := s.SIP.ListSIPTrunk + handler := s.SIP.CreateSIPOutboundTrunk if s.interceptor != nil { - handler = func(ctx context.Context, req *ListSIPTrunkRequest) (*ListSIPTrunkResponse, error) { + handler = func(ctx context.Context, req *CreateSIPOutboundTrunkRequest) (*SIPOutboundTrunkInfo, error) { resp, err := s.interceptor( func(ctx context.Context, req interface{}) (interface{}, error) { - typedReq, ok := req.(*ListSIPTrunkRequest) + typedReq, ok := req.(*CreateSIPOutboundTrunkRequest) if !ok { - return nil, twirp.InternalError("failed type assertion req.(*ListSIPTrunkRequest) when calling interceptor") + return nil, twirp.InternalError("failed type assertion req.(*CreateSIPOutboundTrunkRequest) when calling interceptor") } - return s.SIP.ListSIPTrunk(ctx, typedReq) + return s.SIP.CreateSIPOutboundTrunk(ctx, typedReq) }, )(ctx, req) if resp != nil { - typedResp, ok := resp.(*ListSIPTrunkResponse) + typedResp, ok := resp.(*SIPOutboundTrunkInfo) if !ok { - return nil, twirp.InternalError("failed type assertion resp.(*ListSIPTrunkResponse) when calling interceptor") + return nil, twirp.InternalError("failed type assertion resp.(*SIPOutboundTrunkInfo) when calling interceptor") } return typedResp, err } @@ -1576,7 +2233,7 @@ func (s *sIPServer) serveListSIPTrunkJSON(ctx context.Context, resp http.Respons } // Call service method - var respContent *ListSIPTrunkResponse + var respContent *SIPOutboundTrunkInfo func() { defer ensurePanicResponses(ctx, resp, s.hooks) respContent, err = handler(ctx, reqContent) @@ -1587,7 +2244,7 @@ func (s *sIPServer) serveListSIPTrunkJSON(ctx context.Context, resp http.Respons return } if respContent == nil { - s.writeError(ctx, resp, twirp.InternalError("received a nil *ListSIPTrunkResponse and nil error while calling ListSIPTrunk. nil responses are not supported")) + s.writeError(ctx, resp, twirp.InternalError("received a nil *SIPOutboundTrunkInfo and nil error while calling CreateSIPOutboundTrunk. nil responses are not supported")) return } @@ -1613,9 +2270,9 @@ func (s *sIPServer) serveListSIPTrunkJSON(ctx context.Context, resp http.Respons callResponseSent(ctx, s.hooks) } -func (s *sIPServer) serveListSIPTrunkProtobuf(ctx context.Context, resp http.ResponseWriter, req *http.Request) { +func (s *sIPServer) serveCreateSIPOutboundTrunkProtobuf(ctx context.Context, resp http.ResponseWriter, req *http.Request) { var err error - ctx = ctxsetters.WithMethodName(ctx, "ListSIPTrunk") + ctx = ctxsetters.WithMethodName(ctx, "CreateSIPOutboundTrunk") ctx, err = callRequestRouted(ctx, s.hooks) if err != nil { s.writeError(ctx, resp, err) @@ -1627,28 +2284,28 @@ func (s *sIPServer) serveListSIPTrunkProtobuf(ctx context.Context, resp http.Res s.handleRequestBodyError(ctx, resp, "failed to read request body", err) return } - reqContent := new(ListSIPTrunkRequest) + reqContent := new(CreateSIPOutboundTrunkRequest) if err = proto.Unmarshal(buf, reqContent); err != nil { s.writeError(ctx, resp, malformedRequestError("the protobuf request could not be decoded")) return } - handler := s.SIP.ListSIPTrunk + handler := s.SIP.CreateSIPOutboundTrunk if s.interceptor != nil { - handler = func(ctx context.Context, req *ListSIPTrunkRequest) (*ListSIPTrunkResponse, error) { + handler = func(ctx context.Context, req *CreateSIPOutboundTrunkRequest) (*SIPOutboundTrunkInfo, error) { resp, err := s.interceptor( func(ctx context.Context, req interface{}) (interface{}, error) { - typedReq, ok := req.(*ListSIPTrunkRequest) + typedReq, ok := req.(*CreateSIPOutboundTrunkRequest) if !ok { - return nil, twirp.InternalError("failed type assertion req.(*ListSIPTrunkRequest) when calling interceptor") + return nil, twirp.InternalError("failed type assertion req.(*CreateSIPOutboundTrunkRequest) when calling interceptor") } - return s.SIP.ListSIPTrunk(ctx, typedReq) + return s.SIP.CreateSIPOutboundTrunk(ctx, typedReq) }, )(ctx, req) if resp != nil { - typedResp, ok := resp.(*ListSIPTrunkResponse) + typedResp, ok := resp.(*SIPOutboundTrunkInfo) if !ok { - return nil, twirp.InternalError("failed type assertion resp.(*ListSIPTrunkResponse) when calling interceptor") + return nil, twirp.InternalError("failed type assertion resp.(*SIPOutboundTrunkInfo) when calling interceptor") } return typedResp, err } @@ -1657,7 +2314,7 @@ func (s *sIPServer) serveListSIPTrunkProtobuf(ctx context.Context, resp http.Res } // Call service method - var respContent *ListSIPTrunkResponse + var respContent *SIPOutboundTrunkInfo func() { defer ensurePanicResponses(ctx, resp, s.hooks) respContent, err = handler(ctx, reqContent) @@ -1668,7 +2325,7 @@ func (s *sIPServer) serveListSIPTrunkProtobuf(ctx context.Context, resp http.Res return } if respContent == nil { - s.writeError(ctx, resp, twirp.InternalError("received a nil *ListSIPTrunkResponse and nil error while calling ListSIPTrunk. nil responses are not supported")) + s.writeError(ctx, resp, twirp.InternalError("received a nil *SIPOutboundTrunkInfo and nil error while calling CreateSIPOutboundTrunk. nil responses are not supported")) return } @@ -1692,7 +2349,7 @@ func (s *sIPServer) serveListSIPTrunkProtobuf(ctx context.Context, resp http.Res callResponseSent(ctx, s.hooks) } -func (s *sIPServer) serveCreateSIPInboundTrunk(ctx context.Context, resp http.ResponseWriter, req *http.Request) { +func (s *sIPServer) serveUpdateSIPInboundTrunk(ctx context.Context, resp http.ResponseWriter, req *http.Request) { header := req.Header.Get("Content-Type") i := strings.Index(header, ";") if i == -1 { @@ -1700,9 +2357,9 @@ func (s *sIPServer) serveCreateSIPInboundTrunk(ctx context.Context, resp http.Re } switch strings.TrimSpace(strings.ToLower(header[:i])) { case "application/json": - s.serveCreateSIPInboundTrunkJSON(ctx, resp, req) + s.serveUpdateSIPInboundTrunkJSON(ctx, resp, req) case "application/protobuf": - s.serveCreateSIPInboundTrunkProtobuf(ctx, resp, req) + s.serveUpdateSIPInboundTrunkProtobuf(ctx, resp, req) default: msg := fmt.Sprintf("unexpected Content-Type: %q", req.Header.Get("Content-Type")) twerr := badRouteError(msg, req.Method, req.URL.Path) @@ -1710,9 +2367,9 @@ func (s *sIPServer) serveCreateSIPInboundTrunk(ctx context.Context, resp http.Re } } -func (s *sIPServer) serveCreateSIPInboundTrunkJSON(ctx context.Context, resp http.ResponseWriter, req *http.Request) { +func (s *sIPServer) serveUpdateSIPInboundTrunkJSON(ctx context.Context, resp http.ResponseWriter, req *http.Request) { var err error - ctx = ctxsetters.WithMethodName(ctx, "CreateSIPInboundTrunk") + ctx = ctxsetters.WithMethodName(ctx, "UpdateSIPInboundTrunk") ctx, err = callRequestRouted(ctx, s.hooks) if err != nil { s.writeError(ctx, resp, err) @@ -1725,23 +2382,23 @@ func (s *sIPServer) serveCreateSIPInboundTrunkJSON(ctx context.Context, resp htt s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err) return } - reqContent := new(CreateSIPInboundTrunkRequest) + reqContent := new(UpdateSIPInboundTrunkRequest) unmarshaler := protojson.UnmarshalOptions{DiscardUnknown: true} if err = unmarshaler.Unmarshal(rawReqBody, reqContent); err != nil { s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err) return } - handler := s.SIP.CreateSIPInboundTrunk + handler := s.SIP.UpdateSIPInboundTrunk if s.interceptor != nil { - handler = func(ctx context.Context, req *CreateSIPInboundTrunkRequest) (*SIPInboundTrunkInfo, error) { + handler = func(ctx context.Context, req *UpdateSIPInboundTrunkRequest) (*SIPInboundTrunkInfo, error) { resp, err := s.interceptor( func(ctx context.Context, req interface{}) (interface{}, error) { - typedReq, ok := req.(*CreateSIPInboundTrunkRequest) + typedReq, ok := req.(*UpdateSIPInboundTrunkRequest) if !ok { - return nil, twirp.InternalError("failed type assertion req.(*CreateSIPInboundTrunkRequest) when calling interceptor") + return nil, twirp.InternalError("failed type assertion req.(*UpdateSIPInboundTrunkRequest) when calling interceptor") } - return s.SIP.CreateSIPInboundTrunk(ctx, typedReq) + return s.SIP.UpdateSIPInboundTrunk(ctx, typedReq) }, )(ctx, req) if resp != nil { @@ -1767,7 +2424,7 @@ func (s *sIPServer) serveCreateSIPInboundTrunkJSON(ctx context.Context, resp htt return } if respContent == nil { - s.writeError(ctx, resp, twirp.InternalError("received a nil *SIPInboundTrunkInfo and nil error while calling CreateSIPInboundTrunk. nil responses are not supported")) + s.writeError(ctx, resp, twirp.InternalError("received a nil *SIPInboundTrunkInfo and nil error while calling UpdateSIPInboundTrunk. nil responses are not supported")) return } @@ -1793,9 +2450,9 @@ func (s *sIPServer) serveCreateSIPInboundTrunkJSON(ctx context.Context, resp htt callResponseSent(ctx, s.hooks) } -func (s *sIPServer) serveCreateSIPInboundTrunkProtobuf(ctx context.Context, resp http.ResponseWriter, req *http.Request) { +func (s *sIPServer) serveUpdateSIPInboundTrunkProtobuf(ctx context.Context, resp http.ResponseWriter, req *http.Request) { var err error - ctx = ctxsetters.WithMethodName(ctx, "CreateSIPInboundTrunk") + ctx = ctxsetters.WithMethodName(ctx, "UpdateSIPInboundTrunk") ctx, err = callRequestRouted(ctx, s.hooks) if err != nil { s.writeError(ctx, resp, err) @@ -1807,22 +2464,22 @@ func (s *sIPServer) serveCreateSIPInboundTrunkProtobuf(ctx context.Context, resp s.handleRequestBodyError(ctx, resp, "failed to read request body", err) return } - reqContent := new(CreateSIPInboundTrunkRequest) + reqContent := new(UpdateSIPInboundTrunkRequest) if err = proto.Unmarshal(buf, reqContent); err != nil { s.writeError(ctx, resp, malformedRequestError("the protobuf request could not be decoded")) return } - handler := s.SIP.CreateSIPInboundTrunk + handler := s.SIP.UpdateSIPInboundTrunk if s.interceptor != nil { - handler = func(ctx context.Context, req *CreateSIPInboundTrunkRequest) (*SIPInboundTrunkInfo, error) { + handler = func(ctx context.Context, req *UpdateSIPInboundTrunkRequest) (*SIPInboundTrunkInfo, error) { resp, err := s.interceptor( func(ctx context.Context, req interface{}) (interface{}, error) { - typedReq, ok := req.(*CreateSIPInboundTrunkRequest) + typedReq, ok := req.(*UpdateSIPInboundTrunkRequest) if !ok { - return nil, twirp.InternalError("failed type assertion req.(*CreateSIPInboundTrunkRequest) when calling interceptor") + return nil, twirp.InternalError("failed type assertion req.(*UpdateSIPInboundTrunkRequest) when calling interceptor") } - return s.SIP.CreateSIPInboundTrunk(ctx, typedReq) + return s.SIP.UpdateSIPInboundTrunk(ctx, typedReq) }, )(ctx, req) if resp != nil { @@ -1848,7 +2505,7 @@ func (s *sIPServer) serveCreateSIPInboundTrunkProtobuf(ctx context.Context, resp return } if respContent == nil { - s.writeError(ctx, resp, twirp.InternalError("received a nil *SIPInboundTrunkInfo and nil error while calling CreateSIPInboundTrunk. nil responses are not supported")) + s.writeError(ctx, resp, twirp.InternalError("received a nil *SIPInboundTrunkInfo and nil error while calling UpdateSIPInboundTrunk. nil responses are not supported")) return } @@ -1872,7 +2529,7 @@ func (s *sIPServer) serveCreateSIPInboundTrunkProtobuf(ctx context.Context, resp callResponseSent(ctx, s.hooks) } -func (s *sIPServer) serveCreateSIPOutboundTrunk(ctx context.Context, resp http.ResponseWriter, req *http.Request) { +func (s *sIPServer) serveUpdateSIPOutboundTrunk(ctx context.Context, resp http.ResponseWriter, req *http.Request) { header := req.Header.Get("Content-Type") i := strings.Index(header, ";") if i == -1 { @@ -1880,9 +2537,9 @@ func (s *sIPServer) serveCreateSIPOutboundTrunk(ctx context.Context, resp http.R } switch strings.TrimSpace(strings.ToLower(header[:i])) { case "application/json": - s.serveCreateSIPOutboundTrunkJSON(ctx, resp, req) + s.serveUpdateSIPOutboundTrunkJSON(ctx, resp, req) case "application/protobuf": - s.serveCreateSIPOutboundTrunkProtobuf(ctx, resp, req) + s.serveUpdateSIPOutboundTrunkProtobuf(ctx, resp, req) default: msg := fmt.Sprintf("unexpected Content-Type: %q", req.Header.Get("Content-Type")) twerr := badRouteError(msg, req.Method, req.URL.Path) @@ -1890,9 +2547,9 @@ func (s *sIPServer) serveCreateSIPOutboundTrunk(ctx context.Context, resp http.R } } -func (s *sIPServer) serveCreateSIPOutboundTrunkJSON(ctx context.Context, resp http.ResponseWriter, req *http.Request) { +func (s *sIPServer) serveUpdateSIPOutboundTrunkJSON(ctx context.Context, resp http.ResponseWriter, req *http.Request) { var err error - ctx = ctxsetters.WithMethodName(ctx, "CreateSIPOutboundTrunk") + ctx = ctxsetters.WithMethodName(ctx, "UpdateSIPOutboundTrunk") ctx, err = callRequestRouted(ctx, s.hooks) if err != nil { s.writeError(ctx, resp, err) @@ -1905,23 +2562,23 @@ func (s *sIPServer) serveCreateSIPOutboundTrunkJSON(ctx context.Context, resp ht s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err) return } - reqContent := new(CreateSIPOutboundTrunkRequest) + reqContent := new(UpdateSIPOutboundTrunkRequest) unmarshaler := protojson.UnmarshalOptions{DiscardUnknown: true} if err = unmarshaler.Unmarshal(rawReqBody, reqContent); err != nil { s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err) return } - handler := s.SIP.CreateSIPOutboundTrunk + handler := s.SIP.UpdateSIPOutboundTrunk if s.interceptor != nil { - handler = func(ctx context.Context, req *CreateSIPOutboundTrunkRequest) (*SIPOutboundTrunkInfo, error) { + handler = func(ctx context.Context, req *UpdateSIPOutboundTrunkRequest) (*SIPOutboundTrunkInfo, error) { resp, err := s.interceptor( func(ctx context.Context, req interface{}) (interface{}, error) { - typedReq, ok := req.(*CreateSIPOutboundTrunkRequest) + typedReq, ok := req.(*UpdateSIPOutboundTrunkRequest) if !ok { - return nil, twirp.InternalError("failed type assertion req.(*CreateSIPOutboundTrunkRequest) when calling interceptor") + return nil, twirp.InternalError("failed type assertion req.(*UpdateSIPOutboundTrunkRequest) when calling interceptor") } - return s.SIP.CreateSIPOutboundTrunk(ctx, typedReq) + return s.SIP.UpdateSIPOutboundTrunk(ctx, typedReq) }, )(ctx, req) if resp != nil { @@ -1947,7 +2604,7 @@ func (s *sIPServer) serveCreateSIPOutboundTrunkJSON(ctx context.Context, resp ht return } if respContent == nil { - s.writeError(ctx, resp, twirp.InternalError("received a nil *SIPOutboundTrunkInfo and nil error while calling CreateSIPOutboundTrunk. nil responses are not supported")) + s.writeError(ctx, resp, twirp.InternalError("received a nil *SIPOutboundTrunkInfo and nil error while calling UpdateSIPOutboundTrunk. nil responses are not supported")) return } @@ -1973,9 +2630,9 @@ func (s *sIPServer) serveCreateSIPOutboundTrunkJSON(ctx context.Context, resp ht callResponseSent(ctx, s.hooks) } -func (s *sIPServer) serveCreateSIPOutboundTrunkProtobuf(ctx context.Context, resp http.ResponseWriter, req *http.Request) { +func (s *sIPServer) serveUpdateSIPOutboundTrunkProtobuf(ctx context.Context, resp http.ResponseWriter, req *http.Request) { var err error - ctx = ctxsetters.WithMethodName(ctx, "CreateSIPOutboundTrunk") + ctx = ctxsetters.WithMethodName(ctx, "UpdateSIPOutboundTrunk") ctx, err = callRequestRouted(ctx, s.hooks) if err != nil { s.writeError(ctx, resp, err) @@ -1987,22 +2644,22 @@ func (s *sIPServer) serveCreateSIPOutboundTrunkProtobuf(ctx context.Context, res s.handleRequestBodyError(ctx, resp, "failed to read request body", err) return } - reqContent := new(CreateSIPOutboundTrunkRequest) + reqContent := new(UpdateSIPOutboundTrunkRequest) if err = proto.Unmarshal(buf, reqContent); err != nil { s.writeError(ctx, resp, malformedRequestError("the protobuf request could not be decoded")) return } - handler := s.SIP.CreateSIPOutboundTrunk + handler := s.SIP.UpdateSIPOutboundTrunk if s.interceptor != nil { - handler = func(ctx context.Context, req *CreateSIPOutboundTrunkRequest) (*SIPOutboundTrunkInfo, error) { + handler = func(ctx context.Context, req *UpdateSIPOutboundTrunkRequest) (*SIPOutboundTrunkInfo, error) { resp, err := s.interceptor( func(ctx context.Context, req interface{}) (interface{}, error) { - typedReq, ok := req.(*CreateSIPOutboundTrunkRequest) + typedReq, ok := req.(*UpdateSIPOutboundTrunkRequest) if !ok { - return nil, twirp.InternalError("failed type assertion req.(*CreateSIPOutboundTrunkRequest) when calling interceptor") + return nil, twirp.InternalError("failed type assertion req.(*UpdateSIPOutboundTrunkRequest) when calling interceptor") } - return s.SIP.CreateSIPOutboundTrunk(ctx, typedReq) + return s.SIP.UpdateSIPOutboundTrunk(ctx, typedReq) }, )(ctx, req) if resp != nil { @@ -2028,7 +2685,7 @@ func (s *sIPServer) serveCreateSIPOutboundTrunkProtobuf(ctx context.Context, res return } if respContent == nil { - s.writeError(ctx, resp, twirp.InternalError("received a nil *SIPOutboundTrunkInfo and nil error while calling CreateSIPOutboundTrunk. nil responses are not supported")) + s.writeError(ctx, resp, twirp.InternalError("received a nil *SIPOutboundTrunkInfo and nil error while calling UpdateSIPOutboundTrunk. nil responses are not supported")) return } @@ -3132,6 +3789,186 @@ func (s *sIPServer) serveCreateSIPDispatchRuleProtobuf(ctx context.Context, resp callResponseSent(ctx, s.hooks) } +func (s *sIPServer) serveUpdateSIPDispatchRule(ctx context.Context, resp http.ResponseWriter, req *http.Request) { + header := req.Header.Get("Content-Type") + i := strings.Index(header, ";") + if i == -1 { + i = len(header) + } + switch strings.TrimSpace(strings.ToLower(header[:i])) { + case "application/json": + s.serveUpdateSIPDispatchRuleJSON(ctx, resp, req) + case "application/protobuf": + s.serveUpdateSIPDispatchRuleProtobuf(ctx, resp, req) + default: + msg := fmt.Sprintf("unexpected Content-Type: %q", req.Header.Get("Content-Type")) + twerr := badRouteError(msg, req.Method, req.URL.Path) + s.writeError(ctx, resp, twerr) + } +} + +func (s *sIPServer) serveUpdateSIPDispatchRuleJSON(ctx context.Context, resp http.ResponseWriter, req *http.Request) { + var err error + ctx = ctxsetters.WithMethodName(ctx, "UpdateSIPDispatchRule") + ctx, err = callRequestRouted(ctx, s.hooks) + if err != nil { + s.writeError(ctx, resp, err) + return + } + + d := json.NewDecoder(req.Body) + rawReqBody := json.RawMessage{} + if err := d.Decode(&rawReqBody); err != nil { + s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err) + return + } + reqContent := new(UpdateSIPDispatchRuleRequest) + unmarshaler := protojson.UnmarshalOptions{DiscardUnknown: true} + if err = unmarshaler.Unmarshal(rawReqBody, reqContent); err != nil { + s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err) + return + } + + handler := s.SIP.UpdateSIPDispatchRule + if s.interceptor != nil { + handler = func(ctx context.Context, req *UpdateSIPDispatchRuleRequest) (*SIPDispatchRuleInfo, error) { + resp, err := s.interceptor( + func(ctx context.Context, req interface{}) (interface{}, error) { + typedReq, ok := req.(*UpdateSIPDispatchRuleRequest) + if !ok { + return nil, twirp.InternalError("failed type assertion req.(*UpdateSIPDispatchRuleRequest) when calling interceptor") + } + return s.SIP.UpdateSIPDispatchRule(ctx, typedReq) + }, + )(ctx, req) + if resp != nil { + typedResp, ok := resp.(*SIPDispatchRuleInfo) + if !ok { + return nil, twirp.InternalError("failed type assertion resp.(*SIPDispatchRuleInfo) when calling interceptor") + } + return typedResp, err + } + return nil, err + } + } + + // Call service method + var respContent *SIPDispatchRuleInfo + func() { + defer ensurePanicResponses(ctx, resp, s.hooks) + respContent, err = handler(ctx, reqContent) + }() + + if err != nil { + s.writeError(ctx, resp, err) + return + } + if respContent == nil { + s.writeError(ctx, resp, twirp.InternalError("received a nil *SIPDispatchRuleInfo and nil error while calling UpdateSIPDispatchRule. nil responses are not supported")) + return + } + + ctx = callResponsePrepared(ctx, s.hooks) + + marshaler := &protojson.MarshalOptions{UseProtoNames: !s.jsonCamelCase, EmitUnpopulated: !s.jsonSkipDefaults} + respBytes, err := marshaler.Marshal(respContent) + if err != nil { + s.writeError(ctx, resp, wrapInternal(err, "failed to marshal json response")) + return + } + + ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK) + resp.Header().Set("Content-Type", "application/json") + resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes))) + resp.WriteHeader(http.StatusOK) + + if n, err := resp.Write(respBytes); err != nil { + msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error()) + twerr := twirp.NewError(twirp.Unknown, msg) + ctx = callError(ctx, s.hooks, twerr) + } + callResponseSent(ctx, s.hooks) +} + +func (s *sIPServer) serveUpdateSIPDispatchRuleProtobuf(ctx context.Context, resp http.ResponseWriter, req *http.Request) { + var err error + ctx = ctxsetters.WithMethodName(ctx, "UpdateSIPDispatchRule") + ctx, err = callRequestRouted(ctx, s.hooks) + if err != nil { + s.writeError(ctx, resp, err) + return + } + + buf, err := io.ReadAll(req.Body) + if err != nil { + s.handleRequestBodyError(ctx, resp, "failed to read request body", err) + return + } + reqContent := new(UpdateSIPDispatchRuleRequest) + if err = proto.Unmarshal(buf, reqContent); err != nil { + s.writeError(ctx, resp, malformedRequestError("the protobuf request could not be decoded")) + return + } + + handler := s.SIP.UpdateSIPDispatchRule + if s.interceptor != nil { + handler = func(ctx context.Context, req *UpdateSIPDispatchRuleRequest) (*SIPDispatchRuleInfo, error) { + resp, err := s.interceptor( + func(ctx context.Context, req interface{}) (interface{}, error) { + typedReq, ok := req.(*UpdateSIPDispatchRuleRequest) + if !ok { + return nil, twirp.InternalError("failed type assertion req.(*UpdateSIPDispatchRuleRequest) when calling interceptor") + } + return s.SIP.UpdateSIPDispatchRule(ctx, typedReq) + }, + )(ctx, req) + if resp != nil { + typedResp, ok := resp.(*SIPDispatchRuleInfo) + if !ok { + return nil, twirp.InternalError("failed type assertion resp.(*SIPDispatchRuleInfo) when calling interceptor") + } + return typedResp, err + } + return nil, err + } + } + + // Call service method + var respContent *SIPDispatchRuleInfo + func() { + defer ensurePanicResponses(ctx, resp, s.hooks) + respContent, err = handler(ctx, reqContent) + }() + + if err != nil { + s.writeError(ctx, resp, err) + return + } + if respContent == nil { + s.writeError(ctx, resp, twirp.InternalError("received a nil *SIPDispatchRuleInfo and nil error while calling UpdateSIPDispatchRule. nil responses are not supported")) + return + } + + ctx = callResponsePrepared(ctx, s.hooks) + + respBytes, err := proto.Marshal(respContent) + if err != nil { + s.writeError(ctx, resp, wrapInternal(err, "failed to marshal proto response")) + return + } + + ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK) + resp.Header().Set("Content-Type", "application/protobuf") + resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes))) + resp.WriteHeader(http.StatusOK) + if n, err := resp.Write(respBytes); err != nil { + msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error()) + twerr := twirp.NewError(twirp.Unknown, msg) + ctx = callError(ctx, s.hooks, twerr) + } + callResponseSent(ctx, s.hooks) +} + func (s *sIPServer) serveListSIPDispatchRule(ctx context.Context, resp http.ResponseWriter, req *http.Request) { header := req.Header.Get("Content-Type") i := strings.Index(header, ";") @@ -3868,155 +4705,182 @@ func (s *sIPServer) PathPrefix() string { } var twirpFileDescriptor4 = []byte{ - // 2388 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x5a, 0xef, 0x6e, 0xdb, 0xc8, - 0x11, 0x8f, 0x24, 0xeb, 0xdf, 0xc8, 0x96, 0xe4, 0xf5, 0x9f, 0x93, 0x65, 0x3b, 0x49, 0x95, 0xcb, - 0x25, 0xf1, 0x1d, 0x14, 0x54, 0x41, 0xaf, 0x6d, 0x80, 0xbb, 0x42, 0x96, 0x94, 0x44, 0x8d, 0x4f, - 0x52, 0x29, 0xb9, 0xe8, 0x15, 0xd7, 0xb2, 0xb4, 0xb8, 0xb6, 0xf7, 0x2c, 0x91, 0x2c, 0xb9, 0x4a, - 0xe2, 0x7e, 0x6e, 0x81, 0xf6, 0x31, 0x8a, 0x02, 0xfd, 0x70, 0x05, 0xfa, 0xad, 0x40, 0xd1, 0x77, - 0xe9, 0x0b, 0xf4, 0x29, 0x8a, 0xfd, 0x43, 0x8a, 0xa4, 0x48, 0x59, 0x4e, 0xaf, 0x40, 0xd1, 0x6f, - 0xe4, 0xcc, 0xec, 0xec, 0x70, 0xe6, 0x37, 0xb3, 0x3b, 0x23, 0xc1, 0xe6, 0x84, 0xbc, 0xc1, 0x57, - 0x84, 0xaa, 0x0e, 0xb1, 0xea, 0x96, 0x6d, 0x52, 0x13, 0x65, 0x25, 0xa9, 0x7a, 0xf7, 0xc2, 0x34, - 0x2f, 0x26, 0xf8, 0x29, 0x27, 0x9f, 0xcd, 0xce, 0x9f, 0xea, 0x33, 0x5b, 0xa3, 0xc4, 0x34, 0x84, - 0x60, 0x75, 0x3f, 0xcc, 0xc7, 0x53, 0x8b, 0x5e, 0x4b, 0xe6, 0xb6, 0xab, 0x78, 0x6a, 0xea, 0x78, - 0xe2, 0x08, 0x6a, 0xed, 0x9f, 0x29, 0xd8, 0x69, 0xd9, 0x58, 0xa3, 0x78, 0xd8, 0x1d, 0x8c, 0xec, - 0x99, 0x71, 0xa5, 0xe0, 0x5f, 0xcf, 0xb0, 0x43, 0xd1, 0xc7, 0xb0, 0x49, 0x8c, 0x33, 0x73, 0x66, - 0xe8, 0xaa, 0xa6, 0xeb, 0x36, 0x76, 0x1c, 0xec, 0x54, 0x12, 0xf7, 0x53, 0x8f, 0xf3, 0x4a, 0x59, - 0x32, 0x9a, 0x2e, 0x1d, 0x3d, 0x81, 0xb2, 0x39, 0xa3, 0x01, 0xe9, 0x4a, 0xf2, 0x7e, 0xe2, 0x71, - 0x5e, 0x29, 0xb9, 0x74, 0x29, 0x8c, 0x1e, 0x81, 0x47, 0x52, 0x8d, 0xd9, 0xf4, 0x0c, 0xdb, 0x95, - 0x14, 0x97, 0x2c, 0xba, 0xe4, 0x1e, 0xa7, 0xa2, 0x4f, 0x61, 0xc7, 0x35, 0x40, 0xc8, 0x39, 0xaa, - 0x8d, 0x2f, 0xf0, 0xbb, 0xca, 0x1a, 0x33, 0xe2, 0x38, 0x59, 0x49, 0x28, 0x5b, 0x52, 0x40, 0xac, - 0x70, 0x14, 0xc6, 0x66, 0x1b, 0x84, 0xd6, 0x55, 0xf2, 0xdc, 0xec, 0x62, 0x50, 0x9a, 0x19, 0xed, - 0x0a, 0xce, 0x1c, 0x6c, 0x1b, 0xda, 0x14, 0x57, 0xd2, 0xc2, 0x68, 0x49, 0x3f, 0x95, 0x64, 0xbf, - 0xa8, 0xa5, 0x39, 0xce, 0x5b, 0xd3, 0xd6, 0x2b, 0x99, 0x80, 0xe8, 0x40, 0x92, 0x99, 0xdf, 0xbc, - 0xef, 0xf3, 0xd4, 0x66, 0xb9, 0xac, 0xe7, 0x23, 0x4f, 0xaf, 0x5f, 0xd8, 0x53, 0x9c, 0x0b, 0x0a, - 0x7b, 0x9a, 0x11, 0xac, 0x71, 0x65, 0xc0, 0xf9, 0xfc, 0x19, 0x55, 0x21, 0x37, 0xc5, 0x54, 0xd3, - 0x35, 0xaa, 0x55, 0x0a, 0x9c, 0xee, 0xbd, 0x3f, 0x4f, 0x56, 0x12, 0xb5, 0x3f, 0xa7, 0x61, 0xdd, - 0x8d, 0x6c, 0xd7, 0x38, 0x37, 0xd1, 0x7d, 0x58, 0x77, 0x88, 0xa5, 0x52, 0x46, 0x50, 0x89, 0x5e, - 0x49, 0xf0, 0x45, 0xe0, 0x10, 0x4b, 0xc8, 0xe8, 0xe8, 0x19, 0xac, 0x5d, 0x11, 0x43, 0xaf, 0x14, - 0xef, 0x27, 0x1e, 0x17, 0x1b, 0xf7, 0xea, 0x12, 0x37, 0x75, 0xbf, 0x9a, 0x3a, 0x7f, 0x7a, 0x4d, - 0x0c, 0x5d, 0xe1, 0xc2, 0xd1, 0x68, 0x49, 0xde, 0x02, 0x2d, 0xa9, 0x95, 0xd1, 0xb2, 0x16, 0x89, - 0x96, 0x67, 0x90, 0xa7, 0xb6, 0x66, 0x38, 0x96, 0x69, 0xd3, 0xca, 0x06, 0x37, 0x7d, 0x27, 0x68, - 0xba, 0x64, 0x2a, 0x73, 0xb9, 0x78, 0x88, 0xa5, 0x6f, 0x0d, 0x31, 0x58, 0x19, 0x62, 0x99, 0xd5, - 0x21, 0x96, 0xbd, 0x05, 0xc4, 0x72, 0xb7, 0x81, 0x58, 0xfe, 0x06, 0x88, 0x15, 0x62, 0x20, 0xb6, - 0x1e, 0x84, 0x58, 0xad, 0x0d, 0x79, 0x0f, 0x09, 0xa8, 0x0c, 0xeb, 0x23, 0xe5, 0xb4, 0xf7, 0x5a, - 0x3d, 0xe9, 0xbc, 0x6c, 0xb6, 0xbe, 0x2c, 0xdf, 0x41, 0x9b, 0xb0, 0x21, 0x28, 0xdd, 0xde, 0x71, - 0xff, 0xb4, 0xd7, 0x2e, 0x27, 0x10, 0x82, 0xa2, 0x20, 0xf5, 0x4f, 0x47, 0x82, 0x96, 0xe4, 0x40, - 0x55, 0xe0, 0xc0, 0xab, 0x43, 0x5d, 0xf1, 0xbd, 0x81, 0x72, 0xd4, 0x80, 0x34, 0xc7, 0x2c, 0x07, - 0x6c, 0xa1, 0x71, 0xe0, 0x8f, 0xad, 0x5f, 0x9e, 0xa1, 0x53, 0x11, 0xa2, 0xb5, 0xbf, 0x67, 0x61, - 0x2b, 0x82, 0xbd, 0x42, 0x0e, 0xb8, 0x7e, 0x48, 0xc6, 0xf8, 0x21, 0x15, 0xf4, 0x03, 0xaa, 0x40, - 0xd6, 0x05, 0x02, 0xaf, 0x4e, 0x8a, 0xfb, 0xca, 0xdc, 0xaf, 0x4d, 0x26, 0xe6, 0x5b, 0xec, 0x4f, - 0x8c, 0xb4, 0x48, 0x0c, 0xc9, 0x98, 0x27, 0xc6, 0x23, 0x28, 0xb9, 0xc2, 0xae, 0xba, 0x8c, 0xc0, - 0x95, 0x24, 0xbb, 0xb8, 0x7a, 0x00, 0x1b, 0xda, 0x8c, 0x5e, 0x86, 0x0b, 0xcc, 0x3a, 0x23, 0x7a, - 0x91, 0x77, 0x85, 0x42, 0x85, 0x85, 0x0b, 0x79, 0x11, 0x6f, 0x41, 0xf6, 0x12, 0x6b, 0xba, 0x5b, - 0x25, 0x0b, 0x8d, 0x27, 0xcb, 0x3c, 0x5b, 0x7f, 0x25, 0x64, 0x3b, 0x06, 0xb5, 0xaf, 0x15, 0x77, - 0x25, 0x22, 0xb0, 0x23, 0x1f, 0x55, 0x6a, 0xaa, 0x1a, 0xa5, 0x36, 0x39, 0x9b, 0x51, 0x2c, 0xb2, - 0xa2, 0xd0, 0xf8, 0xde, 0x2a, 0x2a, 0x47, 0x66, 0xd3, 0x5b, 0x27, 0xd4, 0x6f, 0x5d, 0x2e, 0x72, - 0xd8, 0x56, 0x73, 0xfd, 0x6c, 0x37, 0xd7, 0xfa, 0xe2, 0x0a, 0x5b, 0xcd, 0xf5, 0x8c, 0xcc, 0xc0, - 0x97, 0x6c, 0x69, 0x8b, 0x1c, 0x74, 0x0c, 0x25, 0x9b, 0x18, 0x17, 0xc4, 0xb8, 0x50, 0x29, 0x99, - 0x62, 0x73, 0x46, 0x79, 0x5e, 0x14, 0x1a, 0x7b, 0x75, 0x71, 0xd0, 0xd6, 0xdd, 0x83, 0xb6, 0xde, - 0x96, 0x07, 0xb1, 0x52, 0x94, 0x2b, 0x46, 0x62, 0x01, 0xea, 0xc0, 0xe6, 0x54, 0x7b, 0xa7, 0x8e, - 0xb5, 0xc9, 0x44, 0x75, 0x4f, 0x6b, 0x9e, 0x45, 0x4b, 0xb5, 0x94, 0xa6, 0xda, 0xbb, 0x96, 0x36, - 0x99, 0xb8, 0x04, 0x16, 0xca, 0x2b, 0x9b, 0x38, 0x96, 0x8a, 0x0d, 0xed, 0x6c, 0x82, 0x75, 0x5e, - 0xe1, 0x72, 0xca, 0x3a, 0x27, 0x76, 0x04, 0xad, 0xfa, 0x1c, 0xd6, 0xfd, 0x1f, 0x85, 0xca, 0x90, - 0xba, 0xc2, 0xd7, 0x12, 0xdd, 0xec, 0x11, 0x6d, 0x43, 0xfa, 0x8d, 0x36, 0x99, 0xb9, 0xb8, 0x16, - 0x2f, 0xcf, 0x93, 0x3f, 0x48, 0x54, 0x5f, 0x40, 0x25, 0x2e, 0x0e, 0xb7, 0xd5, 0x13, 0xe7, 0xe4, - 0xdb, 0xe8, 0xa9, 0x8d, 0xe0, 0xd0, 0x2b, 0x07, 0x7d, 0x59, 0xa5, 0x02, 0xf5, 0xe0, 0x59, 0xb0, - 0x1e, 0x1c, 0xfa, 0xe3, 0x1e, 0x58, 0xe0, 0x2f, 0x08, 0xbf, 0xcb, 0xc0, 0x76, 0x14, 0xff, 0xbf, - 0x53, 0x11, 0xdc, 0xa3, 0x4d, 0x1c, 0x58, 0xee, 0x6b, 0xf0, 0xa4, 0x4a, 0xaf, 0x78, 0x52, 0xf9, - 0x0a, 0x4c, 0x26, 0x58, 0x60, 0xbe, 0xbd, 0x52, 0xd0, 0x0e, 0x97, 0x82, 0xa3, 0xa5, 0x4e, 0x8d, - 0xa9, 0x05, 0x5f, 0x2f, 0xaf, 0x05, 0x9f, 0xae, 0xa4, 0x73, 0xc5, 0x62, 0xf0, 0x75, 0x5c, 0x31, - 0x28, 0xac, 0xb2, 0xd7, 0xad, 0xaa, 0xc1, 0xff, 0x55, 0x76, 0x7d, 0x06, 0x7b, 0x2f, 0x31, 0x8d, - 0x39, 0x69, 0x6f, 0xcc, 0x85, 0xda, 0x00, 0xaa, 0x51, 0xcb, 0x1d, 0xcb, 0x34, 0x1c, 0xfc, 0x5e, - 0x27, 0xf5, 0xe7, 0xae, 0xc6, 0xc8, 0x5c, 0xbf, 0xd9, 0x22, 0x05, 0xf6, 0x23, 0xd7, 0x4b, 0x93, - 0xde, 0xab, 0x58, 0xec, 0xc1, 0xd6, 0x09, 0x71, 0x68, 0xa8, 0x2f, 0xe2, 0x97, 0x95, 0x97, 0xb0, - 0x1d, 0x64, 0xc9, 0x7d, 0x3e, 0x86, 0x34, 0xa1, 0x78, 0x2a, 0xfa, 0xa4, 0x42, 0x38, 0xad, 0x3d, - 0xfd, 0x5c, 0x86, 0x2b, 0x3a, 0x80, 0xaa, 0x54, 0x14, 0x11, 0x89, 0xda, 0x4f, 0x60, 0x3f, 0x92, - 0x3b, 0x77, 0xb4, 0x7f, 0xb7, 0x1b, 0x1c, 0xcd, 0x45, 0x6b, 0x87, 0x9e, 0xca, 0x28, 0x4f, 0xd7, - 0x86, 0x70, 0x10, 0xcd, 0x9e, 0x3b, 0xd2, 0xbf, 0xe5, 0x4d, 0x8e, 0x14, 0x7b, 0xfe, 0x10, 0x76, - 0xda, 0x78, 0x82, 0x17, 0x5b, 0xcc, 0x9b, 0xe3, 0xfa, 0x02, 0x76, 0x86, 0xdd, 0x41, 0x9b, 0x38, - 0x96, 0x46, 0xc7, 0x97, 0xca, 0x6c, 0x82, 0xdb, 0xc4, 0xc6, 0x63, 0x8a, 0xf6, 0x21, 0x6f, 0x9b, - 0xe6, 0x54, 0xe5, 0x15, 0x4f, 0xac, 0xcb, 0x31, 0x42, 0x8f, 0x55, 0xbb, 0x32, 0xa4, 0x2c, 0x62, - 0x48, 0xd8, 0xb3, 0xc7, 0x5a, 0x0f, 0xf6, 0x42, 0x7a, 0xba, 0x86, 0x4e, 0xde, 0x10, 0x7d, 0xa6, - 0x4d, 0xd0, 0x3d, 0x28, 0x70, 0x5d, 0x96, 0x8d, 0xcf, 0xc9, 0x3b, 0xd7, 0x0a, 0x46, 0x1a, 0x70, - 0x4a, 0x84, 0xbe, 0xcb, 0x05, 0xbb, 0xd8, 0x71, 0x8d, 0xf1, 0x7b, 0xe8, 0x42, 0x07, 0x90, 0xb7, - 0x35, 0x43, 0x37, 0xa7, 0xe4, 0x37, 0x98, 0x1f, 0x23, 0x39, 0x65, 0x4e, 0xa8, 0xfd, 0x31, 0x09, - 0xa5, 0xd0, 0x56, 0x48, 0x81, 0x6d, 0x5d, 0xbe, 0xab, 0xf6, 0x6c, 0x82, 0x55, 0x9d, 0x3b, 0x45, - 0xa2, 0xfb, 0xae, 0x3f, 0x28, 0x8b, 0xae, 0x7b, 0x75, 0x47, 0x41, 0xfa, 0xa2, 0x43, 0x7f, 0x09, - 0x95, 0xa0, 0x4e, 0xe2, 0x39, 0x88, 0x1b, 0x5b, 0x68, 0xd4, 0xe2, 0xf4, 0xce, 0x5d, 0xf9, 0xea, - 0x8e, 0xb2, 0xab, 0x47, 0x3b, 0x79, 0xc1, 0xe6, 0x31, 0x77, 0x18, 0xff, 0xe0, 0x25, 0x36, 0x0b, - 0xb7, 0x86, 0x6d, 0x16, 0xd4, 0xe3, 0x0c, 0xac, 0x31, 0x55, 0xb5, 0xdf, 0xa6, 0x7c, 0xcd, 0x83, - 0x7f, 0xb5, 0x0b, 0xb4, 0x4f, 0x84, 0xa0, 0x74, 0x50, 0x25, 0x6e, 0x33, 0x85, 0x4b, 0x31, 0x6c, - 0xb9, 0x90, 0x74, 0x7b, 0xd8, 0x1c, 0x15, 0x80, 0x74, 0xd0, 0x11, 0x6c, 0x5e, 0x12, 0x1d, 0xab, - 0xd6, 0xa5, 0x69, 0x60, 0xff, 0x00, 0x23, 0xa7, 0x94, 0x18, 0x63, 0xc0, 0xe8, 0xb2, 0x27, 0x8d, - 0x68, 0x13, 0x33, 0x91, 0x6d, 0xa2, 0x7b, 0xb9, 0x58, 0x8b, 0xb9, 0x5c, 0xa4, 0x43, 0x97, 0x8b, - 0x53, 0x00, 0xdf, 0xc1, 0x9a, 0x0d, 0xdd, 0x7c, 0x97, 0xb9, 0xa2, 0x1e, 0x3e, 0x57, 0x7d, 0x8a, - 0xaa, 0x9f, 0x41, 0xe9, 0x3f, 0x38, 0x9d, 0x6a, 0x7f, 0x4a, 0xf1, 0x76, 0x2b, 0x08, 0x8d, 0x73, - 0x13, 0x3d, 0x85, 0x6d, 0x96, 0xe6, 0x21, 0x78, 0xb9, 0xe9, 0xbe, 0xe9, 0x10, 0x2b, 0xb0, 0x44, - 0xf7, 0xc2, 0x95, 0xbc, 0x7d, 0xb8, 0x52, 0xab, 0x84, 0x6b, 0x6d, 0xe5, 0x70, 0x65, 0x97, 0x86, - 0x2b, 0x1d, 0x13, 0xae, 0x4c, 0x28, 0x5c, 0x27, 0x81, 0x70, 0xe5, 0x78, 0xb8, 0x3e, 0x89, 0xcf, - 0xa6, 0xc0, 0xd5, 0xe4, 0x5b, 0x8f, 0xd2, 0xfc, 0xc8, 0x89, 0x80, 0x87, 0xef, 0xc8, 0x09, 0x72, - 0x57, 0x38, 0x72, 0xc2, 0x1f, 0xe1, 0x96, 0xff, 0x3e, 0x1c, 0x78, 0xe5, 0x3f, 0x2a, 0x39, 0x6f, - 0x0b, 0x8f, 0xda, 0x37, 0x19, 0xd8, 0xf7, 0x30, 0x3e, 0xd0, 0x6c, 0x4a, 0xc6, 0xc4, 0xd2, 0x0c, - 0xba, 0xf2, 0xb1, 0x82, 0xee, 0x42, 0x81, 0x49, 0xf0, 0xae, 0x8c, 0x9a, 0xd2, 0x47, 0x79, 0x87, - 0x58, 0xac, 0xb0, 0x8c, 0x4c, 0x74, 0x08, 0x4c, 0xda, 0x85, 0x4b, 0xc9, 0x63, 0x4b, 0xa0, 0x04, - 0x0e, 0x9f, 0x54, 0xe8, 0xf0, 0xf9, 0x2e, 0x6c, 0x5b, 0x73, 0x9b, 0x54, 0xa2, 0x63, 0x83, 0x12, - 0x7a, 0x2d, 0x73, 0x7b, 0xcb, 0xc7, 0xeb, 0x4a, 0x16, 0x7a, 0x02, 0x65, 0xff, 0x12, 0xdf, 0x2d, - 0xbe, 0xe4, 0xa3, 0x47, 0x69, 0xf7, 0x20, 0x97, 0x5b, 0xd0, 0xfe, 0x85, 0x8b, 0xbe, 0x37, 0xb0, - 0xeb, 0x5f, 0xe2, 0x43, 0xa2, 0xb8, 0xe5, 0xff, 0x68, 0xb1, 0x70, 0x2c, 0x3a, 0xb5, 0xee, 0x23, - 0x85, 0xc1, 0xb9, 0x63, 0x45, 0xf1, 0x58, 0x96, 0xe8, 0x74, 0x7a, 0xee, 0x66, 0x09, 0x7b, 0x46, - 0x8f, 0x60, 0xc3, 0x9a, 0x68, 0xd7, 0x2a, 0xeb, 0x92, 0xa9, 0x69, 0x88, 0x61, 0x58, 0x8e, 0x0f, - 0xda, 0xd6, 0x19, 0x43, 0x91, 0x74, 0xd6, 0xb0, 0x70, 0x41, 0x9d, 0x68, 0x13, 0x2e, 0x28, 0x1b, - 0x5e, 0x46, 0x6c, 0x4b, 0x5a, 0x74, 0x72, 0x43, 0x74, 0x72, 0xff, 0x0f, 0x35, 0xf3, 0xdf, 0x81, - 0x75, 0xd1, 0xc6, 0xab, 0xbc, 0x7d, 0xe7, 0x83, 0xd6, 0x9c, 0x52, 0x10, 0xb4, 0xd7, 0x8c, 0x54, - 0x7d, 0x05, 0xd5, 0x78, 0x87, 0xdf, 0x2a, 0xdd, 0xff, 0x92, 0x00, 0x14, 0x8c, 0x28, 0xaf, 0xc9, - 0x0f, 0xa1, 0x18, 0x44, 0xa9, 0xd4, 0xb6, 0x11, 0xc0, 0x67, 0x2c, 0x98, 0x93, 0xf1, 0x60, 0x5e, - 0x9a, 0x1c, 0xfe, 0xc4, 0x23, 0xba, 0xcc, 0x09, 0x37, 0xf1, 0xba, 0x7a, 0xed, 0x6f, 0x09, 0x38, - 0xe4, 0xfd, 0xef, 0x39, 0xb6, 0xa3, 0x93, 0x3b, 0xce, 0xa2, 0xc4, 0x8a, 0x16, 0x25, 0x43, 0x16, - 0xdd, 0x83, 0x02, 0x95, 0x1b, 0xb2, 0x52, 0x20, 0x0c, 0x06, 0x97, 0x34, 0x32, 0x17, 0x91, 0xb8, - 0xb6, 0x88, 0xc4, 0xda, 0x5f, 0xd7, 0xa0, 0x30, 0xec, 0x0e, 0xf8, 0x57, 0x30, 0xf7, 0x7e, 0x00, - 0x59, 0xf7, 0x1b, 0x85, 0x61, 0x99, 0x31, 0xff, 0x40, 0xb4, 0x07, 0x39, 0xaf, 0x2e, 0x09, 0x53, - 0xb2, 0xf2, 0xac, 0x5a, 0xee, 0xb8, 0x0f, 0x20, 0xcb, 0x99, 0x9e, 0xd3, 0x32, 0xec, 0x75, 0x49, - 0x84, 0xd2, 0xf1, 0xfe, 0x38, 0x82, 0xdc, 0xb9, 0x6d, 0x4e, 0xd5, 0x99, 0x4d, 0x78, 0xfe, 0x15, - 0x1a, 0x25, 0x7f, 0x1d, 0x3f, 0xb5, 0x89, 0x92, 0x65, 0x02, 0xa7, 0x36, 0x41, 0x1f, 0x41, 0x86, - 0x9a, 0x5c, 0x32, 0x1b, 0x2d, 0x99, 0xa6, 0x26, 0x93, 0xfb, 0x1c, 0xca, 0x72, 0x34, 0xa5, 0x9e, - 0x63, 0x8d, 0xce, 0x6c, 0x2c, 0x26, 0x72, 0xc5, 0xc6, 0x96, 0x7f, 0xc5, 0x0b, 0xc1, 0x53, 0x4a, - 0x52, 0x58, 0xbe, 0x3b, 0xe8, 0xfb, 0x50, 0xe0, 0x0e, 0x73, 0xa8, 0x46, 0x67, 0x0e, 0x2f, 0x67, - 0xc5, 0xc6, 0xae, 0x7f, 0x29, 0xf3, 0xed, 0x90, 0x73, 0x15, 0x18, 0x7b, 0xcf, 0xac, 0x54, 0x8f, - 0x79, 0xd9, 0xd2, 0x55, 0x8d, 0xf2, 0xb9, 0x76, 0x4a, 0xc9, 0x4b, 0x4a, 0x93, 0xf2, 0x4a, 0x4e, - 0x35, 0x5b, 0xb2, 0x41, 0xb0, 0x25, 0xa5, 0x49, 0x59, 0x38, 0xb0, 0xa1, 0x0b, 0x66, 0x81, 0x33, - 0xb3, 0xfc, 0xbd, 0x49, 0xd1, 0x0b, 0xd8, 0xd4, 0x89, 0x33, 0x36, 0x0d, 0x03, 0x8f, 0xa9, 0x6a, - 0x63, 0xcd, 0x91, 0xc9, 0x5e, 0x6c, 0xec, 0x79, 0x76, 0xb5, 0x3d, 0x09, 0x85, 0x0b, 0x28, 0x65, - 0x3d, 0x44, 0x61, 0xa9, 0x89, 0x6d, 0xdb, 0xb4, 0x79, 0x05, 0xcb, 0x2b, 0xe2, 0xa5, 0xf6, 0x87, - 0x04, 0x64, 0x84, 0x07, 0x59, 0x9d, 0x9c, 0x39, 0xd8, 0x96, 0x40, 0xe1, 0xcf, 0x8c, 0x76, 0x69, - 0x3a, 0xd4, 0x9d, 0x36, 0xb1, 0x67, 0x54, 0x84, 0x24, 0xb1, 0x24, 0x30, 0x92, 0xc4, 0x62, 0x32, - 0x7c, 0x84, 0xc4, 0xf0, 0xb0, 0xa1, 0xf0, 0xe7, 0xf7, 0x9a, 0x2d, 0x1d, 0x5d, 0xc9, 0x9f, 0x88, - 0xdc, 0x59, 0xd3, 0x2e, 0xaf, 0x18, 0xea, 0x48, 0x69, 0xf6, 0x86, 0x83, 0xbe, 0x32, 0x52, 0x9b, - 0xa7, 0xa3, 0x7e, 0xf9, 0x0e, 0xda, 0x81, 0xcd, 0x20, 0xfd, 0xb4, 0x3d, 0x28, 0x27, 0x16, 0xc9, - 0xa3, 0xd6, 0xa0, 0x9c, 0x8c, 0x20, 0x9f, 0x0c, 0xcb, 0xa9, 0xa3, 0xb7, 0xb0, 0x11, 0x08, 0x26, - 0x97, 0x6b, 0x0d, 0xd5, 0x56, 0xf3, 0xe4, 0x44, 0xed, 0xf6, 0x5a, 0xfd, 0x2f, 0xba, 0xbd, 0x97, - 0xe5, 0x3b, 0xa8, 0x0a, 0xbb, 0x8c, 0x3c, 0x68, 0x2a, 0xa3, 0x6e, 0xab, 0x3b, 0x68, 0xf6, 0x46, - 0xea, 0x8f, 0xfb, 0xdd, 0x5e, 0xa7, 0x5d, 0x4e, 0xa0, 0x22, 0x00, 0xe3, 0x35, 0x5b, 0xa3, 0xee, - 0x4f, 0x3b, 0xe5, 0x24, 0xda, 0x86, 0x32, 0x7b, 0x6f, 0x77, 0x87, 0xad, 0x7e, 0xaf, 0xd7, 0x69, - 0x8d, 0x3a, 0xed, 0x72, 0x0a, 0x6d, 0x40, 0x9e, 0x51, 0x3b, 0x8a, 0xd2, 0x57, 0xca, 0x6b, 0x47, - 0x4f, 0x00, 0xe6, 0x00, 0x44, 0x39, 0x58, 0xeb, 0xf5, 0x7b, 0x1d, 0xf1, 0x1b, 0xc5, 0x6b, 0xa5, - 0x3b, 0x1c, 0xa8, 0x9d, 0x5e, 0xf3, 0xf8, 0x84, 0xe9, 0x6f, 0xfc, 0x23, 0x0f, 0xa9, 0x61, 0x77, - 0x80, 0x06, 0xb0, 0xee, 0x6f, 0xf3, 0xd1, 0xfc, 0xba, 0x13, 0x31, 0x18, 0xa8, 0x1e, 0xc6, 0x70, - 0xc5, 0xd5, 0xa9, 0x96, 0xfa, 0x7d, 0x32, 0x81, 0xbe, 0xf2, 0xfd, 0xda, 0xea, 0x6f, 0xd1, 0xd1, - 0xc3, 0xc5, 0x43, 0x38, 0x62, 0x22, 0x50, 0x5d, 0xda, 0xe3, 0x23, 0x15, 0x76, 0xa3, 0x87, 0xa6, - 0xe8, 0xa3, 0x45, 0xf5, 0x51, 0xfd, 0x7f, 0x75, 0x79, 0x43, 0x8f, 0x7e, 0x01, 0x68, 0x71, 0xf0, - 0x83, 0xe6, 0x8d, 0x61, 0xec, 0x50, 0xa9, 0xfa, 0x60, 0xa9, 0x8c, 0xbc, 0x5d, 0xfe, 0x0a, 0xb6, - 0x22, 0xa6, 0x38, 0x28, 0xbc, 0x36, 0xd2, 0xf2, 0x0f, 0x97, 0x0b, 0xcd, 0x77, 0x88, 0x98, 0xa8, - 0xf8, 0x76, 0x88, 0x9f, 0xc6, 0xf8, 0x76, 0x58, 0x36, 0x94, 0x19, 0x7b, 0xa3, 0xa1, 0xe0, 0x47, - 0x2c, 0xac, 0x8e, 0xfc, 0x8a, 0x87, 0x37, 0x48, 0xc9, 0x4d, 0x5e, 0x42, 0x31, 0x38, 0x51, 0x41, - 0xf3, 0x06, 0x3a, 0x72, 0xd4, 0x52, 0x8d, 0x1e, 0x45, 0x05, 0xf0, 0x18, 0x18, 0x31, 0x3c, 0x5c, - 0xa9, 0x9b, 0xac, 0x2e, 0x6d, 0x00, 0x7c, 0xde, 0x0e, 0xe8, 0x5e, 0xf0, 0x76, 0x94, 0xe6, 0x0f, - 0x97, 0x0b, 0x49, 0x47, 0x7c, 0xe5, 0x1b, 0x2d, 0xc5, 0xd8, 0xbf, 0xac, 0xf7, 0xb8, 0xc1, 0xfe, - 0x2f, 0x61, 0x3b, 0xea, 0x4a, 0xec, 0x8b, 0xe5, 0x92, 0x1b, 0x73, 0x75, 0xdf, 0xaf, 0x3b, 0x7c, - 0xff, 0xfa, 0x19, 0xec, 0x46, 0xdf, 0x73, 0x7c, 0xa9, 0xba, 0xf4, 0x22, 0x54, 0xdd, 0x5d, 0xb8, - 0x71, 0x76, 0xa6, 0x16, 0xbd, 0x3e, 0x7e, 0xf1, 0xf3, 0x07, 0x17, 0x84, 0x5e, 0xce, 0xce, 0xea, - 0x63, 0x73, 0xfa, 0x54, 0xea, 0x12, 0x7f, 0x09, 0x19, 0x9b, 0x13, 0x97, 0xf0, 0x4d, 0x72, 0xe3, - 0x84, 0xbc, 0xc1, 0xaf, 0x09, 0xad, 0x0f, 0x18, 0xeb, 0x5f, 0xc9, 0xa2, 0x7c, 0x7f, 0xfe, 0x9c, - 0x13, 0xce, 0x32, 0x7c, 0xc9, 0xb3, 0x7f, 0x07, 0x00, 0x00, 0xff, 0xff, 0xf4, 0xf6, 0x57, 0xda, - 0x91, 0x22, 0x00, 0x00, + // 2817 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x5a, 0xdd, 0x6f, 0x1b, 0x59, + 0x15, 0x8f, 0xed, 0xf8, 0xeb, 0x38, 0x71, 0x9c, 0x9b, 0x8f, 0x75, 0x9d, 0xa4, 0x2d, 0xee, 0x76, + 0xb7, 0xed, 0x2e, 0xee, 0x92, 0x8a, 0xa5, 0x5b, 0xb1, 0x0b, 0x4e, 0x9c, 0x36, 0xa6, 0x59, 0xc7, + 0x4c, 0x1c, 0xc4, 0xa2, 0x85, 0x61, 0xe2, 0xb9, 0x49, 0x66, 0x6b, 0xcf, 0x0c, 0x33, 0xd7, 0xdd, + 0x96, 0x47, 0x24, 0xa4, 0xe5, 0x85, 0xff, 0x01, 0x21, 0xf1, 0xb0, 0x48, 0xbc, 0x21, 0xf1, 0x84, + 0xc4, 0x1f, 0xc0, 0x2b, 0x3c, 0xf1, 0xc4, 0x1b, 0x7f, 0x05, 0xba, 0x1f, 0x33, 0xbe, 0xf3, 0x69, + 0xa7, 0xdb, 0x95, 0x10, 0x6f, 0x33, 0xe7, 0x9c, 0x7b, 0xee, 0x99, 0x73, 0x7f, 0xe7, 0xe3, 0x1e, + 0x1b, 0x56, 0x47, 0xc6, 0x73, 0xfc, 0xcc, 0x20, 0xaa, 0x6b, 0xd8, 0x2d, 0xdb, 0xb1, 0x88, 0x85, + 0x8a, 0x82, 0xd4, 0xb8, 0x7e, 0x61, 0x59, 0x17, 0x23, 0x7c, 0x9f, 0x91, 0xcf, 0x26, 0xe7, 0xf7, + 0xf5, 0x89, 0xa3, 0x11, 0xc3, 0x32, 0xb9, 0x60, 0x63, 0x2b, 0xcc, 0xc7, 0x63, 0x9b, 0xbc, 0x14, + 0xcc, 0x75, 0x4f, 0xf1, 0xd8, 0xd2, 0xf1, 0xc8, 0xe5, 0xd4, 0xe6, 0xbf, 0x72, 0xb0, 0xb1, 0xef, + 0x60, 0x8d, 0xe0, 0x93, 0x6e, 0x7f, 0xe0, 0x4c, 0xcc, 0x67, 0x0a, 0xfe, 0xc5, 0x04, 0xbb, 0x04, + 0xbd, 0x03, 0xab, 0x86, 0x79, 0x66, 0x4d, 0x4c, 0x5d, 0xd5, 0x74, 0xdd, 0xc1, 0xae, 0x8b, 0xdd, + 0x7a, 0xe6, 0x66, 0xee, 0x4e, 0x59, 0xa9, 0x09, 0x46, 0xdb, 0xa3, 0xa3, 0xbb, 0x50, 0xb3, 0x26, + 0x24, 0x20, 0x5d, 0xcf, 0xde, 0xcc, 0xdc, 0x29, 0x2b, 0x2b, 0x1e, 0x5d, 0x08, 0xa3, 0xb7, 0xc1, + 0x27, 0xa9, 0xe6, 0x64, 0x7c, 0x86, 0x9d, 0x7a, 0x8e, 0x49, 0x56, 0x3d, 0x72, 0x8f, 0x51, 0xd1, + 0xfb, 0xb0, 0xe1, 0x19, 0xc0, 0xe5, 0x5c, 0xd5, 0xc1, 0x17, 0xf8, 0x45, 0x7d, 0x91, 0x1a, 0xb1, + 0x97, 0xad, 0x67, 0x94, 0x35, 0x21, 0xc0, 0x57, 0xb8, 0x0a, 0x65, 0xd3, 0x0d, 0x42, 0xeb, 0xea, + 0x65, 0x66, 0x76, 0x35, 0x28, 0x4d, 0x8d, 0xf6, 0x04, 0x27, 0x2e, 0x76, 0x4c, 0x6d, 0x8c, 0xeb, + 0x79, 0x6e, 0xb4, 0xa0, 0x9f, 0x0a, 0xb2, 0x2c, 0x6a, 0x6b, 0xae, 0xfb, 0xb9, 0xe5, 0xe8, 0xf5, + 0x42, 0x40, 0xb4, 0x2f, 0xc8, 0xd4, 0x6f, 0xfe, 0xf7, 0xf9, 0x6a, 0x8b, 0x4c, 0xd6, 0xf7, 0x91, + 0xaf, 0x57, 0x16, 0xf6, 0x15, 0x97, 0x82, 0xc2, 0xbe, 0x66, 0x04, 0x8b, 0x4c, 0x19, 0x30, 0x3e, + 0x7b, 0x46, 0x0d, 0x28, 0x8d, 0x31, 0xd1, 0x74, 0x8d, 0x68, 0xf5, 0x0a, 0xa3, 0xfb, 0xef, 0x8f, + 0xb2, 0xf5, 0x4c, 0xf3, 0x0f, 0x79, 0x58, 0xf2, 0x4e, 0xb6, 0x6b, 0x9e, 0x5b, 0xe8, 0x26, 0x2c, + 0xb9, 0x86, 0xad, 0x12, 0x4a, 0x50, 0x0d, 0xbd, 0x9e, 0x61, 0x8b, 0xc0, 0x35, 0x6c, 0x2e, 0xa3, + 0xa3, 0x07, 0xb0, 0xf8, 0xcc, 0x30, 0xf5, 0x7a, 0xf5, 0x66, 0xe6, 0x4e, 0x75, 0xf7, 0x46, 0x4b, + 0xe0, 0xa6, 0x25, 0xab, 0x69, 0xb1, 0xa7, 0xa7, 0x86, 0xa9, 0x2b, 0x4c, 0x38, 0x1e, 0x2d, 0xd9, + 0x2b, 0xa0, 0x25, 0x37, 0x37, 0x5a, 0x16, 0x63, 0xd1, 0xf2, 0x00, 0xca, 0xc4, 0xd1, 0x4c, 0xd7, + 0xb6, 0x1c, 0x52, 0x5f, 0x66, 0xa6, 0x6f, 0x04, 0x4d, 0x17, 0x4c, 0x65, 0x2a, 0x97, 0x0c, 0xb1, + 0xfc, 0x95, 0x21, 0x06, 0x73, 0x43, 0xac, 0x30, 0x3f, 0xc4, 0x8a, 0x57, 0x80, 0x58, 0xe9, 0x2a, + 0x10, 0x2b, 0xcf, 0x80, 0x58, 0x25, 0x01, 0x62, 0x4b, 0x41, 0x88, 0x35, 0x3b, 0x50, 0xf6, 0x91, + 0x80, 0x6a, 0xb0, 0x34, 0x50, 0x4e, 0x7b, 0x4f, 0xd5, 0xa3, 0x83, 0x27, 0xed, 0xfd, 0x4f, 0x6a, + 0x0b, 0x68, 0x15, 0x96, 0x39, 0xa5, 0xdb, 0xdb, 0x3b, 0x3e, 0xed, 0x75, 0x6a, 0x19, 0x84, 0xa0, + 0xca, 0x49, 0xc7, 0xa7, 0x03, 0x4e, 0xcb, 0x32, 0xa0, 0x2a, 0xb0, 0xed, 0xe7, 0xa1, 0x2e, 0xff, + 0xde, 0x40, 0x3a, 0xda, 0x85, 0x3c, 0xc3, 0x2c, 0x03, 0x6c, 0x65, 0x77, 0x5b, 0x3e, 0x5b, 0x59, + 0x9e, 0xa2, 0x53, 0xe1, 0xa2, 0xcd, 0xbf, 0x66, 0x60, 0xfb, 0xd4, 0xd6, 0x93, 0x95, 0xce, 0x0e, + 0x86, 0x87, 0x50, 0x74, 0xb0, 0x3d, 0xd2, 0x86, 0x98, 0xe5, 0xb3, 0x19, 0x1b, 0x1f, 0x2e, 0x28, + 0x9e, 0x38, 0x7a, 0x08, 0x85, 0x09, 0xdb, 0x9b, 0x41, 0xbb, 0xb2, 0x7b, 0x3d, 0x69, 0x21, 0xb7, + 0xf0, 0x70, 0x41, 0x11, 0xf2, 0x7b, 0x25, 0x28, 0x68, 0x43, 0x9a, 0xd6, 0x9b, 0x7f, 0x29, 0xc2, + 0x5a, 0xcc, 0x36, 0x73, 0xd8, 0xed, 0x1d, 0x64, 0x36, 0xe1, 0x20, 0x73, 0xc1, 0x83, 0x44, 0x75, + 0x28, 0x7a, 0x48, 0x66, 0xe9, 0x55, 0xf1, 0x5e, 0x29, 0x7e, 0xb4, 0xd1, 0xc8, 0xfa, 0x1c, 0xcb, + 0x91, 0x9d, 0xe7, 0x91, 0x2d, 0x18, 0xd3, 0xc8, 0x7e, 0x1b, 0x56, 0x3c, 0x61, 0x4f, 0x5d, 0x81, + 0x07, 0x86, 0x20, 0x7b, 0x81, 0x71, 0x0b, 0x96, 0xb5, 0x09, 0xb9, 0x0c, 0x67, 0xc8, 0x25, 0x4a, + 0xf4, 0xa1, 0xeb, 0x09, 0x85, 0x32, 0x23, 0x13, 0xf2, 0x21, 0xbb, 0x0f, 0xc5, 0x4b, 0xac, 0xe9, + 0x5e, 0x9a, 0xaf, 0xec, 0xde, 0x4d, 0x3b, 0xa1, 0xd6, 0x21, 0x97, 0x3d, 0x30, 0x89, 0xf3, 0x52, + 0xf1, 0x56, 0x22, 0x03, 0x36, 0xc4, 0xa3, 0x4a, 0x2c, 0x55, 0x23, 0xc4, 0x31, 0xce, 0x26, 0x04, + 0xf3, 0xb0, 0xae, 0xec, 0x7e, 0x7b, 0x1e, 0x95, 0x03, 0xab, 0xed, 0xaf, 0xe3, 0xea, 0xd7, 0x2e, + 0xa3, 0x1c, 0xba, 0xd5, 0x54, 0x3f, 0xdd, 0xcd, 0xb3, 0xbe, 0x3a, 0xc7, 0x56, 0x53, 0x3d, 0x03, + 0x2b, 0xf0, 0x25, 0x6b, 0x5a, 0x94, 0x83, 0xf6, 0x60, 0xc5, 0x31, 0xcc, 0x0b, 0xc3, 0xbc, 0x50, + 0x89, 0x31, 0xc6, 0xd6, 0x84, 0xb0, 0xc0, 0xae, 0xec, 0x5e, 0x6b, 0xf1, 0x4e, 0xa1, 0xe5, 0x75, + 0x0a, 0xad, 0x8e, 0xe8, 0x24, 0x94, 0xaa, 0x58, 0x31, 0xe0, 0x0b, 0xd0, 0x01, 0xac, 0x8e, 0xb5, + 0x17, 0xea, 0x50, 0x1b, 0x8d, 0x54, 0xaf, 0xdd, 0x60, 0x69, 0x20, 0x55, 0xcb, 0xca, 0x58, 0x7b, + 0xb1, 0xaf, 0x8d, 0x46, 0x1e, 0x81, 0x1e, 0xe5, 0x33, 0xc7, 0x70, 0x6d, 0x15, 0x9b, 0xda, 0xd9, + 0x08, 0xeb, 0x2c, 0x45, 0x97, 0x94, 0x25, 0x46, 0x3c, 0xe0, 0xb4, 0xc6, 0x23, 0x58, 0x92, 0x3f, + 0x0a, 0xd5, 0x20, 0xf7, 0x0c, 0xbf, 0x14, 0xe8, 0xa6, 0x8f, 0x68, 0x1d, 0xf2, 0xcf, 0xb5, 0xd1, + 0xc4, 0xc3, 0x35, 0x7f, 0x79, 0x94, 0x7d, 0x98, 0x69, 0x3c, 0x86, 0x7a, 0xd2, 0x39, 0x5c, 0x55, + 0x4f, 0x92, 0x93, 0xaf, 0xa2, 0xa7, 0xf9, 0xdb, 0x1c, 0x6c, 0xc4, 0x06, 0x3a, 0xfa, 0xe6, 0x34, + 0xd4, 0x78, 0x2e, 0x5b, 0xf3, 0x8f, 0xfc, 0xc8, 0x70, 0x09, 0x97, 0x9a, 0xc6, 0xdf, 0xf7, 0xe3, + 0xe2, 0x2f, 0x9b, 0xbc, 0x30, 0x1a, 0x94, 0xdf, 0x8d, 0x06, 0x65, 0x2e, 0x79, 0x7d, 0x38, 0x52, + 0xef, 0x84, 0x23, 0x95, 0xd5, 0xdf, 0xc3, 0x85, 0x60, 0xac, 0x7e, 0x91, 0xc9, 0xf8, 0x92, 0x7e, + 0xb8, 0xb2, 0x66, 0xea, 0x30, 0x13, 0x0c, 0x58, 0x2a, 0xf9, 0x86, 0xc8, 0x4e, 0xac, 0x14, 0x1e, + 0x66, 0x79, 0x7e, 0xa2, 0x8c, 0x1b, 0x52, 0x8a, 0x62, 0x19, 0xe1, 0x30, 0x37, 0x4d, 0x52, 0x5f, + 0x64, 0x32, 0x7b, 0x35, 0xa8, 0xaa, 0x01, 0x73, 0xa6, 0x14, 0x6f, 0xdb, 0xbd, 0x22, 0xe4, 0x55, + 0xc6, 0xaa, 0x40, 0x59, 0xf5, 0x4b, 0xd5, 0x00, 0x76, 0xfc, 0x02, 0x73, 0x2c, 0xea, 0x5e, 0xa0, + 0x18, 0x3c, 0x08, 0x56, 0x98, 0x1d, 0x39, 0x10, 0x03, 0x0b, 0xe4, 0x12, 0xf3, 0xb7, 0x0c, 0xec, + 0xf8, 0x25, 0x26, 0x56, 0xed, 0xec, 0x5c, 0xfd, 0x41, 0xb8, 0xc6, 0xa4, 0x6f, 0x2d, 0x17, 0x99, + 0x0f, 0x42, 0x45, 0xe6, 0x46, 0xe2, 0xca, 0x94, 0x2a, 0xf3, 0xeb, 0x02, 0xac, 0xc7, 0x6d, 0xf4, + 0xf5, 0x94, 0x19, 0xaf, 0xe1, 0xe3, 0x6d, 0x9c, 0xf7, 0x1a, 0xec, 0xdf, 0xf2, 0x73, 0xf6, 0x6f, + 0x52, 0xd5, 0x2a, 0x04, 0xab, 0xd6, 0xeb, 0xab, 0x2f, 0x9d, 0x70, 0x7d, 0xb9, 0x97, 0x7a, 0x3a, + 0x09, 0x05, 0xe6, 0xb3, 0xf4, 0x02, 0xf3, 0xfe, 0x5c, 0x3a, 0xe7, 0xac, 0x30, 0x9f, 0x25, 0x55, + 0x98, 0xca, 0x3c, 0x7b, 0x5d, 0xa9, 0xc4, 0xfc, 0x5f, 0xa5, 0xec, 0x5f, 0xe5, 0x60, 0x33, 0x3e, + 0x6c, 0xd0, 0xce, 0x14, 0xb7, 0x19, 0x91, 0xfe, 0x3c, 0x02, 0x4d, 0x5b, 0x0f, 0x65, 0xf0, 0x66, + 0x53, 0xc0, 0x7b, 0x98, 0x91, 0xe0, 0x4b, 0x57, 0x4a, 0xc5, 0x20, 0x37, 0x47, 0x31, 0x48, 0x48, + 0xc6, 0xd9, 0xb9, 0x93, 0x71, 0x6e, 0x56, 0x32, 0x5e, 0x4c, 0x4b, 0xc6, 0xf9, 0x60, 0x32, 0x06, + 0x28, 0x79, 0x35, 0x69, 0x6f, 0x09, 0x40, 0xf5, 0xbf, 0xec, 0x2b, 0xa4, 0xe9, 0x0f, 0xe1, 0xda, + 0x13, 0x4c, 0x5e, 0xb5, 0x5f, 0x6f, 0xf6, 0xa1, 0x11, 0xb7, 0xdc, 0xb5, 0x2d, 0xd3, 0xc5, 0xaf, + 0x74, 0x89, 0xf8, 0xc8, 0xd3, 0xf8, 0x6a, 0xd9, 0xbd, 0xa9, 0xc0, 0x56, 0xec, 0x7a, 0x61, 0xd2, + 0x2b, 0x55, 0x9d, 0x6b, 0xb0, 0x46, 0xd1, 0x11, 0x1a, 0xd9, 0xb0, 0x7b, 0xd4, 0x13, 0x58, 0x0f, + 0xb2, 0xc4, 0x3e, 0xef, 0x40, 0xde, 0x20, 0x78, 0xcc, 0x47, 0x38, 0x95, 0x30, 0x3c, 0x7d, 0xfd, + 0x4c, 0x86, 0x29, 0xda, 0x86, 0x86, 0x50, 0x14, 0x73, 0x12, 0xcd, 0x1f, 0xc2, 0x56, 0x2c, 0x77, + 0xea, 0x68, 0x79, 0xb7, 0x19, 0x8e, 0x66, 0xa2, 0xcd, 0x1d, 0x5f, 0x65, 0x9c, 0xa7, 0x9b, 0x27, + 0xb0, 0x1d, 0xcf, 0x9e, 0x3a, 0x52, 0xde, 0x72, 0x96, 0x23, 0xf9, 0x9e, 0x1f, 0xc0, 0x46, 0x07, + 0x8f, 0x70, 0x74, 0xfa, 0x35, 0xfb, 0x5c, 0x1f, 0xb3, 0xfe, 0xae, 0x63, 0xb8, 0xb6, 0x46, 0x86, + 0x97, 0xca, 0x64, 0x84, 0x3b, 0x86, 0x83, 0x87, 0x04, 0x6d, 0x41, 0xd9, 0xb1, 0xac, 0x31, 0xc3, + 0xb6, 0x58, 0x57, 0xa2, 0x84, 0x1e, 0x2d, 0x39, 0x35, 0xc8, 0xd9, 0x86, 0x29, 0x72, 0x0f, 0x7d, + 0x6c, 0xf6, 0xe0, 0x5a, 0x48, 0x4f, 0xd7, 0xd4, 0x8d, 0xe7, 0x86, 0x3e, 0xd1, 0x46, 0xe8, 0x06, + 0x54, 0x98, 0x2e, 0xdb, 0xc1, 0xe7, 0xc6, 0x0b, 0xcf, 0x0a, 0x4a, 0xea, 0x33, 0x4a, 0x8c, 0xbe, + 0xcb, 0x88, 0x5d, 0xb4, 0x11, 0xc7, 0xf8, 0x15, 0x74, 0xa1, 0x6d, 0x28, 0x3b, 0x9a, 0xa9, 0x5b, + 0x63, 0xe3, 0x97, 0xbc, 0xc3, 0x28, 0x29, 0x53, 0x42, 0xf3, 0x77, 0x59, 0x58, 0x09, 0x6d, 0x85, + 0x14, 0x58, 0xd7, 0xc5, 0xbb, 0xea, 0x4c, 0x46, 0x58, 0xd5, 0x99, 0x53, 0x04, 0xba, 0x03, 0x77, + 0xe0, 0xa8, 0xeb, 0x0e, 0x17, 0x14, 0xa4, 0x47, 0x1d, 0xfa, 0x33, 0xa8, 0x07, 0x75, 0x1a, 0xbe, + 0x83, 0x44, 0xc3, 0xd4, 0x4c, 0xd2, 0x3b, 0x75, 0xe5, 0xe1, 0x82, 0xb2, 0xa9, 0xc7, 0x3b, 0x39, + 0x62, 0xf3, 0x90, 0x39, 0x2c, 0xee, 0xde, 0x1e, 0x75, 0x6b, 0xd8, 0x66, 0x4e, 0xdd, 0x2b, 0xc0, + 0x22, 0x55, 0xd5, 0xfc, 0x77, 0x4e, 0x9a, 0x6b, 0xc8, 0xab, 0x3d, 0xa0, 0xb5, 0x61, 0x39, 0xb0, + 0x39, 0xeb, 0x41, 0x42, 0x11, 0x13, 0xfc, 0xa2, 0x73, 0x4b, 0x59, 0x92, 0x77, 0x44, 0xef, 0xf1, + 0xbd, 0x84, 0x8f, 0xeb, 0x49, 0x2b, 0xd9, 0x38, 0x8b, 0x49, 0xa2, 0x1b, 0xb4, 0x5e, 0x71, 0x64, + 0x8b, 0x29, 0x1d, 0x63, 0x96, 0x08, 0xc7, 0xb6, 0x8b, 0x5a, 0xb0, 0x7a, 0x69, 0xe8, 0x58, 0xb5, + 0x2f, 0x2d, 0x13, 0xcb, 0x63, 0xda, 0x12, 0x13, 0x5c, 0xa1, 0xcc, 0x3e, 0xe5, 0x89, 0xe9, 0xdb, + 0x3b, 0xd1, 0x81, 0x58, 0xc1, 0x57, 0x1b, 0x1e, 0x8a, 0x6d, 0x8a, 0x82, 0xc3, 0x6a, 0x17, 0xb7, + 0x8a, 0xb5, 0x63, 0xd7, 0xa5, 0x7a, 0x93, 0xf7, 0x79, 0xd3, 0xe6, 0xf1, 0x13, 0x00, 0xa9, 0x71, + 0x2a, 0x86, 0xae, 0xcb, 0x69, 0x5e, 0x6e, 0x85, 0xda, 0x0b, 0xa6, 0x58, 0x52, 0xd6, 0xf8, 0x10, + 0x56, 0xbe, 0x42, 0x07, 0xd2, 0xfc, 0xbb, 0x3c, 0x68, 0x8a, 0x3b, 0xe5, 0xfb, 0xb0, 0x4e, 0xd3, + 0x49, 0x08, 0xc6, 0x5e, 0x5a, 0x59, 0x75, 0x0d, 0x3b, 0x70, 0xc6, 0xb3, 0xe6, 0x4e, 0x61, 0x40, + 0xcc, 0x3d, 0x77, 0x92, 0x17, 0xa6, 0xdc, 0x08, 0x7e, 0x9f, 0x63, 0x73, 0xa7, 0xf0, 0x36, 0x57, + 0xff, 0x8c, 0x77, 0x05, 0x34, 0xb3, 0xe9, 0xd0, 0x14, 0xb0, 0xdc, 0x92, 0x61, 0x99, 0x63, 0x0d, + 0xfd, 0x14, 0x92, 0xf7, 0xe2, 0x20, 0xb9, 0xc8, 0x72, 0x52, 0x04, 0x8e, 0x31, 0xf3, 0xd9, 0x62, + 0xec, 0x7c, 0xd6, 0xbb, 0xbf, 0xe4, 0x13, 0xee, 0x2f, 0x85, 0xd0, 0xfd, 0xe5, 0x28, 0x00, 0xc1, + 0x12, 0x83, 0xe0, 0xbb, 0x69, 0x27, 0x13, 0x46, 0xde, 0xeb, 0x44, 0xdd, 0x3f, 0xb2, 0x91, 0x54, + 0x2f, 0xda, 0xd5, 0xf7, 0x64, 0x47, 0xa6, 0x0c, 0x19, 0xa6, 0xde, 0xbd, 0xda, 0x41, 0x79, 0x2d, + 0x63, 0x4e, 0xf4, 0xc2, 0xb1, 0x2d, 0xe3, 0xa2, 0xb8, 0xfd, 0xcb, 0x2d, 0x23, 0xea, 0x05, 0x1c, + 0x98, 0x67, 0x0e, 0x6c, 0xa5, 0x23, 0xf4, 0x6b, 0x74, 0x61, 0x42, 0x0f, 0x3a, 0x6d, 0x7d, 0x62, + 0x62, 0x59, 0x6a, 0x7d, 0x82, 0xdc, 0x39, 0x5a, 0x9f, 0x48, 0x22, 0x17, 0x6d, 0xc8, 0x31, 0x6c, + 0xfb, 0x6d, 0xc8, 0xeb, 0x48, 0x1f, 0xcd, 0x2f, 0x0b, 0xb0, 0xe5, 0x27, 0xc4, 0xbe, 0xe6, 0x10, + 0x63, 0x68, 0xd8, 0x9a, 0x49, 0xe6, 0x1f, 0x4a, 0x5c, 0x87, 0x0a, 0x95, 0x60, 0x73, 0x3f, 0x62, + 0x09, 0xcf, 0x95, 0x5d, 0xc3, 0xa6, 0x05, 0x6e, 0x60, 0xa1, 0x1d, 0xa0, 0xd2, 0x5e, 0x1c, 0xae, + 0xf8, 0x6c, 0x11, 0x81, 0x81, 0x26, 0x28, 0x17, 0x6a, 0x82, 0xbe, 0x05, 0xeb, 0xf6, 0xd4, 0x26, + 0xd5, 0xd0, 0xb1, 0x49, 0x0c, 0xf2, 0x52, 0x8c, 0x04, 0xd6, 0x24, 0x5e, 0x57, 0xb0, 0xd0, 0x5d, + 0xa8, 0xc9, 0x4b, 0xa4, 0x2b, 0xfd, 0x8a, 0x44, 0x8f, 0xd3, 0xee, 0xe3, 0xb1, 0x14, 0xd1, 0xfe, + 0xb1, 0x17, 0xd6, 0xcf, 0x61, 0x53, 0x5e, 0x22, 0x21, 0x94, 0x5f, 0xf9, 0xbf, 0x17, 0xad, 0x32, + 0x51, 0xa7, 0xb6, 0x24, 0x52, 0x18, 0xb2, 0x1b, 0x76, 0x1c, 0x8f, 0xa6, 0x1f, 0x9d, 0x8c, 0xcf, + 0xbd, 0xf4, 0x43, 0x9f, 0xd1, 0xdb, 0xb0, 0x6c, 0x8f, 0xb4, 0x97, 0xaa, 0x63, 0x98, 0x17, 0xc4, + 0x32, 0xf9, 0xbd, 0x8c, 0x97, 0xdd, 0x25, 0xca, 0x50, 0x04, 0x1d, 0xdd, 0x12, 0x82, 0xba, 0xa1, + 0x8d, 0x98, 0xa0, 0x18, 0xa9, 0x52, 0x62, 0x47, 0xd0, 0xe2, 0xb3, 0x26, 0xc4, 0x67, 0xcd, 0xff, + 0xa1, 0x71, 0xf1, 0x37, 0x60, 0x89, 0x0f, 0x8a, 0x55, 0x36, 0x20, 0x66, 0xbf, 0x45, 0x96, 0x94, + 0x0a, 0xa7, 0x3d, 0xa5, 0xa4, 0xc6, 0x21, 0x34, 0x92, 0x1d, 0x7e, 0xa5, 0x3c, 0xfa, 0xc7, 0x0c, + 0xa0, 0xe0, 0x89, 0xb2, 0x62, 0x77, 0x1b, 0xaa, 0x41, 0x94, 0x0a, 0x6d, 0xcb, 0x01, 0x7c, 0x26, + 0x82, 0x39, 0x9b, 0x0c, 0xe6, 0xd4, 0xe0, 0x90, 0x03, 0xcf, 0xd0, 0x45, 0x4c, 0x78, 0x81, 0xd7, + 0xd5, 0x9b, 0x7f, 0xce, 0xc0, 0x0e, 0x9b, 0x27, 0x9c, 0x63, 0x27, 0x3e, 0xb8, 0x93, 0x2c, 0xca, + 0xcc, 0x69, 0x51, 0x36, 0x64, 0xd1, 0x0d, 0xa8, 0x10, 0xb1, 0x21, 0x4d, 0x05, 0xdc, 0x60, 0xf0, + 0x48, 0x03, 0x2b, 0x8a, 0xc4, 0xc5, 0x28, 0x12, 0x9b, 0x7f, 0x5a, 0x84, 0xca, 0x49, 0xb7, 0xcf, + 0xbe, 0x82, 0xba, 0xf7, 0x0d, 0x28, 0x7a, 0xdf, 0xc8, 0x0d, 0x2b, 0x0c, 0xd9, 0x07, 0xa2, 0x6b, + 0x50, 0xf2, 0xf3, 0x12, 0x37, 0xa5, 0x28, 0xca, 0x54, 0xba, 0xe3, 0xde, 0x80, 0x22, 0x63, 0xfa, + 0x4e, 0x2b, 0xd0, 0xd7, 0x94, 0x13, 0xca, 0x27, 0xfb, 0xe3, 0x1e, 0x94, 0xce, 0x1d, 0x6b, 0xac, + 0x4e, 0x1c, 0x83, 0xc5, 0x5f, 0x65, 0x77, 0x45, 0xce, 0xe3, 0xa7, 0x8e, 0xa1, 0x14, 0xa9, 0xc0, + 0xa9, 0x63, 0xa0, 0xb7, 0xa0, 0x40, 0x2c, 0x26, 0x59, 0x8c, 0x97, 0xcc, 0x13, 0x8b, 0xca, 0x7d, + 0x04, 0x35, 0xf1, 0xe3, 0x87, 0x7a, 0x8e, 0x35, 0x32, 0x71, 0x30, 0xff, 0xcd, 0xa7, 0x2a, 0xd5, + 0xe6, 0x93, 0x6e, 0xff, 0x31, 0xe7, 0x29, 0x2b, 0x42, 0x58, 0xbc, 0xbb, 0xe8, 0x3b, 0x50, 0x61, + 0x0e, 0x73, 0x89, 0x46, 0x26, 0x2e, 0x4b, 0x67, 0xd5, 0xdd, 0x4d, 0x79, 0x29, 0xf5, 0xed, 0x09, + 0xe3, 0x2a, 0x30, 0xf4, 0x9f, 0x69, 0xaa, 0x1e, 0xb2, 0xb4, 0xa5, 0xab, 0x1a, 0x61, 0x3f, 0xfd, + 0xe6, 0x94, 0xb2, 0xa0, 0xb4, 0x09, 0xcb, 0xe4, 0x44, 0x73, 0x04, 0x1b, 0x38, 0x5b, 0x50, 0xda, + 0x84, 0x1e, 0x07, 0x36, 0x75, 0xce, 0xac, 0x30, 0x66, 0x91, 0xbd, 0xb7, 0x09, 0x7a, 0x0c, 0xab, + 0xba, 0xe1, 0x0e, 0x2d, 0xd3, 0xc4, 0x43, 0xa2, 0x3a, 0x58, 0x73, 0x45, 0xb0, 0x57, 0x77, 0xaf, + 0xf9, 0x76, 0x75, 0x7c, 0x09, 0x85, 0x09, 0x28, 0x35, 0x3d, 0x44, 0xa1, 0xa1, 0x89, 0x1d, 0xc7, + 0x72, 0x58, 0x06, 0x2b, 0x2b, 0xfc, 0xa5, 0xf9, 0x9b, 0x0c, 0x14, 0xb8, 0x07, 0x69, 0x9e, 0x9c, + 0xb8, 0xd8, 0x11, 0x40, 0x61, 0xcf, 0x94, 0x76, 0x69, 0xb9, 0xc4, 0x1b, 0x3d, 0xd3, 0x67, 0x54, + 0x85, 0xac, 0x61, 0x0b, 0x60, 0x64, 0x0d, 0x9b, 0xca, 0xb0, 0x91, 0x1c, 0xc5, 0xc3, 0xb2, 0xc2, + 0x9e, 0x5f, 0x69, 0xd0, 0x7c, 0xef, 0x99, 0xf8, 0x17, 0x85, 0x37, 0x78, 0xde, 0x64, 0x19, 0x43, + 0x1d, 0x28, 0xed, 0xde, 0x49, 0xff, 0x58, 0x19, 0xa8, 0xed, 0xd3, 0xc1, 0x71, 0x6d, 0x01, 0x6d, + 0xc0, 0x6a, 0x90, 0x7e, 0xda, 0xe9, 0xd7, 0x32, 0x51, 0xf2, 0x60, 0xbf, 0x5f, 0xcb, 0xc6, 0x90, + 0x8f, 0x4e, 0x6a, 0xb9, 0x7b, 0x9f, 0xc3, 0x72, 0xe0, 0x30, 0x99, 0xdc, 0xfe, 0x89, 0xba, 0xdf, + 0x3e, 0x3a, 0x52, 0xbb, 0xbd, 0xfd, 0xe3, 0x8f, 0xbb, 0xbd, 0x27, 0xb5, 0x05, 0xd4, 0x80, 0x4d, + 0x4a, 0xee, 0xb7, 0x95, 0x41, 0x77, 0xbf, 0xdb, 0x6f, 0xf7, 0x06, 0xea, 0x0f, 0x8e, 0xbb, 0xbd, + 0x83, 0x4e, 0x2d, 0x83, 0xaa, 0x00, 0x94, 0xd7, 0xde, 0x1f, 0x74, 0x7f, 0x74, 0x50, 0xcb, 0xa2, + 0x75, 0xa8, 0xd1, 0xf7, 0x4e, 0xf7, 0x64, 0xff, 0xb8, 0xd7, 0x3b, 0xd8, 0x1f, 0x1c, 0x74, 0x6a, + 0x39, 0xb4, 0x0c, 0x65, 0x4a, 0x3d, 0x50, 0x94, 0x63, 0xa5, 0xb6, 0x78, 0xef, 0x2e, 0xc0, 0x14, + 0x80, 0xa8, 0x04, 0x8b, 0xbd, 0xe3, 0xde, 0x01, 0xff, 0x19, 0xff, 0xa9, 0xd2, 0x3d, 0xe9, 0xab, + 0x07, 0xbd, 0xf6, 0xde, 0x11, 0xd5, 0xbf, 0xfb, 0xcf, 0x0a, 0xe4, 0x4e, 0xba, 0x7d, 0xd4, 0x87, + 0x25, 0x79, 0xdc, 0x84, 0xb6, 0x03, 0x6d, 0x66, 0x68, 0xaa, 0xd2, 0xd8, 0x49, 0xe0, 0xf2, 0xd6, + 0xa9, 0x99, 0xfb, 0x22, 0x9b, 0x41, 0x9f, 0x4a, 0x7f, 0x48, 0x92, 0x47, 0x45, 0xe8, 0x76, 0xb4, + 0x08, 0xc7, 0x4c, 0xa6, 0x1a, 0xa9, 0xb3, 0x26, 0xa4, 0xc2, 0x66, 0xfc, 0xaf, 0x40, 0xe8, 0xad, + 0xa8, 0xfa, 0xb8, 0x39, 0x54, 0x23, 0x7d, 0xb0, 0x44, 0xcd, 0x8f, 0xfd, 0xcb, 0x81, 0x64, 0x7e, + 0xda, 0x5f, 0x12, 0x66, 0x9b, 0x1f, 0xff, 0x6b, 0x93, 0x64, 0x7e, 0xea, 0xcf, 0x51, 0xb3, 0xcc, + 0xff, 0x29, 0xa0, 0xe8, 0xfc, 0x14, 0x4d, 0xe7, 0x2b, 0x89, 0xb3, 0xd9, 0xc6, 0xad, 0x54, 0x19, + 0xd1, 0x1c, 0xff, 0x1c, 0xd6, 0x62, 0x86, 0xa1, 0x28, 0xbc, 0x36, 0xd6, 0xf2, 0x37, 0xd3, 0x85, + 0xa6, 0x3b, 0xc4, 0x0c, 0x26, 0xa5, 0x1d, 0x92, 0x87, 0x9a, 0xd2, 0x0e, 0x69, 0xb3, 0xcd, 0xa1, + 0x3f, 0x61, 0x0d, 0x7e, 0x44, 0x64, 0x75, 0xec, 0x57, 0xdc, 0x9e, 0x21, 0x25, 0x36, 0x79, 0x02, + 0xd5, 0xe0, 0x60, 0x12, 0x4d, 0xef, 0xf1, 0xb1, 0x13, 0xcb, 0x46, 0xfc, 0x44, 0x37, 0x10, 0x4e, + 0x81, 0x49, 0xdd, 0xed, 0xb9, 0x26, 0x27, 0x8d, 0xd4, 0xfb, 0x4b, 0x00, 0xed, 0x09, 0xda, 0xd3, + 0xe6, 0x22, 0x33, 0xb4, 0x4f, 0xcf, 0x32, 0xa0, 0x3b, 0x72, 0x96, 0x71, 0x9a, 0xdf, 0x4c, 0x17, + 0x12, 0x6e, 0xfe, 0x54, 0x9a, 0xff, 0x26, 0xd8, 0x9f, 0x76, 0x31, 0x9b, 0x61, 0xff, 0x27, 0xb0, + 0x1e, 0x77, 0x5f, 0x90, 0x90, 0x92, 0x72, 0x9d, 0x68, 0x6c, 0xc9, 0xba, 0xc3, 0xcd, 0xe9, 0x8f, + 0x61, 0x33, 0xbe, 0x09, 0x94, 0x12, 0x41, 0x6a, 0x97, 0xd8, 0xd8, 0x8c, 0xb4, 0xe3, 0x07, 0x63, + 0x9b, 0xbc, 0xdc, 0x7b, 0xfc, 0x93, 0x5b, 0x17, 0x06, 0xb9, 0x9c, 0x9c, 0xb5, 0x86, 0xd6, 0xf8, + 0xbe, 0xd0, 0xc5, 0xff, 0x52, 0x3a, 0xb4, 0x46, 0x1e, 0xe1, 0xcb, 0xec, 0xf2, 0x91, 0xf1, 0x1c, + 0x3f, 0x35, 0x48, 0xab, 0x4f, 0x59, 0xff, 0xc9, 0x56, 0xc5, 0xfb, 0xa3, 0x47, 0x8c, 0x70, 0x56, + 0x60, 0x4b, 0x1e, 0xfc, 0x37, 0x00, 0x00, 0xff, 0xff, 0x45, 0x73, 0x52, 0xfb, 0xd1, 0x2a, 0x00, + 0x00, } diff --git a/livekit/sip.go b/livekit/sip.go index 97743fc6..f7ac69f4 100644 --- a/livekit/sip.go +++ b/livekit/sip.go @@ -4,6 +4,8 @@ import ( "errors" "fmt" "strings" + + "google.golang.org/protobuf/proto" ) // ToProto implements DataPacket in Go SDK. @@ -160,6 +162,62 @@ func (p *CreateSIPInboundTrunkRequest) Validate() error { return nil } +func (p *UpdateSIPOutboundTrunkRequest) Validate() error { + if p.SipTrunkId == "" { + return errors.New("trunk id must be set") + } + if p.Action == nil { + return errors.New("missing or unsupported update action") + } + switch a := p.Action.(type) { + default: + return nil + case *UpdateSIPOutboundTrunkRequest_Replace: + info := a.Replace + if info == nil { + return errors.New("missing trunk") + } + if info.SipTrunkId != "" && info.SipTrunkId != p.SipTrunkId { + return errors.New("trunk id in the info must be empty or match the id in the update") + } + return info.Validate() + case *UpdateSIPOutboundTrunkRequest_Update: + diff := a.Update + if diff == nil { + return errors.New("missing trunk update") + } + return diff.Validate() + } +} + +func (p *UpdateSIPInboundTrunkRequest) Validate() error { + if p.SipTrunkId == "" { + return errors.New("trunk id must be set") + } + if p.Action == nil { + return errors.New("missing or unsupported update action") + } + switch a := p.Action.(type) { + default: + return nil + case *UpdateSIPInboundTrunkRequest_Replace: + info := a.Replace + if info == nil { + return errors.New("missing trunk") + } + if info.SipTrunkId != "" && info.SipTrunkId != p.SipTrunkId { + return errors.New("trunk id in the info must be empty or match the id in the update") + } + return info.Validate() + case *UpdateSIPInboundTrunkRequest_Update: + diff := a.Update + if diff == nil { + return errors.New("missing trunk update") + } + return diff.Validate() + } +} + func (p *SIPInboundTrunkInfo) Validate() error { hasAuth := p.AuthUsername != "" || p.AuthPassword != "" hasCIDR := len(p.AllowedAddresses) != 0 @@ -179,6 +237,63 @@ func (p *SIPInboundTrunkInfo) Validate() error { return nil } +func (p *SIPInboundTrunkUpdate) Validate() error { + if err := p.Numbers.Validate(); err != nil { + return err + } + if err := p.AllowedAddresses.Validate(); err != nil { + return err + } + if err := p.AllowedNumbers.Validate(); err != nil { + return err + } + return nil +} + +func (p *SIPInboundTrunkUpdate) Apply(info *SIPInboundTrunkInfo) error { + if err := p.Validate(); err != nil { + return err + } + applyListUpdate(&info.Numbers, p.Numbers) + applyListUpdate(&info.AllowedAddresses, p.AllowedAddresses) + applyListUpdate(&info.AllowedNumbers, p.AllowedNumbers) + applyUpdate(&info.AuthUsername, p.AuthUsername) + applyUpdate(&info.AuthPassword, p.AuthPassword) + applyUpdate(&info.Name, p.Name) + applyUpdate(&info.Metadata, p.Metadata) + return info.Validate() +} + +type UpdateSIPOutboundTrunkRequestAction interface { + isUpdateSIPOutboundTrunkRequest_Action + Apply(info *SIPOutboundTrunkInfo) error +} + +var ( + _ UpdateSIPOutboundTrunkRequestAction = (*UpdateSIPOutboundTrunkRequest_Replace)(nil) + _ UpdateSIPOutboundTrunkRequestAction = (*UpdateSIPOutboundTrunkRequest_Update)(nil) +) + +func (p *UpdateSIPOutboundTrunkRequest_Replace) Apply(info *SIPOutboundTrunkInfo) error { + val := p.Replace + if val == nil { + return errors.New("missing trunk") + } + if info.SipTrunkId != "" { + val.SipTrunkId = info.SipTrunkId + } + proto.Merge(info, val) + return val.Validate() +} + +func (p *UpdateSIPOutboundTrunkRequest_Update) Apply(info *SIPOutboundTrunkInfo) error { + diff := p.Update + if diff == nil { + return errors.New("missing trunk update") + } + return diff.Apply(info) +} + func (p *SIPOutboundTrunkInfo) Validate() error { if len(p.Numbers) == 0 { return errors.New("no trunk numbers specified") @@ -202,13 +317,170 @@ func (p *SIPOutboundTrunkInfo) Validate() error { return nil } +func (p *SIPOutboundTrunkUpdate) Validate() error { + if err := p.Numbers.Validate(); err != nil { + return err + } + return nil +} + +func (p *SIPOutboundTrunkUpdate) Apply(info *SIPOutboundTrunkInfo) error { + if err := p.Validate(); err != nil { + return err + } + applyUpdate(&info.Address, p.Address) + applyUpdate(&info.Transport, p.Transport) + applyListUpdate(&info.Numbers, p.Numbers) + applyUpdate(&info.AuthUsername, p.AuthUsername) + applyUpdate(&info.AuthPassword, p.AuthPassword) + applyUpdate(&info.Name, p.Name) + applyUpdate(&info.Metadata, p.Metadata) + return info.Validate() +} + +type UpdateSIPInboundTrunkRequestAction interface { + isUpdateSIPInboundTrunkRequest_Action + Apply(info *SIPInboundTrunkInfo) error +} + +var ( + _ UpdateSIPInboundTrunkRequestAction = (*UpdateSIPInboundTrunkRequest_Replace)(nil) + _ UpdateSIPInboundTrunkRequestAction = (*UpdateSIPInboundTrunkRequest_Update)(nil) +) + +func (p *UpdateSIPInboundTrunkRequest_Replace) Apply(info *SIPInboundTrunkInfo) error { + val := p.Replace + if val == nil { + return errors.New("missing trunk") + } + if info.SipTrunkId != "" { + val.SipTrunkId = info.SipTrunkId + } + proto.Merge(info, val) + return val.Validate() +} + +func (p *UpdateSIPInboundTrunkRequest_Update) Apply(info *SIPInboundTrunkInfo) error { + diff := p.Update + if diff == nil { + return errors.New("missing trunk update") + } + return diff.Apply(info) +} + +func (p *CreateSIPDispatchRuleRequest) DispatchRuleInfo() *SIPDispatchRuleInfo { + if p == nil { + return nil + } + if p.DispatchRule != nil { + return p.DispatchRule + } + return &SIPDispatchRuleInfo{ + Rule: p.Rule, + TrunkIds: p.TrunkIds, + InboundNumbers: p.InboundNumbers, + HidePhoneNumber: p.HidePhoneNumber, + Name: p.Name, + Metadata: p.Metadata, + Attributes: p.Attributes, + } +} + func (p *CreateSIPDispatchRuleRequest) Validate() error { + if p.DispatchRule == nil { + // legacy + return p.DispatchRuleInfo().Validate() + } + if p.DispatchRule.SipDispatchRuleId != "" { + return errors.New("rule id must not be set") + } + return p.DispatchRule.Validate() +} + +func (p *UpdateSIPDispatchRuleRequest) Validate() error { + if p.SipDispatchRuleId == "" { + return errors.New("rule id must be set") + } + if p.Action == nil { + return errors.New("missing or unsupported update action") + } + switch a := p.Action.(type) { + default: + return nil + case *UpdateSIPDispatchRuleRequest_Replace: + info := a.Replace + if info == nil { + return errors.New("missing dispatch rule") + } + if info.SipDispatchRuleId != "" && info.SipDispatchRuleId != p.SipDispatchRuleId { + return errors.New("rule id in the info must be empty or match the id in the update") + } + return info.Validate() + case *UpdateSIPDispatchRuleRequest_Update: + diff := a.Update + if diff == nil { + return errors.New("missing dispatch rule update") + } + return diff.Validate() + } +} + +func (p *SIPDispatchRuleInfo) Validate() error { if p.Rule == nil { return errors.New("missing rule") } return nil } +func (p *SIPDispatchRuleUpdate) Validate() error { + if err := p.TrunkIds.Validate(); err != nil { + return err + } + return nil +} + +func (p *SIPDispatchRuleUpdate) Apply(info *SIPDispatchRuleInfo) error { + if err := p.Validate(); err != nil { + return err + } + applyListUpdate(&info.TrunkIds, p.TrunkIds) + applyUpdate(&info.Rule, &p.Rule) + applyUpdate(&info.Name, p.Name) + applyUpdate(&info.Metadata, p.Metadata) + applyMapDiff(&info.Attributes, p.Attributes) + return info.Validate() +} + +type UpdateSIPDispatchRuleRequestAction interface { + isUpdateSIPDispatchRuleRequest_Action + Apply(info *SIPDispatchRuleInfo) error +} + +var ( + _ UpdateSIPDispatchRuleRequestAction = (*UpdateSIPDispatchRuleRequest_Replace)(nil) + _ UpdateSIPDispatchRuleRequestAction = (*UpdateSIPDispatchRuleRequest_Update)(nil) +) + +func (p *UpdateSIPDispatchRuleRequest_Replace) Apply(info *SIPDispatchRuleInfo) error { + val := p.Replace + if val == nil { + return errors.New("missing dispatch rule") + } + if info.SipDispatchRuleId != "" { + val.SipDispatchRuleId = info.SipDispatchRuleId + } + proto.Merge(info, val) + return val.Validate() +} + +func (p *UpdateSIPDispatchRuleRequest_Update) Apply(info *SIPDispatchRuleInfo) error { + diff := p.Update + if diff == nil { + return errors.New("missing dispatch rule update") + } + return diff.Apply(info) +} + func (p *CreateSIPParticipantRequest) Validate() error { if p.SipTrunkId == "" { return errors.New("missing sip trunk id") diff --git a/livekit/types.go b/livekit/types.go index 40cc0a94..f4933adf 100644 --- a/livekit/types.go +++ b/livekit/types.go @@ -15,6 +15,8 @@ package livekit import ( + "fmt" + "buf.build/go/protoyaml" proto "google.golang.org/protobuf/proto" "gopkg.in/yaml.v3" @@ -130,3 +132,47 @@ func IsJobType(jobType JobType) bool { _, ok := JobType_name[int32(jobType)] return ok } + +func (p *ListUpdate) Validate() error { + if p == nil { + return nil + } + for _, v := range p.Set { + if v == "" { + return fmt.Errorf("empty element in the list") + } + } + return nil +} + +func applyUpdate[T any](dst *T, set *T) { + if set != nil { + *dst = *set + } +} + +func applyListUpdate[T ~string](dst *[]T, u *ListUpdate) { + if u == nil { + return + } + arr := make([]T, 0, len(u.Set)) + for _, v := range u.Set { + arr = append(arr, T(v)) + } + *dst = arr +} + +func applyMapDiff(dst *map[string]string, diff map[string]string) { + m := *dst + if m == nil { + m = make(map[string]string) + } + for k, v := range diff { + if v != "" { + m[k] = v + } else { + delete(m, k) + } + } + *dst = m +} diff --git a/protobufs/livekit_models.proto b/protobufs/livekit_models.proto index a782c5ab..3a6f5e89 100644 --- a/protobufs/livekit_models.proto +++ b/protobufs/livekit_models.proto @@ -23,6 +23,11 @@ import "google/protobuf/timestamp.proto"; import "livekit_metrics.proto"; +// ListUpdate is used for updated APIs where 'repeated string' field is modified. +message ListUpdate { + repeated string set = 1; // set the field to a new list +} + message Room { string sid = 1; string name = 2; diff --git a/protobufs/livekit_sip.proto b/protobufs/livekit_sip.proto index 89cb81c4..fec8305d 100644 --- a/protobufs/livekit_sip.proto +++ b/protobufs/livekit_sip.proto @@ -56,6 +56,8 @@ service SIP { rpc CreateSIPInboundTrunk(CreateSIPInboundTrunkRequest) returns (SIPInboundTrunkInfo); rpc CreateSIPOutboundTrunk(CreateSIPOutboundTrunkRequest) returns (SIPOutboundTrunkInfo); + rpc UpdateSIPInboundTrunk(UpdateSIPInboundTrunkRequest) returns (SIPInboundTrunkInfo); + rpc UpdateSIPOutboundTrunk(UpdateSIPOutboundTrunkRequest) returns (SIPOutboundTrunkInfo); rpc GetSIPInboundTrunk(GetSIPInboundTrunkRequest) returns (GetSIPInboundTrunkResponse); rpc GetSIPOutboundTrunk(GetSIPOutboundTrunkRequest) returns (GetSIPOutboundTrunkResponse); rpc ListSIPInboundTrunk(ListSIPInboundTrunkRequest) returns (ListSIPInboundTrunkResponse); @@ -63,6 +65,7 @@ service SIP { rpc DeleteSIPTrunk(DeleteSIPTrunkRequest) returns (SIPTrunkInfo); rpc CreateSIPDispatchRule(CreateSIPDispatchRuleRequest) returns (SIPDispatchRuleInfo); + rpc UpdateSIPDispatchRule(UpdateSIPDispatchRuleRequest) returns (SIPDispatchRuleInfo); rpc ListSIPDispatchRule(ListSIPDispatchRuleRequest) returns (ListSIPDispatchRuleResponse); rpc DeleteSIPDispatchRule(DeleteSIPDispatchRuleRequest) returns (SIPDispatchRuleInfo); @@ -161,6 +164,14 @@ message CreateSIPInboundTrunkRequest { SIPInboundTrunkInfo trunk = 1; // Trunk ID is ignored } +message UpdateSIPInboundTrunkRequest { + string sip_trunk_id = 1; + oneof action { + SIPInboundTrunkInfo replace = 2; + SIPInboundTrunkUpdate update = 3; + } +} + message SIPInboundTrunkInfo { string sip_trunk_id = 1; @@ -204,10 +215,28 @@ message SIPInboundTrunkInfo { // NEXT ID: 15 } +message SIPInboundTrunkUpdate { + ListUpdate numbers = 1; + ListUpdate allowed_addresses = 2; + ListUpdate allowed_numbers = 3; + optional string auth_username = 4; + optional string auth_password = 5; + optional string name = 6; + optional string metadata = 7; +} + message CreateSIPOutboundTrunkRequest { SIPOutboundTrunkInfo trunk = 1; // Trunk ID is ignored } +message UpdateSIPOutboundTrunkRequest { + string sip_trunk_id = 1; + oneof action { + SIPOutboundTrunkInfo replace = 2; + SIPOutboundTrunkUpdate update = 3; + } +} + message SIPOutboundTrunkInfo { string sip_trunk_id = 1; @@ -244,6 +273,16 @@ message SIPOutboundTrunkInfo { // NEXT ID: 12 } +message SIPOutboundTrunkUpdate { + optional string address = 1; + optional SIPTransport transport = 2; + ListUpdate numbers = 3; + optional string auth_username = 4; + optional string auth_password = 5; + optional string name = 6; + optional string metadata = 7; +} + message GetSIPInboundTrunkRequest { string sip_trunk_id = 1; } @@ -330,29 +369,39 @@ message SIPDispatchRule { } message CreateSIPDispatchRuleRequest { - SIPDispatchRule rule = 1; + SIPDispatchRuleInfo dispatch_rule = 8; // Rule ID is ignored + + SIPDispatchRule rule = 1 [deprecated=true]; // What trunks are accepted for this dispatch rule // If empty all trunks will match this dispatch rule - repeated string trunk_ids = 2; + repeated string trunk_ids = 2 [deprecated=true]; // By default the From value (Phone number) is used for participant name/identity and added to attributes. // If true, a random value for identity will be used and numbers will be omitted from attributes. - bool hide_phone_number = 3; + bool hide_phone_number = 3 [deprecated=true]; // Dispatch Rule will only accept a call made to these numbers (if set). - repeated string inbound_numbers = 6; + repeated string inbound_numbers = 6 [deprecated=true]; // Optional human-readable name for the Dispatch Rule. - string name = 4; + string name = 4 [deprecated=true]; // User-defined metadata for the Dispatch Rule. // Participants created by this rule will inherit this metadata. - string metadata = 5; + string metadata = 5 [deprecated=true]; // User-defined attributes for the Dispatch Rule. // Participants created by this rule will inherit these attributes. - map attributes = 7; + map attributes = 7 [deprecated=true]; + + // NEXT ID: 9 +} - // NEXT ID: 8 +message UpdateSIPDispatchRuleRequest { + string sip_dispatch_rule_id = 1; + oneof action { + SIPDispatchRuleInfo replace = 2; + SIPDispatchRuleUpdate update = 3; + } } message SIPDispatchRuleInfo { @@ -375,6 +424,14 @@ message SIPDispatchRuleInfo { // NEXT ID: 9 } +message SIPDispatchRuleUpdate { + ListUpdate trunk_ids = 1; + SIPDispatchRule rule = 2; + optional string name = 3; + optional string metadata = 4; + map attributes = 5; +} + message ListSIPDispatchRuleRequest { }