diff --git a/api/k8s/v1/k8s.proto b/api/k8s/v1/k8s.proto index 2eb32bacf4..0bca92bc70 100644 --- a/api/k8s/v1/k8s.proto +++ b/api/k8s/v1/k8s.proto @@ -196,6 +196,14 @@ service K8sAPI { option (clutch.api.v1.action).type = DELETE; } + rpc DescribeJob(DescribeJobRequest) returns (DescribeJobResponse) { + option (google.api.http) = { + post : "/v1/k8s/describeJob" + body : "*" + }; + option (clutch.api.v1.action).type = READ; + } + rpc ListJobs(ListJobsRequest) returns (ListJobsResponse) { option (google.api.http) = { post : "/v1/k8s/listJobs" @@ -995,6 +1003,24 @@ message Job { map labels = 5; } +message DescribeJobRequest { + option (clutch.api.v1.id).patterns = { + type_url : "clutch.k8s.v1.Job", + pattern : "{cluster}/{namespace}/{name}" + }; + + string clientset = 1 [ (validate.rules).string = {min_bytes : 1} ]; + string cluster = 2 [ (validate.rules).string = {min_bytes : 1} ]; + string namespace = 3 [ (validate.rules).string = {min_bytes : 1} ]; + string name = 4 [ (validate.rules).string = {min_bytes : 1} ]; +} + +message DescribeJobResponse { + option (clutch.api.v1.reference).fields = "job"; + + Job job = 1 [ (clutch.api.v1.log) = false ]; +} + message ListJobsRequest { option (clutch.api.v1.id).patterns = { type_url : "clutch.k8s.v1.Namespace", diff --git a/backend/api/k8s/v1/k8s.pb.go b/backend/api/k8s/v1/k8s.pb.go index 22b035ac52..173f17b130 100644 --- a/backend/api/k8s/v1/k8s.pb.go +++ b/backend/api/k8s/v1/k8s.pb.go @@ -4467,6 +4467,124 @@ func (x *Job) GetLabels() map[string]string { return nil } +type DescribeJobRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Clientset string `protobuf:"bytes,1,opt,name=clientset,proto3" json:"clientset,omitempty"` + Cluster string `protobuf:"bytes,2,opt,name=cluster,proto3" json:"cluster,omitempty"` + Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"` + Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` +} + +func (x *DescribeJobRequest) Reset() { + *x = DescribeJobRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_k8s_v1_k8s_proto_msgTypes[60] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DescribeJobRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DescribeJobRequest) ProtoMessage() {} + +func (x *DescribeJobRequest) ProtoReflect() protoreflect.Message { + mi := &file_k8s_v1_k8s_proto_msgTypes[60] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DescribeJobRequest.ProtoReflect.Descriptor instead. +func (*DescribeJobRequest) Descriptor() ([]byte, []int) { + return file_k8s_v1_k8s_proto_rawDescGZIP(), []int{60} +} + +func (x *DescribeJobRequest) GetClientset() string { + if x != nil { + return x.Clientset + } + return "" +} + +func (x *DescribeJobRequest) GetCluster() string { + if x != nil { + return x.Cluster + } + return "" +} + +func (x *DescribeJobRequest) GetNamespace() string { + if x != nil { + return x.Namespace + } + return "" +} + +func (x *DescribeJobRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +type DescribeJobResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Job *Job `protobuf:"bytes,1,opt,name=job,proto3" json:"job,omitempty"` +} + +func (x *DescribeJobResponse) Reset() { + *x = DescribeJobResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_k8s_v1_k8s_proto_msgTypes[61] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DescribeJobResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DescribeJobResponse) ProtoMessage() {} + +func (x *DescribeJobResponse) ProtoReflect() protoreflect.Message { + mi := &file_k8s_v1_k8s_proto_msgTypes[61] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DescribeJobResponse.ProtoReflect.Descriptor instead. +func (*DescribeJobResponse) Descriptor() ([]byte, []int) { + return file_k8s_v1_k8s_proto_rawDescGZIP(), []int{61} +} + +func (x *DescribeJobResponse) GetJob() *Job { + if x != nil { + return x.Job + } + return nil +} + type ListJobsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -4481,7 +4599,7 @@ type ListJobsRequest struct { func (x *ListJobsRequest) Reset() { *x = ListJobsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_k8s_v1_k8s_proto_msgTypes[60] + mi := &file_k8s_v1_k8s_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4494,7 +4612,7 @@ func (x *ListJobsRequest) String() string { func (*ListJobsRequest) ProtoMessage() {} func (x *ListJobsRequest) ProtoReflect() protoreflect.Message { - mi := &file_k8s_v1_k8s_proto_msgTypes[60] + mi := &file_k8s_v1_k8s_proto_msgTypes[62] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4507,7 +4625,7 @@ func (x *ListJobsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListJobsRequest.ProtoReflect.Descriptor instead. func (*ListJobsRequest) Descriptor() ([]byte, []int) { - return file_k8s_v1_k8s_proto_rawDescGZIP(), []int{60} + return file_k8s_v1_k8s_proto_rawDescGZIP(), []int{62} } func (x *ListJobsRequest) GetClientset() string { @@ -4549,7 +4667,7 @@ type ListJobsResponse struct { func (x *ListJobsResponse) Reset() { *x = ListJobsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_k8s_v1_k8s_proto_msgTypes[61] + mi := &file_k8s_v1_k8s_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4562,7 +4680,7 @@ func (x *ListJobsResponse) String() string { func (*ListJobsResponse) ProtoMessage() {} func (x *ListJobsResponse) ProtoReflect() protoreflect.Message { - mi := &file_k8s_v1_k8s_proto_msgTypes[61] + mi := &file_k8s_v1_k8s_proto_msgTypes[63] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4575,7 +4693,7 @@ func (x *ListJobsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListJobsResponse.ProtoReflect.Descriptor instead. func (*ListJobsResponse) Descriptor() ([]byte, []int) { - return file_k8s_v1_k8s_proto_rawDescGZIP(), []int{61} + return file_k8s_v1_k8s_proto_rawDescGZIP(), []int{63} } func (x *ListJobsResponse) GetJobs() []*Job { @@ -4599,7 +4717,7 @@ type DeleteJobRequest struct { func (x *DeleteJobRequest) Reset() { *x = DeleteJobRequest{} if protoimpl.UnsafeEnabled { - mi := &file_k8s_v1_k8s_proto_msgTypes[62] + mi := &file_k8s_v1_k8s_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4612,7 +4730,7 @@ func (x *DeleteJobRequest) String() string { func (*DeleteJobRequest) ProtoMessage() {} func (x *DeleteJobRequest) ProtoReflect() protoreflect.Message { - mi := &file_k8s_v1_k8s_proto_msgTypes[62] + mi := &file_k8s_v1_k8s_proto_msgTypes[64] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4625,7 +4743,7 @@ func (x *DeleteJobRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteJobRequest.ProtoReflect.Descriptor instead. func (*DeleteJobRequest) Descriptor() ([]byte, []int) { - return file_k8s_v1_k8s_proto_rawDescGZIP(), []int{62} + return file_k8s_v1_k8s_proto_rawDescGZIP(), []int{64} } func (x *DeleteJobRequest) GetClientset() string { @@ -4665,7 +4783,7 @@ type DeleteJobResponse struct { func (x *DeleteJobResponse) Reset() { *x = DeleteJobResponse{} if protoimpl.UnsafeEnabled { - mi := &file_k8s_v1_k8s_proto_msgTypes[63] + mi := &file_k8s_v1_k8s_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4678,7 +4796,7 @@ func (x *DeleteJobResponse) String() string { func (*DeleteJobResponse) ProtoMessage() {} func (x *DeleteJobResponse) ProtoReflect() protoreflect.Message { - mi := &file_k8s_v1_k8s_proto_msgTypes[63] + mi := &file_k8s_v1_k8s_proto_msgTypes[65] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4691,7 +4809,7 @@ func (x *DeleteJobResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteJobResponse.ProtoReflect.Descriptor instead. func (*DeleteJobResponse) Descriptor() ([]byte, []int) { - return file_k8s_v1_k8s_proto_rawDescGZIP(), []int{63} + return file_k8s_v1_k8s_proto_rawDescGZIP(), []int{65} } type JobConfig struct { @@ -4705,7 +4823,7 @@ type JobConfig struct { func (x *JobConfig) Reset() { *x = JobConfig{} if protoimpl.UnsafeEnabled { - mi := &file_k8s_v1_k8s_proto_msgTypes[64] + mi := &file_k8s_v1_k8s_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4718,7 +4836,7 @@ func (x *JobConfig) String() string { func (*JobConfig) ProtoMessage() {} func (x *JobConfig) ProtoReflect() protoreflect.Message { - mi := &file_k8s_v1_k8s_proto_msgTypes[64] + mi := &file_k8s_v1_k8s_proto_msgTypes[66] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4731,7 +4849,7 @@ func (x *JobConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use JobConfig.ProtoReflect.Descriptor instead. func (*JobConfig) Descriptor() ([]byte, []int) { - return file_k8s_v1_k8s_proto_rawDescGZIP(), []int{64} + return file_k8s_v1_k8s_proto_rawDescGZIP(), []int{66} } func (x *JobConfig) GetValue() *structpb.Value { @@ -4755,7 +4873,7 @@ type CreateJobRequest struct { func (x *CreateJobRequest) Reset() { *x = CreateJobRequest{} if protoimpl.UnsafeEnabled { - mi := &file_k8s_v1_k8s_proto_msgTypes[65] + mi := &file_k8s_v1_k8s_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4768,7 +4886,7 @@ func (x *CreateJobRequest) String() string { func (*CreateJobRequest) ProtoMessage() {} func (x *CreateJobRequest) ProtoReflect() protoreflect.Message { - mi := &file_k8s_v1_k8s_proto_msgTypes[65] + mi := &file_k8s_v1_k8s_proto_msgTypes[67] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4781,7 +4899,7 @@ func (x *CreateJobRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateJobRequest.ProtoReflect.Descriptor instead. func (*CreateJobRequest) Descriptor() ([]byte, []int) { - return file_k8s_v1_k8s_proto_rawDescGZIP(), []int{65} + return file_k8s_v1_k8s_proto_rawDescGZIP(), []int{67} } func (x *CreateJobRequest) GetClientset() string { @@ -4823,7 +4941,7 @@ type CreateJobResponse struct { func (x *CreateJobResponse) Reset() { *x = CreateJobResponse{} if protoimpl.UnsafeEnabled { - mi := &file_k8s_v1_k8s_proto_msgTypes[66] + mi := &file_k8s_v1_k8s_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4836,7 +4954,7 @@ func (x *CreateJobResponse) String() string { func (*CreateJobResponse) ProtoMessage() {} func (x *CreateJobResponse) ProtoReflect() protoreflect.Message { - mi := &file_k8s_v1_k8s_proto_msgTypes[66] + mi := &file_k8s_v1_k8s_proto_msgTypes[68] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4849,7 +4967,7 @@ func (x *CreateJobResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateJobResponse.ProtoReflect.Descriptor instead. func (*CreateJobResponse) Descriptor() ([]byte, []int) { - return file_k8s_v1_k8s_proto_rawDescGZIP(), []int{66} + return file_k8s_v1_k8s_proto_rawDescGZIP(), []int{68} } func (x *CreateJobResponse) GetJob() *Job { @@ -4873,7 +4991,7 @@ type Namespace struct { func (x *Namespace) Reset() { *x = Namespace{} if protoimpl.UnsafeEnabled { - mi := &file_k8s_v1_k8s_proto_msgTypes[67] + mi := &file_k8s_v1_k8s_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4886,7 +5004,7 @@ func (x *Namespace) String() string { func (*Namespace) ProtoMessage() {} func (x *Namespace) ProtoReflect() protoreflect.Message { - mi := &file_k8s_v1_k8s_proto_msgTypes[67] + mi := &file_k8s_v1_k8s_proto_msgTypes[69] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4899,7 +5017,7 @@ func (x *Namespace) ProtoReflect() protoreflect.Message { // Deprecated: Use Namespace.ProtoReflect.Descriptor instead. func (*Namespace) Descriptor() ([]byte, []int) { - return file_k8s_v1_k8s_proto_rawDescGZIP(), []int{67} + return file_k8s_v1_k8s_proto_rawDescGZIP(), []int{69} } func (x *Namespace) GetCluster() string { @@ -4943,7 +5061,7 @@ type DescribeNamespaceRequest struct { func (x *DescribeNamespaceRequest) Reset() { *x = DescribeNamespaceRequest{} if protoimpl.UnsafeEnabled { - mi := &file_k8s_v1_k8s_proto_msgTypes[68] + mi := &file_k8s_v1_k8s_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4956,7 +5074,7 @@ func (x *DescribeNamespaceRequest) String() string { func (*DescribeNamespaceRequest) ProtoMessage() {} func (x *DescribeNamespaceRequest) ProtoReflect() protoreflect.Message { - mi := &file_k8s_v1_k8s_proto_msgTypes[68] + mi := &file_k8s_v1_k8s_proto_msgTypes[70] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4969,7 +5087,7 @@ func (x *DescribeNamespaceRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DescribeNamespaceRequest.ProtoReflect.Descriptor instead. func (*DescribeNamespaceRequest) Descriptor() ([]byte, []int) { - return file_k8s_v1_k8s_proto_rawDescGZIP(), []int{68} + return file_k8s_v1_k8s_proto_rawDescGZIP(), []int{70} } func (x *DescribeNamespaceRequest) GetClientset() string { @@ -5004,7 +5122,7 @@ type DescribeNamespaceResponse struct { func (x *DescribeNamespaceResponse) Reset() { *x = DescribeNamespaceResponse{} if protoimpl.UnsafeEnabled { - mi := &file_k8s_v1_k8s_proto_msgTypes[69] + mi := &file_k8s_v1_k8s_proto_msgTypes[71] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5017,7 +5135,7 @@ func (x *DescribeNamespaceResponse) String() string { func (*DescribeNamespaceResponse) ProtoMessage() {} func (x *DescribeNamespaceResponse) ProtoReflect() protoreflect.Message { - mi := &file_k8s_v1_k8s_proto_msgTypes[69] + mi := &file_k8s_v1_k8s_proto_msgTypes[71] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5030,7 +5148,7 @@ func (x *DescribeNamespaceResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DescribeNamespaceResponse.ProtoReflect.Descriptor instead. func (*DescribeNamespaceResponse) Descriptor() ([]byte, []int) { - return file_k8s_v1_k8s_proto_rawDescGZIP(), []int{69} + return file_k8s_v1_k8s_proto_rawDescGZIP(), []int{71} } func (x *DescribeNamespaceResponse) GetNamespace() *Namespace { @@ -5068,7 +5186,7 @@ type Event struct { func (x *Event) Reset() { *x = Event{} if protoimpl.UnsafeEnabled { - mi := &file_k8s_v1_k8s_proto_msgTypes[70] + mi := &file_k8s_v1_k8s_proto_msgTypes[72] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5081,7 +5199,7 @@ func (x *Event) String() string { func (*Event) ProtoMessage() {} func (x *Event) ProtoReflect() protoreflect.Message { - mi := &file_k8s_v1_k8s_proto_msgTypes[70] + mi := &file_k8s_v1_k8s_proto_msgTypes[72] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5094,7 +5212,7 @@ func (x *Event) ProtoReflect() protoreflect.Message { // Deprecated: Use Event.ProtoReflect.Descriptor instead. func (*Event) Descriptor() ([]byte, []int) { - return file_k8s_v1_k8s_proto_rawDescGZIP(), []int{70} + return file_k8s_v1_k8s_proto_rawDescGZIP(), []int{72} } func (x *Event) GetName() string { @@ -5171,7 +5289,7 @@ type ListEventsRequest struct { func (x *ListEventsRequest) Reset() { *x = ListEventsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_k8s_v1_k8s_proto_msgTypes[71] + mi := &file_k8s_v1_k8s_proto_msgTypes[73] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5184,7 +5302,7 @@ func (x *ListEventsRequest) String() string { func (*ListEventsRequest) ProtoMessage() {} func (x *ListEventsRequest) ProtoReflect() protoreflect.Message { - mi := &file_k8s_v1_k8s_proto_msgTypes[71] + mi := &file_k8s_v1_k8s_proto_msgTypes[73] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5197,7 +5315,7 @@ func (x *ListEventsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListEventsRequest.ProtoReflect.Descriptor instead. func (*ListEventsRequest) Descriptor() ([]byte, []int) { - return file_k8s_v1_k8s_proto_rawDescGZIP(), []int{71} + return file_k8s_v1_k8s_proto_rawDescGZIP(), []int{73} } func (x *ListEventsRequest) GetClientset() string { @@ -5246,7 +5364,7 @@ type ListEventsResponse struct { func (x *ListEventsResponse) Reset() { *x = ListEventsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_k8s_v1_k8s_proto_msgTypes[72] + mi := &file_k8s_v1_k8s_proto_msgTypes[74] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5259,7 +5377,7 @@ func (x *ListEventsResponse) String() string { func (*ListEventsResponse) ProtoMessage() {} func (x *ListEventsResponse) ProtoReflect() protoreflect.Message { - mi := &file_k8s_v1_k8s_proto_msgTypes[72] + mi := &file_k8s_v1_k8s_proto_msgTypes[74] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5272,7 +5390,7 @@ func (x *ListEventsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListEventsResponse.ProtoReflect.Descriptor instead. func (*ListEventsResponse) Descriptor() ([]byte, []int) { - return file_k8s_v1_k8s_proto_rawDescGZIP(), []int{72} + return file_k8s_v1_k8s_proto_rawDescGZIP(), []int{74} } func (x *ListEventsResponse) GetEvents() []*Event { @@ -5300,7 +5418,7 @@ type NullableString struct { func (x *NullableString) Reset() { *x = NullableString{} if protoimpl.UnsafeEnabled { - mi := &file_k8s_v1_k8s_proto_msgTypes[73] + mi := &file_k8s_v1_k8s_proto_msgTypes[75] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5313,7 +5431,7 @@ func (x *NullableString) String() string { func (*NullableString) ProtoMessage() {} func (x *NullableString) ProtoReflect() protoreflect.Message { - mi := &file_k8s_v1_k8s_proto_msgTypes[73] + mi := &file_k8s_v1_k8s_proto_msgTypes[75] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5326,7 +5444,7 @@ func (x *NullableString) ProtoReflect() protoreflect.Message { // Deprecated: Use NullableString.ProtoReflect.Descriptor instead. func (*NullableString) Descriptor() ([]byte, []int) { - return file_k8s_v1_k8s_proto_rawDescGZIP(), []int{73} + return file_k8s_v1_k8s_proto_rawDescGZIP(), []int{75} } func (m *NullableString) GetKind() isNullableString_Kind { @@ -5381,7 +5499,7 @@ type ExpectedObjectMetaFields struct { func (x *ExpectedObjectMetaFields) Reset() { *x = ExpectedObjectMetaFields{} if protoimpl.UnsafeEnabled { - mi := &file_k8s_v1_k8s_proto_msgTypes[74] + mi := &file_k8s_v1_k8s_proto_msgTypes[76] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5394,7 +5512,7 @@ func (x *ExpectedObjectMetaFields) String() string { func (*ExpectedObjectMetaFields) ProtoMessage() {} func (x *ExpectedObjectMetaFields) ProtoReflect() protoreflect.Message { - mi := &file_k8s_v1_k8s_proto_msgTypes[74] + mi := &file_k8s_v1_k8s_proto_msgTypes[76] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5407,7 +5525,7 @@ func (x *ExpectedObjectMetaFields) ProtoReflect() protoreflect.Message { // Deprecated: Use ExpectedObjectMetaFields.ProtoReflect.Descriptor instead. func (*ExpectedObjectMetaFields) Descriptor() ([]byte, []int) { - return file_k8s_v1_k8s_proto_rawDescGZIP(), []int{74} + return file_k8s_v1_k8s_proto_rawDescGZIP(), []int{76} } func (x *ExpectedObjectMetaFields) GetLabels() map[string]*NullableString { @@ -5437,7 +5555,7 @@ type ObjectMetaFields struct { func (x *ObjectMetaFields) Reset() { *x = ObjectMetaFields{} if protoimpl.UnsafeEnabled { - mi := &file_k8s_v1_k8s_proto_msgTypes[75] + mi := &file_k8s_v1_k8s_proto_msgTypes[77] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5450,7 +5568,7 @@ func (x *ObjectMetaFields) String() string { func (*ObjectMetaFields) ProtoMessage() {} func (x *ObjectMetaFields) ProtoReflect() protoreflect.Message { - mi := &file_k8s_v1_k8s_proto_msgTypes[75] + mi := &file_k8s_v1_k8s_proto_msgTypes[77] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5463,7 +5581,7 @@ func (x *ObjectMetaFields) ProtoReflect() protoreflect.Message { // Deprecated: Use ObjectMetaFields.ProtoReflect.Descriptor instead. func (*ObjectMetaFields) Descriptor() ([]byte, []int) { - return file_k8s_v1_k8s_proto_rawDescGZIP(), []int{75} + return file_k8s_v1_k8s_proto_rawDescGZIP(), []int{77} } func (x *ObjectMetaFields) GetLabels() map[string]string { @@ -5493,7 +5611,7 @@ type RemoveObjectMetaFields struct { func (x *RemoveObjectMetaFields) Reset() { *x = RemoveObjectMetaFields{} if protoimpl.UnsafeEnabled { - mi := &file_k8s_v1_k8s_proto_msgTypes[76] + mi := &file_k8s_v1_k8s_proto_msgTypes[78] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5506,7 +5624,7 @@ func (x *RemoveObjectMetaFields) String() string { func (*RemoveObjectMetaFields) ProtoMessage() {} func (x *RemoveObjectMetaFields) ProtoReflect() protoreflect.Message { - mi := &file_k8s_v1_k8s_proto_msgTypes[76] + mi := &file_k8s_v1_k8s_proto_msgTypes[78] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5519,7 +5637,7 @@ func (x *RemoveObjectMetaFields) ProtoReflect() protoreflect.Message { // Deprecated: Use RemoveObjectMetaFields.ProtoReflect.Descriptor instead. func (*RemoveObjectMetaFields) Descriptor() ([]byte, []int) { - return file_k8s_v1_k8s_proto_rawDescGZIP(), []int{76} + return file_k8s_v1_k8s_proto_rawDescGZIP(), []int{78} } func (x *RemoveObjectMetaFields) GetLabels() []string { @@ -5549,7 +5667,7 @@ type Node struct { func (x *Node) Reset() { *x = Node{} if protoimpl.UnsafeEnabled { - mi := &file_k8s_v1_k8s_proto_msgTypes[77] + mi := &file_k8s_v1_k8s_proto_msgTypes[79] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5562,7 +5680,7 @@ func (x *Node) String() string { func (*Node) ProtoMessage() {} func (x *Node) ProtoReflect() protoreflect.Message { - mi := &file_k8s_v1_k8s_proto_msgTypes[77] + mi := &file_k8s_v1_k8s_proto_msgTypes[79] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5575,7 +5693,7 @@ func (x *Node) ProtoReflect() protoreflect.Message { // Deprecated: Use Node.ProtoReflect.Descriptor instead. func (*Node) Descriptor() ([]byte, []int) { - return file_k8s_v1_k8s_proto_rawDescGZIP(), []int{77} + return file_k8s_v1_k8s_proto_rawDescGZIP(), []int{79} } func (x *Node) GetName() string { @@ -5612,7 +5730,7 @@ type DescribeNodeRequest struct { func (x *DescribeNodeRequest) Reset() { *x = DescribeNodeRequest{} if protoimpl.UnsafeEnabled { - mi := &file_k8s_v1_k8s_proto_msgTypes[78] + mi := &file_k8s_v1_k8s_proto_msgTypes[80] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5625,7 +5743,7 @@ func (x *DescribeNodeRequest) String() string { func (*DescribeNodeRequest) ProtoMessage() {} func (x *DescribeNodeRequest) ProtoReflect() protoreflect.Message { - mi := &file_k8s_v1_k8s_proto_msgTypes[78] + mi := &file_k8s_v1_k8s_proto_msgTypes[80] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5638,7 +5756,7 @@ func (x *DescribeNodeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DescribeNodeRequest.ProtoReflect.Descriptor instead. func (*DescribeNodeRequest) Descriptor() ([]byte, []int) { - return file_k8s_v1_k8s_proto_rawDescGZIP(), []int{78} + return file_k8s_v1_k8s_proto_rawDescGZIP(), []int{80} } func (x *DescribeNodeRequest) GetClientset() string { @@ -5673,7 +5791,7 @@ type DescribeNodeResponse struct { func (x *DescribeNodeResponse) Reset() { *x = DescribeNodeResponse{} if protoimpl.UnsafeEnabled { - mi := &file_k8s_v1_k8s_proto_msgTypes[79] + mi := &file_k8s_v1_k8s_proto_msgTypes[81] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5686,7 +5804,7 @@ func (x *DescribeNodeResponse) String() string { func (*DescribeNodeResponse) ProtoMessage() {} func (x *DescribeNodeResponse) ProtoReflect() protoreflect.Message { - mi := &file_k8s_v1_k8s_proto_msgTypes[79] + mi := &file_k8s_v1_k8s_proto_msgTypes[81] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5699,7 +5817,7 @@ func (x *DescribeNodeResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DescribeNodeResponse.ProtoReflect.Descriptor instead. func (*DescribeNodeResponse) Descriptor() ([]byte, []int) { - return file_k8s_v1_k8s_proto_rawDescGZIP(), []int{79} + return file_k8s_v1_k8s_proto_rawDescGZIP(), []int{81} } func (x *DescribeNodeResponse) GetNode() *Node { @@ -5723,7 +5841,7 @@ type UpdateNodeRequest struct { func (x *UpdateNodeRequest) Reset() { *x = UpdateNodeRequest{} if protoimpl.UnsafeEnabled { - mi := &file_k8s_v1_k8s_proto_msgTypes[80] + mi := &file_k8s_v1_k8s_proto_msgTypes[82] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5736,7 +5854,7 @@ func (x *UpdateNodeRequest) String() string { func (*UpdateNodeRequest) ProtoMessage() {} func (x *UpdateNodeRequest) ProtoReflect() protoreflect.Message { - mi := &file_k8s_v1_k8s_proto_msgTypes[80] + mi := &file_k8s_v1_k8s_proto_msgTypes[82] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5749,7 +5867,7 @@ func (x *UpdateNodeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateNodeRequest.ProtoReflect.Descriptor instead. func (*UpdateNodeRequest) Descriptor() ([]byte, []int) { - return file_k8s_v1_k8s_proto_rawDescGZIP(), []int{80} + return file_k8s_v1_k8s_proto_rawDescGZIP(), []int{82} } func (x *UpdateNodeRequest) GetClientset() string { @@ -5789,7 +5907,7 @@ type UpdateNodeResponse struct { func (x *UpdateNodeResponse) Reset() { *x = UpdateNodeResponse{} if protoimpl.UnsafeEnabled { - mi := &file_k8s_v1_k8s_proto_msgTypes[81] + mi := &file_k8s_v1_k8s_proto_msgTypes[83] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5802,7 +5920,7 @@ func (x *UpdateNodeResponse) String() string { func (*UpdateNodeResponse) ProtoMessage() {} func (x *UpdateNodeResponse) ProtoReflect() protoreflect.Message { - mi := &file_k8s_v1_k8s_proto_msgTypes[81] + mi := &file_k8s_v1_k8s_proto_msgTypes[83] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5815,7 +5933,7 @@ func (x *UpdateNodeResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateNodeResponse.ProtoReflect.Descriptor instead. func (*UpdateNodeResponse) Descriptor() ([]byte, []int) { - return file_k8s_v1_k8s_proto_rawDescGZIP(), []int{81} + return file_k8s_v1_k8s_proto_rawDescGZIP(), []int{83} } type HPA_Sizing struct { @@ -5832,7 +5950,7 @@ type HPA_Sizing struct { func (x *HPA_Sizing) Reset() { *x = HPA_Sizing{} if protoimpl.UnsafeEnabled { - mi := &file_k8s_v1_k8s_proto_msgTypes[85] + mi := &file_k8s_v1_k8s_proto_msgTypes[87] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5845,7 +5963,7 @@ func (x *HPA_Sizing) String() string { func (*HPA_Sizing) ProtoMessage() {} func (x *HPA_Sizing) ProtoReflect() protoreflect.Message { - mi := &file_k8s_v1_k8s_proto_msgTypes[85] + mi := &file_k8s_v1_k8s_proto_msgTypes[87] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5901,7 +6019,7 @@ type ResizeHPARequest_Sizing struct { func (x *ResizeHPARequest_Sizing) Reset() { *x = ResizeHPARequest_Sizing{} if protoimpl.UnsafeEnabled { - mi := &file_k8s_v1_k8s_proto_msgTypes[88] + mi := &file_k8s_v1_k8s_proto_msgTypes[90] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5914,7 +6032,7 @@ func (x *ResizeHPARequest_Sizing) String() string { func (*ResizeHPARequest_Sizing) ProtoMessage() {} func (x *ResizeHPARequest_Sizing) ProtoReflect() protoreflect.Message { - mi := &file_k8s_v1_k8s_proto_msgTypes[88] + mi := &file_k8s_v1_k8s_proto_msgTypes[90] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5960,7 +6078,7 @@ type Deployment_DeploymentStatus struct { func (x *Deployment_DeploymentStatus) Reset() { *x = Deployment_DeploymentStatus{} if protoimpl.UnsafeEnabled { - mi := &file_k8s_v1_k8s_proto_msgTypes[91] + mi := &file_k8s_v1_k8s_proto_msgTypes[93] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5973,7 +6091,7 @@ func (x *Deployment_DeploymentStatus) String() string { func (*Deployment_DeploymentStatus) ProtoMessage() {} func (x *Deployment_DeploymentStatus) ProtoReflect() protoreflect.Message { - mi := &file_k8s_v1_k8s_proto_msgTypes[91] + mi := &file_k8s_v1_k8s_proto_msgTypes[93] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6045,7 +6163,7 @@ type Deployment_DeploymentStatus_Condition struct { func (x *Deployment_DeploymentStatus_Condition) Reset() { *x = Deployment_DeploymentStatus_Condition{} if protoimpl.UnsafeEnabled { - mi := &file_k8s_v1_k8s_proto_msgTypes[92] + mi := &file_k8s_v1_k8s_proto_msgTypes[94] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6058,7 +6176,7 @@ func (x *Deployment_DeploymentStatus_Condition) String() string { func (*Deployment_DeploymentStatus_Condition) ProtoMessage() {} func (x *Deployment_DeploymentStatus_Condition) ProtoReflect() protoreflect.Message { - mi := &file_k8s_v1_k8s_proto_msgTypes[92] + mi := &file_k8s_v1_k8s_proto_msgTypes[94] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6119,7 +6237,7 @@ type UpdateDeploymentRequest_Fields struct { func (x *UpdateDeploymentRequest_Fields) Reset() { *x = UpdateDeploymentRequest_Fields{} if protoimpl.UnsafeEnabled { - mi := &file_k8s_v1_k8s_proto_msgTypes[93] + mi := &file_k8s_v1_k8s_proto_msgTypes[95] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6132,7 +6250,7 @@ func (x *UpdateDeploymentRequest_Fields) String() string { func (*UpdateDeploymentRequest_Fields) ProtoMessage() {} func (x *UpdateDeploymentRequest_Fields) ProtoReflect() protoreflect.Message { - mi := &file_k8s_v1_k8s_proto_msgTypes[93] + mi := &file_k8s_v1_k8s_proto_msgTypes[95] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6175,7 +6293,7 @@ type StatefulSet_Status struct { func (x *StatefulSet_Status) Reset() { *x = StatefulSet_Status{} if protoimpl.UnsafeEnabled { - mi := &file_k8s_v1_k8s_proto_msgTypes[98] + mi := &file_k8s_v1_k8s_proto_msgTypes[100] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6188,7 +6306,7 @@ func (x *StatefulSet_Status) String() string { func (*StatefulSet_Status) ProtoMessage() {} func (x *StatefulSet_Status) ProtoReflect() protoreflect.Message { - mi := &file_k8s_v1_k8s_proto_msgTypes[98] + mi := &file_k8s_v1_k8s_proto_msgTypes[100] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6242,7 +6360,7 @@ type UpdateStatefulSetRequest_Fields struct { func (x *UpdateStatefulSetRequest_Fields) Reset() { *x = UpdateStatefulSetRequest_Fields{} if protoimpl.UnsafeEnabled { - mi := &file_k8s_v1_k8s_proto_msgTypes[99] + mi := &file_k8s_v1_k8s_proto_msgTypes[101] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6255,7 +6373,7 @@ func (x *UpdateStatefulSetRequest_Fields) String() string { func (*UpdateStatefulSetRequest_Fields) ProtoMessage() {} func (x *UpdateStatefulSetRequest_Fields) ProtoReflect() protoreflect.Message { - mi := &file_k8s_v1_k8s_proto_msgTypes[99] + mi := &file_k8s_v1_k8s_proto_msgTypes[101] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7266,47 +7384,47 @@ var file_k8s_v1_k8s_proto_rawDesc = []byte{ 0x3a, 0x37, 0xb2, 0xe1, 0x1c, 0x33, 0x0a, 0x31, 0x0a, 0x11, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x12, 0x1c, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x7d, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x7d, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x22, 0xfa, 0x01, 0x0a, 0x0f, 0x4c, 0x69, - 0x73, 0x74, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, - 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, - 0x74, 0x73, 0x65, 0x74, 0x12, 0x21, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x07, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x25, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, - 0x02, 0x20, 0x01, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x3e, - 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, - 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3a, 0x36, - 0xb2, 0xe1, 0x1c, 0x32, 0x0a, 0x30, 0x0a, 0x17, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, - 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, - 0x15, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x7d, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x22, 0x4c, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x4a, 0x6f, - 0x62, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x04, 0x6a, 0x6f, - 0x62, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, - 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x42, 0x04, 0xa8, 0xe1, - 0x1c, 0x00, 0x52, 0x04, 0x6a, 0x6f, 0x62, 0x73, 0x3a, 0x0a, 0xaa, 0xe1, 0x1c, 0x06, 0x0a, 0x04, - 0x6a, 0x6f, 0x62, 0x73, 0x22, 0xd9, 0x01, 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4a, - 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x09, 0x63, 0x6c, 0x69, + 0x65, 0x7d, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x22, 0xdb, 0x01, 0x0a, 0x12, 0x44, 0x65, + 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x25, 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x09, 0x63, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x73, 0x65, 0x74, 0x12, 0x21, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, + 0x01, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x25, 0x0a, 0x09, 0x6e, 0x61, + 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, + 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x3a, 0x37, + 0xb2, 0xe1, 0x1c, 0x33, 0x0a, 0x31, 0x0a, 0x11, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, + 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x12, 0x1c, 0x7b, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x7d, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, + 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x22, 0x4c, 0x0a, 0x13, 0x44, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x62, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2a, + 0x0a, 0x03, 0x6a, 0x6f, 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x63, 0x6c, + 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x42, + 0x04, 0xa8, 0xe1, 0x1c, 0x00, 0x52, 0x03, 0x6a, 0x6f, 0x62, 0x3a, 0x09, 0xaa, 0xe1, 0x1c, 0x05, + 0x0a, 0x03, 0x6a, 0x6f, 0x62, 0x22, 0xfa, 0x01, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x4a, 0x6f, + 0x62, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x65, 0x74, 0x12, 0x21, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x25, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, - 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, - 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x3a, 0x37, 0xb2, 0xe1, 0x1c, 0x33, 0x0a, 0x31, 0x0a, - 0x11, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4a, - 0x6f, 0x62, 0x12, 0x1c, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x7d, 0x2f, 0x7b, 0x6e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, - 0x22, 0x13, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x39, 0x0a, 0x09, 0x4a, 0x6f, 0x62, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x22, 0xee, 0x01, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, + 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x3e, 0x0a, 0x07, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x63, 0x6c, + 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, + 0x01, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3a, 0x36, 0xb2, 0xe1, 0x1c, 0x32, + 0x0a, 0x30, 0x0a, 0x17, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, + 0x31, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x15, 0x7b, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x7d, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x7d, 0x22, 0x4c, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x04, 0x6a, 0x6f, 0x62, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, + 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x42, 0x04, 0xa8, 0xe1, 0x1c, 0x00, 0x52, 0x04, + 0x6a, 0x6f, 0x62, 0x73, 0x3a, 0x0a, 0xaa, 0xe1, 0x1c, 0x06, 0x0a, 0x04, 0x6a, 0x6f, 0x62, 0x73, + 0x22, 0xd9, 0x01, 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x65, 0x74, 0x12, 0x21, 0x0a, 0x07, @@ -7314,456 +7432,482 @@ var file_k8s_v1_k8s_proto_rawDesc = []byte{ 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x25, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x09, 0x6e, 0x61, 0x6d, - 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x37, 0x0a, 0x0a, 0x6a, 0x6f, 0x62, 0x5f, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x6c, 0x75, - 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x52, 0x09, 0x6a, 0x6f, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x3a, - 0x30, 0xb2, 0xe1, 0x1c, 0x2c, 0x0a, 0x2a, 0x0a, 0x11, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, - 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x12, 0x15, 0x7b, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x7d, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x7d, 0x22, 0x3f, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2a, 0x0a, 0x03, 0x6a, 0x6f, 0x62, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, - 0x2e, 0x76, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x42, 0x04, 0xa8, 0xe1, 0x1c, 0x00, 0x52, 0x03, 0x6a, - 0x6f, 0x62, 0x22, 0xf2, 0x02, 0x0a, 0x09, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x4b, - 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, - 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x2e, 0x41, 0x6e, - 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, - 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3c, 0x0a, 0x06, 0x6c, - 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x63, 0x6c, - 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x61, 0x6d, 0x65, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x1a, 0x3e, 0x0a, 0x10, 0x41, 0x6e, 0x6e, - 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 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, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, - 0x65, 0x6c, 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, 0x3a, 0x31, 0xb2, 0xe1, 0x1c, 0x2d, 0x0a, 0x2b, 0x0a, 0x17, 0x63, 0x6c, - 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x61, 0x6d, 0x65, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x10, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x7d, - 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x22, 0xb4, 0x01, 0x0a, 0x18, 0x44, 0x65, 0x73, 0x63, - 0x72, 0x69, 0x62, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x65, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, - 0x52, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x65, 0x74, 0x12, 0x21, 0x0a, 0x07, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, - 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x1b, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, - 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x3a, 0x31, 0xb2, 0xe1, 0x1c, - 0x2d, 0x0a, 0x2b, 0x0a, 0x17, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, - 0x76, 0x31, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x10, 0x7b, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x7d, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x22, 0x6a, - 0x0a, 0x19, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x09, 0x6e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, - 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x42, 0x04, 0xa8, 0xe1, 0x1c, 0x00, 0x52, 0x09, - 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x3a, 0x0f, 0xaa, 0xe1, 0x1c, 0x0b, 0x0a, - 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0xa0, 0x02, 0x0a, 0x05, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, - 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, - 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, - 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x69, 0x6e, - 0x76, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x69, 0x6e, 0x76, 0x6f, 0x6c, 0x76, - 0x65, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2d, 0x0a, 0x04, - 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x63, 0x6c, 0x75, - 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, - 0x74, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6d, 0x69, 0x6c, - 0x6c, 0x69, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x63, 0x72, 0x65, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x73, 0x22, 0xad, 0x02, - 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x65, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, - 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x65, 0x74, 0x12, 0x21, 0x0a, 0x07, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, - 0x72, 0x02, 0x20, 0x01, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x25, 0x0a, - 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, - 0x20, 0x01, 0x52, 0x0a, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x37, - 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x63, - 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x62, 0x6a, - 0x65, 0x63, 0x74, 0x4b, 0x69, 0x6e, 0x64, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, - 0x01, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x3a, 0x44, 0xb2, 0xe1, 0x1c, 0x40, 0x0a, 0x3e, 0x0a, + 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x3a, 0x37, 0xb2, 0xe1, 0x1c, 0x33, 0x0a, 0x31, 0x0a, 0x11, 0x63, 0x6c, 0x75, + 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x12, 0x1c, + 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x7d, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x22, 0x13, 0x0a, 0x11, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x39, 0x0a, 0x09, 0x4a, 0x6f, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2c, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xee, 0x01, 0x0a, + 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x25, 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x65, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x09, 0x63, + 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x65, 0x74, 0x12, 0x21, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, + 0x20, 0x01, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x25, 0x0a, 0x09, 0x6e, + 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, + 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x12, 0x37, 0x0a, 0x0a, 0x6a, 0x6f, 0x62, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, + 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x52, 0x09, 0x6a, 0x6f, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x3a, 0x30, 0xb2, 0xe1, 0x1c, + 0x2c, 0x0a, 0x2a, 0x0a, 0x11, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, + 0x76, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x12, 0x15, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x7d, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x22, 0x3f, 0x0a, + 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x2a, 0x0a, 0x03, 0x6a, 0x6f, 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x12, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, + 0x4a, 0x6f, 0x62, 0x42, 0x04, 0xa8, 0xe1, 0x1c, 0x00, 0x52, 0x03, 0x6a, 0x6f, 0x62, 0x22, 0xf2, + 0x02, 0x0a, 0x09, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x4b, 0x0a, 0x0b, 0x61, 0x6e, + 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x29, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, + 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3c, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, + 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, + 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, + 0x61, 0x62, 0x65, 0x6c, 0x73, 0x1a, 0x3e, 0x0a, 0x10, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 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, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 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, + 0x3a, 0x31, 0xb2, 0xe1, 0x1c, 0x2d, 0x0a, 0x2b, 0x0a, 0x17, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, + 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x12, 0x10, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x7d, 0x2f, 0x7b, 0x6e, 0x61, + 0x6d, 0x65, 0x7d, 0x22, 0xb4, 0x01, 0x0a, 0x18, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, + 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x25, 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x09, 0x63, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x73, 0x65, 0x74, 0x12, 0x21, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, + 0x01, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, + 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x3a, 0x31, 0xb2, 0xe1, 0x1c, 0x2d, 0x0a, 0x2b, 0x0a, 0x17, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x23, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x7d, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, - 0x7b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x22, 0x56, 0x0a, - 0x12, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, - 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x04, 0xa8, 0xe1, 0x1c, 0x00, 0x52, - 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x3a, 0x0c, 0xaa, 0xe1, 0x1c, 0x08, 0x0a, 0x06, 0x65, - 0x76, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x62, 0x0a, 0x0e, 0x4e, 0x75, 0x6c, 0x6c, 0x61, 0x62, 0x6c, - 0x65, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x30, 0x0a, 0x04, 0x6e, 0x75, 0x6c, 0x6c, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4e, 0x75, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x75, 0x6c, 0x6c, 0x12, 0x16, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x42, 0x06, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x22, 0x98, 0x03, 0x0a, 0x18, 0x45, 0x78, - 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, - 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x59, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, - 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x4f, - 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x2e, - 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x0c, 0xfa, 0x42, 0x09, - 0x9a, 0x01, 0x06, 0x22, 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, - 0x73, 0x12, 0x68, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, - 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x4f, - 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x2e, - 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x42, 0x0c, 0xfa, 0x42, 0x09, 0x9a, 0x01, 0x06, 0x22, 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x0b, - 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x58, 0x0a, 0x0b, 0x4c, - 0x61, 0x62, 0x65, 0x6c, 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, 0x33, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x63, 0x6c, - 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x75, 0x6c, 0x6c, - 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x5d, 0x0a, 0x10, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, + 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x10, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x7d, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x22, 0x6a, 0x0a, 0x19, 0x44, 0x65, + 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x6c, 0x75, + 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x42, 0x04, 0xa8, 0xe1, 0x1c, 0x00, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x3a, 0x0f, 0xaa, 0xe1, 0x1c, 0x0b, 0x0a, 0x09, 0x6e, 0x61, 0x6d, + 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0xa0, 0x02, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x0b, + 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, + 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, + 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x69, 0x6e, 0x76, 0x6f, 0x6c, 0x76, + 0x65, 0x64, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x69, 0x6e, 0x76, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x4f, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2d, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, + 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4b, 0x69, 0x6e, + 0x64, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6d, 0x69, 0x6c, 0x6c, 0x69, 0x73, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, + 0x69, 0x6d, 0x65, 0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x73, 0x22, 0xad, 0x02, 0x0a, 0x11, 0x4c, 0x69, + 0x73, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x25, 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x09, 0x63, 0x6c, 0x69, + 0x65, 0x6e, 0x74, 0x73, 0x65, 0x74, 0x12, 0x21, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, + 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x25, 0x0a, 0x09, 0x6e, 0x61, 0x6d, + 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, + 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x12, 0x28, 0x0a, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x0a, + 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x37, 0x0a, 0x04, 0x6b, 0x69, + 0x6e, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, + 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4b, + 0x69, 0x6e, 0x64, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6b, + 0x69, 0x6e, 0x64, 0x3a, 0x44, 0xb2, 0xe1, 0x1c, 0x40, 0x0a, 0x3e, 0x0a, 0x17, 0x63, 0x6c, 0x75, + 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x12, 0x23, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x7d, 0x2f, + 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x7b, 0x6f, 0x62, 0x6a, + 0x65, 0x63, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x22, 0x56, 0x0a, 0x12, 0x4c, 0x69, 0x73, + 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x32, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x14, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x04, 0xa8, 0xe1, 0x1c, 0x00, 0x52, 0x06, 0x65, 0x76, 0x65, + 0x6e, 0x74, 0x73, 0x3a, 0x0c, 0xaa, 0xe1, 0x1c, 0x08, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, + 0x73, 0x22, 0x62, 0x0a, 0x0e, 0x4e, 0x75, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74, 0x72, + 0x69, 0x6e, 0x67, 0x12, 0x30, 0x0a, 0x04, 0x6e, 0x75, 0x6c, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x4e, 0x75, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x00, 0x52, + 0x04, 0x6e, 0x75, 0x6c, 0x6c, 0x12, 0x16, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x06, 0x0a, + 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x22, 0x98, 0x03, 0x0a, 0x18, 0x45, 0x78, 0x70, 0x65, 0x63, 0x74, + 0x65, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x46, 0x69, 0x65, 0x6c, + 0x64, 0x73, 0x12, 0x59, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, + 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x4d, 0x65, 0x74, 0x61, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x2e, 0x4c, 0x61, 0x62, 0x65, + 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x0c, 0xfa, 0x42, 0x09, 0x9a, 0x01, 0x06, 0x22, + 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x68, 0x0a, + 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, + 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x4d, 0x65, 0x74, 0x61, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x0c, 0xfa, 0x42, + 0x09, 0x9a, 0x01, 0x06, 0x22, 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x58, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, + 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, 0x33, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, + 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x75, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, + 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, + 0x01, 0x1a, 0x5d, 0x0a, 0x10, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 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, 0x33, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, + 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x75, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x53, + 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x22, 0xc2, 0x02, 0x0a, 0x10, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x46, + 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x51, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, + 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, + 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x42, 0x0c, 0xfa, 0x42, 0x09, 0x9a, 0x01, 0x06, 0x22, 0x04, 0x72, 0x02, 0x20, 0x01, + 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x60, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, + 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x2e, 0x41, + 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, + 0x0c, 0xfa, 0x42, 0x09, 0x9a, 0x01, 0x06, 0x22, 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x0b, 0x61, + 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, + 0x62, 0x65, 0x6c, 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, 0x3e, 0x0a, 0x10, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 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, 0x33, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x63, 0x6c, 0x75, - 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x75, 0x6c, 0x6c, 0x61, - 0x62, 0x6c, 0x65, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x22, 0xc2, 0x02, 0x0a, 0x10, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4d, - 0x65, 0x74, 0x61, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x51, 0x0a, 0x06, 0x6c, 0x61, 0x62, - 0x65, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x63, 0x6c, 0x75, 0x74, - 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, - 0x4d, 0x65, 0x74, 0x61, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x0c, 0xfa, 0x42, 0x09, 0x9a, 0x01, 0x06, 0x22, 0x04, - 0x72, 0x02, 0x20, 0x01, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x60, 0x0a, 0x0b, - 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x30, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, - 0x31, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x46, 0x69, 0x65, 0x6c, - 0x64, 0x73, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x42, 0x0c, 0xfa, 0x42, 0x09, 0x9a, 0x01, 0x06, 0x22, 0x04, 0x72, 0x02, 0x20, - 0x01, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x39, - 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 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, 0x3e, 0x0a, 0x10, 0x41, 0x6e, 0x6e, - 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 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, 0x66, 0x0a, 0x16, 0x52, 0x65, 0x6d, - 0x6f, 0x76, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x46, 0x69, 0x65, - 0x6c, 0x64, 0x73, 0x12, 0x20, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x18, 0x01, 0x52, 0x06, 0x6c, - 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x2a, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, - 0x01, 0x02, 0x18, 0x01, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x22, 0x88, 0x01, 0x0a, 0x04, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, - 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x24, 0x0a, 0x0d, 0x75, 0x6e, 0x73, 0x63, - 0x68, 0x65, 0x64, 0x75, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x0d, 0x75, 0x6e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x3a, 0x2c, - 0xb2, 0xe1, 0x1c, 0x28, 0x0a, 0x26, 0x0a, 0x12, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, - 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x7b, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x7d, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x22, 0xaa, 0x01, 0x0a, - 0x13, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x65, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, - 0x52, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x65, 0x74, 0x12, 0x21, 0x0a, 0x07, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, - 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x1b, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, - 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x3a, 0x2c, 0xb2, 0xe1, 0x1c, + 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, 0x66, 0x0a, 0x16, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, + 0x20, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x42, + 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x18, 0x01, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, + 0x73, 0x12, 0x2a, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x18, 0x01, + 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x88, 0x01, + 0x0a, 0x04, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x12, 0x24, 0x0a, 0x0d, 0x75, 0x6e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, + 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x75, 0x6e, 0x73, + 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x3a, 0x2c, 0xb2, 0xe1, 0x1c, 0x28, + 0x0a, 0x26, 0x0a, 0x12, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, + 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x7d, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x22, 0xaa, 0x01, 0x0a, 0x13, 0x44, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x62, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x25, 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x09, 0x63, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x73, 0x65, 0x74, 0x12, 0x21, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, + 0x01, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, + 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x3a, 0x2c, 0xb2, 0xe1, 0x1c, 0x28, 0x0a, 0x26, 0x0a, + 0x12, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4e, + 0x6f, 0x64, 0x65, 0x12, 0x10, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x7d, 0x2f, 0x7b, + 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x22, 0x51, 0x0a, 0x14, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, + 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, + 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x63, 0x6c, + 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, + 0x42, 0x04, 0xa8, 0xe1, 0x1c, 0x00, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x3a, 0x0a, 0xaa, 0xe1, + 0x1c, 0x06, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x22, 0xce, 0x01, 0x0a, 0x11, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, + 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x09, 0x63, 0x6c, 0x69, 0x65, + 0x6e, 0x74, 0x73, 0x65, 0x74, 0x12, 0x21, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, + 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x75, 0x6e, 0x73, 0x63, 0x68, 0x65, 0x64, + 0x75, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x75, 0x6e, + 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x3a, 0x2c, 0xb2, 0xe1, 0x1c, 0x28, 0x0a, 0x26, 0x0a, 0x12, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x7d, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x22, 0x51, 0x0a, 0x14, 0x44, 0x65, 0x73, - 0x63, 0x72, 0x69, 0x62, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x2d, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x13, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, - 0x4e, 0x6f, 0x64, 0x65, 0x42, 0x04, 0xa8, 0xe1, 0x1c, 0x00, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, - 0x3a, 0x0a, 0xaa, 0xe1, 0x1c, 0x06, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x22, 0xce, 0x01, 0x0a, - 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x25, 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x65, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x09, - 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x65, 0x74, 0x12, 0x21, 0x0a, 0x07, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, - 0x02, 0x20, 0x01, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, - 0x02, 0x20, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x75, 0x6e, 0x73, - 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x0d, 0x75, 0x6e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x3a, - 0x2c, 0xb2, 0xe1, 0x1c, 0x28, 0x0a, 0x26, 0x0a, 0x12, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, - 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x7b, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x7d, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x22, 0x14, 0x0a, - 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x2a, 0x33, 0x0a, 0x0a, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4b, 0x69, 0x6e, - 0x64, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, - 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x01, 0x12, - 0x07, 0x0a, 0x03, 0x50, 0x4f, 0x44, 0x10, 0x02, 0x32, 0x90, 0x1f, 0x0a, 0x06, 0x4b, 0x38, 0x73, - 0x41, 0x50, 0x49, 0x12, 0x7a, 0x0a, 0x0b, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x50, - 0x6f, 0x64, 0x12, 0x21, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, - 0x76, 0x31, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x50, 0x6f, 0x64, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, - 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x50, 0x6f, - 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x24, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x18, 0x22, 0x13, 0x2f, 0x76, 0x31, 0x2f, 0x6b, 0x38, 0x73, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, - 0x69, 0x62, 0x65, 0x50, 0x6f, 0x64, 0x3a, 0x01, 0x2a, 0xaa, 0xe1, 0x1c, 0x02, 0x08, 0x02, 0x12, - 0x6e, 0x0a, 0x08, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x64, 0x73, 0x12, 0x1e, 0x2e, 0x63, 0x6c, - 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x50, 0x6f, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x63, 0x6c, - 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x50, 0x6f, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x21, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x15, 0x22, 0x10, 0x2f, 0x76, 0x31, 0x2f, 0x6b, 0x38, 0x73, 0x2f, 0x6c, 0x69, - 0x73, 0x74, 0x50, 0x6f, 0x64, 0x73, 0x3a, 0x01, 0x2a, 0xaa, 0xe1, 0x1c, 0x02, 0x08, 0x02, 0x12, - 0x72, 0x0a, 0x09, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6f, 0x64, 0x12, 0x1f, 0x2e, 0x63, - 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x50, 0x6f, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, - 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6f, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x72, 0x7d, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x22, 0x14, 0x0a, 0x12, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2a, + 0x33, 0x0a, 0x0a, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x0f, 0x0a, + 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, + 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x50, + 0x4f, 0x44, 0x10, 0x02, 0x32, 0x8c, 0x20, 0x0a, 0x06, 0x4b, 0x38, 0x73, 0x41, 0x50, 0x49, 0x12, + 0x7a, 0x0a, 0x0b, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x50, 0x6f, 0x64, 0x12, 0x21, + 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x50, 0x6f, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x22, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, + 0x31, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x50, 0x6f, 0x64, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x24, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x22, 0x13, 0x2f, + 0x76, 0x31, 0x2f, 0x6b, 0x38, 0x73, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x50, + 0x6f, 0x64, 0x3a, 0x01, 0x2a, 0xaa, 0xe1, 0x1c, 0x02, 0x08, 0x02, 0x12, 0x6e, 0x0a, 0x08, 0x4c, + 0x69, 0x73, 0x74, 0x50, 0x6f, 0x64, 0x73, 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, + 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x64, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, + 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x64, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x21, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, + 0x22, 0x10, 0x2f, 0x76, 0x31, 0x2f, 0x6b, 0x38, 0x73, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x50, 0x6f, + 0x64, 0x73, 0x3a, 0x01, 0x2a, 0xaa, 0xe1, 0x1c, 0x02, 0x08, 0x02, 0x12, 0x72, 0x0a, 0x09, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6f, 0x64, 0x12, 0x1f, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, + 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, + 0x6f, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x63, 0x6c, 0x75, 0x74, + 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x50, 0x6f, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x16, 0x22, 0x11, 0x2f, 0x76, 0x31, 0x2f, 0x6b, 0x38, 0x73, 0x2f, 0x64, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x50, 0x6f, 0x64, 0x3a, 0x01, 0x2a, 0xaa, 0xe1, 0x1c, 0x02, 0x08, 0x04, 0x12, + 0x72, 0x0a, 0x09, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x64, 0x12, 0x1f, 0x2e, 0x63, + 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x50, 0x6f, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, + 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x22, 0x11, 0x2f, 0x76, 0x31, 0x2f, 0x6b, 0x38, 0x73, - 0x2f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6f, 0x64, 0x3a, 0x01, 0x2a, 0xaa, 0xe1, 0x1c, - 0x02, 0x08, 0x04, 0x12, 0x72, 0x0a, 0x09, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x64, + 0x2f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x64, 0x3a, 0x01, 0x2a, 0xaa, 0xe1, 0x1c, + 0x02, 0x08, 0x03, 0x12, 0x72, 0x0a, 0x09, 0x52, 0x65, 0x73, 0x69, 0x7a, 0x65, 0x48, 0x50, 0x41, 0x12, 0x1f, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, - 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x2e, 0x52, 0x65, 0x73, 0x69, 0x7a, 0x65, 0x48, 0x50, 0x41, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, - 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x31, 0x2e, 0x52, 0x65, 0x73, 0x69, 0x7a, 0x65, 0x48, 0x50, 0x41, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x22, 0x11, 0x2f, 0x76, 0x31, - 0x2f, 0x6b, 0x38, 0x73, 0x2f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x64, 0x3a, 0x01, - 0x2a, 0xaa, 0xe1, 0x1c, 0x02, 0x08, 0x03, 0x12, 0x72, 0x0a, 0x09, 0x52, 0x65, 0x73, 0x69, 0x7a, + 0x2f, 0x6b, 0x38, 0x73, 0x2f, 0x72, 0x65, 0x73, 0x69, 0x7a, 0x65, 0x48, 0x50, 0x41, 0x3a, 0x01, + 0x2a, 0xaa, 0xe1, 0x1c, 0x02, 0x08, 0x03, 0x12, 0x72, 0x0a, 0x09, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x48, 0x50, 0x41, 0x12, 0x1f, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, - 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x69, 0x7a, 0x65, 0x48, 0x50, 0x41, 0x52, 0x65, + 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x48, 0x50, 0x41, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, - 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x69, 0x7a, 0x65, 0x48, 0x50, 0x41, 0x52, + 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x48, 0x50, 0x41, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x22, - 0x11, 0x2f, 0x76, 0x31, 0x2f, 0x6b, 0x38, 0x73, 0x2f, 0x72, 0x65, 0x73, 0x69, 0x7a, 0x65, 0x48, - 0x50, 0x41, 0x3a, 0x01, 0x2a, 0xaa, 0xe1, 0x1c, 0x02, 0x08, 0x03, 0x12, 0x72, 0x0a, 0x09, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x48, 0x50, 0x41, 0x12, 0x1f, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, - 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x48, - 0x50, 0x41, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x63, 0x6c, 0x75, 0x74, - 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x48, 0x50, 0x41, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x16, 0x22, 0x11, 0x2f, 0x76, 0x31, 0x2f, 0x6b, 0x38, 0x73, 0x2f, 0x64, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x48, 0x50, 0x41, 0x3a, 0x01, 0x2a, 0xaa, 0xe1, 0x1c, 0x02, 0x08, 0x04, 0x12, - 0x96, 0x01, 0x0a, 0x12, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x44, 0x65, 0x70, 0x6c, - 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x28, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, - 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x44, - 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x29, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, - 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, - 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2b, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x1f, 0x22, 0x1a, 0x2f, 0x76, 0x31, 0x2f, 0x6b, 0x38, 0x73, 0x2f, 0x64, 0x65, 0x73, - 0x63, 0x72, 0x69, 0x62, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x3a, - 0x01, 0x2a, 0xaa, 0xe1, 0x1c, 0x02, 0x08, 0x02, 0x12, 0x8a, 0x01, 0x0a, 0x0f, 0x4c, 0x69, 0x73, - 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x25, 0x2e, 0x63, - 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, - 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, - 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x1c, 0x22, 0x17, 0x2f, 0x76, 0x31, 0x2f, 0x6b, 0x38, 0x73, 0x2f, 0x6c, 0x69, 0x73, - 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x3a, 0x01, 0x2a, 0xaa, - 0xe1, 0x1c, 0x02, 0x08, 0x02, 0x12, 0x8e, 0x01, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x26, 0x2e, 0x63, 0x6c, 0x75, - 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, - 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, - 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x1d, 0x22, 0x18, 0x2f, 0x76, 0x31, 0x2f, 0x6b, 0x38, 0x73, 0x2f, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x3a, 0x01, 0x2a, - 0xaa, 0xe1, 0x1c, 0x02, 0x08, 0x03, 0x12, 0x8e, 0x01, 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x26, 0x2e, 0x63, 0x6c, - 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, - 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, - 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x1d, 0x22, 0x18, 0x2f, 0x76, 0x31, 0x2f, 0x6b, 0x38, 0x73, 0x2f, 0x64, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x3a, 0x01, - 0x2a, 0xaa, 0xe1, 0x1c, 0x02, 0x08, 0x04, 0x12, 0x8a, 0x01, 0x0a, 0x0f, 0x44, 0x65, 0x73, 0x63, - 0x72, 0x69, 0x62, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x25, 0x2e, 0x63, 0x6c, - 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x73, 0x63, - 0x72, 0x69, 0x62, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, - 0x76, 0x31, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x1c, 0x22, 0x17, 0x2f, 0x76, 0x31, 0x2f, 0x6b, 0x38, 0x73, 0x2f, 0x64, 0x65, 0x73, 0x63, - 0x72, 0x69, 0x62, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x3a, 0x01, 0x2a, 0xaa, 0xe1, - 0x1c, 0x02, 0x08, 0x02, 0x12, 0x7e, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x73, 0x12, 0x22, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, + 0x11, 0x2f, 0x76, 0x31, 0x2f, 0x6b, 0x38, 0x73, 0x2f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x48, + 0x50, 0x41, 0x3a, 0x01, 0x2a, 0xaa, 0xe1, 0x1c, 0x02, 0x08, 0x04, 0x12, 0x96, 0x01, 0x0a, 0x12, + 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, + 0x6e, 0x74, 0x12, 0x28, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, + 0x76, 0x31, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, + 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x63, + 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x62, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x22, + 0x1a, 0x2f, 0x76, 0x31, 0x2f, 0x6b, 0x38, 0x73, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, + 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x3a, 0x01, 0x2a, 0xaa, 0xe1, + 0x1c, 0x02, 0x08, 0x02, 0x12, 0x8a, 0x01, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x70, + 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x25, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, + 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x70, + 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x26, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x22, + 0x17, 0x2f, 0x76, 0x31, 0x2f, 0x6b, 0x38, 0x73, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x70, + 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x3a, 0x01, 0x2a, 0xaa, 0xe1, 0x1c, 0x02, 0x08, + 0x02, 0x12, 0x8e, 0x01, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x65, 0x70, 0x6c, + 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x26, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, + 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x65, 0x70, + 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, + 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x22, + 0x18, 0x2f, 0x76, 0x31, 0x2f, 0x6b, 0x38, 0x73, 0x2f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, + 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x3a, 0x01, 0x2a, 0xaa, 0xe1, 0x1c, 0x02, + 0x08, 0x03, 0x12, 0x8e, 0x01, 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x65, 0x70, + 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x26, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, + 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x65, + 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x27, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, + 0x22, 0x18, 0x2f, 0x76, 0x31, 0x2f, 0x6b, 0x38, 0x73, 0x2f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x3a, 0x01, 0x2a, 0xaa, 0xe1, 0x1c, + 0x02, 0x08, 0x04, 0x12, 0x8a, 0x01, 0x0a, 0x0f, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, + 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x25, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, + 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, + 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, + 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x22, 0x17, + 0x2f, 0x76, 0x31, 0x2f, 0x6b, 0x38, 0x73, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, + 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x3a, 0x01, 0x2a, 0xaa, 0xe1, 0x1c, 0x02, 0x08, 0x02, + 0x12, 0x7e, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, + 0x12, 0x22, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, - 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x25, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x22, 0x14, 0x2f, 0x76, 0x31, 0x2f, 0x6b, 0x38, 0x73, 0x2f, 0x6c, - 0x69, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x3a, 0x01, 0x2a, 0xaa, 0xe1, - 0x1c, 0x02, 0x08, 0x02, 0x12, 0x82, 0x01, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x23, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, - 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x63, 0x6c, - 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x22, 0x15, 0x2f, 0x76, 0x31, 0x2f, 0x6b, - 0x38, 0x73, 0x2f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x3a, 0x01, 0x2a, 0xaa, 0xe1, 0x1c, 0x02, 0x08, 0x04, 0x12, 0x9a, 0x01, 0x0a, 0x13, 0x44, 0x65, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x25, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x19, 0x22, 0x14, 0x2f, 0x76, 0x31, 0x2f, 0x6b, 0x38, 0x73, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x3a, 0x01, 0x2a, 0xaa, 0xe1, 0x1c, 0x02, 0x08, 0x02, + 0x12, 0x82, 0x01, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x12, 0x23, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, + 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, + 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x22, 0x15, 0x2f, 0x76, 0x31, 0x2f, 0x6b, 0x38, 0x73, 0x2f, 0x64, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x3a, 0x01, 0x2a, 0xaa, + 0xe1, 0x1c, 0x02, 0x08, 0x04, 0x12, 0x9a, 0x01, 0x0a, 0x13, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x62, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x66, 0x75, 0x6c, 0x53, 0x65, 0x74, 0x12, 0x29, 0x2e, + 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x66, 0x75, 0x6c, 0x53, 0x65, - 0x74, 0x12, 0x29, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, - 0x31, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x66, - 0x75, 0x6c, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x63, - 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x73, - 0x63, 0x72, 0x69, 0x62, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x66, 0x75, 0x6c, 0x53, 0x65, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, - 0x22, 0x1b, 0x2f, 0x76, 0x31, 0x2f, 0x6b, 0x38, 0x73, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, - 0x62, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x66, 0x75, 0x6c, 0x53, 0x65, 0x74, 0x3a, 0x01, 0x2a, - 0xaa, 0xe1, 0x1c, 0x02, 0x08, 0x02, 0x12, 0x8e, 0x01, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x66, 0x75, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x12, 0x26, 0x2e, 0x63, 0x6c, - 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x66, 0x75, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, - 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x66, 0x75, 0x6c, - 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x1d, 0x22, 0x18, 0x2f, 0x76, 0x31, 0x2f, 0x6b, 0x38, 0x73, 0x2f, 0x6c, 0x69, - 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x66, 0x75, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x3a, 0x01, - 0x2a, 0xaa, 0xe1, 0x1c, 0x02, 0x08, 0x02, 0x12, 0x92, 0x01, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x66, 0x75, 0x6c, 0x53, 0x65, 0x74, 0x12, 0x27, 0x2e, - 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x66, 0x75, 0x6c, 0x53, 0x65, 0x74, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, - 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, - 0x74, 0x65, 0x66, 0x75, 0x6c, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x2a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x22, 0x19, 0x2f, 0x76, 0x31, 0x2f, 0x6b, 0x38, - 0x73, 0x2f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x66, 0x75, 0x6c, - 0x53, 0x65, 0x74, 0x3a, 0x01, 0x2a, 0xaa, 0xe1, 0x1c, 0x02, 0x08, 0x03, 0x12, 0x92, 0x01, 0x0a, - 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x66, 0x75, 0x6c, 0x53, - 0x65, 0x74, 0x12, 0x27, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, - 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x66, 0x75, - 0x6c, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x63, 0x6c, - 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x66, 0x75, 0x6c, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x22, 0x19, 0x2f, - 0x76, 0x31, 0x2f, 0x6b, 0x38, 0x73, 0x2f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x61, - 0x74, 0x65, 0x66, 0x75, 0x6c, 0x53, 0x65, 0x74, 0x3a, 0x01, 0x2a, 0xaa, 0xe1, 0x1c, 0x02, 0x08, - 0x04, 0x12, 0x8a, 0x01, 0x0a, 0x0f, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x43, 0x72, - 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x12, 0x25, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, - 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x43, 0x72, - 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x63, - 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x73, - 0x63, 0x72, 0x69, 0x62, 0x65, 0x43, 0x72, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x22, 0x17, 0x2f, 0x76, - 0x31, 0x2f, 0x6b, 0x38, 0x73, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x43, 0x72, - 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x3a, 0x01, 0x2a, 0xaa, 0xe1, 0x1c, 0x02, 0x08, 0x02, 0x12, 0x7e, - 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x72, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x73, 0x12, 0x22, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, + 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, + 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x66, 0x75, 0x6c, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x22, 0x1b, 0x2f, 0x76, + 0x31, 0x2f, 0x6b, 0x38, 0x73, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x66, 0x75, 0x6c, 0x53, 0x65, 0x74, 0x3a, 0x01, 0x2a, 0xaa, 0xe1, 0x1c, 0x02, + 0x08, 0x02, 0x12, 0x8e, 0x01, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x66, 0x75, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x12, 0x26, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, + 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, + 0x65, 0x66, 0x75, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x27, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x66, 0x75, 0x6c, 0x53, 0x65, 0x74, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, + 0x22, 0x18, 0x2f, 0x76, 0x31, 0x2f, 0x6b, 0x38, 0x73, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x66, 0x75, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x3a, 0x01, 0x2a, 0xaa, 0xe1, 0x1c, + 0x02, 0x08, 0x02, 0x12, 0x92, 0x01, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x66, 0x75, 0x6c, 0x53, 0x65, 0x74, 0x12, 0x27, 0x2e, 0x63, 0x6c, 0x75, 0x74, + 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x53, 0x74, 0x61, 0x74, 0x65, 0x66, 0x75, 0x6c, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, + 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x66, 0x75, + 0x6c, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2a, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x1e, 0x22, 0x19, 0x2f, 0x76, 0x31, 0x2f, 0x6b, 0x38, 0x73, 0x2f, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x66, 0x75, 0x6c, 0x53, 0x65, 0x74, 0x3a, + 0x01, 0x2a, 0xaa, 0xe1, 0x1c, 0x02, 0x08, 0x03, 0x12, 0x92, 0x01, 0x0a, 0x11, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x66, 0x75, 0x6c, 0x53, 0x65, 0x74, 0x12, 0x27, + 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x66, 0x75, 0x6c, 0x53, 0x65, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, + 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x66, 0x75, 0x6c, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x2a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x22, 0x19, 0x2f, 0x76, 0x31, 0x2f, 0x6b, + 0x38, 0x73, 0x2f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x66, 0x75, + 0x6c, 0x53, 0x65, 0x74, 0x3a, 0x01, 0x2a, 0xaa, 0xe1, 0x1c, 0x02, 0x08, 0x04, 0x12, 0x8a, 0x01, + 0x0a, 0x0f, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x43, 0x72, 0x6f, 0x6e, 0x4a, 0x6f, + 0x62, 0x12, 0x25, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, + 0x31, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x43, 0x72, 0x6f, 0x6e, 0x4a, 0x6f, + 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, + 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, + 0x65, 0x43, 0x72, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x22, 0x17, 0x2f, 0x76, 0x31, 0x2f, 0x6b, 0x38, + 0x73, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x43, 0x72, 0x6f, 0x6e, 0x4a, 0x6f, + 0x62, 0x3a, 0x01, 0x2a, 0xaa, 0xe1, 0x1c, 0x02, 0x08, 0x02, 0x12, 0x7e, 0x0a, 0x0c, 0x4c, 0x69, + 0x73, 0x74, 0x43, 0x72, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x73, 0x12, 0x22, 0x2e, 0x63, 0x6c, 0x75, + 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, + 0x72, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x43, 0x72, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, - 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x72, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x25, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x22, - 0x14, 0x2f, 0x76, 0x31, 0x2f, 0x6b, 0x38, 0x73, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x43, 0x72, 0x6f, - 0x6e, 0x4a, 0x6f, 0x62, 0x73, 0x3a, 0x01, 0x2a, 0xaa, 0xe1, 0x1c, 0x02, 0x08, 0x02, 0x12, 0x82, - 0x01, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x72, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, - 0x12, 0x23, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, - 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x72, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, - 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x72, 0x6f, 0x6e, - 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x1a, 0x22, 0x15, 0x2f, 0x76, 0x31, 0x2f, 0x6b, 0x38, 0x73, 0x2f, 0x64, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x43, 0x72, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x3a, 0x01, 0x2a, 0xaa, 0xe1, 0x1c, - 0x02, 0x08, 0x04, 0x12, 0x86, 0x01, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x4d, 0x61, 0x70, 0x73, 0x12, 0x24, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, - 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x4d, 0x61, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x63, - 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, 0x22, 0x16, 0x2f, 0x76, 0x31, - 0x2f, 0x6b, 0x38, 0x73, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, - 0x61, 0x70, 0x73, 0x3a, 0x01, 0x2a, 0xaa, 0xe1, 0x1c, 0x02, 0x08, 0x02, 0x12, 0x92, 0x01, 0x0a, - 0x11, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, - 0x61, 0x70, 0x12, 0x27, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, - 0x76, 0x31, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x63, 0x6c, - 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x73, 0x63, - 0x72, 0x69, 0x62, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x22, 0x19, 0x2f, - 0x76, 0x31, 0x2f, 0x6b, 0x38, 0x73, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x3a, 0x01, 0x2a, 0xaa, 0xe1, 0x1c, 0x02, 0x08, - 0x02, 0x12, 0x8a, 0x01, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x4d, 0x61, 0x70, 0x12, 0x25, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, - 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x63, - 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x22, 0x17, 0x2f, 0x76, - 0x31, 0x2f, 0x6b, 0x38, 0x73, 0x2f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x4d, 0x61, 0x70, 0x3a, 0x01, 0x2a, 0xaa, 0xe1, 0x1c, 0x02, 0x08, 0x04, 0x12, 0x6e, - 0x0a, 0x08, 0x4c, 0x69, 0x73, 0x74, 0x4a, 0x6f, 0x62, 0x73, 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, - 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4a, - 0x6f, 0x62, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x63, 0x6c, 0x75, - 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4a, - 0x6f, 0x62, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x21, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x15, 0x22, 0x10, 0x2f, 0x76, 0x31, 0x2f, 0x6b, 0x38, 0x73, 0x2f, 0x6c, 0x69, 0x73, - 0x74, 0x4a, 0x6f, 0x62, 0x73, 0x3a, 0x01, 0x2a, 0xaa, 0xe1, 0x1c, 0x02, 0x08, 0x02, 0x12, 0x72, - 0x0a, 0x09, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x12, 0x1f, 0x2e, 0x63, 0x6c, - 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x63, + 0x69, 0x73, 0x74, 0x43, 0x72, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x25, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x22, 0x14, 0x2f, 0x76, 0x31, + 0x2f, 0x6b, 0x38, 0x73, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x43, 0x72, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, + 0x73, 0x3a, 0x01, 0x2a, 0xaa, 0xe1, 0x1c, 0x02, 0x08, 0x02, 0x12, 0x82, 0x01, 0x0a, 0x0d, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x72, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x12, 0x23, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x22, 0x11, 0x2f, 0x76, 0x31, 0x2f, 0x6b, 0x38, 0x73, 0x2f, - 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x3a, 0x01, 0x2a, 0xaa, 0xe1, 0x1c, 0x02, - 0x08, 0x04, 0x12, 0x72, 0x0a, 0x09, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x12, - 0x1f, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x20, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, - 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x22, 0x11, 0x2f, 0x76, 0x31, 0x2f, - 0x6b, 0x38, 0x73, 0x2f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x3a, 0x01, 0x2a, - 0xaa, 0xe1, 0x1c, 0x02, 0x08, 0x01, 0x12, 0x92, 0x01, 0x0a, 0x11, 0x44, 0x65, 0x73, 0x63, 0x72, - 0x69, 0x62, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x27, 0x2e, 0x63, - 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x73, - 0x63, 0x72, 0x69, 0x62, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, - 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x4e, 0x61, - 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x2a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x22, 0x19, 0x2f, 0x76, 0x31, 0x2f, 0x6b, 0x38, 0x73, - 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x3a, 0x01, 0x2a, 0xaa, 0xe1, 0x1c, 0x02, 0x08, 0x02, 0x12, 0x76, 0x0a, 0x0a, 0x4c, - 0x69, 0x73, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x20, 0x2e, 0x63, 0x6c, 0x75, 0x74, - 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x63, 0x6c, - 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x23, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x22, 0x12, 0x2f, 0x76, 0x31, 0x2f, 0x6b, 0x38, 0x73, 0x2f, - 0x6c, 0x69, 0x73, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x3a, 0x01, 0x2a, 0xaa, 0xe1, 0x1c, - 0x02, 0x08, 0x02, 0x12, 0x7e, 0x0a, 0x0c, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x4e, - 0x6f, 0x64, 0x65, 0x12, 0x22, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, - 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x4e, 0x6f, 0x64, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, + 0x65, 0x74, 0x65, 0x43, 0x72, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x24, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, + 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x72, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x22, + 0x15, 0x2f, 0x76, 0x31, 0x2f, 0x6b, 0x38, 0x73, 0x2f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, + 0x72, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x3a, 0x01, 0x2a, 0xaa, 0xe1, 0x1c, 0x02, 0x08, 0x04, 0x12, + 0x86, 0x01, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, + 0x70, 0x73, 0x12, 0x24, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, + 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, + 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, 0x22, 0x16, 0x2f, 0x76, 0x31, 0x2f, 0x6b, 0x38, 0x73, + 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x73, 0x3a, + 0x01, 0x2a, 0xaa, 0xe1, 0x1c, 0x02, 0x08, 0x02, 0x12, 0x92, 0x01, 0x0a, 0x11, 0x44, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x62, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x12, 0x27, + 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, - 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x25, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x19, 0x22, 0x14, 0x2f, 0x76, 0x31, 0x2f, 0x6b, 0x38, 0x73, 0x2f, 0x64, 0x65, - 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x3a, 0x01, 0x2a, 0xaa, 0xe1, 0x1c, - 0x02, 0x08, 0x02, 0x12, 0x76, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, - 0x65, 0x12, 0x20, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, - 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x2a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x22, 0x19, 0x2f, 0x76, 0x31, 0x2f, 0x6b, + 0x38, 0x73, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x4d, 0x61, 0x70, 0x3a, 0x01, 0x2a, 0xaa, 0xe1, 0x1c, 0x02, 0x08, 0x02, 0x12, 0x8a, 0x01, + 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, + 0x70, 0x12, 0x25, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, + 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, + 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, + 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x22, 0x17, 0x2f, 0x76, 0x31, 0x2f, 0x6b, 0x38, + 0x73, 0x2f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, + 0x70, 0x3a, 0x01, 0x2a, 0xaa, 0xe1, 0x1c, 0x02, 0x08, 0x04, 0x12, 0x7a, 0x0a, 0x0b, 0x44, 0x65, + 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x4a, 0x6f, 0x62, 0x12, 0x21, 0x2e, 0x63, 0x6c, 0x75, 0x74, + 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x62, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x63, + 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x62, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x24, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x22, 0x13, 0x2f, 0x76, 0x31, 0x2f, 0x6b, 0x38, + 0x73, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x4a, 0x6f, 0x62, 0x3a, 0x01, 0x2a, + 0xaa, 0xe1, 0x1c, 0x02, 0x08, 0x02, 0x12, 0x6e, 0x0a, 0x08, 0x4c, 0x69, 0x73, 0x74, 0x4a, 0x6f, + 0x62, 0x73, 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, + 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, + 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x21, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x22, 0x10, 0x2f, 0x76, 0x31, + 0x2f, 0x6b, 0x38, 0x73, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x4a, 0x6f, 0x62, 0x73, 0x3a, 0x01, 0x2a, + 0xaa, 0xe1, 0x1c, 0x02, 0x08, 0x02, 0x12, 0x72, 0x0a, 0x09, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x4a, 0x6f, 0x62, 0x12, 0x1f, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, + 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, + 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x22, 0x11, + 0x2f, 0x76, 0x31, 0x2f, 0x6b, 0x38, 0x73, 0x2f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4a, 0x6f, + 0x62, 0x3a, 0x01, 0x2a, 0xaa, 0xe1, 0x1c, 0x02, 0x08, 0x04, 0x12, 0x72, 0x0a, 0x09, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x12, 0x1f, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, + 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4a, 0x6f, + 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, + 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4a, + 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x16, 0x22, 0x11, 0x2f, 0x76, 0x31, 0x2f, 0x6b, 0x38, 0x73, 0x2f, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x3a, 0x01, 0x2a, 0xaa, 0xe1, 0x1c, 0x02, 0x08, 0x01, 0x12, 0x92, + 0x01, 0x0a, 0x11, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x12, 0x27, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, + 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x4e, 0x61, 0x6d, + 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, + 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, + 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x22, + 0x19, 0x2f, 0x76, 0x31, 0x2f, 0x6b, 0x38, 0x73, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, + 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x3a, 0x01, 0x2a, 0xaa, 0xe1, 0x1c, + 0x02, 0x08, 0x02, 0x12, 0x76, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x73, 0x12, 0x20, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, + 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, - 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x22, 0x12, - 0x2f, 0x76, 0x31, 0x2f, 0x6b, 0x38, 0x73, 0x2f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x6f, - 0x64, 0x65, 0x3a, 0x01, 0x2a, 0xaa, 0xe1, 0x1c, 0x02, 0x08, 0x03, 0x42, 0x31, 0x5a, 0x2f, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6c, 0x79, 0x66, 0x74, 0x2f, 0x63, - 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x61, 0x70, - 0x69, 0x2f, 0x6b, 0x38, 0x73, 0x2f, 0x76, 0x31, 0x3b, 0x6b, 0x38, 0x73, 0x76, 0x31, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x2f, 0x76, 0x31, 0x2f, 0x6b, 0x38, 0x73, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x73, 0x3a, 0x01, 0x2a, 0xaa, 0xe1, 0x1c, 0x02, 0x08, 0x02, 0x12, 0x7e, 0x0a, 0x0c, 0x44, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x22, 0x2e, 0x63, 0x6c, + 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x62, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x23, 0x2e, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, + 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x25, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x22, 0x14, 0x2f, 0x76, + 0x31, 0x2f, 0x6b, 0x38, 0x73, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x4e, 0x6f, + 0x64, 0x65, 0x3a, 0x01, 0x2a, 0xaa, 0xe1, 0x1c, 0x02, 0x08, 0x02, 0x12, 0x76, 0x0a, 0x0a, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x20, 0x2e, 0x63, 0x6c, 0x75, 0x74, + 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x63, 0x6c, + 0x75, 0x74, 0x63, 0x68, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x23, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x22, 0x12, 0x2f, 0x76, 0x31, 0x2f, 0x6b, 0x38, 0x73, 0x2f, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x3a, 0x01, 0x2a, 0xaa, 0xe1, 0x1c, + 0x02, 0x08, 0x03, 0x42, 0x31, 0x5a, 0x2f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x6c, 0x79, 0x66, 0x74, 0x2f, 0x63, 0x6c, 0x75, 0x74, 0x63, 0x68, 0x2f, 0x62, 0x61, + 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6b, 0x38, 0x73, 0x2f, 0x76, 0x31, + 0x3b, 0x6b, 0x38, 0x73, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -7779,7 +7923,7 @@ func file_k8s_v1_k8s_proto_rawDescGZIP() []byte { } var file_k8s_v1_k8s_proto_enumTypes = make([]protoimpl.EnumInfo, 9) -var file_k8s_v1_k8s_proto_msgTypes = make([]protoimpl.MessageInfo, 119) +var file_k8s_v1_k8s_proto_msgTypes = make([]protoimpl.MessageInfo, 121) var file_k8s_v1_k8s_proto_goTypes = []interface{}{ (ObjectKind)(0), // 0: clutch.k8s.v1.ObjectKind (Container_State)(0), // 1: clutch.k8s.v1.Container.State @@ -7850,69 +7994,71 @@ var file_k8s_v1_k8s_proto_goTypes = []interface{}{ (*DeleteConfigMapRequest)(nil), // 66: clutch.k8s.v1.DeleteConfigMapRequest (*DeleteConfigMapResponse)(nil), // 67: clutch.k8s.v1.DeleteConfigMapResponse (*Job)(nil), // 68: clutch.k8s.v1.Job - (*ListJobsRequest)(nil), // 69: clutch.k8s.v1.ListJobsRequest - (*ListJobsResponse)(nil), // 70: clutch.k8s.v1.ListJobsResponse - (*DeleteJobRequest)(nil), // 71: clutch.k8s.v1.DeleteJobRequest - (*DeleteJobResponse)(nil), // 72: clutch.k8s.v1.DeleteJobResponse - (*JobConfig)(nil), // 73: clutch.k8s.v1.JobConfig - (*CreateJobRequest)(nil), // 74: clutch.k8s.v1.CreateJobRequest - (*CreateJobResponse)(nil), // 75: clutch.k8s.v1.CreateJobResponse - (*Namespace)(nil), // 76: clutch.k8s.v1.Namespace - (*DescribeNamespaceRequest)(nil), // 77: clutch.k8s.v1.DescribeNamespaceRequest - (*DescribeNamespaceResponse)(nil), // 78: clutch.k8s.v1.DescribeNamespaceResponse - (*Event)(nil), // 79: clutch.k8s.v1.Event - (*ListEventsRequest)(nil), // 80: clutch.k8s.v1.ListEventsRequest - (*ListEventsResponse)(nil), // 81: clutch.k8s.v1.ListEventsResponse - (*NullableString)(nil), // 82: clutch.k8s.v1.NullableString - (*ExpectedObjectMetaFields)(nil), // 83: clutch.k8s.v1.ExpectedObjectMetaFields - (*ObjectMetaFields)(nil), // 84: clutch.k8s.v1.ObjectMetaFields - (*RemoveObjectMetaFields)(nil), // 85: clutch.k8s.v1.RemoveObjectMetaFields - (*Node)(nil), // 86: clutch.k8s.v1.Node - (*DescribeNodeRequest)(nil), // 87: clutch.k8s.v1.DescribeNodeRequest - (*DescribeNodeResponse)(nil), // 88: clutch.k8s.v1.DescribeNodeResponse - (*UpdateNodeRequest)(nil), // 89: clutch.k8s.v1.UpdateNodeRequest - (*UpdateNodeResponse)(nil), // 90: clutch.k8s.v1.UpdateNodeResponse - nil, // 91: clutch.k8s.v1.Pod.LabelsEntry - nil, // 92: clutch.k8s.v1.Pod.AnnotationsEntry - nil, // 93: clutch.k8s.v1.ListOptions.LabelsEntry - (*HPA_Sizing)(nil), // 94: clutch.k8s.v1.HPA.Sizing - nil, // 95: clutch.k8s.v1.HPA.LabelsEntry - nil, // 96: clutch.k8s.v1.HPA.AnnotationsEntry - (*ResizeHPARequest_Sizing)(nil), // 97: clutch.k8s.v1.ResizeHPARequest.Sizing - nil, // 98: clutch.k8s.v1.Deployment.LabelsEntry - nil, // 99: clutch.k8s.v1.Deployment.AnnotationsEntry - (*Deployment_DeploymentStatus)(nil), // 100: clutch.k8s.v1.Deployment.DeploymentStatus - (*Deployment_DeploymentStatus_Condition)(nil), // 101: clutch.k8s.v1.Deployment.DeploymentStatus.Condition - (*UpdateDeploymentRequest_Fields)(nil), // 102: clutch.k8s.v1.UpdateDeploymentRequest.Fields - nil, // 103: clutch.k8s.v1.UpdateDeploymentRequest.Fields.LabelsEntry - nil, // 104: clutch.k8s.v1.UpdateDeploymentRequest.Fields.AnnotationsEntry - nil, // 105: clutch.k8s.v1.StatefulSet.LabelsEntry - nil, // 106: clutch.k8s.v1.StatefulSet.AnnotationsEntry - (*StatefulSet_Status)(nil), // 107: clutch.k8s.v1.StatefulSet.Status - (*UpdateStatefulSetRequest_Fields)(nil), // 108: clutch.k8s.v1.UpdateStatefulSetRequest.Fields - nil, // 109: clutch.k8s.v1.UpdateStatefulSetRequest.Fields.LabelsEntry - nil, // 110: clutch.k8s.v1.UpdateStatefulSetRequest.Fields.AnnotationsEntry - nil, // 111: clutch.k8s.v1.Service.LabelsEntry - nil, // 112: clutch.k8s.v1.Service.AnnotationsEntry - nil, // 113: clutch.k8s.v1.Service.SelectorEntry - nil, // 114: clutch.k8s.v1.CronJob.LabelsEntry - nil, // 115: clutch.k8s.v1.CronJob.AnnotationsEntry - nil, // 116: clutch.k8s.v1.ConfigMap.AnnotationsEntry - nil, // 117: clutch.k8s.v1.ConfigMap.LabelsEntry - nil, // 118: clutch.k8s.v1.ConfigMap.DataEntry - nil, // 119: clutch.k8s.v1.ConfigMap.BinaryDataEntry - nil, // 120: clutch.k8s.v1.Job.AnnotationsEntry - nil, // 121: clutch.k8s.v1.Job.LabelsEntry - nil, // 122: clutch.k8s.v1.Namespace.AnnotationsEntry - nil, // 123: clutch.k8s.v1.Namespace.LabelsEntry - nil, // 124: clutch.k8s.v1.ExpectedObjectMetaFields.LabelsEntry - nil, // 125: clutch.k8s.v1.ExpectedObjectMetaFields.AnnotationsEntry - nil, // 126: clutch.k8s.v1.ObjectMetaFields.LabelsEntry - nil, // 127: clutch.k8s.v1.ObjectMetaFields.AnnotationsEntry - (*timestamppb.Timestamp)(nil), // 128: google.protobuf.Timestamp - (*wrapperspb.Int64Value)(nil), // 129: google.protobuf.Int64Value - (*structpb.Value)(nil), // 130: google.protobuf.Value - (structpb.NullValue)(0), // 131: google.protobuf.NullValue + (*DescribeJobRequest)(nil), // 69: clutch.k8s.v1.DescribeJobRequest + (*DescribeJobResponse)(nil), // 70: clutch.k8s.v1.DescribeJobResponse + (*ListJobsRequest)(nil), // 71: clutch.k8s.v1.ListJobsRequest + (*ListJobsResponse)(nil), // 72: clutch.k8s.v1.ListJobsResponse + (*DeleteJobRequest)(nil), // 73: clutch.k8s.v1.DeleteJobRequest + (*DeleteJobResponse)(nil), // 74: clutch.k8s.v1.DeleteJobResponse + (*JobConfig)(nil), // 75: clutch.k8s.v1.JobConfig + (*CreateJobRequest)(nil), // 76: clutch.k8s.v1.CreateJobRequest + (*CreateJobResponse)(nil), // 77: clutch.k8s.v1.CreateJobResponse + (*Namespace)(nil), // 78: clutch.k8s.v1.Namespace + (*DescribeNamespaceRequest)(nil), // 79: clutch.k8s.v1.DescribeNamespaceRequest + (*DescribeNamespaceResponse)(nil), // 80: clutch.k8s.v1.DescribeNamespaceResponse + (*Event)(nil), // 81: clutch.k8s.v1.Event + (*ListEventsRequest)(nil), // 82: clutch.k8s.v1.ListEventsRequest + (*ListEventsResponse)(nil), // 83: clutch.k8s.v1.ListEventsResponse + (*NullableString)(nil), // 84: clutch.k8s.v1.NullableString + (*ExpectedObjectMetaFields)(nil), // 85: clutch.k8s.v1.ExpectedObjectMetaFields + (*ObjectMetaFields)(nil), // 86: clutch.k8s.v1.ObjectMetaFields + (*RemoveObjectMetaFields)(nil), // 87: clutch.k8s.v1.RemoveObjectMetaFields + (*Node)(nil), // 88: clutch.k8s.v1.Node + (*DescribeNodeRequest)(nil), // 89: clutch.k8s.v1.DescribeNodeRequest + (*DescribeNodeResponse)(nil), // 90: clutch.k8s.v1.DescribeNodeResponse + (*UpdateNodeRequest)(nil), // 91: clutch.k8s.v1.UpdateNodeRequest + (*UpdateNodeResponse)(nil), // 92: clutch.k8s.v1.UpdateNodeResponse + nil, // 93: clutch.k8s.v1.Pod.LabelsEntry + nil, // 94: clutch.k8s.v1.Pod.AnnotationsEntry + nil, // 95: clutch.k8s.v1.ListOptions.LabelsEntry + (*HPA_Sizing)(nil), // 96: clutch.k8s.v1.HPA.Sizing + nil, // 97: clutch.k8s.v1.HPA.LabelsEntry + nil, // 98: clutch.k8s.v1.HPA.AnnotationsEntry + (*ResizeHPARequest_Sizing)(nil), // 99: clutch.k8s.v1.ResizeHPARequest.Sizing + nil, // 100: clutch.k8s.v1.Deployment.LabelsEntry + nil, // 101: clutch.k8s.v1.Deployment.AnnotationsEntry + (*Deployment_DeploymentStatus)(nil), // 102: clutch.k8s.v1.Deployment.DeploymentStatus + (*Deployment_DeploymentStatus_Condition)(nil), // 103: clutch.k8s.v1.Deployment.DeploymentStatus.Condition + (*UpdateDeploymentRequest_Fields)(nil), // 104: clutch.k8s.v1.UpdateDeploymentRequest.Fields + nil, // 105: clutch.k8s.v1.UpdateDeploymentRequest.Fields.LabelsEntry + nil, // 106: clutch.k8s.v1.UpdateDeploymentRequest.Fields.AnnotationsEntry + nil, // 107: clutch.k8s.v1.StatefulSet.LabelsEntry + nil, // 108: clutch.k8s.v1.StatefulSet.AnnotationsEntry + (*StatefulSet_Status)(nil), // 109: clutch.k8s.v1.StatefulSet.Status + (*UpdateStatefulSetRequest_Fields)(nil), // 110: clutch.k8s.v1.UpdateStatefulSetRequest.Fields + nil, // 111: clutch.k8s.v1.UpdateStatefulSetRequest.Fields.LabelsEntry + nil, // 112: clutch.k8s.v1.UpdateStatefulSetRequest.Fields.AnnotationsEntry + nil, // 113: clutch.k8s.v1.Service.LabelsEntry + nil, // 114: clutch.k8s.v1.Service.AnnotationsEntry + nil, // 115: clutch.k8s.v1.Service.SelectorEntry + nil, // 116: clutch.k8s.v1.CronJob.LabelsEntry + nil, // 117: clutch.k8s.v1.CronJob.AnnotationsEntry + nil, // 118: clutch.k8s.v1.ConfigMap.AnnotationsEntry + nil, // 119: clutch.k8s.v1.ConfigMap.LabelsEntry + nil, // 120: clutch.k8s.v1.ConfigMap.DataEntry + nil, // 121: clutch.k8s.v1.ConfigMap.BinaryDataEntry + nil, // 122: clutch.k8s.v1.Job.AnnotationsEntry + nil, // 123: clutch.k8s.v1.Job.LabelsEntry + nil, // 124: clutch.k8s.v1.Namespace.AnnotationsEntry + nil, // 125: clutch.k8s.v1.Namespace.LabelsEntry + nil, // 126: clutch.k8s.v1.ExpectedObjectMetaFields.LabelsEntry + nil, // 127: clutch.k8s.v1.ExpectedObjectMetaFields.AnnotationsEntry + nil, // 128: clutch.k8s.v1.ObjectMetaFields.LabelsEntry + nil, // 129: clutch.k8s.v1.ObjectMetaFields.AnnotationsEntry + (*timestamppb.Timestamp)(nil), // 130: google.protobuf.Timestamp + (*wrapperspb.Int64Value)(nil), // 131: google.protobuf.Int64Value + (*structpb.Value)(nil), // 132: google.protobuf.Value + (structpb.NullValue)(0), // 133: google.protobuf.NullValue } var file_k8s_v1_k8s_proto_depIdxs = []int32{ 16, // 0: clutch.k8s.v1.DescribePodResponse.pod:type_name -> clutch.k8s.v1.Pod @@ -7920,154 +8066,157 @@ var file_k8s_v1_k8s_proto_depIdxs = []int32{ 12, // 2: clutch.k8s.v1.Container.state_waiting:type_name -> clutch.k8s.v1.StateWaiting 13, // 3: clutch.k8s.v1.Container.state_running:type_name -> clutch.k8s.v1.StateRunning 14, // 4: clutch.k8s.v1.Container.state_terminated:type_name -> clutch.k8s.v1.StateTerminated - 128, // 5: clutch.k8s.v1.StateRunning.start_time:type_name -> google.protobuf.Timestamp + 130, // 5: clutch.k8s.v1.StateRunning.start_time:type_name -> google.protobuf.Timestamp 2, // 6: clutch.k8s.v1.PodCondition.type:type_name -> clutch.k8s.v1.PodCondition.Type 3, // 7: clutch.k8s.v1.PodCondition.status:type_name -> clutch.k8s.v1.PodCondition.Status 11, // 8: clutch.k8s.v1.Pod.containers:type_name -> clutch.k8s.v1.Container 4, // 9: clutch.k8s.v1.Pod.state:type_name -> clutch.k8s.v1.Pod.State - 128, // 10: clutch.k8s.v1.Pod.start_time:type_name -> google.protobuf.Timestamp - 91, // 11: clutch.k8s.v1.Pod.labels:type_name -> clutch.k8s.v1.Pod.LabelsEntry - 92, // 12: clutch.k8s.v1.Pod.annotations:type_name -> clutch.k8s.v1.Pod.AnnotationsEntry + 130, // 10: clutch.k8s.v1.Pod.start_time:type_name -> google.protobuf.Timestamp + 93, // 11: clutch.k8s.v1.Pod.labels:type_name -> clutch.k8s.v1.Pod.LabelsEntry + 94, // 12: clutch.k8s.v1.Pod.annotations:type_name -> clutch.k8s.v1.Pod.AnnotationsEntry 15, // 13: clutch.k8s.v1.Pod.pod_conditions:type_name -> clutch.k8s.v1.PodCondition 11, // 14: clutch.k8s.v1.Pod.init_containers:type_name -> clutch.k8s.v1.Container - 93, // 15: clutch.k8s.v1.ListOptions.labels:type_name -> clutch.k8s.v1.ListOptions.LabelsEntry + 95, // 15: clutch.k8s.v1.ListOptions.labels:type_name -> clutch.k8s.v1.ListOptions.LabelsEntry 17, // 16: clutch.k8s.v1.ListPodsRequest.options:type_name -> clutch.k8s.v1.ListOptions 16, // 17: clutch.k8s.v1.ListPodsResponse.pods:type_name -> clutch.k8s.v1.Pod - 83, // 18: clutch.k8s.v1.UpdatePodRequest.expected_object_meta_fields:type_name -> clutch.k8s.v1.ExpectedObjectMetaFields - 84, // 19: clutch.k8s.v1.UpdatePodRequest.object_meta_fields:type_name -> clutch.k8s.v1.ObjectMetaFields - 85, // 20: clutch.k8s.v1.UpdatePodRequest.remove_object_meta_fields:type_name -> clutch.k8s.v1.RemoveObjectMetaFields - 94, // 21: clutch.k8s.v1.HPA.sizing:type_name -> clutch.k8s.v1.HPA.Sizing - 95, // 22: clutch.k8s.v1.HPA.labels:type_name -> clutch.k8s.v1.HPA.LabelsEntry - 96, // 23: clutch.k8s.v1.HPA.annotations:type_name -> clutch.k8s.v1.HPA.AnnotationsEntry - 97, // 24: clutch.k8s.v1.ResizeHPARequest.sizing:type_name -> clutch.k8s.v1.ResizeHPARequest.Sizing - 98, // 25: clutch.k8s.v1.Deployment.labels:type_name -> clutch.k8s.v1.Deployment.LabelsEntry - 99, // 26: clutch.k8s.v1.Deployment.annotations:type_name -> clutch.k8s.v1.Deployment.AnnotationsEntry - 100, // 27: clutch.k8s.v1.Deployment.deployment_status:type_name -> clutch.k8s.v1.Deployment.DeploymentStatus + 85, // 18: clutch.k8s.v1.UpdatePodRequest.expected_object_meta_fields:type_name -> clutch.k8s.v1.ExpectedObjectMetaFields + 86, // 19: clutch.k8s.v1.UpdatePodRequest.object_meta_fields:type_name -> clutch.k8s.v1.ObjectMetaFields + 87, // 20: clutch.k8s.v1.UpdatePodRequest.remove_object_meta_fields:type_name -> clutch.k8s.v1.RemoveObjectMetaFields + 96, // 21: clutch.k8s.v1.HPA.sizing:type_name -> clutch.k8s.v1.HPA.Sizing + 97, // 22: clutch.k8s.v1.HPA.labels:type_name -> clutch.k8s.v1.HPA.LabelsEntry + 98, // 23: clutch.k8s.v1.HPA.annotations:type_name -> clutch.k8s.v1.HPA.AnnotationsEntry + 99, // 24: clutch.k8s.v1.ResizeHPARequest.sizing:type_name -> clutch.k8s.v1.ResizeHPARequest.Sizing + 100, // 25: clutch.k8s.v1.Deployment.labels:type_name -> clutch.k8s.v1.Deployment.LabelsEntry + 101, // 26: clutch.k8s.v1.Deployment.annotations:type_name -> clutch.k8s.v1.Deployment.AnnotationsEntry + 102, // 27: clutch.k8s.v1.Deployment.deployment_status:type_name -> clutch.k8s.v1.Deployment.DeploymentStatus 29, // 28: clutch.k8s.v1.DescribeDeploymentResponse.deployment:type_name -> clutch.k8s.v1.Deployment 17, // 29: clutch.k8s.v1.ListDeploymentsRequest.options:type_name -> clutch.k8s.v1.ListOptions 29, // 30: clutch.k8s.v1.ListDeploymentsResponse.deployments:type_name -> clutch.k8s.v1.Deployment - 102, // 31: clutch.k8s.v1.UpdateDeploymentRequest.fields:type_name -> clutch.k8s.v1.UpdateDeploymentRequest.Fields - 105, // 32: clutch.k8s.v1.StatefulSet.labels:type_name -> clutch.k8s.v1.StatefulSet.LabelsEntry - 106, // 33: clutch.k8s.v1.StatefulSet.annotations:type_name -> clutch.k8s.v1.StatefulSet.AnnotationsEntry - 107, // 34: clutch.k8s.v1.StatefulSet.status:type_name -> clutch.k8s.v1.StatefulSet.Status + 104, // 31: clutch.k8s.v1.UpdateDeploymentRequest.fields:type_name -> clutch.k8s.v1.UpdateDeploymentRequest.Fields + 107, // 32: clutch.k8s.v1.StatefulSet.labels:type_name -> clutch.k8s.v1.StatefulSet.LabelsEntry + 108, // 33: clutch.k8s.v1.StatefulSet.annotations:type_name -> clutch.k8s.v1.StatefulSet.AnnotationsEntry + 109, // 34: clutch.k8s.v1.StatefulSet.status:type_name -> clutch.k8s.v1.StatefulSet.Status 38, // 35: clutch.k8s.v1.DescribeStatefulSetResponse.stateful_set:type_name -> clutch.k8s.v1.StatefulSet 17, // 36: clutch.k8s.v1.ListStatefulSetsRequest.options:type_name -> clutch.k8s.v1.ListOptions 38, // 37: clutch.k8s.v1.ListStatefulSetsResponse.stateful_sets:type_name -> clutch.k8s.v1.StatefulSet - 108, // 38: clutch.k8s.v1.UpdateStatefulSetRequest.fields:type_name -> clutch.k8s.v1.UpdateStatefulSetRequest.Fields + 110, // 38: clutch.k8s.v1.UpdateStatefulSetRequest.fields:type_name -> clutch.k8s.v1.UpdateStatefulSetRequest.Fields 7, // 39: clutch.k8s.v1.Service.type:type_name -> clutch.k8s.v1.Service.Type - 111, // 40: clutch.k8s.v1.Service.labels:type_name -> clutch.k8s.v1.Service.LabelsEntry - 112, // 41: clutch.k8s.v1.Service.annotations:type_name -> clutch.k8s.v1.Service.AnnotationsEntry - 113, // 42: clutch.k8s.v1.Service.selector:type_name -> clutch.k8s.v1.Service.SelectorEntry + 113, // 40: clutch.k8s.v1.Service.labels:type_name -> clutch.k8s.v1.Service.LabelsEntry + 114, // 41: clutch.k8s.v1.Service.annotations:type_name -> clutch.k8s.v1.Service.AnnotationsEntry + 115, // 42: clutch.k8s.v1.Service.selector:type_name -> clutch.k8s.v1.Service.SelectorEntry 47, // 43: clutch.k8s.v1.DescribeServiceResponse.service:type_name -> clutch.k8s.v1.Service 17, // 44: clutch.k8s.v1.ListServicesRequest.options:type_name -> clutch.k8s.v1.ListOptions 47, // 45: clutch.k8s.v1.ListServicesResponse.services:type_name -> clutch.k8s.v1.Service - 114, // 46: clutch.k8s.v1.CronJob.labels:type_name -> clutch.k8s.v1.CronJob.LabelsEntry - 115, // 47: clutch.k8s.v1.CronJob.annotations:type_name -> clutch.k8s.v1.CronJob.AnnotationsEntry + 116, // 46: clutch.k8s.v1.CronJob.labels:type_name -> clutch.k8s.v1.CronJob.LabelsEntry + 117, // 47: clutch.k8s.v1.CronJob.annotations:type_name -> clutch.k8s.v1.CronJob.AnnotationsEntry 8, // 48: clutch.k8s.v1.CronJob.concurrency_policy:type_name -> clutch.k8s.v1.CronJob.ConcurrencyPolicy - 129, // 49: clutch.k8s.v1.CronJob.starting_deadline_seconds:type_name -> google.protobuf.Int64Value + 131, // 49: clutch.k8s.v1.CronJob.starting_deadline_seconds:type_name -> google.protobuf.Int64Value 54, // 50: clutch.k8s.v1.DescribeCronJobResponse.cronjob:type_name -> clutch.k8s.v1.CronJob 17, // 51: clutch.k8s.v1.ListCronJobsRequest.options:type_name -> clutch.k8s.v1.ListOptions 54, // 52: clutch.k8s.v1.ListCronJobsResponse.cron_jobs:type_name -> clutch.k8s.v1.CronJob - 116, // 53: clutch.k8s.v1.ConfigMap.annotations:type_name -> clutch.k8s.v1.ConfigMap.AnnotationsEntry - 117, // 54: clutch.k8s.v1.ConfigMap.labels:type_name -> clutch.k8s.v1.ConfigMap.LabelsEntry - 118, // 55: clutch.k8s.v1.ConfigMap.data:type_name -> clutch.k8s.v1.ConfigMap.DataEntry - 119, // 56: clutch.k8s.v1.ConfigMap.binary_data:type_name -> clutch.k8s.v1.ConfigMap.BinaryDataEntry + 118, // 53: clutch.k8s.v1.ConfigMap.annotations:type_name -> clutch.k8s.v1.ConfigMap.AnnotationsEntry + 119, // 54: clutch.k8s.v1.ConfigMap.labels:type_name -> clutch.k8s.v1.ConfigMap.LabelsEntry + 120, // 55: clutch.k8s.v1.ConfigMap.data:type_name -> clutch.k8s.v1.ConfigMap.DataEntry + 121, // 56: clutch.k8s.v1.ConfigMap.binary_data:type_name -> clutch.k8s.v1.ConfigMap.BinaryDataEntry 17, // 57: clutch.k8s.v1.ListConfigMapsRequest.options:type_name -> clutch.k8s.v1.ListOptions 61, // 58: clutch.k8s.v1.ListConfigMapsResponse.config_maps:type_name -> clutch.k8s.v1.ConfigMap 61, // 59: clutch.k8s.v1.DescribeConfigMapResponse.config_map:type_name -> clutch.k8s.v1.ConfigMap - 120, // 60: clutch.k8s.v1.Job.annotations:type_name -> clutch.k8s.v1.Job.AnnotationsEntry - 121, // 61: clutch.k8s.v1.Job.labels:type_name -> clutch.k8s.v1.Job.LabelsEntry - 17, // 62: clutch.k8s.v1.ListJobsRequest.options:type_name -> clutch.k8s.v1.ListOptions - 68, // 63: clutch.k8s.v1.ListJobsResponse.jobs:type_name -> clutch.k8s.v1.Job - 130, // 64: clutch.k8s.v1.JobConfig.value:type_name -> google.protobuf.Value - 73, // 65: clutch.k8s.v1.CreateJobRequest.job_config:type_name -> clutch.k8s.v1.JobConfig - 68, // 66: clutch.k8s.v1.CreateJobResponse.job:type_name -> clutch.k8s.v1.Job - 122, // 67: clutch.k8s.v1.Namespace.annotations:type_name -> clutch.k8s.v1.Namespace.AnnotationsEntry - 123, // 68: clutch.k8s.v1.Namespace.labels:type_name -> clutch.k8s.v1.Namespace.LabelsEntry - 76, // 69: clutch.k8s.v1.DescribeNamespaceResponse.namespace:type_name -> clutch.k8s.v1.Namespace - 0, // 70: clutch.k8s.v1.Event.kind:type_name -> clutch.k8s.v1.ObjectKind - 0, // 71: clutch.k8s.v1.ListEventsRequest.kind:type_name -> clutch.k8s.v1.ObjectKind - 79, // 72: clutch.k8s.v1.ListEventsResponse.events:type_name -> clutch.k8s.v1.Event - 131, // 73: clutch.k8s.v1.NullableString.null:type_name -> google.protobuf.NullValue - 124, // 74: clutch.k8s.v1.ExpectedObjectMetaFields.labels:type_name -> clutch.k8s.v1.ExpectedObjectMetaFields.LabelsEntry - 125, // 75: clutch.k8s.v1.ExpectedObjectMetaFields.annotations:type_name -> clutch.k8s.v1.ExpectedObjectMetaFields.AnnotationsEntry - 126, // 76: clutch.k8s.v1.ObjectMetaFields.labels:type_name -> clutch.k8s.v1.ObjectMetaFields.LabelsEntry - 127, // 77: clutch.k8s.v1.ObjectMetaFields.annotations:type_name -> clutch.k8s.v1.ObjectMetaFields.AnnotationsEntry - 86, // 78: clutch.k8s.v1.DescribeNodeResponse.node:type_name -> clutch.k8s.v1.Node - 101, // 79: clutch.k8s.v1.Deployment.DeploymentStatus.deployment_conditions:type_name -> clutch.k8s.v1.Deployment.DeploymentStatus.Condition - 5, // 80: clutch.k8s.v1.Deployment.DeploymentStatus.Condition.type:type_name -> clutch.k8s.v1.Deployment.DeploymentStatus.Condition.Type - 6, // 81: clutch.k8s.v1.Deployment.DeploymentStatus.Condition.condition_status:type_name -> clutch.k8s.v1.Deployment.DeploymentStatus.Condition.ConditionStatus - 103, // 82: clutch.k8s.v1.UpdateDeploymentRequest.Fields.labels:type_name -> clutch.k8s.v1.UpdateDeploymentRequest.Fields.LabelsEntry - 104, // 83: clutch.k8s.v1.UpdateDeploymentRequest.Fields.annotations:type_name -> clutch.k8s.v1.UpdateDeploymentRequest.Fields.AnnotationsEntry - 109, // 84: clutch.k8s.v1.UpdateStatefulSetRequest.Fields.labels:type_name -> clutch.k8s.v1.UpdateStatefulSetRequest.Fields.LabelsEntry - 110, // 85: clutch.k8s.v1.UpdateStatefulSetRequest.Fields.annotations:type_name -> clutch.k8s.v1.UpdateStatefulSetRequest.Fields.AnnotationsEntry - 82, // 86: clutch.k8s.v1.ExpectedObjectMetaFields.LabelsEntry.value:type_name -> clutch.k8s.v1.NullableString - 82, // 87: clutch.k8s.v1.ExpectedObjectMetaFields.AnnotationsEntry.value:type_name -> clutch.k8s.v1.NullableString - 9, // 88: clutch.k8s.v1.K8sAPI.DescribePod:input_type -> clutch.k8s.v1.DescribePodRequest - 18, // 89: clutch.k8s.v1.K8sAPI.ListPods:input_type -> clutch.k8s.v1.ListPodsRequest - 20, // 90: clutch.k8s.v1.K8sAPI.DeletePod:input_type -> clutch.k8s.v1.DeletePodRequest - 22, // 91: clutch.k8s.v1.K8sAPI.UpdatePod:input_type -> clutch.k8s.v1.UpdatePodRequest - 25, // 92: clutch.k8s.v1.K8sAPI.ResizeHPA:input_type -> clutch.k8s.v1.ResizeHPARequest - 27, // 93: clutch.k8s.v1.K8sAPI.DeleteHPA:input_type -> clutch.k8s.v1.DeleteHPARequest - 30, // 94: clutch.k8s.v1.K8sAPI.DescribeDeployment:input_type -> clutch.k8s.v1.DescribeDeploymentRequest - 32, // 95: clutch.k8s.v1.K8sAPI.ListDeployments:input_type -> clutch.k8s.v1.ListDeploymentsRequest - 34, // 96: clutch.k8s.v1.K8sAPI.UpdateDeployment:input_type -> clutch.k8s.v1.UpdateDeploymentRequest - 36, // 97: clutch.k8s.v1.K8sAPI.DeleteDeployment:input_type -> clutch.k8s.v1.DeleteDeploymentRequest - 48, // 98: clutch.k8s.v1.K8sAPI.DescribeService:input_type -> clutch.k8s.v1.DescribeServiceRequest - 50, // 99: clutch.k8s.v1.K8sAPI.ListServices:input_type -> clutch.k8s.v1.ListServicesRequest - 52, // 100: clutch.k8s.v1.K8sAPI.DeleteService:input_type -> clutch.k8s.v1.DeleteServiceRequest - 39, // 101: clutch.k8s.v1.K8sAPI.DescribeStatefulSet:input_type -> clutch.k8s.v1.DescribeStatefulSetRequest - 41, // 102: clutch.k8s.v1.K8sAPI.ListStatefulSets:input_type -> clutch.k8s.v1.ListStatefulSetsRequest - 45, // 103: clutch.k8s.v1.K8sAPI.UpdateStatefulSet:input_type -> clutch.k8s.v1.UpdateStatefulSetRequest - 43, // 104: clutch.k8s.v1.K8sAPI.DeleteStatefulSet:input_type -> clutch.k8s.v1.DeleteStatefulSetRequest - 55, // 105: clutch.k8s.v1.K8sAPI.DescribeCronJob:input_type -> clutch.k8s.v1.DescribeCronJobRequest - 57, // 106: clutch.k8s.v1.K8sAPI.ListCronJobs:input_type -> clutch.k8s.v1.ListCronJobsRequest - 59, // 107: clutch.k8s.v1.K8sAPI.DeleteCronJob:input_type -> clutch.k8s.v1.DeleteCronJobRequest - 62, // 108: clutch.k8s.v1.K8sAPI.ListConfigMaps:input_type -> clutch.k8s.v1.ListConfigMapsRequest - 64, // 109: clutch.k8s.v1.K8sAPI.DescribeConfigMap:input_type -> clutch.k8s.v1.DescribeConfigMapRequest - 66, // 110: clutch.k8s.v1.K8sAPI.DeleteConfigMap:input_type -> clutch.k8s.v1.DeleteConfigMapRequest - 69, // 111: clutch.k8s.v1.K8sAPI.ListJobs:input_type -> clutch.k8s.v1.ListJobsRequest - 71, // 112: clutch.k8s.v1.K8sAPI.DeleteJob:input_type -> clutch.k8s.v1.DeleteJobRequest - 74, // 113: clutch.k8s.v1.K8sAPI.CreateJob:input_type -> clutch.k8s.v1.CreateJobRequest - 77, // 114: clutch.k8s.v1.K8sAPI.DescribeNamespace:input_type -> clutch.k8s.v1.DescribeNamespaceRequest - 80, // 115: clutch.k8s.v1.K8sAPI.ListEvents:input_type -> clutch.k8s.v1.ListEventsRequest - 87, // 116: clutch.k8s.v1.K8sAPI.DescribeNode:input_type -> clutch.k8s.v1.DescribeNodeRequest - 89, // 117: clutch.k8s.v1.K8sAPI.UpdateNode:input_type -> clutch.k8s.v1.UpdateNodeRequest - 10, // 118: clutch.k8s.v1.K8sAPI.DescribePod:output_type -> clutch.k8s.v1.DescribePodResponse - 19, // 119: clutch.k8s.v1.K8sAPI.ListPods:output_type -> clutch.k8s.v1.ListPodsResponse - 21, // 120: clutch.k8s.v1.K8sAPI.DeletePod:output_type -> clutch.k8s.v1.DeletePodResponse - 23, // 121: clutch.k8s.v1.K8sAPI.UpdatePod:output_type -> clutch.k8s.v1.UpdatePodResponse - 26, // 122: clutch.k8s.v1.K8sAPI.ResizeHPA:output_type -> clutch.k8s.v1.ResizeHPAResponse - 28, // 123: clutch.k8s.v1.K8sAPI.DeleteHPA:output_type -> clutch.k8s.v1.DeleteHPAResponse - 31, // 124: clutch.k8s.v1.K8sAPI.DescribeDeployment:output_type -> clutch.k8s.v1.DescribeDeploymentResponse - 33, // 125: clutch.k8s.v1.K8sAPI.ListDeployments:output_type -> clutch.k8s.v1.ListDeploymentsResponse - 35, // 126: clutch.k8s.v1.K8sAPI.UpdateDeployment:output_type -> clutch.k8s.v1.UpdateDeploymentResponse - 37, // 127: clutch.k8s.v1.K8sAPI.DeleteDeployment:output_type -> clutch.k8s.v1.DeleteDeploymentResponse - 49, // 128: clutch.k8s.v1.K8sAPI.DescribeService:output_type -> clutch.k8s.v1.DescribeServiceResponse - 51, // 129: clutch.k8s.v1.K8sAPI.ListServices:output_type -> clutch.k8s.v1.ListServicesResponse - 53, // 130: clutch.k8s.v1.K8sAPI.DeleteService:output_type -> clutch.k8s.v1.DeleteServiceResponse - 40, // 131: clutch.k8s.v1.K8sAPI.DescribeStatefulSet:output_type -> clutch.k8s.v1.DescribeStatefulSetResponse - 42, // 132: clutch.k8s.v1.K8sAPI.ListStatefulSets:output_type -> clutch.k8s.v1.ListStatefulSetsResponse - 46, // 133: clutch.k8s.v1.K8sAPI.UpdateStatefulSet:output_type -> clutch.k8s.v1.UpdateStatefulSetResponse - 44, // 134: clutch.k8s.v1.K8sAPI.DeleteStatefulSet:output_type -> clutch.k8s.v1.DeleteStatefulSetResponse - 56, // 135: clutch.k8s.v1.K8sAPI.DescribeCronJob:output_type -> clutch.k8s.v1.DescribeCronJobResponse - 58, // 136: clutch.k8s.v1.K8sAPI.ListCronJobs:output_type -> clutch.k8s.v1.ListCronJobsResponse - 60, // 137: clutch.k8s.v1.K8sAPI.DeleteCronJob:output_type -> clutch.k8s.v1.DeleteCronJobResponse - 63, // 138: clutch.k8s.v1.K8sAPI.ListConfigMaps:output_type -> clutch.k8s.v1.ListConfigMapsResponse - 65, // 139: clutch.k8s.v1.K8sAPI.DescribeConfigMap:output_type -> clutch.k8s.v1.DescribeConfigMapResponse - 67, // 140: clutch.k8s.v1.K8sAPI.DeleteConfigMap:output_type -> clutch.k8s.v1.DeleteConfigMapResponse - 70, // 141: clutch.k8s.v1.K8sAPI.ListJobs:output_type -> clutch.k8s.v1.ListJobsResponse - 72, // 142: clutch.k8s.v1.K8sAPI.DeleteJob:output_type -> clutch.k8s.v1.DeleteJobResponse - 75, // 143: clutch.k8s.v1.K8sAPI.CreateJob:output_type -> clutch.k8s.v1.CreateJobResponse - 78, // 144: clutch.k8s.v1.K8sAPI.DescribeNamespace:output_type -> clutch.k8s.v1.DescribeNamespaceResponse - 81, // 145: clutch.k8s.v1.K8sAPI.ListEvents:output_type -> clutch.k8s.v1.ListEventsResponse - 88, // 146: clutch.k8s.v1.K8sAPI.DescribeNode:output_type -> clutch.k8s.v1.DescribeNodeResponse - 90, // 147: clutch.k8s.v1.K8sAPI.UpdateNode:output_type -> clutch.k8s.v1.UpdateNodeResponse - 118, // [118:148] is the sub-list for method output_type - 88, // [88:118] is the sub-list for method input_type - 88, // [88:88] is the sub-list for extension type_name - 88, // [88:88] is the sub-list for extension extendee - 0, // [0:88] is the sub-list for field type_name + 122, // 60: clutch.k8s.v1.Job.annotations:type_name -> clutch.k8s.v1.Job.AnnotationsEntry + 123, // 61: clutch.k8s.v1.Job.labels:type_name -> clutch.k8s.v1.Job.LabelsEntry + 68, // 62: clutch.k8s.v1.DescribeJobResponse.job:type_name -> clutch.k8s.v1.Job + 17, // 63: clutch.k8s.v1.ListJobsRequest.options:type_name -> clutch.k8s.v1.ListOptions + 68, // 64: clutch.k8s.v1.ListJobsResponse.jobs:type_name -> clutch.k8s.v1.Job + 132, // 65: clutch.k8s.v1.JobConfig.value:type_name -> google.protobuf.Value + 75, // 66: clutch.k8s.v1.CreateJobRequest.job_config:type_name -> clutch.k8s.v1.JobConfig + 68, // 67: clutch.k8s.v1.CreateJobResponse.job:type_name -> clutch.k8s.v1.Job + 124, // 68: clutch.k8s.v1.Namespace.annotations:type_name -> clutch.k8s.v1.Namespace.AnnotationsEntry + 125, // 69: clutch.k8s.v1.Namespace.labels:type_name -> clutch.k8s.v1.Namespace.LabelsEntry + 78, // 70: clutch.k8s.v1.DescribeNamespaceResponse.namespace:type_name -> clutch.k8s.v1.Namespace + 0, // 71: clutch.k8s.v1.Event.kind:type_name -> clutch.k8s.v1.ObjectKind + 0, // 72: clutch.k8s.v1.ListEventsRequest.kind:type_name -> clutch.k8s.v1.ObjectKind + 81, // 73: clutch.k8s.v1.ListEventsResponse.events:type_name -> clutch.k8s.v1.Event + 133, // 74: clutch.k8s.v1.NullableString.null:type_name -> google.protobuf.NullValue + 126, // 75: clutch.k8s.v1.ExpectedObjectMetaFields.labels:type_name -> clutch.k8s.v1.ExpectedObjectMetaFields.LabelsEntry + 127, // 76: clutch.k8s.v1.ExpectedObjectMetaFields.annotations:type_name -> clutch.k8s.v1.ExpectedObjectMetaFields.AnnotationsEntry + 128, // 77: clutch.k8s.v1.ObjectMetaFields.labels:type_name -> clutch.k8s.v1.ObjectMetaFields.LabelsEntry + 129, // 78: clutch.k8s.v1.ObjectMetaFields.annotations:type_name -> clutch.k8s.v1.ObjectMetaFields.AnnotationsEntry + 88, // 79: clutch.k8s.v1.DescribeNodeResponse.node:type_name -> clutch.k8s.v1.Node + 103, // 80: clutch.k8s.v1.Deployment.DeploymentStatus.deployment_conditions:type_name -> clutch.k8s.v1.Deployment.DeploymentStatus.Condition + 5, // 81: clutch.k8s.v1.Deployment.DeploymentStatus.Condition.type:type_name -> clutch.k8s.v1.Deployment.DeploymentStatus.Condition.Type + 6, // 82: clutch.k8s.v1.Deployment.DeploymentStatus.Condition.condition_status:type_name -> clutch.k8s.v1.Deployment.DeploymentStatus.Condition.ConditionStatus + 105, // 83: clutch.k8s.v1.UpdateDeploymentRequest.Fields.labels:type_name -> clutch.k8s.v1.UpdateDeploymentRequest.Fields.LabelsEntry + 106, // 84: clutch.k8s.v1.UpdateDeploymentRequest.Fields.annotations:type_name -> clutch.k8s.v1.UpdateDeploymentRequest.Fields.AnnotationsEntry + 111, // 85: clutch.k8s.v1.UpdateStatefulSetRequest.Fields.labels:type_name -> clutch.k8s.v1.UpdateStatefulSetRequest.Fields.LabelsEntry + 112, // 86: clutch.k8s.v1.UpdateStatefulSetRequest.Fields.annotations:type_name -> clutch.k8s.v1.UpdateStatefulSetRequest.Fields.AnnotationsEntry + 84, // 87: clutch.k8s.v1.ExpectedObjectMetaFields.LabelsEntry.value:type_name -> clutch.k8s.v1.NullableString + 84, // 88: clutch.k8s.v1.ExpectedObjectMetaFields.AnnotationsEntry.value:type_name -> clutch.k8s.v1.NullableString + 9, // 89: clutch.k8s.v1.K8sAPI.DescribePod:input_type -> clutch.k8s.v1.DescribePodRequest + 18, // 90: clutch.k8s.v1.K8sAPI.ListPods:input_type -> clutch.k8s.v1.ListPodsRequest + 20, // 91: clutch.k8s.v1.K8sAPI.DeletePod:input_type -> clutch.k8s.v1.DeletePodRequest + 22, // 92: clutch.k8s.v1.K8sAPI.UpdatePod:input_type -> clutch.k8s.v1.UpdatePodRequest + 25, // 93: clutch.k8s.v1.K8sAPI.ResizeHPA:input_type -> clutch.k8s.v1.ResizeHPARequest + 27, // 94: clutch.k8s.v1.K8sAPI.DeleteHPA:input_type -> clutch.k8s.v1.DeleteHPARequest + 30, // 95: clutch.k8s.v1.K8sAPI.DescribeDeployment:input_type -> clutch.k8s.v1.DescribeDeploymentRequest + 32, // 96: clutch.k8s.v1.K8sAPI.ListDeployments:input_type -> clutch.k8s.v1.ListDeploymentsRequest + 34, // 97: clutch.k8s.v1.K8sAPI.UpdateDeployment:input_type -> clutch.k8s.v1.UpdateDeploymentRequest + 36, // 98: clutch.k8s.v1.K8sAPI.DeleteDeployment:input_type -> clutch.k8s.v1.DeleteDeploymentRequest + 48, // 99: clutch.k8s.v1.K8sAPI.DescribeService:input_type -> clutch.k8s.v1.DescribeServiceRequest + 50, // 100: clutch.k8s.v1.K8sAPI.ListServices:input_type -> clutch.k8s.v1.ListServicesRequest + 52, // 101: clutch.k8s.v1.K8sAPI.DeleteService:input_type -> clutch.k8s.v1.DeleteServiceRequest + 39, // 102: clutch.k8s.v1.K8sAPI.DescribeStatefulSet:input_type -> clutch.k8s.v1.DescribeStatefulSetRequest + 41, // 103: clutch.k8s.v1.K8sAPI.ListStatefulSets:input_type -> clutch.k8s.v1.ListStatefulSetsRequest + 45, // 104: clutch.k8s.v1.K8sAPI.UpdateStatefulSet:input_type -> clutch.k8s.v1.UpdateStatefulSetRequest + 43, // 105: clutch.k8s.v1.K8sAPI.DeleteStatefulSet:input_type -> clutch.k8s.v1.DeleteStatefulSetRequest + 55, // 106: clutch.k8s.v1.K8sAPI.DescribeCronJob:input_type -> clutch.k8s.v1.DescribeCronJobRequest + 57, // 107: clutch.k8s.v1.K8sAPI.ListCronJobs:input_type -> clutch.k8s.v1.ListCronJobsRequest + 59, // 108: clutch.k8s.v1.K8sAPI.DeleteCronJob:input_type -> clutch.k8s.v1.DeleteCronJobRequest + 62, // 109: clutch.k8s.v1.K8sAPI.ListConfigMaps:input_type -> clutch.k8s.v1.ListConfigMapsRequest + 64, // 110: clutch.k8s.v1.K8sAPI.DescribeConfigMap:input_type -> clutch.k8s.v1.DescribeConfigMapRequest + 66, // 111: clutch.k8s.v1.K8sAPI.DeleteConfigMap:input_type -> clutch.k8s.v1.DeleteConfigMapRequest + 69, // 112: clutch.k8s.v1.K8sAPI.DescribeJob:input_type -> clutch.k8s.v1.DescribeJobRequest + 71, // 113: clutch.k8s.v1.K8sAPI.ListJobs:input_type -> clutch.k8s.v1.ListJobsRequest + 73, // 114: clutch.k8s.v1.K8sAPI.DeleteJob:input_type -> clutch.k8s.v1.DeleteJobRequest + 76, // 115: clutch.k8s.v1.K8sAPI.CreateJob:input_type -> clutch.k8s.v1.CreateJobRequest + 79, // 116: clutch.k8s.v1.K8sAPI.DescribeNamespace:input_type -> clutch.k8s.v1.DescribeNamespaceRequest + 82, // 117: clutch.k8s.v1.K8sAPI.ListEvents:input_type -> clutch.k8s.v1.ListEventsRequest + 89, // 118: clutch.k8s.v1.K8sAPI.DescribeNode:input_type -> clutch.k8s.v1.DescribeNodeRequest + 91, // 119: clutch.k8s.v1.K8sAPI.UpdateNode:input_type -> clutch.k8s.v1.UpdateNodeRequest + 10, // 120: clutch.k8s.v1.K8sAPI.DescribePod:output_type -> clutch.k8s.v1.DescribePodResponse + 19, // 121: clutch.k8s.v1.K8sAPI.ListPods:output_type -> clutch.k8s.v1.ListPodsResponse + 21, // 122: clutch.k8s.v1.K8sAPI.DeletePod:output_type -> clutch.k8s.v1.DeletePodResponse + 23, // 123: clutch.k8s.v1.K8sAPI.UpdatePod:output_type -> clutch.k8s.v1.UpdatePodResponse + 26, // 124: clutch.k8s.v1.K8sAPI.ResizeHPA:output_type -> clutch.k8s.v1.ResizeHPAResponse + 28, // 125: clutch.k8s.v1.K8sAPI.DeleteHPA:output_type -> clutch.k8s.v1.DeleteHPAResponse + 31, // 126: clutch.k8s.v1.K8sAPI.DescribeDeployment:output_type -> clutch.k8s.v1.DescribeDeploymentResponse + 33, // 127: clutch.k8s.v1.K8sAPI.ListDeployments:output_type -> clutch.k8s.v1.ListDeploymentsResponse + 35, // 128: clutch.k8s.v1.K8sAPI.UpdateDeployment:output_type -> clutch.k8s.v1.UpdateDeploymentResponse + 37, // 129: clutch.k8s.v1.K8sAPI.DeleteDeployment:output_type -> clutch.k8s.v1.DeleteDeploymentResponse + 49, // 130: clutch.k8s.v1.K8sAPI.DescribeService:output_type -> clutch.k8s.v1.DescribeServiceResponse + 51, // 131: clutch.k8s.v1.K8sAPI.ListServices:output_type -> clutch.k8s.v1.ListServicesResponse + 53, // 132: clutch.k8s.v1.K8sAPI.DeleteService:output_type -> clutch.k8s.v1.DeleteServiceResponse + 40, // 133: clutch.k8s.v1.K8sAPI.DescribeStatefulSet:output_type -> clutch.k8s.v1.DescribeStatefulSetResponse + 42, // 134: clutch.k8s.v1.K8sAPI.ListStatefulSets:output_type -> clutch.k8s.v1.ListStatefulSetsResponse + 46, // 135: clutch.k8s.v1.K8sAPI.UpdateStatefulSet:output_type -> clutch.k8s.v1.UpdateStatefulSetResponse + 44, // 136: clutch.k8s.v1.K8sAPI.DeleteStatefulSet:output_type -> clutch.k8s.v1.DeleteStatefulSetResponse + 56, // 137: clutch.k8s.v1.K8sAPI.DescribeCronJob:output_type -> clutch.k8s.v1.DescribeCronJobResponse + 58, // 138: clutch.k8s.v1.K8sAPI.ListCronJobs:output_type -> clutch.k8s.v1.ListCronJobsResponse + 60, // 139: clutch.k8s.v1.K8sAPI.DeleteCronJob:output_type -> clutch.k8s.v1.DeleteCronJobResponse + 63, // 140: clutch.k8s.v1.K8sAPI.ListConfigMaps:output_type -> clutch.k8s.v1.ListConfigMapsResponse + 65, // 141: clutch.k8s.v1.K8sAPI.DescribeConfigMap:output_type -> clutch.k8s.v1.DescribeConfigMapResponse + 67, // 142: clutch.k8s.v1.K8sAPI.DeleteConfigMap:output_type -> clutch.k8s.v1.DeleteConfigMapResponse + 70, // 143: clutch.k8s.v1.K8sAPI.DescribeJob:output_type -> clutch.k8s.v1.DescribeJobResponse + 72, // 144: clutch.k8s.v1.K8sAPI.ListJobs:output_type -> clutch.k8s.v1.ListJobsResponse + 74, // 145: clutch.k8s.v1.K8sAPI.DeleteJob:output_type -> clutch.k8s.v1.DeleteJobResponse + 77, // 146: clutch.k8s.v1.K8sAPI.CreateJob:output_type -> clutch.k8s.v1.CreateJobResponse + 80, // 147: clutch.k8s.v1.K8sAPI.DescribeNamespace:output_type -> clutch.k8s.v1.DescribeNamespaceResponse + 83, // 148: clutch.k8s.v1.K8sAPI.ListEvents:output_type -> clutch.k8s.v1.ListEventsResponse + 90, // 149: clutch.k8s.v1.K8sAPI.DescribeNode:output_type -> clutch.k8s.v1.DescribeNodeResponse + 92, // 150: clutch.k8s.v1.K8sAPI.UpdateNode:output_type -> clutch.k8s.v1.UpdateNodeResponse + 120, // [120:151] is the sub-list for method output_type + 89, // [89:120] is the sub-list for method input_type + 89, // [89:89] is the sub-list for extension type_name + 89, // [89:89] is the sub-list for extension extendee + 0, // [0:89] is the sub-list for field type_name } func init() { file_k8s_v1_k8s_proto_init() } @@ -8797,7 +8946,7 @@ func file_k8s_v1_k8s_proto_init() { } } file_k8s_v1_k8s_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListJobsRequest); i { + switch v := v.(*DescribeJobRequest); i { case 0: return &v.state case 1: @@ -8809,7 +8958,7 @@ func file_k8s_v1_k8s_proto_init() { } } file_k8s_v1_k8s_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListJobsResponse); i { + switch v := v.(*DescribeJobResponse); i { case 0: return &v.state case 1: @@ -8821,7 +8970,7 @@ func file_k8s_v1_k8s_proto_init() { } } file_k8s_v1_k8s_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteJobRequest); i { + switch v := v.(*ListJobsRequest); i { case 0: return &v.state case 1: @@ -8833,7 +8982,7 @@ func file_k8s_v1_k8s_proto_init() { } } file_k8s_v1_k8s_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteJobResponse); i { + switch v := v.(*ListJobsResponse); i { case 0: return &v.state case 1: @@ -8845,7 +8994,7 @@ func file_k8s_v1_k8s_proto_init() { } } file_k8s_v1_k8s_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*JobConfig); i { + switch v := v.(*DeleteJobRequest); i { case 0: return &v.state case 1: @@ -8857,7 +9006,7 @@ func file_k8s_v1_k8s_proto_init() { } } file_k8s_v1_k8s_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateJobRequest); i { + switch v := v.(*DeleteJobResponse); i { case 0: return &v.state case 1: @@ -8869,7 +9018,7 @@ func file_k8s_v1_k8s_proto_init() { } } file_k8s_v1_k8s_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateJobResponse); i { + switch v := v.(*JobConfig); i { case 0: return &v.state case 1: @@ -8881,7 +9030,7 @@ func file_k8s_v1_k8s_proto_init() { } } file_k8s_v1_k8s_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Namespace); i { + switch v := v.(*CreateJobRequest); i { case 0: return &v.state case 1: @@ -8893,7 +9042,7 @@ func file_k8s_v1_k8s_proto_init() { } } file_k8s_v1_k8s_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DescribeNamespaceRequest); i { + switch v := v.(*CreateJobResponse); i { case 0: return &v.state case 1: @@ -8905,7 +9054,7 @@ func file_k8s_v1_k8s_proto_init() { } } file_k8s_v1_k8s_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DescribeNamespaceResponse); i { + switch v := v.(*Namespace); i { case 0: return &v.state case 1: @@ -8917,7 +9066,7 @@ func file_k8s_v1_k8s_proto_init() { } } file_k8s_v1_k8s_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Event); i { + switch v := v.(*DescribeNamespaceRequest); i { case 0: return &v.state case 1: @@ -8929,7 +9078,7 @@ func file_k8s_v1_k8s_proto_init() { } } file_k8s_v1_k8s_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListEventsRequest); i { + switch v := v.(*DescribeNamespaceResponse); i { case 0: return &v.state case 1: @@ -8941,7 +9090,7 @@ func file_k8s_v1_k8s_proto_init() { } } file_k8s_v1_k8s_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListEventsResponse); i { + switch v := v.(*Event); i { case 0: return &v.state case 1: @@ -8953,7 +9102,7 @@ func file_k8s_v1_k8s_proto_init() { } } file_k8s_v1_k8s_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NullableString); i { + switch v := v.(*ListEventsRequest); i { case 0: return &v.state case 1: @@ -8965,7 +9114,7 @@ func file_k8s_v1_k8s_proto_init() { } } file_k8s_v1_k8s_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExpectedObjectMetaFields); i { + switch v := v.(*ListEventsResponse); i { case 0: return &v.state case 1: @@ -8977,7 +9126,7 @@ func file_k8s_v1_k8s_proto_init() { } } file_k8s_v1_k8s_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ObjectMetaFields); i { + switch v := v.(*NullableString); i { case 0: return &v.state case 1: @@ -8989,7 +9138,7 @@ func file_k8s_v1_k8s_proto_init() { } } file_k8s_v1_k8s_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RemoveObjectMetaFields); i { + switch v := v.(*ExpectedObjectMetaFields); i { case 0: return &v.state case 1: @@ -9001,7 +9150,7 @@ func file_k8s_v1_k8s_proto_init() { } } file_k8s_v1_k8s_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Node); i { + switch v := v.(*ObjectMetaFields); i { case 0: return &v.state case 1: @@ -9013,7 +9162,7 @@ func file_k8s_v1_k8s_proto_init() { } } file_k8s_v1_k8s_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DescribeNodeRequest); i { + switch v := v.(*RemoveObjectMetaFields); i { case 0: return &v.state case 1: @@ -9025,7 +9174,7 @@ func file_k8s_v1_k8s_proto_init() { } } file_k8s_v1_k8s_proto_msgTypes[79].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DescribeNodeResponse); i { + switch v := v.(*Node); i { case 0: return &v.state case 1: @@ -9037,7 +9186,7 @@ func file_k8s_v1_k8s_proto_init() { } } file_k8s_v1_k8s_proto_msgTypes[80].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateNodeRequest); i { + switch v := v.(*DescribeNodeRequest); i { case 0: return &v.state case 1: @@ -9049,6 +9198,30 @@ func file_k8s_v1_k8s_proto_init() { } } file_k8s_v1_k8s_proto_msgTypes[81].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DescribeNodeResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_k8s_v1_k8s_proto_msgTypes[82].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UpdateNodeRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_k8s_v1_k8s_proto_msgTypes[83].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateNodeResponse); i { case 0: return &v.state @@ -9060,7 +9233,7 @@ func file_k8s_v1_k8s_proto_init() { return nil } } - file_k8s_v1_k8s_proto_msgTypes[85].Exporter = func(v interface{}, i int) interface{} { + file_k8s_v1_k8s_proto_msgTypes[87].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HPA_Sizing); i { case 0: return &v.state @@ -9072,7 +9245,7 @@ func file_k8s_v1_k8s_proto_init() { return nil } } - file_k8s_v1_k8s_proto_msgTypes[88].Exporter = func(v interface{}, i int) interface{} { + file_k8s_v1_k8s_proto_msgTypes[90].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ResizeHPARequest_Sizing); i { case 0: return &v.state @@ -9084,7 +9257,7 @@ func file_k8s_v1_k8s_proto_init() { return nil } } - file_k8s_v1_k8s_proto_msgTypes[91].Exporter = func(v interface{}, i int) interface{} { + file_k8s_v1_k8s_proto_msgTypes[93].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Deployment_DeploymentStatus); i { case 0: return &v.state @@ -9096,7 +9269,7 @@ func file_k8s_v1_k8s_proto_init() { return nil } } - file_k8s_v1_k8s_proto_msgTypes[92].Exporter = func(v interface{}, i int) interface{} { + file_k8s_v1_k8s_proto_msgTypes[94].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Deployment_DeploymentStatus_Condition); i { case 0: return &v.state @@ -9108,7 +9281,7 @@ func file_k8s_v1_k8s_proto_init() { return nil } } - file_k8s_v1_k8s_proto_msgTypes[93].Exporter = func(v interface{}, i int) interface{} { + file_k8s_v1_k8s_proto_msgTypes[95].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateDeploymentRequest_Fields); i { case 0: return &v.state @@ -9120,7 +9293,7 @@ func file_k8s_v1_k8s_proto_init() { return nil } } - file_k8s_v1_k8s_proto_msgTypes[98].Exporter = func(v interface{}, i int) interface{} { + file_k8s_v1_k8s_proto_msgTypes[100].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StatefulSet_Status); i { case 0: return &v.state @@ -9132,7 +9305,7 @@ func file_k8s_v1_k8s_proto_init() { return nil } } - file_k8s_v1_k8s_proto_msgTypes[99].Exporter = func(v interface{}, i int) interface{} { + file_k8s_v1_k8s_proto_msgTypes[101].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateStatefulSetRequest_Fields); i { case 0: return &v.state @@ -9150,7 +9323,7 @@ func file_k8s_v1_k8s_proto_init() { (*Container_StateRunning)(nil), (*Container_StateTerminated)(nil), } - file_k8s_v1_k8s_proto_msgTypes[73].OneofWrappers = []interface{}{ + file_k8s_v1_k8s_proto_msgTypes[75].OneofWrappers = []interface{}{ (*NullableString_Null)(nil), (*NullableString_Value)(nil), } @@ -9160,7 +9333,7 @@ func file_k8s_v1_k8s_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_k8s_v1_k8s_proto_rawDesc, NumEnums: 9, - NumMessages: 119, + NumMessages: 121, NumExtensions: 0, NumServices: 1, }, diff --git a/backend/api/k8s/v1/k8s.pb.gw.go b/backend/api/k8s/v1/k8s.pb.gw.go index 1604243142..1673d4482d 100644 --- a/backend/api/k8s/v1/k8s.pb.gw.go +++ b/backend/api/k8s/v1/k8s.pb.gw.go @@ -813,6 +813,40 @@ func local_request_K8SAPI_DeleteConfigMap_0(ctx context.Context, marshaler runti } +func request_K8SAPI_DescribeJob_0(ctx context.Context, marshaler runtime.Marshaler, client K8SAPIClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq DescribeJobRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.DescribeJob(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_K8SAPI_DescribeJob_0(ctx context.Context, marshaler runtime.Marshaler, server K8SAPIServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq DescribeJobRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.DescribeJob(ctx, &protoReq) + return msg, metadata, err + +} + func request_K8SAPI_ListJobs_0(ctx context.Context, marshaler runtime.Marshaler, client K8SAPIClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq ListJobsRequest var metadata runtime.ServerMetadata @@ -1632,6 +1666,31 @@ func RegisterK8SAPIHandlerServer(ctx context.Context, mux *runtime.ServeMux, ser }) + mux.Handle("POST", pattern_K8SAPI_DescribeJob_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/clutch.k8s.v1.K8SAPI/DescribeJob", runtime.WithHTTPPathPattern("/v1/k8s/describeJob")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_K8SAPI_DescribeJob_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_K8SAPI_DescribeJob_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("POST", pattern_K8SAPI_ListJobs_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -2354,6 +2413,28 @@ func RegisterK8SAPIHandlerClient(ctx context.Context, mux *runtime.ServeMux, cli }) + mux.Handle("POST", pattern_K8SAPI_DescribeJob_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/clutch.k8s.v1.K8SAPI/DescribeJob", runtime.WithHTTPPathPattern("/v1/k8s/describeJob")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_K8SAPI_DescribeJob_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_K8SAPI_DescribeJob_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("POST", pattern_K8SAPI_ListJobs_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -2558,6 +2639,8 @@ var ( pattern_K8SAPI_DeleteConfigMap_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "k8s", "deleteConfigMap"}, "")) + pattern_K8SAPI_DescribeJob_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "k8s", "describeJob"}, "")) + pattern_K8SAPI_ListJobs_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "k8s", "listJobs"}, "")) pattern_K8SAPI_DeleteJob_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "k8s", "deleteJob"}, "")) @@ -2620,6 +2703,8 @@ var ( forward_K8SAPI_DeleteConfigMap_0 = runtime.ForwardResponseMessage + forward_K8SAPI_DescribeJob_0 = runtime.ForwardResponseMessage + forward_K8SAPI_ListJobs_0 = runtime.ForwardResponseMessage forward_K8SAPI_DeleteJob_0 = runtime.ForwardResponseMessage diff --git a/backend/api/k8s/v1/k8s.pb.validate.go b/backend/api/k8s/v1/k8s.pb.validate.go index a632e36ce8..2d926fb796 100644 --- a/backend/api/k8s/v1/k8s.pb.validate.go +++ b/backend/api/k8s/v1/k8s.pb.validate.go @@ -8388,6 +8388,283 @@ var _ interface { ErrorName() string } = JobValidationError{} +// Validate checks the field values on DescribeJobRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *DescribeJobRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DescribeJobRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// DescribeJobRequestMultiError, or nil if none found. +func (m *DescribeJobRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *DescribeJobRequest) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + if len(m.GetClientset()) < 1 { + err := DescribeJobRequestValidationError{ + field: "Clientset", + reason: "value length must be at least 1 bytes", + } + if !all { + return err + } + errors = append(errors, err) + } + + if len(m.GetCluster()) < 1 { + err := DescribeJobRequestValidationError{ + field: "Cluster", + reason: "value length must be at least 1 bytes", + } + if !all { + return err + } + errors = append(errors, err) + } + + if len(m.GetNamespace()) < 1 { + err := DescribeJobRequestValidationError{ + field: "Namespace", + reason: "value length must be at least 1 bytes", + } + if !all { + return err + } + errors = append(errors, err) + } + + if len(m.GetName()) < 1 { + err := DescribeJobRequestValidationError{ + field: "Name", + reason: "value length must be at least 1 bytes", + } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return DescribeJobRequestMultiError(errors) + } + + return nil +} + +// DescribeJobRequestMultiError is an error wrapping multiple validation errors +// returned by DescribeJobRequest.ValidateAll() if the designated constraints +// aren't met. +type DescribeJobRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DescribeJobRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DescribeJobRequestMultiError) AllErrors() []error { return m } + +// DescribeJobRequestValidationError is the validation error returned by +// DescribeJobRequest.Validate if the designated constraints aren't met. +type DescribeJobRequestValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e DescribeJobRequestValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e DescribeJobRequestValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e DescribeJobRequestValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e DescribeJobRequestValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e DescribeJobRequestValidationError) ErrorName() string { + return "DescribeJobRequestValidationError" +} + +// Error satisfies the builtin error interface +func (e DescribeJobRequestValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sDescribeJobRequest.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = DescribeJobRequestValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = DescribeJobRequestValidationError{} + +// Validate checks the field values on DescribeJobResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *DescribeJobResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DescribeJobResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// DescribeJobResponseMultiError, or nil if none found. +func (m *DescribeJobResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *DescribeJobResponse) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + if all { + switch v := interface{}(m.GetJob()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, DescribeJobResponseValidationError{ + field: "Job", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, DescribeJobResponseValidationError{ + field: "Job", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetJob()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return DescribeJobResponseValidationError{ + field: "Job", + reason: "embedded message failed validation", + cause: err, + } + } + } + + if len(errors) > 0 { + return DescribeJobResponseMultiError(errors) + } + + return nil +} + +// DescribeJobResponseMultiError is an error wrapping multiple validation +// errors returned by DescribeJobResponse.ValidateAll() if the designated +// constraints aren't met. +type DescribeJobResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DescribeJobResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DescribeJobResponseMultiError) AllErrors() []error { return m } + +// DescribeJobResponseValidationError is the validation error returned by +// DescribeJobResponse.Validate if the designated constraints aren't met. +type DescribeJobResponseValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e DescribeJobResponseValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e DescribeJobResponseValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e DescribeJobResponseValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e DescribeJobResponseValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e DescribeJobResponseValidationError) ErrorName() string { + return "DescribeJobResponseValidationError" +} + +// Error satisfies the builtin error interface +func (e DescribeJobResponseValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sDescribeJobResponse.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = DescribeJobResponseValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = DescribeJobResponseValidationError{} + // Validate checks the field values on ListJobsRequest with the rules defined // in the proto definition for this message. If any rules are violated, the // first error encountered is returned, or nil if there are no violations. diff --git a/backend/api/k8s/v1/k8s_grpc.pb.go b/backend/api/k8s/v1/k8s_grpc.pb.go index 3da5879ae7..ed60e53d01 100644 --- a/backend/api/k8s/v1/k8s_grpc.pb.go +++ b/backend/api/k8s/v1/k8s_grpc.pb.go @@ -45,6 +45,7 @@ type K8SAPIClient interface { ListConfigMaps(ctx context.Context, in *ListConfigMapsRequest, opts ...grpc.CallOption) (*ListConfigMapsResponse, error) DescribeConfigMap(ctx context.Context, in *DescribeConfigMapRequest, opts ...grpc.CallOption) (*DescribeConfigMapResponse, error) DeleteConfigMap(ctx context.Context, in *DeleteConfigMapRequest, opts ...grpc.CallOption) (*DeleteConfigMapResponse, error) + DescribeJob(ctx context.Context, in *DescribeJobRequest, opts ...grpc.CallOption) (*DescribeJobResponse, error) ListJobs(ctx context.Context, in *ListJobsRequest, opts ...grpc.CallOption) (*ListJobsResponse, error) DeleteJob(ctx context.Context, in *DeleteJobRequest, opts ...grpc.CallOption) (*DeleteJobResponse, error) CreateJob(ctx context.Context, in *CreateJobRequest, opts ...grpc.CallOption) (*CreateJobResponse, error) @@ -269,6 +270,15 @@ func (c *k8SAPIClient) DeleteConfigMap(ctx context.Context, in *DeleteConfigMapR return out, nil } +func (c *k8SAPIClient) DescribeJob(ctx context.Context, in *DescribeJobRequest, opts ...grpc.CallOption) (*DescribeJobResponse, error) { + out := new(DescribeJobResponse) + err := c.cc.Invoke(ctx, "/clutch.k8s.v1.K8sAPI/DescribeJob", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *k8SAPIClient) ListJobs(ctx context.Context, in *ListJobsRequest, opts ...grpc.CallOption) (*ListJobsResponse, error) { out := new(ListJobsResponse) err := c.cc.Invoke(ctx, "/clutch.k8s.v1.K8sAPI/ListJobs", in, out, opts...) @@ -359,6 +369,7 @@ type K8SAPIServer interface { ListConfigMaps(context.Context, *ListConfigMapsRequest) (*ListConfigMapsResponse, error) DescribeConfigMap(context.Context, *DescribeConfigMapRequest) (*DescribeConfigMapResponse, error) DeleteConfigMap(context.Context, *DeleteConfigMapRequest) (*DeleteConfigMapResponse, error) + DescribeJob(context.Context, *DescribeJobRequest) (*DescribeJobResponse, error) ListJobs(context.Context, *ListJobsRequest) (*ListJobsResponse, error) DeleteJob(context.Context, *DeleteJobRequest) (*DeleteJobResponse, error) CreateJob(context.Context, *CreateJobRequest) (*CreateJobResponse, error) @@ -441,6 +452,9 @@ func (UnimplementedK8SAPIServer) DescribeConfigMap(context.Context, *DescribeCon func (UnimplementedK8SAPIServer) DeleteConfigMap(context.Context, *DeleteConfigMapRequest) (*DeleteConfigMapResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method DeleteConfigMap not implemented") } +func (UnimplementedK8SAPIServer) DescribeJob(context.Context, *DescribeJobRequest) (*DescribeJobResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method DescribeJob not implemented") +} func (UnimplementedK8SAPIServer) ListJobs(context.Context, *ListJobsRequest) (*ListJobsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ListJobs not implemented") } @@ -888,6 +902,24 @@ func _K8SAPI_DeleteConfigMap_Handler(srv interface{}, ctx context.Context, dec f return interceptor(ctx, in, info, handler) } +func _K8SAPI_DescribeJob_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DescribeJobRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(K8SAPIServer).DescribeJob(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/clutch.k8s.v1.K8sAPI/DescribeJob", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(K8SAPIServer).DescribeJob(ctx, req.(*DescribeJobRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _K8SAPI_ListJobs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(ListJobsRequest) if err := dec(in); err != nil { @@ -1113,6 +1145,10 @@ var K8SAPI_ServiceDesc = grpc.ServiceDesc{ MethodName: "DeleteConfigMap", Handler: _K8SAPI_DeleteConfigMap_Handler, }, + { + MethodName: "DescribeJob", + Handler: _K8SAPI_DescribeJob_Handler, + }, { MethodName: "ListJobs", Handler: _K8SAPI_ListJobs_Handler, diff --git a/backend/mock/service/k8smock/k8smock.go b/backend/mock/service/k8smock/k8smock.go index 716fe9c9ef..37bea7c122 100644 --- a/backend/mock/service/k8smock/k8smock.go +++ b/backend/mock/service/k8smock/k8smock.go @@ -286,6 +286,16 @@ func (s *svc) ListConfigMaps(_ context.Context, clientset, cluster, namespace st return configMaps, nil } +func (s *svc) DescribeJob(_ context.Context, clientset, cluster, namespace, name string) (*k8sv1.Job, error) { + return &k8sv1.Job{ + Cluster: "fake-cluster-name", + Namespace: namespace, + Name: name, + Labels: map[string]string{"Key": "value"}, + Annotations: map[string]string{"Key": "value"}, + }, nil +} + func (s *svc) ListJobs(_ context.Context, clientset, cluster, namespace string, listOptions *k8sv1.ListOptions) ([]*k8sv1.Job, error) { jobs := []*k8sv1.Job{ { diff --git a/backend/module/k8s/job.go b/backend/module/k8s/job.go index 76b61ede2a..9d91c60e9e 100644 --- a/backend/module/k8s/job.go +++ b/backend/module/k8s/job.go @@ -11,6 +11,14 @@ import ( k8sapiv1 "github.com/lyft/clutch/backend/api/k8s/v1" ) +func (a *k8sAPI) DescribeJob(ctx context.Context, req *k8sapiv1.DescribeJobRequest) (*k8sapiv1.DescribeJobResponse, error) { + job, err := a.k8s.DescribeJob(ctx, req.Clientset, req.Cluster, req.Namespace, req.Name) + if err != nil { + return nil, err + } + return &k8sapiv1.DescribeJobResponse{Job: job}, nil +} + func (a *k8sAPI) DeleteJob(ctx context.Context, req *k8sapiv1.DeleteJobRequest) (*k8sapiv1.DeleteJobResponse, error) { err := a.k8s.DeleteJob(ctx, req.Clientset, req.Cluster, req.Namespace, req.Name) if err != nil { diff --git a/backend/service/k8s/job.go b/backend/service/k8s/job.go index 42a9fd46d0..90f66caef8 100644 --- a/backend/service/k8s/job.go +++ b/backend/service/k8s/job.go @@ -3,12 +3,35 @@ package k8s import ( "context" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" v1 "k8s.io/api/batch/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" k8sapiv1 "github.com/lyft/clutch/backend/api/k8s/v1" ) +func (s *svc) DescribeJob(ctx context.Context, clientset, cluster, namespace, name string) (*k8sapiv1.Job, error) { + cs, err := s.manager.GetK8sClientset(ctx, clientset, cluster, namespace) + if err != nil { + return nil, err + } + + jobs, err := cs.BatchV1().Jobs(cs.Namespace()).List(ctx, metav1.ListOptions{ + FieldSelector: "metadata.name=" + name, + }) + if err != nil { + return nil, err + } + + if len(jobs.Items) == 1 { + return protoForJob(cs.Cluster(), &jobs.Items[0]), nil + } else if len(jobs.Items) > 1 { + return nil, status.Error(codes.FailedPrecondition, "located multiple jobs") + } + return nil, status.Error(codes.NotFound, "unable to locate specified job") +} + func (s *svc) DeleteJob(ctx context.Context, clientset, cluster, namespace, name string) error { cs, err := s.manager.GetK8sClientset(ctx, clientset, cluster, namespace) if err != nil { diff --git a/backend/service/k8s/job_test.go b/backend/service/k8s/job_test.go index af32d560a6..818b1999b6 100644 --- a/backend/service/k8s/job_test.go +++ b/backend/service/k8s/job_test.go @@ -2,13 +2,13 @@ package k8s import ( "context" + "fmt" "testing" "github.com/stretchr/testify/assert" v1 "k8s.io/api/batch/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" - k8s "k8s.io/client-go/kubernetes" "k8s.io/client-go/kubernetes/fake" k8sv1 "github.com/lyft/clutch/backend/api/k8s/v1" @@ -42,16 +42,48 @@ func testListJobClientset() *fake.Clientset { return fake.NewSimpleClientset(testJobs...) } -func testJobClientset() k8s.Interface { - job := &v1.Job{ - ObjectMeta: metav1.ObjectMeta{ - Name: "testing-job-name", - Namespace: "testing-namespace", - Labels: map[string]string{"foo": "bar"}, +func testJobService(n int) *svc { + jobs := make([]runtime.Object, n) + for i := 0; i < n; i++ { + job := &v1.Job{ + ObjectMeta: metav1.ObjectMeta{ + Name: fmt.Sprintf("testing-job-name-%b", i), + Namespace: "testing-namespace", + Labels: map[string]string{"foo": "bar"}, + }, + } + jobs[i] = job + } + + return &svc{ + manager: &managerImpl{ + clientsets: map[string]*ctxClientsetImpl{"testing-clientset": { + Interface: fake.NewSimpleClientset(jobs...), + namespace: "testing-namespace", + cluster: "testing-cluster", + }}, }, } +} + +func TestDescribeJob(t *testing.T) { + // 1 existing job + s := testJobService(1) + job, err := s.DescribeJob(context.Background(), "testing-clientset", "testing-cluster", "testing-namespace", "testing-job-name") + assert.NoError(t, err) + assert.NotNil(t, job) - return fake.NewSimpleClientset(job) + // No existing job + s = testJobService(0) + job, err = s.DescribeJob(context.Background(), "testing-clientset", "testing-cluster", "testing-namespace", "testing-job-name") + assert.Error(t, err) + assert.Nil(t, job) + + // 2 existing jobs + s = testJobService(2) + job, err = s.DescribeJob(context.Background(), "testing-clientset", "testing-cluster", "testing-namespace", "testing-job-name") + assert.Error(t, err) + assert.Nil(t, job) } func TestListJobs(t *testing.T) { @@ -106,38 +138,18 @@ func TestListJobs(t *testing.T) { func TestDeleteJob(t *testing.T) { t.Parallel() - cs := testJobClientset() - - s := &svc{ - manager: &managerImpl{ - clientsets: map[string]*ctxClientsetImpl{"testing-clientset": { - Interface: cs, - namespace: "testing-namespace", - cluster: "testing-cluster", - }}, - }, - } + s := testJobService(1) // Not found err := s.DeleteJob(context.Background(), "testing-clientset", "testing-cluster", "testing-namespace", "abc") assert.Error(t, err) - err = s.DeleteJob(context.Background(), "testing-clientset", "testing-cluster", "testing-namespace", "testing-job-name") + err = s.DeleteJob(context.Background(), "testing-clientset", "testing-cluster", "testing-namespace", "testing-job-name-0") assert.NoError(t, err) } func TestCreateJob(t *testing.T) { - cs := testJobClientset() - - s := &svc{ - manager: &managerImpl{ - clientsets: map[string]*ctxClientsetImpl{"testing-clientset": { - Interface: cs, - namespace: "testing-namespace", - cluster: "testing-cluster", - }}, - }, - } + s := testJobService(1) jobConfig := &v1.Job{ ObjectMeta: metav1.ObjectMeta{ diff --git a/backend/service/k8s/k8s.go b/backend/service/k8s/k8s.go index 516f3c80cf..cbe5eddcd9 100644 --- a/backend/service/k8s/k8s.go +++ b/backend/service/k8s/k8s.go @@ -93,6 +93,7 @@ type Service interface { ListConfigMaps(ctx context.Context, clientset, cluster, namespace string, listOptions *k8sapiv1.ListOptions) ([]*k8sapiv1.ConfigMap, error) // Job management functions. + DescribeJob(ctx context.Context, clientset, cluster, namespace, name string) (*k8sapiv1.Job, error) DeleteJob(ctx context.Context, clientset, cluster, namespace, name string) error ListJobs(ctx context.Context, clientset, cluster, namespace string, listOptions *k8sapiv1.ListOptions) ([]*k8sapiv1.Job, error) CreateJob(ctx context.Context, clientset, cluster, namespace string, job *batchv1.Job) (*k8sapiv1.Job, error) diff --git a/frontend/api/src/index.d.ts b/frontend/api/src/index.d.ts index e5b8263414..a9e575c2e4 100644 --- a/frontend/api/src/index.d.ts +++ b/frontend/api/src/index.d.ts @@ -14089,6 +14089,20 @@ export namespace clutch { */ public deleteConfigMap(request: clutch.k8s.v1.IDeleteConfigMapRequest): Promise; + /** + * Calls DescribeJob. + * @param request DescribeJobRequest message or plain object + * @param callback Node-style callback called with the error, if any, and DescribeJobResponse + */ + public describeJob(request: clutch.k8s.v1.IDescribeJobRequest, callback: clutch.k8s.v1.K8sAPI.DescribeJobCallback): void; + + /** + * Calls DescribeJob. + * @param request DescribeJobRequest message or plain object + * @returns Promise + */ + public describeJob(request: clutch.k8s.v1.IDescribeJobRequest): Promise; + /** * Calls ListJobs. * @param request ListJobsRequest message or plain object @@ -14351,6 +14365,13 @@ export namespace clutch { */ type DeleteConfigMapCallback = (error: (Error|null), response?: clutch.k8s.v1.DeleteConfigMapResponse) => void; + /** + * Callback as used by {@link clutch.k8s.v1.K8sAPI#describeJob}. + * @param error Error, if any + * @param [response] DescribeJobResponse + */ + type DescribeJobCallback = (error: (Error|null), response?: clutch.k8s.v1.DescribeJobResponse) => void; + /** * Callback as used by {@link clutch.k8s.v1.K8sAPI#listJobs}. * @param error Error, if any @@ -18625,6 +18646,120 @@ export namespace clutch { public toJSON(): { [k: string]: any }; } + /** Properties of a DescribeJobRequest. */ + interface IDescribeJobRequest { + + /** DescribeJobRequest clientset */ + clientset?: (string|null); + + /** DescribeJobRequest cluster */ + cluster?: (string|null); + + /** DescribeJobRequest namespace */ + namespace?: (string|null); + + /** DescribeJobRequest name */ + name?: (string|null); + } + + /** Represents a DescribeJobRequest. */ + class DescribeJobRequest implements IDescribeJobRequest { + + /** + * Constructs a new DescribeJobRequest. + * @param [properties] Properties to set + */ + constructor(properties?: clutch.k8s.v1.IDescribeJobRequest); + + /** DescribeJobRequest clientset. */ + public clientset: string; + + /** DescribeJobRequest cluster. */ + public cluster: string; + + /** DescribeJobRequest namespace. */ + public namespace: string; + + /** DescribeJobRequest name. */ + public name: string; + + /** + * Verifies a DescribeJobRequest message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a DescribeJobRequest message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns DescribeJobRequest + */ + public static fromObject(object: { [k: string]: any }): clutch.k8s.v1.DescribeJobRequest; + + /** + * Creates a plain object from a DescribeJobRequest message. Also converts values to other types if specified. + * @param message DescribeJobRequest + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: clutch.k8s.v1.DescribeJobRequest, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this DescribeJobRequest to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a DescribeJobResponse. */ + interface IDescribeJobResponse { + + /** DescribeJobResponse job */ + job?: (clutch.k8s.v1.IJob|null); + } + + /** Represents a DescribeJobResponse. */ + class DescribeJobResponse implements IDescribeJobResponse { + + /** + * Constructs a new DescribeJobResponse. + * @param [properties] Properties to set + */ + constructor(properties?: clutch.k8s.v1.IDescribeJobResponse); + + /** DescribeJobResponse job. */ + public job?: (clutch.k8s.v1.IJob|null); + + /** + * Verifies a DescribeJobResponse message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a DescribeJobResponse message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns DescribeJobResponse + */ + public static fromObject(object: { [k: string]: any }): clutch.k8s.v1.DescribeJobResponse; + + /** + * Creates a plain object from a DescribeJobResponse message. Also converts values to other types if specified. + * @param message DescribeJobResponse + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: clutch.k8s.v1.DescribeJobResponse, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this DescribeJobResponse to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + /** Properties of a ListJobsRequest. */ interface IListJobsRequest { diff --git a/frontend/api/src/index.js b/frontend/api/src/index.js index 5fda2b39d4..87377a3958 100644 --- a/frontend/api/src/index.js +++ b/frontend/api/src/index.js @@ -34037,6 +34037,39 @@ export const clutch = $root.clutch = (() => { * @variation 2 */ + /** + * Callback as used by {@link clutch.k8s.v1.K8sAPI#describeJob}. + * @memberof clutch.k8s.v1.K8sAPI + * @typedef DescribeJobCallback + * @type {function} + * @param {Error|null} error Error, if any + * @param {clutch.k8s.v1.DescribeJobResponse} [response] DescribeJobResponse + */ + + /** + * Calls DescribeJob. + * @function describeJob + * @memberof clutch.k8s.v1.K8sAPI + * @instance + * @param {clutch.k8s.v1.IDescribeJobRequest} request DescribeJobRequest message or plain object + * @param {clutch.k8s.v1.K8sAPI.DescribeJobCallback} callback Node-style callback called with the error, if any, and DescribeJobResponse + * @returns {undefined} + * @variation 1 + */ + Object.defineProperty(K8sAPI.prototype.describeJob = function describeJob(request, callback) { + return this.rpcCall(describeJob, $root.clutch.k8s.v1.DescribeJobRequest, $root.clutch.k8s.v1.DescribeJobResponse, request, callback); + }, "name", { value: "DescribeJob" }); + + /** + * Calls DescribeJob. + * @function describeJob + * @memberof clutch.k8s.v1.K8sAPI + * @instance + * @param {clutch.k8s.v1.IDescribeJobRequest} request DescribeJobRequest message or plain object + * @returns {Promise} Promise + * @variation 2 + */ + /** * Callback as used by {@link clutch.k8s.v1.K8sAPI#listJobs}. * @memberof clutch.k8s.v1.K8sAPI @@ -44636,6 +44669,263 @@ export const clutch = $root.clutch = (() => { return Job; })(); + v1.DescribeJobRequest = (function() { + + /** + * Properties of a DescribeJobRequest. + * @memberof clutch.k8s.v1 + * @interface IDescribeJobRequest + * @property {string|null} [clientset] DescribeJobRequest clientset + * @property {string|null} [cluster] DescribeJobRequest cluster + * @property {string|null} [namespace] DescribeJobRequest namespace + * @property {string|null} [name] DescribeJobRequest name + */ + + /** + * Constructs a new DescribeJobRequest. + * @memberof clutch.k8s.v1 + * @classdesc Represents a DescribeJobRequest. + * @implements IDescribeJobRequest + * @constructor + * @param {clutch.k8s.v1.IDescribeJobRequest=} [properties] Properties to set + */ + function DescribeJobRequest(properties) { + if (properties) + for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * DescribeJobRequest clientset. + * @member {string} clientset + * @memberof clutch.k8s.v1.DescribeJobRequest + * @instance + */ + DescribeJobRequest.prototype.clientset = ""; + + /** + * DescribeJobRequest cluster. + * @member {string} cluster + * @memberof clutch.k8s.v1.DescribeJobRequest + * @instance + */ + DescribeJobRequest.prototype.cluster = ""; + + /** + * DescribeJobRequest namespace. + * @member {string} namespace + * @memberof clutch.k8s.v1.DescribeJobRequest + * @instance + */ + DescribeJobRequest.prototype.namespace = ""; + + /** + * DescribeJobRequest name. + * @member {string} name + * @memberof clutch.k8s.v1.DescribeJobRequest + * @instance + */ + DescribeJobRequest.prototype.name = ""; + + /** + * Verifies a DescribeJobRequest message. + * @function verify + * @memberof clutch.k8s.v1.DescribeJobRequest + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + DescribeJobRequest.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.clientset != null && message.hasOwnProperty("clientset")) + if (!$util.isString(message.clientset)) + return "clientset: string expected"; + if (message.cluster != null && message.hasOwnProperty("cluster")) + if (!$util.isString(message.cluster)) + return "cluster: string expected"; + if (message.namespace != null && message.hasOwnProperty("namespace")) + if (!$util.isString(message.namespace)) + return "namespace: string expected"; + if (message.name != null && message.hasOwnProperty("name")) + if (!$util.isString(message.name)) + return "name: string expected"; + return null; + }; + + /** + * Creates a DescribeJobRequest message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof clutch.k8s.v1.DescribeJobRequest + * @static + * @param {Object.} object Plain object + * @returns {clutch.k8s.v1.DescribeJobRequest} DescribeJobRequest + */ + DescribeJobRequest.fromObject = function fromObject(object) { + if (object instanceof $root.clutch.k8s.v1.DescribeJobRequest) + return object; + let message = new $root.clutch.k8s.v1.DescribeJobRequest(); + if (object.clientset != null) + message.clientset = String(object.clientset); + if (object.cluster != null) + message.cluster = String(object.cluster); + if (object.namespace != null) + message.namespace = String(object.namespace); + if (object.name != null) + message.name = String(object.name); + return message; + }; + + /** + * Creates a plain object from a DescribeJobRequest message. Also converts values to other types if specified. + * @function toObject + * @memberof clutch.k8s.v1.DescribeJobRequest + * @static + * @param {clutch.k8s.v1.DescribeJobRequest} message DescribeJobRequest + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + DescribeJobRequest.toObject = function toObject(message, options) { + if (!options) + options = {}; + let object = {}; + if (options.defaults) { + object.clientset = ""; + object.cluster = ""; + object.namespace = ""; + object.name = ""; + } + if (message.clientset != null && message.hasOwnProperty("clientset")) + object.clientset = message.clientset; + if (message.cluster != null && message.hasOwnProperty("cluster")) + object.cluster = message.cluster; + if (message.namespace != null && message.hasOwnProperty("namespace")) + object.namespace = message.namespace; + if (message.name != null && message.hasOwnProperty("name")) + object.name = message.name; + return object; + }; + + /** + * Converts this DescribeJobRequest to JSON. + * @function toJSON + * @memberof clutch.k8s.v1.DescribeJobRequest + * @instance + * @returns {Object.} JSON object + */ + DescribeJobRequest.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return DescribeJobRequest; + })(); + + v1.DescribeJobResponse = (function() { + + /** + * Properties of a DescribeJobResponse. + * @memberof clutch.k8s.v1 + * @interface IDescribeJobResponse + * @property {clutch.k8s.v1.IJob|null} [job] DescribeJobResponse job + */ + + /** + * Constructs a new DescribeJobResponse. + * @memberof clutch.k8s.v1 + * @classdesc Represents a DescribeJobResponse. + * @implements IDescribeJobResponse + * @constructor + * @param {clutch.k8s.v1.IDescribeJobResponse=} [properties] Properties to set + */ + function DescribeJobResponse(properties) { + if (properties) + for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * DescribeJobResponse job. + * @member {clutch.k8s.v1.IJob|null|undefined} job + * @memberof clutch.k8s.v1.DescribeJobResponse + * @instance + */ + DescribeJobResponse.prototype.job = null; + + /** + * Verifies a DescribeJobResponse message. + * @function verify + * @memberof clutch.k8s.v1.DescribeJobResponse + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + DescribeJobResponse.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.job != null && message.hasOwnProperty("job")) { + let error = $root.clutch.k8s.v1.Job.verify(message.job); + if (error) + return "job." + error; + } + return null; + }; + + /** + * Creates a DescribeJobResponse message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof clutch.k8s.v1.DescribeJobResponse + * @static + * @param {Object.} object Plain object + * @returns {clutch.k8s.v1.DescribeJobResponse} DescribeJobResponse + */ + DescribeJobResponse.fromObject = function fromObject(object) { + if (object instanceof $root.clutch.k8s.v1.DescribeJobResponse) + return object; + let message = new $root.clutch.k8s.v1.DescribeJobResponse(); + if (object.job != null) { + if (typeof object.job !== "object") + throw TypeError(".clutch.k8s.v1.DescribeJobResponse.job: object expected"); + message.job = $root.clutch.k8s.v1.Job.fromObject(object.job); + } + return message; + }; + + /** + * Creates a plain object from a DescribeJobResponse message. Also converts values to other types if specified. + * @function toObject + * @memberof clutch.k8s.v1.DescribeJobResponse + * @static + * @param {clutch.k8s.v1.DescribeJobResponse} message DescribeJobResponse + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + DescribeJobResponse.toObject = function toObject(message, options) { + if (!options) + options = {}; + let object = {}; + if (options.defaults) + object.job = null; + if (message.job != null && message.hasOwnProperty("job")) + object.job = $root.clutch.k8s.v1.Job.toObject(message.job, options); + return object; + }; + + /** + * Converts this DescribeJobResponse to JSON. + * @function toJSON + * @memberof clutch.k8s.v1.DescribeJobResponse + * @instance + * @returns {Object.} JSON object + */ + DescribeJobResponse.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return DescribeJobResponse; + })(); + v1.ListJobsRequest = (function() { /**